Uanderson Silva
refine prompts for each phase
b82e2a6
Raw
History Blame Contribute Delete
1.7 kB
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,
});
}
}