Files
trainhub-flutter/lib/core/constants/ai_constants.dart
Kazimierz Ciołek 9dcc4b87de
Some checks failed
Build Linux App / build (push) Failing after 1m18s
Next refactors
2026-02-24 02:19:28 +01:00

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.';
}