lila/data-pipeline/utils/llm-adapters/factory.ts
2026-07-06 17:12:25 +02:00

42 lines
1.3 KiB
TypeScript

import { LLM_CONFIG } from "../../config/llm.js";
import { OpenAiCompatibleAdapter } from "./openai-compatible.js";
import { GeminiAdapter } from "./gemini.js";
import type { LlmAdapter } from "./types.js";
export function createAdapter(): LlmAdapter {
switch (LLM_CONFIG.provider) {
case "local":
return new OpenAiCompatibleAdapter(
LLM_CONFIG.url,
undefined,
LLM_CONFIG.model,
);
case "openrouter":
return new OpenAiCompatibleAdapter(
LLM_CONFIG.url,
process.env["OPENROUTER_API_KEY"],
LLM_CONFIG.model,
);
case "deepseek":
return new OpenAiCompatibleAdapter(
LLM_CONFIG.url,
process.env["DEEPSEEK_API_KEY"],
LLM_CONFIG.model,
);
case "groq":
return new OpenAiCompatibleAdapter(
LLM_CONFIG.url,
process.env["GROQ_API_KEY"],
LLM_CONFIG.model,
);
case "gemini": {
const apiKey = process.env["GEMINI_API_KEY"];
if (!apiKey) throw new Error("GEMINI_API_KEY env var not set");
if (!LLM_CONFIG.model)
throw new Error("LLM_CONFIG.model required for gemini");
return new GeminiAdapter(apiKey, LLM_CONFIG.model);
}
default:
throw new Error(`Unknown provider: ${LLM_CONFIG.provider as string}`);
}
}