chatbot-template/lib/ai/models.ts

90 lines
2.1 KiB
TypeScript
Raw Normal View History

// Curated list of top models from Vercel AI Gateway
export const DEFAULT_CHAT_MODEL = "google/gemini-2.5-flash-lite";
export type ChatModel = {
2024-10-30 16:01:24 +05:30
id: string;
name: string;
provider: string;
2024-10-30 16:01:24 +05:30
description: string;
};
2024-10-30 16:01:24 +05:30
export const chatModels: ChatModel[] = [
// Anthropic
2024-10-30 16:01:24 +05:30
{
id: "anthropic/claude-haiku-4.5",
name: "Claude Haiku 4.5",
provider: "anthropic",
description: "Fast and affordable, great for everyday tasks",
2024-10-30 16:01:24 +05:30
},
{
id: "anthropic/claude-sonnet-4.5",
name: "Claude Sonnet 4.5",
provider: "anthropic",
description: "Best balance of speed, intelligence, and cost",
},
{
id: "anthropic/claude-opus-4.5",
name: "Claude Opus 4.5",
provider: "anthropic",
description: "Most capable Anthropic model",
},
// OpenAI
{
id: "openai/gpt-4.1-mini",
name: "GPT-4.1 Mini",
provider: "openai",
description: "Fast and cost-effective for simple tasks",
},
{
id: "openai/gpt-5.2",
name: "GPT-5.2",
provider: "openai",
description: "Most capable OpenAI model",
},
// Google
{
id: "google/gemini-2.5-flash-lite",
name: "Gemini 2.5 Flash Lite",
provider: "google",
description: "Ultra fast and affordable",
},
{
id: "google/gemini-3-pro-preview",
name: "Gemini 3 Pro",
provider: "google",
description: "Most capable Google model",
},
// xAI
{
id: "xai/grok-4.1-fast-non-reasoning",
name: "Grok 4.1 Fast",
provider: "xai",
description: "Fast with 30K context",
},
// Reasoning models (extended thinking)
{
id: "anthropic/claude-3.7-sonnet-thinking",
name: "Claude 3.7 Sonnet",
provider: "reasoning",
description: "Extended thinking for complex problems",
},
{
id: "xai/grok-code-fast-1-thinking",
name: "Grok Code Fast",
provider: "reasoning",
description: "Reasoning optimized for code",
},
];
// Group models by provider for UI
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[]>
);