lila/data-pipeline/config/providers.ts
2026-07-06 17:12:25 +02:00

58 lines
1.6 KiB
TypeScript

export type ProviderMeta = {
name: string;
envVar: string;
url: string;
requiresKey: boolean;
models: string[];
};
// 1. Explicitly define the literal union
export type OnlineProvider = "gemini" | "deepseek" | "openrouter" | "groq";
// 2. Use the union to type the Record
export const ONLINE_PROVIDERS: Record<OnlineProvider, ProviderMeta> = {
gemini: {
name: "Gemini",
envVar: "GEMINI_API_KEY",
url: "https://generativelanguage.googleapis.com/v1beta",
requiresKey: true,
models: ["gemini-2.5-flash", "gemini-2.5-pro"],
},
deepseek: {
name: "DeepSeek",
envVar: "DEEPSEEK_API_KEY",
url: "https://api.deepseek.com/v1/chat/completions",
requiresKey: true,
models: ["deepseek-chat", "deepseek-reasoner"],
},
openrouter: {
name: "OpenRouter",
envVar: "OPENROUTER_API_KEY",
url: "https://openrouter.ai/api/v1/chat/completions",
requiresKey: true,
models: [
"openai/gpt-oss-120b:free",
"google/gemma-4-31b-it:free",
"qwen/qwen3-next-80b-a3b-instruct:free",
"meta-llama/llama-3.3-70b-instruct:free",
"anthropic/claude-sonnet-4",
"google/gemini-2.5-flash",
"deepseek/deepseek-chat-v3",
],
},
groq: {
name: "Groq",
envVar: "GROQ_API_KEY",
url: "https://api.groq.com/openai/v1/chat/completions",
requiresKey: true,
models: ["llama-3.3-70b-versatile", "gemma2-9b-it", "mixtral-8x7b-32768"],
},
};
export const LOCAL_PROVIDER: ProviderMeta = {
name: "Local (llama.cpp / ollama / lm-studio)",
envVar: "",
url: "http://127.0.0.1:8080/v1/chat/completions",
requiresKey: false,
models: [],
};