Injeta diretrizes de estilo dinâmicas nos prompts de chat e análises de observação
This commit is contained in:
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user