From 21c18afd02fd4f8155a9ac86e80e678a3ff19917 Mon Sep 17 00:00:00 2001 From: Marcos Date: Sat, 11 Jul 2026 20:40:55 +0000 Subject: [PATCH] fix(audit): remover response_format para openrouter e melhorar placeholder --- app/src/components/AuditPanel.tsx | 2 +- app/src/lib/audit/runner.ts | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/src/components/AuditPanel.tsx b/app/src/components/AuditPanel.tsx index 12511b8..ee8d23d 100644 --- a/app/src/components/AuditPanel.tsx +++ b/app/src/components/AuditPanel.tsx @@ -161,7 +161,7 @@ export default function AuditPanel() { setConfig((c) => ({ ...c, baseUrl: e.target.value || undefined }))} - placeholder="https://api.openai.com/v1" + placeholder={config.provider === 'openrouter' ? 'https://openrouter.ai/api/v1 (padrão)' : config.provider === 'ollama' ? 'http://localhost:11434 (padrão)' : 'https://api.openai.com/v1'} /> diff --git a/app/src/lib/audit/runner.ts b/app/src/lib/audit/runner.ts index afbd350..0110685 100644 --- a/app/src/lib/audit/runner.ts +++ b/app/src/lib/audit/runner.ts @@ -147,23 +147,28 @@ async function callOpenRouter( ): Promise { onProgress?.('Enviando para OpenRouter...'); const url = config.baseUrl ?? 'https://openrouter.ai/api/v1/chat/completions'; - const body: OpenAIRequest = { + const body = { model: config.model, messages: [ - { role: 'system', content: systemPrompt }, - { role: 'user', content: userPrompt }, + { role: 'system' as const, content: systemPrompt }, + { role: 'user' as const, content: userPrompt }, ], temperature: 0, - response_format: { type: 'json_object' }, }; const response = await fetchWithTimeout(url, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${config.apiKey}`, + 'HTTP-Referer': 'https://brainwind.app', + 'X-Title': 'BrainWind NBR 6123', }, body: JSON.stringify(body), }, 180000); + if (!response.ok) { + const errText = await response.text(); + throw new Error(`OpenRouter HTTP ${response.status}: ${errText}`); + } const data = await response.json() as { choices?: { message?: { content?: string } }[]; error?: { message?: string } }; if (data.error) throw new Error(`OpenRouter error: ${data.error.message}`); const content = data.choices?.[0]?.message?.content;