|
|
|
|
|
import { env } from 'node:process'; |
|
|
|
export function getAPIKey(cloudflareEnv: Env, provider: string, userApiKeys?: Record<string, string>) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
if (userApiKeys?.[provider]) { |
|
return userApiKeys[provider]; |
|
} |
|
|
|
|
|
switch (provider) { |
|
case 'Anthropic': |
|
return env.ANTHROPIC_API_KEY || cloudflareEnv.ANTHROPIC_API_KEY; |
|
case 'OpenAI': |
|
return env.OPENAI_API_KEY || cloudflareEnv.OPENAI_API_KEY; |
|
case 'Google': |
|
return env.GOOGLE_GENERATIVE_AI_API_KEY || cloudflareEnv.GOOGLE_GENERATIVE_AI_API_KEY; |
|
case 'Groq': |
|
return env.GROQ_API_KEY || cloudflareEnv.GROQ_API_KEY; |
|
case 'HuggingFace': |
|
return env.HuggingFace_API_KEY || cloudflareEnv.HuggingFace_API_KEY; |
|
case 'OpenRouter': |
|
return env.OPEN_ROUTER_API_KEY || cloudflareEnv.OPEN_ROUTER_API_KEY; |
|
case 'Deepseek': |
|
return env.DEEPSEEK_API_KEY || cloudflareEnv.DEEPSEEK_API_KEY |
|
case 'Mistral': |
|
return env.MISTRAL_API_KEY || cloudflareEnv.MISTRAL_API_KEY; |
|
case "OpenAILike": |
|
return env.OPENAI_LIKE_API_KEY || cloudflareEnv.OPENAI_LIKE_API_KEY; |
|
case "xAI": |
|
return env.XAI_API_KEY || cloudflareEnv.XAI_API_KEY; |
|
case "Cohere": |
|
return env.COHERE_API_KEY; |
|
default: |
|
return ""; |
|
} |
|
} |
|
|
|
export function getBaseURL(cloudflareEnv: Env, provider: string) { |
|
switch (provider) { |
|
case 'OpenAILike': |
|
return env.OPENAI_LIKE_API_BASE_URL || cloudflareEnv.OPENAI_LIKE_API_BASE_URL; |
|
case 'LMStudio': |
|
return env.LMSTUDIO_API_BASE_URL || cloudflareEnv.LMSTUDIO_API_BASE_URL || "http://localhost:1234"; |
|
case 'Ollama': |
|
let baseUrl = env.OLLAMA_API_BASE_URL || cloudflareEnv.OLLAMA_API_BASE_URL || "http://localhost:11434"; |
|
if (env.RUNNING_IN_DOCKER === 'true') { |
|
baseUrl = baseUrl.replace("localhost", "host.docker.internal"); |
|
} |
|
return baseUrl; |
|
default: |
|
return ""; |
|
} |
|
} |
|
|