diff --git a/server.js b/server.js index 04ad74f..42f2c29 100644 --- a/server.js +++ b/server.js @@ -2076,6 +2076,10 @@ app.post('/api/observacao/analisar', requireAuth, async (req, res) => { try { const agentConfig = readAgentConfig(); const agentName = agentConfig.agentName || "Kemily"; + const temperaturePreset = agentConfig.temperaturePreset || 'equilibrado'; + const presetDesc = TEMPERATURE_PRESETS[temperaturePreset]?.description || TEMPERATURE_PRESETS['equilibrado'].description; + const presetLabel = TEMPERATURE_PRESETS[temperaturePreset]?.label || 'Equilibrado'; + const temperatureValue = TEMPERATURE_PRESETS[temperaturePreset]?.value || 0.6; let contextStr = ''; if (turmaContext && Array.isArray(turmaContext) && turmaContext.length > 0) { @@ -2105,7 +2109,11 @@ REGRAS: - Tags: escolha entre social, cognitivo, motor, linguagem, emocional, colaborativo, autónomo - Relatório em português, linguagem formal-pedagógica, seções claras em **markdown** - Foque em evidências observáveis -- Máximo 120 palavras no relatório + +🎯 DIRETRIZ DE ESTILO DE RESPOSTA (Obrigatório): +Você foi configurada para atuar no modo: "${presetLabel}". +Instrução comportamental: ${presetDesc} +Ajuste a extensão, a objetividade e o nível de detalhes do conteúdo da chave "relatorio" para refletir ESTRITAMENTE essa diretriz de estilo (ex: se "técnico e direto", faça um relatório mais sintético, pontual e breve; se "detalhista", elabore e estenda mais os contextos e reflexões pedagógicas; se "equilibrado", mantenha um tamanho médio). OBSERVAÇÃO REGISTRADA: """ @@ -2121,7 +2129,7 @@ Retorne APENAS o JSON válido:`; console.log('[Smart Report] Tentando gerar relatório via MiniMax M3...'); const result = await callMinimax({ messages: [{ role: 'user', content: reportPrompt }], - temperature: 0.5, + temperature: temperatureValue, max_tokens: 1500 }); rawContent = result.text; @@ -2142,7 +2150,7 @@ Retorne APENAS o JSON válido:`; body: JSON.stringify({ model: process.env.OPENROUTER_MODEL || 'openai/gpt-4.1-nano', messages: [{ role: 'user', content: reportPrompt }], - temperature: 0.5, + temperature: temperatureValue, max_tokens: 1500 }) }); @@ -2171,7 +2179,7 @@ Retorne APENAS o JSON válido:`; body: JSON.stringify({ model: process.env.GROQ_MODEL || 'llama-3.3-70b-versatile', messages: [{ role: 'user', content: reportPrompt }], - temperature: 0.5, + temperature: temperatureValue, max_tokens: 1500 }) }); @@ -2200,7 +2208,7 @@ Retorne APENAS o JSON válido:`; body: JSON.stringify({ model: process.env.GOOGLE_AI_MODEL || 'gemini-2.5-flash', messages: [{ role: 'user', content: reportPrompt }], - temperature: 0.5, + temperature: temperatureValue, max_tokens: 1500 }) }); @@ -3956,6 +3964,8 @@ app.post('/api/chat', requireAuth, async (req, res) => { console.error('Erro ao integrar observações no prompt da IA:', obsErr); } + const styleDirective = `\n\n🎯 DIRETRIZ DE ESTILO DE RESPOSTA (Obrigatório):\nVocê foi configurada para responder no modo: "${TEMPERATURE_PRESETS[temperaturePreset]?.label || 'Equilibrado'}".\nInstrução comportamental: ${TEMPERATURE_PRESETS[temperaturePreset]?.description || 'Bom para uso geral — nem muito curto, nem muito longo.'}\nSiga rigorosamente este nível de detalhamento, extensão e objetividade em TODAS as suas respostas.\n\n`; + const languageDirective = `\n\n⚠️ DIRETRIZ CRÍTICA DE IDIOMA E SAÍDA: - Você deve responder EXCLUSIVAMENTE em português do Brasil (Brazilian Portuguese). - Nunca inclua justificativas, introduções, pensamentos, comentários ou notas em inglês. @@ -3964,9 +3974,9 @@ app.post('/api/chat', requireAuth, async (req, res) => { const dynamicSystemPrompt = { role: "system", - content: languageDirective + KEMILY_SYSTEM_PROMPT.content + content: styleDirective + languageDirective + KEMILY_SYSTEM_PROMPT.content .replace(/Você é a Kemily/g, `Você é a ${agentName}`) - .replace('INFORMAÇÕES PESSOAIS:', `${knowledgeText}${observationsContext}INFORMAÇÕES PESSOAIS:`) + languageDirective + .replace('INFORMAÇÕES PESSOAIS:', `${knowledgeText}${observationsContext}INFORMAÇÕES PESSOAIS:`) + styleDirective + languageDirective }; const enrichedMessages = [dynamicSystemPrompt, ...messages];