test-brazilian-prompt.js•3.88 kB
#!/usr/bin/env node
/**
* Test Brazilian Portuguese prompt processing
*/
import { spawn } from 'child_process';
import { resolve, dirname } from 'path';
import { fileURLToPath } from 'url';
const currentDir = dirname(fileURLToPath(import.meta.url));
const serverPath = resolve(currentDir, 'src', 'intelligent-composer-mcp-server.ts');
console.log('🇧🇷 Testing Brazilian Portuguese Prompt Processing...\n');
const server = spawn('node', ['--loader', 'ts-node/esm', serverPath], {
stdio: ['pipe', 'pipe', 'pipe'],
cwd: currentDir,
});
// Test the exact Brazilian Portuguese prompt from the user
const testRequest = {
jsonrpc: '2.0',
id: 1,
method: 'tools/call',
params: {
name: 'create-intelligent-composition',
arguments: {
prompt: `Crie uma composição inteligente sobre fotossíntese para alunos do sétimo ano do ensino fundamental 2, para preencher uma carga horária de 50 minutos.
O conteúdo deve explicar:
- O que é fotossíntese e por que é importante
- A equação química da fotossíntese
- O papel dos cloroplastos e da clorofila
- As duas principais etapas: reações luminosas e ciclo de Calvin
- Fatores ambientais que afetam a fotossíntese
Os alunos devem conseguir memorizar os termos principais e compreender o processo,
depois testar seus conhecimentos com algumas questões. Mostre um vídeo demonstrativo
do processo se possível.`,
title: 'Fotossíntese: Como as Plantas Produzem Alimento',
description: 'Introdução abrangente à fotossíntese para biologia do ensino fundamental 2',
},
},
};
console.log('📤 Enviando prompt em português brasileiro:');
console.log(JSON.stringify(testRequest, null, 2));
console.log('\n⏳ Aguardando análise da IA e criação da composição...\n');
let responseData = '';
server.stdout.on('data', (data) => {
responseData += data.toString();
// Log partial responses to show progress
const lines = data.toString().split('\n');
lines.forEach(line => {
if (line.includes('🧠') || line.includes('📊') || line.includes('✅') || line.includes('🇧🇷')) {
console.log('📡 Servidor:', line);
}
});
// Check if we have a complete JSON response
try {
const lines = responseData.split('\n').filter(line => line.trim());
for (const line of lines) {
if (line.startsWith('{') && line.endsWith('}')) {
const response = JSON.parse(line);
console.log('📥 Resposta Final recebida!');
if (response.result && response.result.content) {
console.log('\n🎯 Sucesso! Composição inteligente criada em português.');
console.log('📋 Resultado:', response.result.content[0].text);
// Check for Brazilian context detection
const resultText = response.result.content[0].text;
if (resultText.includes('fundamental-2') || resultText.includes('sétimo ano') || resultText.includes('50 minutos')) {
console.log('\n✅ Contexto educacional brasileiro detectado corretamente!');
}
}
server.kill();
process.exit(0);
}
}
} catch (e) {
// Continue waiting for complete response
}
});
server.stderr.on('data', (data) => {
const errorText = data.toString();
if (!errorText.includes('ExperimentalWarning')) {
console.error('❌ Erro:', errorText);
}
});
server.on('close', (code) => {
console.log(`\n🔚 Servidor fechado com código ${code}`);
if (code !== 0) {
console.log('❌ Teste falhou');
process.exit(1);
}
});
// Send the test request
server.stdin.write(JSON.stringify(testRequest) + '\n');
// Set a timeout for the test
setTimeout(() => {
console.log('⏰ Timeout do teste atingido (60 segundos)');
server.kill();
process.exit(1);
}, 60000);