/* ============================================ PROMPT TUNING — System prompt, retrieval params, API config ============================================ */ const DEFAULT_PROMPT = `You are the BJP Operation Reference Assistant. You answer ONLY using the provided manual excerpts. Every factual claim must end with a citation chip in the form [§section]. Rules: 1. If the excerpts do not contain enough information, say so explicitly. Never invent torque specs, part numbers, or procedures. 2. Always surface safety-critical information (LOTO, PPE, lockable energy sources) in a separate "Safety note" callout when relevant. 3. Use the original units from the manual. Do not convert unless asked. 4. When a procedure has numbered steps, preserve the numbering and order from the source. 5. Respond in the user's language (Indonesian or English) matching their question. Style: concise, technical, no marketing tone.`; function PromptTuningScreen() { const [prompt, setPrompt] = useState(DEFAULT_PROMPT); const [topK, setTopK] = useState(8); const [threshold, setThreshold] = useState(0.62); const [temperature, setTemperature] = useState(0.2); const [reranker, setReranker] = useState(true); const [hybrid, setHybrid] = useState(true); const [chunkOverlap, setChunkOverlap] = useState(64); const [showApiKey, setShowApiKey] = useState(false); const [dirty, setDirty] = useState(false); // Mark dirty on change useEffect(() => {setDirty(true);}, [prompt, topK, threshold, temperature, reranker, hybrid, chunkOverlap]); return ( <>

System Configuration

Retrieval, generation, and infrastructure configuration · changes apply to all sessions on save

{dirty && Unsaved changes}
{/* ===== LEFT COLUMN ===== */}
{/* System Prompt */} v23 · saved 2 d ago
}>