fix: use x-api-key header for minimax

This commit is contained in:
renato97
2025-12-01 03:33:49 +00:00
parent c21734220c
commit 7c7f6e7ae6

View File

@@ -116,59 +116,86 @@ function extractJson(text) {
return null; return null;
} }
function anthConfig() { function anthConfigs() {
const base = const configs = [];
(process.env.ANTHROPIC_BASE_URL || '').trim() || const primaryBase = (process.env.ANTHROPIC_BASE_URL || '').trim();
(process.env.ANTHROPIC_FALLBACK_BASE_URL || '').trim(); const primaryToken =
const token =
(process.env.ANTHROPIC_AUTH_TOKEN || '').trim() || (process.env.ANTHROPIC_AUTH_TOKEN || '').trim() ||
(process.env.ANTHROPIC_FALLBACK_TOKEN || '').trim(); (process.env.ANTHROPIC_API_KEY || '').trim();
if (!base || !token) { if (primaryBase && primaryToken) {
return null; configs.push({
endpoint: `${primaryBase.replace(/\/$/, '')}/v1/messages`,
token: primaryToken,
model: process.env.ANTHROPIC_MODEL || 'claude-3-5-sonnet-20241022'
});
} }
return { const fallbackBase = (process.env.ANTHROPIC_FALLBACK_BASE_URL || '').trim();
endpoint: `${base.replace(/\/$/, '')}/v1/messages`, const fallbackToken = (process.env.ANTHROPIC_FALLBACK_TOKEN || '').trim();
token if (fallbackBase && fallbackToken) {
}; const sameAsPrimary =
fallbackBase === primaryBase && fallbackToken === primaryToken;
if (!sameAsPrimary) {
configs.push({
endpoint: `${fallbackBase.replace(/\/$/, '')}/v1/messages`,
token: fallbackToken,
model:
process.env.ANTHROPIC_FALLBACK_MODEL ||
process.env.ANTHROPIC_MODEL ||
'claude-3-5-sonnet-20241022'
});
}
}
return configs;
} }
async function callAnthropic(systemText, userText, maxTokens = 800) { async function callAnthropic(systemText, userText, maxTokens = 800) {
const cfg = anthConfig(); const configs = anthConfigs();
if (!cfg) { if (!configs.length) {
return null; return null;
} }
const payload = { let lastError = null;
model: process.env.ANTHROPIC_MODEL || 'claude-3-5-sonnet-20241022', for (const cfg of configs) {
max_tokens: maxTokens, const payload = {
temperature: 0.3, model: cfg.model || process.env.ANTHROPIC_MODEL || 'claude-3-5-sonnet-20241022',
system: systemText, max_tokens: maxTokens,
messages: [ temperature: 0.3,
{ system: systemText,
role: 'user', messages: [
content: [{ type: 'text', text: userText }] {
role: 'user',
content: [{ type: 'text', text: userText }]
}
]
};
try {
const res = await fetch(cfg.endpoint, {
method: 'POST',
headers: {
'content-type': 'application/json',
'x-api-key': cfg.token,
'anthropic-version': '2023-06-01'
},
body: JSON.stringify(payload),
timeout: Number(process.env.API_TIMEOUT_MS) || 60000
});
if (!res.ok) {
throw new Error(await res.text());
} }
] const data = await res.json();
}; return data?.content?.[0]?.text || '';
try { } catch (err) {
const res = await fetch(cfg.endpoint, { lastError = err;
method: 'POST', console.warn(
headers: { `[alsGenerator] Anthropic error (${cfg.endpoint}):`,
'content-type': 'application/json', err.message
'x-api-key': cfg.token, );
'anthropic-version': '2023-06-01' continue;
},
body: JSON.stringify(payload),
timeout: Number(process.env.API_TIMEOUT_MS) || 60000
});
if (!res.ok) {
throw new Error(await res.text());
} }
const data = await res.json();
return data?.content?.[0]?.text || '';
} catch (err) {
console.warn('[alsGenerator] Anthropic error:', err.message);
return null;
} }
if (lastError) {
console.warn('[alsGenerator] All Anthropic endpoints failed.');
}
return null;
} }
async function planWithAI(prompt, library, sources) { async function planWithAI(prompt, library, sources) {