This commit is contained in:
49
lib/core/constants/ai_constants.dart
Normal file
49
lib/core/constants/ai_constants.dart
Normal file
@@ -0,0 +1,49 @@
|
||||
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.';
|
||||
}
|
||||
Reference in New Issue
Block a user