env('OLLAMA_BASE_URL', 'http://localhost:11434'), /* |-------------------------------------------------------------------------- | Model Chat (LLM) |-------------------------------------------------------------------------- | Model yang digunakan untuk chat/generate. | Contoh: llama3, mistral, qwen2, gemma2 */ 'chat_model' => env('OLLAMA_CHAT_MODEL', 'llama3'), /* |-------------------------------------------------------------------------- | Model Embedding |-------------------------------------------------------------------------- | Model yang digunakan untuk jana embedding vector. | Cadangan: nomic-embed-text (pilihan terbaik untuk teks Melayu/English) | Alternatif: mxbai-embed-large */ 'embedding_model' => env('OLLAMA_EMBEDDING_MODEL', 'nomic-embed-text'), /* |-------------------------------------------------------------------------- | Timeout (dalam saat) |-------------------------------------------------------------------------- */ 'timeout' => [ 'connect' => (int) env('OLLAMA_CONNECT_TIMEOUT', 5), 'chat' => (int) env('OLLAMA_CHAT_TIMEOUT', 120), 'embed' => (int) env('OLLAMA_EMBED_TIMEOUT', 30), ], /* |-------------------------------------------------------------------------- | Retry Configuration |-------------------------------------------------------------------------- */ 'retry' => [ 'times' => (int) env('OLLAMA_RETRY_TIMES', 2), 'sleep' => (int) env('OLLAMA_RETRY_SLEEP', 1000), // milliseconds ], /* |-------------------------------------------------------------------------- | Chat Parameters |-------------------------------------------------------------------------- */ 'chat' => [ 'temperature' => (float) env('OLLAMA_TEMPERATURE', 0.1), // Rendah = lebih deterministik, sesuai untuk RAG 'top_p' => (float) env('OLLAMA_TOP_P', 0.9), 'num_ctx' => (int) env('OLLAMA_NUM_CTX', 4096), // Context window — bergantung pada model ], /* |-------------------------------------------------------------------------- | RAG System Prompt |-------------------------------------------------------------------------- | Prompt sistem untuk kawalan jawapan RAG. | Dipisah dari code supaya mudah disesuaikan. */ 'rag_system_prompt' => env( 'OLLAMA_RAG_SYSTEM_PROMPT', 'Anda adalah pembantu maklumat rasmi untuk jabatan kerajaan tempatan. ' . 'Jawab soalan berdasarkan konteks yang diberikan SAHAJA. ' . 'Jika maklumat tidak terdapat dalam konteks, jawab: ' . '"Maaf, saya tidak menemui maklumat berkaitan dalam pangkalan pengetahuan kami. ' . 'Sila hubungi pejabat kami untuk maklumat lanjut." ' . 'Jangan reka-reka jawapan. Gunakan Bahasa Melayu yang formal.' ), ];