chatbot-template/lib/ai/models.ts

89 lines
2.2 KiB
TypeScript
Raw Permalink Normal View History

export const DEFAULT_CHAT_MODEL = "gpt-5.4-mini";
export type ModelCapabilities = {
tools: boolean;
vision: boolean;
reasoning: boolean;
};
export type ChatModel = {
id: string;
name: string;
provider: string;
description: string;
};
export const chatModels: ChatModel[] = [
{
id: "claude-sonnet",
name: "Claude Sonnet 4.6",
provider: "anthropic",
description: "Anthropic's flagship model — balanced reasoning and speed",
},
{
id: "claude-haiku",
name: "Claude Haiku 4.5",
provider: "anthropic",
description: "Fast and cheap Anthropic model",
},
{
id: "gpt-5.4",
name: "GPT-5.4",
provider: "openai",
description: "OpenAI's flagship",
},
{
id: "gpt-5.4-mini",
name: "GPT-5.4 Mini",
provider: "openai",
description: "Fast and cheap OpenAI model",
},
{
id: "kimi-k2.6",
name: "Kimi K2.6",
provider: "moonshotai",
description: "Moonshot AI flagship",
},
{
id: "minimax-m2.7",
name: "MiniMax M2.7",
provider: "minimax",
description: "MiniMax open-source model",
},
{
id: "qwen3-coder",
name: "Qwen3 Coder",
provider: "alibaba",
description: "Code-specialized model",
},
];
export const titleModel = chatModels.find((m) => m.id === "claude-haiku")!;
export const allowedModelIds = new Set(chatModels.map((m) => m.id));
export const modelsByProvider = chatModels.reduce(
(acc, model) => {
if (!acc[model.provider]) {
acc[model.provider] = [];
}
acc[model.provider].push(model);
return acc;
},
{} as Record<string, ChatModel[]>
);
export const modelCapabilities: Record<string, ModelCapabilities> = {
"claude-sonnet": { tools: true, vision: true, reasoning: true },
"claude-haiku": { tools: true, vision: true, reasoning: false },
"gpt-5.4": { tools: true, vision: true, reasoning: true },
"gpt-5.4-mini": { tools: true, vision: true, reasoning: false },
"kimi-k2.6": { tools: true, vision: false, reasoning: false },
"minimax-m2.7": { tools: true, vision: false, reasoning: false },
"qwen3-coder": { tools: true, vision: false, reasoning: false },
};
export function getActiveModels(): ChatModel[] {
return chatModels;
}