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 {
|
try {
|
||||||
const agentConfig = readAgentConfig();
|
const agentConfig = readAgentConfig();
|
||||||
const agentName = agentConfig.agentName || "Kemily";
|
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 = '';
|
let contextStr = '';
|
||||||
if (turmaContext && Array.isArray(turmaContext) && turmaContext.length > 0) {
|
if (turmaContext && Array.isArray(turmaContext) && turmaContext.length > 0) {
|
||||||
@@ -2105,7 +2109,11 @@ REGRAS:
|
|||||||
- Tags: escolha entre social, cognitivo, motor, linguagem, emocional, colaborativo, autónomo
|
- 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**
|
- Relatório em português, linguagem formal-pedagógica, seções claras em **markdown**
|
||||||
- Foque em evidências observáveis
|
- 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:
|
OBSERVAÇÃO REGISTRADA:
|
||||||
"""
|
"""
|
||||||
@@ -2121,7 +2129,7 @@ Retorne APENAS o JSON válido:`;
|
|||||||
console.log('[Smart Report] Tentando gerar relatório via MiniMax M3...');
|
console.log('[Smart Report] Tentando gerar relatório via MiniMax M3...');
|
||||||
const result = await callMinimax({
|
const result = await callMinimax({
|
||||||
messages: [{ role: 'user', content: reportPrompt }],
|
messages: [{ role: 'user', content: reportPrompt }],
|
||||||
temperature: 0.5,
|
temperature: temperatureValue,
|
||||||
max_tokens: 1500
|
max_tokens: 1500
|
||||||
});
|
});
|
||||||
rawContent = result.text;
|
rawContent = result.text;
|
||||||
@@ -2142,7 +2150,7 @@ Retorne APENAS o JSON válido:`;
|
|||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
model: process.env.OPENROUTER_MODEL || 'openai/gpt-4.1-nano',
|
model: process.env.OPENROUTER_MODEL || 'openai/gpt-4.1-nano',
|
||||||
messages: [{ role: 'user', content: reportPrompt }],
|
messages: [{ role: 'user', content: reportPrompt }],
|
||||||
temperature: 0.5,
|
temperature: temperatureValue,
|
||||||
max_tokens: 1500
|
max_tokens: 1500
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
@@ -2171,7 +2179,7 @@ Retorne APENAS o JSON válido:`;
|
|||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
model: process.env.GROQ_MODEL || 'llama-3.3-70b-versatile',
|
model: process.env.GROQ_MODEL || 'llama-3.3-70b-versatile',
|
||||||
messages: [{ role: 'user', content: reportPrompt }],
|
messages: [{ role: 'user', content: reportPrompt }],
|
||||||
temperature: 0.5,
|
temperature: temperatureValue,
|
||||||
max_tokens: 1500
|
max_tokens: 1500
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
@@ -2200,7 +2208,7 @@ Retorne APENAS o JSON válido:`;
|
|||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
model: process.env.GOOGLE_AI_MODEL || 'gemini-2.5-flash',
|
model: process.env.GOOGLE_AI_MODEL || 'gemini-2.5-flash',
|
||||||
messages: [{ role: 'user', content: reportPrompt }],
|
messages: [{ role: 'user', content: reportPrompt }],
|
||||||
temperature: 0.5,
|
temperature: temperatureValue,
|
||||||
max_tokens: 1500
|
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);
|
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:
|
const languageDirective = `\n\n⚠️ DIRETRIZ CRÍTICA DE IDIOMA E SAÍDA:
|
||||||
- Você deve responder EXCLUSIVAMENTE em português do Brasil (Brazilian Portuguese).
|
- Você deve responder EXCLUSIVAMENTE em português do Brasil (Brazilian Portuguese).
|
||||||
- Nunca inclua justificativas, introduções, pensamentos, comentários ou notas em inglês.
|
- 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 = {
|
const dynamicSystemPrompt = {
|
||||||
role: "system",
|
role: "system",
|
||||||
content: languageDirective + KEMILY_SYSTEM_PROMPT.content
|
content: styleDirective + languageDirective + KEMILY_SYSTEM_PROMPT.content
|
||||||
.replace(/Você é a Kemily/g, `Você é a ${agentName}`)
|
.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];
|
const enrichedMessages = [dynamicSystemPrompt, ...messages];
|
||||||
|
|||||||
Reference in New Issue
Block a user