From daac8c46acba78dcbeb3aae1ffcfbe24716bfbe6 Mon Sep 17 00:00:00 2001 From: admtracksteel Date: Sat, 6 Jun 2026 15:37:56 +0000 Subject: [PATCH] =?UTF-8?q?Injeta=20diretrizes=20de=20estilo=20din=C3=A2mi?= =?UTF-8?q?cas=20nos=20prompts=20de=20chat=20e=20an=C3=A1lises=20de=20obse?= =?UTF-8?q?rva=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server.js | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) 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];