Files
vision-server/src/models.js

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;
}