Files
vision-server/src/models.js
2026-04-23 14:58:54 -05:00

85 lines
2.1 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-6',
label: 'Claude Opus 4.6',
provider: 'anthropic',
creator: 'Anthropic',
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: '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,
},
{
id: 'gemma4:31b-cloud',
label: 'Gemma 4 31B',
provider: 'ollama',
creator: 'Gemma / 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;
}