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;