106 lines
2.6 KiB
JavaScript
106 lines
2.6 KiB
JavaScript
// models.js — shared model configuration
|
|
// Used by the frontend dropdown AND the backend router.
|
|
//
|
|
// provider values map to individual AI SDK packages:
|
|
// "anthropic" → @ai-sdk/anthropic (ANTHROPIC_API_KEY)
|
|
// "openai" → @ai-sdk/openai (OPENAI_API_KEY)
|
|
// "google" → @ai-sdk/google (GOOGLE_API_KEY)
|
|
// "ollama" → ollama-ai-provider-v2 (OLLAMA_API_KEY)
|
|
|
|
export const MODELS = [
|
|
{
|
|
id: 'claude-opus-4-7',
|
|
label: 'Claude Opus 4.7',
|
|
provider: 'anthropic',
|
|
creator: 'Anthropic',
|
|
vision: true,
|
|
},
|
|
{
|
|
id: 'gpt-4o',
|
|
label: 'ChatGPT 4o',
|
|
provider: 'openai',
|
|
creator: 'OpenAI',
|
|
vision: true,
|
|
},
|
|
{
|
|
id: 'gpt-5.4',
|
|
label: 'GPT-5.4',
|
|
provider: 'openai',
|
|
creator: 'OpenAI',
|
|
vision: true,
|
|
},
|
|
{
|
|
id: 'gemini-3-flash-preview',
|
|
label: 'Gemini 3 Flash',
|
|
provider: 'google',
|
|
creator: 'Google',
|
|
vision: true,
|
|
},
|
|
{
|
|
id: 'gemini-robotics-er-1.6-preview',
|
|
label: 'Gemini Robotics-ER 1.6',
|
|
provider: 'google',
|
|
creator: 'Google DeepMind',
|
|
vision: true,
|
|
},
|
|
{
|
|
id: 'gemini-3.1-pro-preview',
|
|
label: 'Gemini 3.1 Pro',
|
|
provider: 'google',
|
|
creator: 'Google DeepMind',
|
|
vision: true,
|
|
},
|
|
{
|
|
id: 'gemma-4-31b-it',
|
|
label: 'Gemma 4 31B IT',
|
|
provider: 'google',
|
|
creator: 'Google DeepMind',
|
|
vision: true,
|
|
},
|
|
{
|
|
id: 'gemma-4-26b-a4b-it',
|
|
label: 'Gemma 4 26B A4B IT',
|
|
provider: 'google',
|
|
creator: 'Google DeepMind',
|
|
vision: true,
|
|
},
|
|
{
|
|
id: 'qwen3.5:397b-cloud',
|
|
label: 'Qwen 3.5 397B',
|
|
provider: 'ollama',
|
|
creator: 'Qwen / Ollama Cloud',
|
|
vision: true,
|
|
},
|
|
{
|
|
id: 'qwen3-vl:235b-cloud',
|
|
label: 'Qwen 3 VL 235B',
|
|
provider: 'ollama',
|
|
creator: 'Qwen / Ollama Cloud',
|
|
vision: true,
|
|
},
|
|
{
|
|
id: 'kimi-k2.6:cloud',
|
|
label: 'Kimi K2.6',
|
|
provider: 'ollama',
|
|
creator: 'Kimi / Ollama Cloud',
|
|
vision: true,
|
|
}
|
|
];
|
|
|
|
export const DEFAULT_MODEL_ID = 'qwen3.5:397b-cloud';
|
|
|
|
export function findModel(id) {
|
|
return MODELS.find(m => m.id === id);
|
|
}
|
|
|
|
export function normalizeModelId(raw) {
|
|
if (!raw) return raw;
|
|
// Allow legacy "provider/model" storage (e.g. "anthropic/claude-sonnet-4.6")
|
|
const noProvider = String(raw).includes('/') ? String(raw).split('/').pop() : String(raw);
|
|
|
|
// Allow legacy dotted Claude naming used in early versions of this repo.
|
|
if (noProvider === 'claude-sonnet-4.6') return 'claude-sonnet-4-6';
|
|
|
|
return noProvider;
|
|
}
|