50 lines
1.8 KiB
Dart
50 lines
1.8 KiB
Dart
import 'dart:io';
|
|
|
|
class AiConstants {
|
|
AiConstants._();
|
|
|
|
// Server ports
|
|
static const int chatServerPort = 8080;
|
|
static const int embeddingServerPort = 8081;
|
|
|
|
// API endpoints
|
|
static String get chatApiUrl =>
|
|
'http://localhost:$chatServerPort/v1/chat/completions';
|
|
static String get embeddingApiUrl =>
|
|
'http://localhost:$embeddingServerPort/v1/embeddings';
|
|
|
|
// Model files
|
|
static const String qwenModelFile = 'qwen2.5-7b-instruct-q4_k_m.gguf';
|
|
static const String nomicModelFile = 'nomic-embed-text-v1.5.Q4_K_M.gguf';
|
|
static const String nomicModelName = 'nomic-embed-text-v1.5.Q4_K_M';
|
|
|
|
// llama.cpp binary
|
|
static const String llamaBuild = 'b8130';
|
|
static String get serverBinaryName =>
|
|
Platform.isWindows ? 'llama-server.exe' : 'llama-server';
|
|
|
|
// Model download URLs
|
|
static const String nomicModelUrl =
|
|
'https://huggingface.co/nomic-ai/nomic-embed-text-v1.5-GGUF/resolve/main/nomic-embed-text-v1.5.Q4_K_M.gguf';
|
|
static const String qwenModelUrl =
|
|
'https://huggingface.co/bartowski/Qwen2.5-7B-Instruct-GGUF/resolve/main/Qwen2.5-7B-Instruct-Q4_K_M.gguf';
|
|
|
|
// Server configuration
|
|
static const int qwenContextSize = 4096;
|
|
static const int nomicContextSize = 8192;
|
|
static const int gpuLayerOffload = 99;
|
|
static const double chatTemperature = 0.7;
|
|
|
|
// Timeouts
|
|
static const Duration serverConnectTimeout = Duration(seconds: 30);
|
|
static const Duration serverReceiveTimeout = Duration(minutes: 5);
|
|
static const Duration embeddingConnectTimeout = Duration(seconds: 10);
|
|
static const Duration embeddingReceiveTimeout = Duration(seconds: 60);
|
|
|
|
// System prompt
|
|
static const String baseSystemPrompt =
|
|
'You are a helpful AI fitness assistant for personal trainers. '
|
|
'Help users design training plans, analyse exercise technique, '
|
|
'and answer questions about sports science and nutrition.';
|
|
}
|