| | 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}`); |
| | } |
| | } |
| |
|