42 lines
1.3 KiB
TypeScript
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}`);
|
|
}
|
|
}
|