|
|
export function getProviderConfig(provider, model) { |
|
|
|
|
|
const apiKey = process.env.OPENCLAW_API_KEY || |
|
|
process.env.DEEPSEEK_API_KEY || |
|
|
process.env.OPENAI_API_KEY || |
|
|
process.env.ANTHROPIC_API_KEY; |
|
|
|
|
|
if (!apiKey) { |
|
|
throw new Error("API key not set. Set OPENCLAW_API_KEY, DEEPSEEK_API_KEY, or provider-specific key"); |
|
|
} |
|
|
|
|
|
switch (provider) { |
|
|
case "openai": |
|
|
return { |
|
|
name: "openai", |
|
|
baseUrl: "https://api.openai.com/v1/chat/completions", |
|
|
model: model || "gpt-4.1-mini", |
|
|
headers: { |
|
|
"Authorization": `Bearer ${apiKey}`, |
|
|
"Content-Type": "application/json" |
|
|
} |
|
|
}; |
|
|
|
|
|
case "deepseek": |
|
|
return { |
|
|
name: "deepseek", |
|
|
baseUrl: "https://api.deepseek.com/chat/completions", |
|
|
model: model || "deepseek-chat", |
|
|
headers: { |
|
|
"Authorization": `Bearer ${apiKey}`, |
|
|
"Content-Type": "application/json" |
|
|
} |
|
|
}; |
|
|
|
|
|
case "gemini": |
|
|
return { |
|
|
name: "gemini", |
|
|
baseUrl: `https://generativelanguage.googleapis.com/v1beta/models/${model || "gemini-1.5-pro"}:generateContent?key=${apiKey}`, |
|
|
model, |
|
|
headers: { |
|
|
"Content-Type": "application/json" |
|
|
} |
|
|
}; |
|
|
|
|
|
case "openrouter": |
|
|
return { |
|
|
name: "openrouter", |
|
|
baseUrl: "https://openrouter.ai/api/v1/chat/completions", |
|
|
model: model || "openai/gpt-4o-mini", |
|
|
headers: { |
|
|
"Authorization": `Bearer ${apiKey}`, |
|
|
"Content-Type": "application/json", |
|
|
"HTTP-Referer": "https://getzero11-openclaw.hf.space", |
|
|
"X-Title": "OpenClaw Market Research Agent" |
|
|
} |
|
|
}; |
|
|
|
|
|
case "dashscope": |
|
|
return { |
|
|
name: "dashscope", |
|
|
baseUrl: "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation", |
|
|
model: model || "qwen-plus", |
|
|
headers: { |
|
|
"Authorization": `Bearer ${apiKey}`, |
|
|
"Content-Type": "application/json" |
|
|
} |
|
|
}; |
|
|
|
|
|
default: |
|
|
throw new Error(`Unsupported provider: ${provider}`); |
|
|
} |
|
|
} |
|
|
|