Spaces:
Runtime error
Runtime error
File size: 1,700 Bytes
5710d63 3f143e9 5710d63 f27a135 b82e2a6 f27a135 7e6051f 5710d63 3f143e9 5710d63 f27a135 b82e2a6 3f143e9 f27a135 3f143e9 5710d63 f27a135 b82e2a6 f27a135 5710d63 f27a135 5710d63 f27a135 b82e2a6 f27a135 5710d63 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | import { ChatGoogleGenerativeAI } from "@langchain/google-genai";
import { ChatAnthropic } from "@langchain/anthropic";
import { ChatOpenRouter } from "@langchain/openrouter";
import type { BaseChatModel } from "@langchain/core/language_models/chat_models";
export type LLMProvider = "google" | "openrouter" | "anthropic";
export interface LLMOptions {
model?: string;
temperature?: number | null;
maxTokens?: number;
}
export function createLLM(overrideProvider?: LLMProvider, options?: LLMOptions): BaseChatModel {
const provider = overrideProvider || (process.env.LLM_PROVIDER as LLMProvider) || "openrouter";
switch (provider) {
case "openrouter":
return new ChatOpenRouter({
model: options?.model || process.env.OPENROUTER_MODEL || "google/gemini-3.1-flash-lite",
...(options?.temperature !== null && { temperature: options?.temperature ?? 0.2 }),
apiKey: process.env.OPENROUTER_API_KEY,
maxTokens: options?.maxTokens ?? 4096,
});
case "anthropic":
return new ChatAnthropic({
model: options?.model || process.env.ANTHROPIC_MODEL || "claude-sonnet-4-6",
...(options?.temperature !== null && { temperature: options?.temperature ?? 0.2 }),
apiKey: process.env.ANTHROPIC_API_KEY,
maxTokens: options?.maxTokens ?? 4096,
});
case "google":
default:
return new ChatGoogleGenerativeAI({
apiKey: process.env.GOOGLE_API_KEY || "",
model: options?.model || process.env.MODEL_NAME || "gemini-2.5-flash",
...(options?.temperature !== null && { temperature: options?.temperature ?? 0.2 }),
maxOutputTokens: options?.maxTokens ?? 4096,
});
}
}
|