docs(models): update model configuration to add supported field (#1030)
This commit is contained in:
@@ -47,6 +47,20 @@ function generateMarkdownTable(title, models) {
|
||||
return table;
|
||||
}
|
||||
|
||||
function generateUnsupportedTable(models) {
|
||||
if (!models || models.length === 0) {
|
||||
return '## Unsupported Models\n\nNo unsupported models found.\n\n';
|
||||
}
|
||||
let table = '## Unsupported Models\n\n';
|
||||
table += '| Provider | Model Name | Reason |\n';
|
||||
table += '|---|---|---|\n';
|
||||
models.forEach((model) => {
|
||||
table += `| ${model.provider} | ${model.modelName} | ${model.reason || '—'} |\n`;
|
||||
});
|
||||
table += '\n';
|
||||
return table;
|
||||
}
|
||||
|
||||
function main() {
|
||||
try {
|
||||
const correctSupportedModelsPath = path.join(
|
||||
@@ -68,31 +82,46 @@ function main() {
|
||||
const mainModels = [];
|
||||
const researchModels = [];
|
||||
const fallbackModels = [];
|
||||
const unsupportedModels = [];
|
||||
|
||||
for (const provider in supportedModels) {
|
||||
if (Object.hasOwnProperty.call(supportedModels, provider)) {
|
||||
const models = supportedModels[provider];
|
||||
models.forEach((model) => {
|
||||
const modelEntry = {
|
||||
provider: provider,
|
||||
modelName: model.id,
|
||||
sweScore: model.swe_score,
|
||||
inputCost: model.cost_per_1m_tokens
|
||||
? model.cost_per_1m_tokens.input
|
||||
: null,
|
||||
outputCost: model.cost_per_1m_tokens
|
||||
? model.cost_per_1m_tokens.output
|
||||
: null
|
||||
};
|
||||
|
||||
if (model.allowed_roles.includes('main')) {
|
||||
mainModels.push(modelEntry);
|
||||
}
|
||||
if (model.allowed_roles.includes('research')) {
|
||||
researchModels.push(modelEntry);
|
||||
}
|
||||
if (model.allowed_roles.includes('fallback')) {
|
||||
fallbackModels.push(modelEntry);
|
||||
const isSupported = model.supported !== false; // default to true if missing
|
||||
if (isSupported) {
|
||||
const modelEntry = {
|
||||
provider: provider,
|
||||
modelName: model.id,
|
||||
sweScore: model.swe_score,
|
||||
inputCost: model.cost_per_1m_tokens
|
||||
? model.cost_per_1m_tokens.input
|
||||
: null,
|
||||
outputCost: model.cost_per_1m_tokens
|
||||
? model.cost_per_1m_tokens.output
|
||||
: null
|
||||
};
|
||||
if (model.allowed_roles && model.allowed_roles.includes('main')) {
|
||||
mainModels.push(modelEntry);
|
||||
}
|
||||
if (
|
||||
model.allowed_roles &&
|
||||
model.allowed_roles.includes('research')
|
||||
) {
|
||||
researchModels.push(modelEntry);
|
||||
}
|
||||
if (
|
||||
model.allowed_roles &&
|
||||
model.allowed_roles.includes('fallback')
|
||||
) {
|
||||
fallbackModels.push(modelEntry);
|
||||
}
|
||||
} else {
|
||||
unsupportedModels.push({
|
||||
provider: provider,
|
||||
modelName: model.id,
|
||||
reason: model.reason || 'Not specified'
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -119,6 +148,7 @@ function main() {
|
||||
markdownContent += generateMarkdownTable('Main Models', mainModels);
|
||||
markdownContent += generateMarkdownTable('Research Models', researchModels);
|
||||
markdownContent += generateMarkdownTable('Fallback Models', fallbackModels);
|
||||
markdownContent += generateUnsupportedTable(unsupportedModels);
|
||||
|
||||
fs.writeFileSync(correctOutputMarkdownPath, markdownContent, 'utf8');
|
||||
console.log(`Successfully updated ${correctOutputMarkdownPath}`);
|
||||
|
||||
@@ -772,36 +772,38 @@ function getAvailableModels() {
|
||||
const available = [];
|
||||
for (const [provider, models] of Object.entries(MODEL_MAP)) {
|
||||
if (models.length > 0) {
|
||||
models.forEach((modelObj) => {
|
||||
// Basic name generation - can be improved
|
||||
const modelId = modelObj.id;
|
||||
const sweScore = modelObj.swe_score;
|
||||
const cost = modelObj.cost_per_1m_tokens;
|
||||
const allowedRoles = modelObj.allowed_roles || ['main', 'fallback'];
|
||||
const nameParts = modelId
|
||||
.split('-')
|
||||
.map((p) => p.charAt(0).toUpperCase() + p.slice(1));
|
||||
// Handle specific known names better if needed
|
||||
let name = nameParts.join(' ');
|
||||
if (modelId === 'claude-3.5-sonnet-20240620')
|
||||
name = 'Claude 3.5 Sonnet';
|
||||
if (modelId === 'claude-3-7-sonnet-20250219')
|
||||
name = 'Claude 3.7 Sonnet';
|
||||
if (modelId === 'gpt-4o') name = 'GPT-4o';
|
||||
if (modelId === 'gpt-4-turbo') name = 'GPT-4 Turbo';
|
||||
if (modelId === 'sonar-pro') name = 'Perplexity Sonar Pro';
|
||||
if (modelId === 'sonar-mini') name = 'Perplexity Sonar Mini';
|
||||
models
|
||||
.filter((modelObj) => Boolean(modelObj.supported))
|
||||
.forEach((modelObj) => {
|
||||
// Basic name generation - can be improved
|
||||
const modelId = modelObj.id;
|
||||
const sweScore = modelObj.swe_score;
|
||||
const cost = modelObj.cost_per_1m_tokens;
|
||||
const allowedRoles = modelObj.allowed_roles || ['main', 'fallback'];
|
||||
const nameParts = modelId
|
||||
.split('-')
|
||||
.map((p) => p.charAt(0).toUpperCase() + p.slice(1));
|
||||
// Handle specific known names better if needed
|
||||
let name = nameParts.join(' ');
|
||||
if (modelId === 'claude-3.5-sonnet-20240620')
|
||||
name = 'Claude 3.5 Sonnet';
|
||||
if (modelId === 'claude-3-7-sonnet-20250219')
|
||||
name = 'Claude 3.7 Sonnet';
|
||||
if (modelId === 'gpt-4o') name = 'GPT-4o';
|
||||
if (modelId === 'gpt-4-turbo') name = 'GPT-4 Turbo';
|
||||
if (modelId === 'sonar-pro') name = 'Perplexity Sonar Pro';
|
||||
if (modelId === 'sonar-mini') name = 'Perplexity Sonar Mini';
|
||||
|
||||
available.push({
|
||||
id: modelId,
|
||||
name: name,
|
||||
provider: provider,
|
||||
swe_score: sweScore,
|
||||
cost_per_1m_tokens: cost,
|
||||
allowed_roles: allowedRoles,
|
||||
max_tokens: modelObj.max_tokens
|
||||
available.push({
|
||||
id: modelId,
|
||||
name: name,
|
||||
provider: provider,
|
||||
swe_score: sweScore,
|
||||
cost_per_1m_tokens: cost,
|
||||
allowed_roles: allowedRoles,
|
||||
max_tokens: modelObj.max_tokens
|
||||
});
|
||||
});
|
||||
});
|
||||
} else {
|
||||
// For providers with empty lists (like ollama), maybe add a placeholder or skip
|
||||
available.push({
|
||||
|
||||
@@ -8,7 +8,8 @@
|
||||
"output": 15.0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 64000
|
||||
"max_tokens": 64000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "claude-opus-4-20250514",
|
||||
@@ -18,7 +19,8 @@
|
||||
"output": 75.0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 32000
|
||||
"max_tokens": 32000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "claude-3-7-sonnet-20250219",
|
||||
@@ -28,7 +30,8 @@
|
||||
"output": 15.0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 120000
|
||||
"max_tokens": 120000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "claude-3-5-sonnet-20241022",
|
||||
@@ -38,7 +41,8 @@
|
||||
"output": 15.0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 8192
|
||||
"max_tokens": 8192,
|
||||
"supported": true
|
||||
}
|
||||
],
|
||||
"claude-code": [
|
||||
@@ -50,7 +54,8 @@
|
||||
"output": 0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback", "research"],
|
||||
"max_tokens": 32000
|
||||
"max_tokens": 32000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "sonnet",
|
||||
@@ -60,7 +65,8 @@
|
||||
"output": 0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback", "research"],
|
||||
"max_tokens": 64000
|
||||
"max_tokens": 64000,
|
||||
"supported": true
|
||||
}
|
||||
],
|
||||
"mcp": [
|
||||
@@ -72,7 +78,8 @@
|
||||
"output": 0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback", "research"],
|
||||
"max_tokens": 100000
|
||||
"max_tokens": 100000,
|
||||
"supported": true
|
||||
}
|
||||
],
|
||||
"gemini-cli": [
|
||||
@@ -84,7 +91,8 @@
|
||||
"output": 0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback", "research"],
|
||||
"max_tokens": 65536
|
||||
"max_tokens": 65536,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "gemini-2.5-flash",
|
||||
@@ -94,7 +102,8 @@
|
||||
"output": 0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback", "research"],
|
||||
"max_tokens": 65536
|
||||
"max_tokens": 65536,
|
||||
"supported": true
|
||||
}
|
||||
],
|
||||
"openai": [
|
||||
@@ -106,7 +115,8 @@
|
||||
"output": 10.0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 16384
|
||||
"max_tokens": 16384,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "o1",
|
||||
@@ -115,7 +125,8 @@
|
||||
"input": 15.0,
|
||||
"output": 60.0
|
||||
},
|
||||
"allowed_roles": ["main"]
|
||||
"allowed_roles": ["main"],
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "o3",
|
||||
@@ -125,7 +136,8 @@
|
||||
"output": 8.0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 100000
|
||||
"max_tokens": 100000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "o3-mini",
|
||||
@@ -135,7 +147,8 @@
|
||||
"output": 4.4
|
||||
},
|
||||
"allowed_roles": ["main"],
|
||||
"max_tokens": 100000
|
||||
"max_tokens": 100000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "o4-mini",
|
||||
@@ -144,7 +157,8 @@
|
||||
"input": 1.1,
|
||||
"output": 4.4
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"]
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "o1-mini",
|
||||
@@ -153,7 +167,8 @@
|
||||
"input": 1.1,
|
||||
"output": 4.4
|
||||
},
|
||||
"allowed_roles": ["main"]
|
||||
"allowed_roles": ["main"],
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "o1-pro",
|
||||
@@ -162,7 +177,8 @@
|
||||
"input": 150.0,
|
||||
"output": 600.0
|
||||
},
|
||||
"allowed_roles": ["main"]
|
||||
"allowed_roles": ["main"],
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "gpt-4-5-preview",
|
||||
@@ -171,7 +187,8 @@
|
||||
"input": 75.0,
|
||||
"output": 150.0
|
||||
},
|
||||
"allowed_roles": ["main"]
|
||||
"allowed_roles": ["main"],
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "gpt-4-1-mini",
|
||||
@@ -180,7 +197,8 @@
|
||||
"input": 0.4,
|
||||
"output": 1.6
|
||||
},
|
||||
"allowed_roles": ["main"]
|
||||
"allowed_roles": ["main"],
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "gpt-4-1-nano",
|
||||
@@ -189,7 +207,8 @@
|
||||
"input": 0.1,
|
||||
"output": 0.4
|
||||
},
|
||||
"allowed_roles": ["main"]
|
||||
"allowed_roles": ["main"],
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o-mini",
|
||||
@@ -198,7 +217,8 @@
|
||||
"input": 0.15,
|
||||
"output": 0.6
|
||||
},
|
||||
"allowed_roles": ["main"]
|
||||
"allowed_roles": ["main"],
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o-search-preview",
|
||||
@@ -207,7 +227,8 @@
|
||||
"input": 2.5,
|
||||
"output": 10.0
|
||||
},
|
||||
"allowed_roles": ["research"]
|
||||
"allowed_roles": ["research"],
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o-mini-search-preview",
|
||||
@@ -216,7 +237,8 @@
|
||||
"input": 0.15,
|
||||
"output": 0.6
|
||||
},
|
||||
"allowed_roles": ["research"]
|
||||
"allowed_roles": ["research"],
|
||||
"supported": true
|
||||
}
|
||||
],
|
||||
"google": [
|
||||
@@ -225,21 +247,24 @@
|
||||
"swe_score": 0.638,
|
||||
"cost_per_1m_tokens": null,
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 1048000
|
||||
"max_tokens": 1048000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "gemini-2.5-pro-preview-03-25",
|
||||
"swe_score": 0.638,
|
||||
"cost_per_1m_tokens": null,
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 1048000
|
||||
"max_tokens": 1048000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "gemini-2.5-flash-preview-04-17",
|
||||
"swe_score": 0.604,
|
||||
"cost_per_1m_tokens": null,
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 1048000
|
||||
"max_tokens": 1048000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "gemini-2.0-flash",
|
||||
@@ -249,14 +274,16 @@
|
||||
"output": 0.6
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 1048000
|
||||
"max_tokens": 1048000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "gemini-2.0-flash-lite",
|
||||
"swe_score": 0,
|
||||
"cost_per_1m_tokens": null,
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 1048000
|
||||
"max_tokens": 1048000,
|
||||
"supported": true
|
||||
}
|
||||
],
|
||||
"xai": [
|
||||
@@ -269,7 +296,8 @@
|
||||
"output": 15
|
||||
},
|
||||
"allowed_roles": ["main", "fallback", "research"],
|
||||
"max_tokens": 131072
|
||||
"max_tokens": 131072,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "grok-3-fast",
|
||||
@@ -280,7 +308,8 @@
|
||||
"output": 25
|
||||
},
|
||||
"allowed_roles": ["main", "fallback", "research"],
|
||||
"max_tokens": 131072
|
||||
"max_tokens": 131072,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "grok-4",
|
||||
@@ -291,7 +320,8 @@
|
||||
"output": 15
|
||||
},
|
||||
"allowed_roles": ["main", "fallback", "research"],
|
||||
"max_tokens": 131072
|
||||
"max_tokens": 131072,
|
||||
"supported": true
|
||||
}
|
||||
],
|
||||
"groq": [
|
||||
@@ -303,7 +333,8 @@
|
||||
"output": 3.0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 131072
|
||||
"max_tokens": 131072,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "llama-3.3-70b-versatile",
|
||||
@@ -313,7 +344,8 @@
|
||||
"output": 0.79
|
||||
},
|
||||
"allowed_roles": ["main", "fallback", "research"],
|
||||
"max_tokens": 32768
|
||||
"max_tokens": 32768,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "llama-3.1-8b-instant",
|
||||
@@ -323,7 +355,8 @@
|
||||
"output": 0.08
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 131072
|
||||
"max_tokens": 131072,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "llama-4-scout",
|
||||
@@ -333,7 +366,8 @@
|
||||
"output": 0.34
|
||||
},
|
||||
"allowed_roles": ["main", "fallback", "research"],
|
||||
"max_tokens": 32768
|
||||
"max_tokens": 32768,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "llama-4-maverick",
|
||||
@@ -343,7 +377,8 @@
|
||||
"output": 0.77
|
||||
},
|
||||
"allowed_roles": ["main", "fallback", "research"],
|
||||
"max_tokens": 32768
|
||||
"max_tokens": 32768,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "mixtral-8x7b-32768",
|
||||
@@ -353,7 +388,8 @@
|
||||
"output": 0.24
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 32768
|
||||
"max_tokens": 32768,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "qwen-qwq-32b-preview",
|
||||
@@ -363,7 +399,8 @@
|
||||
"output": 0.18
|
||||
},
|
||||
"allowed_roles": ["main", "fallback", "research"],
|
||||
"max_tokens": 32768
|
||||
"max_tokens": 32768,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "deepseek-r1-distill-llama-70b",
|
||||
@@ -373,7 +410,8 @@
|
||||
"output": 0.99
|
||||
},
|
||||
"allowed_roles": ["main", "research"],
|
||||
"max_tokens": 8192
|
||||
"max_tokens": 8192,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "gemma2-9b-it",
|
||||
@@ -383,7 +421,8 @@
|
||||
"output": 0.2
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 8192
|
||||
"max_tokens": 8192,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "whisper-large-v3",
|
||||
@@ -393,7 +432,8 @@
|
||||
"output": 0
|
||||
},
|
||||
"allowed_roles": ["main"],
|
||||
"max_tokens": 0
|
||||
"max_tokens": 0,
|
||||
"supported": true
|
||||
}
|
||||
],
|
||||
"perplexity": [
|
||||
@@ -405,7 +445,8 @@
|
||||
"output": 15
|
||||
},
|
||||
"allowed_roles": ["main", "research"],
|
||||
"max_tokens": 8700
|
||||
"max_tokens": 8700,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "sonar",
|
||||
@@ -415,7 +456,8 @@
|
||||
"output": 1
|
||||
},
|
||||
"allowed_roles": ["research"],
|
||||
"max_tokens": 8700
|
||||
"max_tokens": 8700,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "deep-research",
|
||||
@@ -425,7 +467,8 @@
|
||||
"output": 8
|
||||
},
|
||||
"allowed_roles": ["research"],
|
||||
"max_tokens": 8700
|
||||
"max_tokens": 8700,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "sonar-reasoning-pro",
|
||||
@@ -435,7 +478,8 @@
|
||||
"output": 8
|
||||
},
|
||||
"allowed_roles": ["main", "research", "fallback"],
|
||||
"max_tokens": 8700
|
||||
"max_tokens": 8700,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "sonar-reasoning",
|
||||
@@ -445,7 +489,8 @@
|
||||
"output": 5
|
||||
},
|
||||
"allowed_roles": ["main", "research", "fallback"],
|
||||
"max_tokens": 8700
|
||||
"max_tokens": 8700,
|
||||
"supported": true
|
||||
}
|
||||
],
|
||||
"openrouter": [
|
||||
@@ -457,7 +502,8 @@
|
||||
"output": 0.6
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 1048576
|
||||
"max_tokens": 1048576,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "google/gemini-2.5-flash-preview-05-20:thinking",
|
||||
@@ -467,7 +513,8 @@
|
||||
"output": 3.5
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 1048576
|
||||
"max_tokens": 1048576,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "google/gemini-2.5-pro-exp-03-25",
|
||||
@@ -477,7 +524,8 @@
|
||||
"output": 0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 1000000
|
||||
"max_tokens": 1000000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "deepseek/deepseek-chat-v3-0324:free",
|
||||
@@ -487,7 +535,9 @@
|
||||
"output": 0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 163840
|
||||
"max_tokens": 163840,
|
||||
"supported": false,
|
||||
"reason": "Free OpenRouter models are not supported due to severe rate limits, lack of tool use support, and other reliability issues that make them impractical for production use."
|
||||
},
|
||||
{
|
||||
"id": "deepseek/deepseek-chat-v3-0324",
|
||||
@@ -497,7 +547,8 @@
|
||||
"output": 1.1
|
||||
},
|
||||
"allowed_roles": ["main"],
|
||||
"max_tokens": 64000
|
||||
"max_tokens": 64000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "openai/gpt-4.1",
|
||||
@@ -507,7 +558,8 @@
|
||||
"output": 8
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 1000000
|
||||
"max_tokens": 1000000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "openai/gpt-4.1-mini",
|
||||
@@ -517,7 +569,8 @@
|
||||
"output": 1.6
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 1000000
|
||||
"max_tokens": 1000000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "openai/gpt-4.1-nano",
|
||||
@@ -527,7 +580,8 @@
|
||||
"output": 0.4
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 1000000
|
||||
"max_tokens": 1000000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "openai/o3",
|
||||
@@ -537,7 +591,8 @@
|
||||
"output": 40
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 200000
|
||||
"max_tokens": 200000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "openai/codex-mini",
|
||||
@@ -547,7 +602,8 @@
|
||||
"output": 6
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 100000
|
||||
"max_tokens": 100000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "openai/gpt-4o-mini",
|
||||
@@ -557,7 +613,8 @@
|
||||
"output": 0.6
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 100000
|
||||
"max_tokens": 100000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "openai/o4-mini",
|
||||
@@ -567,7 +624,8 @@
|
||||
"output": 4.4
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 100000
|
||||
"max_tokens": 100000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "openai/o4-mini-high",
|
||||
@@ -577,7 +635,8 @@
|
||||
"output": 4.4
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 100000
|
||||
"max_tokens": 100000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "openai/o1-pro",
|
||||
@@ -587,7 +646,8 @@
|
||||
"output": 600
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 100000
|
||||
"max_tokens": 100000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "meta-llama/llama-3.3-70b-instruct",
|
||||
@@ -597,7 +657,8 @@
|
||||
"output": 600
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 1048576
|
||||
"max_tokens": 1048576,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "meta-llama/llama-4-maverick",
|
||||
@@ -607,7 +668,8 @@
|
||||
"output": 0.6
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 1000000
|
||||
"max_tokens": 1000000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "meta-llama/llama-4-scout",
|
||||
@@ -617,7 +679,8 @@
|
||||
"output": 0.3
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 1000000
|
||||
"max_tokens": 1000000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "qwen/qwen-max",
|
||||
@@ -627,7 +690,8 @@
|
||||
"output": 6.4
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 32768
|
||||
"max_tokens": 32768,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "qwen/qwen-turbo",
|
||||
@@ -637,7 +701,8 @@
|
||||
"output": 0.2
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 1000000
|
||||
"max_tokens": 1000000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "qwen/qwen3-235b-a22b",
|
||||
@@ -647,7 +712,8 @@
|
||||
"output": 2
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 24000
|
||||
"max_tokens": 24000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "mistralai/mistral-small-3.1-24b-instruct:free",
|
||||
@@ -657,7 +723,9 @@
|
||||
"output": 0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 96000
|
||||
"max_tokens": 96000,
|
||||
"supported": false,
|
||||
"reason": "Free OpenRouter models are not supported due to severe rate limits, lack of tool use support, and other reliability issues that make them impractical for production use."
|
||||
},
|
||||
{
|
||||
"id": "mistralai/mistral-small-3.1-24b-instruct",
|
||||
@@ -667,7 +735,8 @@
|
||||
"output": 0.3
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 128000
|
||||
"max_tokens": 128000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "mistralai/devstral-small",
|
||||
@@ -677,7 +746,8 @@
|
||||
"output": 0.3
|
||||
},
|
||||
"allowed_roles": ["main"],
|
||||
"max_tokens": 110000
|
||||
"max_tokens": 110000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "mistralai/mistral-nemo",
|
||||
@@ -687,7 +757,8 @@
|
||||
"output": 0.07
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 100000
|
||||
"max_tokens": 100000,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "thudm/glm-4-32b:free",
|
||||
@@ -697,7 +768,9 @@
|
||||
"output": 0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 32768
|
||||
"max_tokens": 32768,
|
||||
"supported": false,
|
||||
"reason": "Free OpenRouter models are not supported due to severe rate limits, lack of tool use support, and other reliability issues that make them impractical for production use."
|
||||
}
|
||||
],
|
||||
"ollama": [
|
||||
@@ -708,7 +781,8 @@
|
||||
"input": 0,
|
||||
"output": 0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"]
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "qwen3:latest",
|
||||
@@ -717,7 +791,8 @@
|
||||
"input": 0,
|
||||
"output": 0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"]
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "qwen3:14b",
|
||||
@@ -726,7 +801,8 @@
|
||||
"input": 0,
|
||||
"output": 0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"]
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "qwen3:32b",
|
||||
@@ -735,7 +811,8 @@
|
||||
"input": 0,
|
||||
"output": 0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"]
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "mistral-small3.1:latest",
|
||||
@@ -744,7 +821,8 @@
|
||||
"input": 0,
|
||||
"output": 0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"]
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "llama3.3:latest",
|
||||
@@ -753,7 +831,8 @@
|
||||
"input": 0,
|
||||
"output": 0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"]
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "phi4:latest",
|
||||
@@ -762,7 +841,8 @@
|
||||
"input": 0,
|
||||
"output": 0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"]
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"supported": true
|
||||
}
|
||||
],
|
||||
"azure": [
|
||||
@@ -771,10 +851,11 @@
|
||||
"swe_score": 0.332,
|
||||
"cost_per_1m_tokens": {
|
||||
"input": 2.5,
|
||||
"output": 10.0
|
||||
"output": 10
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 16384
|
||||
"max_tokens": 16384,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o-mini",
|
||||
@@ -784,7 +865,8 @@
|
||||
"output": 0.6
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 16384
|
||||
"max_tokens": 16384,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "gpt-4-1",
|
||||
@@ -794,7 +876,8 @@
|
||||
"output": 10.0
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"max_tokens": 16384
|
||||
"max_tokens": 16384,
|
||||
"supported": true
|
||||
}
|
||||
],
|
||||
"bedrock": [
|
||||
@@ -805,7 +888,8 @@
|
||||
"input": 0.25,
|
||||
"output": 1.25
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"]
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "us.anthropic.claude-3-opus-20240229-v1:0",
|
||||
@@ -814,7 +898,8 @@
|
||||
"input": 15,
|
||||
"output": 75
|
||||
},
|
||||
"allowed_roles": ["main", "fallback", "research"]
|
||||
"allowed_roles": ["main", "fallback", "research"],
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "us.anthropic.claude-3-5-sonnet-20240620-v1:0",
|
||||
@@ -823,7 +908,8 @@
|
||||
"input": 3,
|
||||
"output": 15
|
||||
},
|
||||
"allowed_roles": ["main", "fallback", "research"]
|
||||
"allowed_roles": ["main", "fallback", "research"],
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "us.anthropic.claude-3-5-sonnet-20241022-v2:0",
|
||||
@@ -832,7 +918,8 @@
|
||||
"input": 3,
|
||||
"output": 15
|
||||
},
|
||||
"allowed_roles": ["main", "fallback", "research"]
|
||||
"allowed_roles": ["main", "fallback", "research"],
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "us.anthropic.claude-3-7-sonnet-20250219-v1:0",
|
||||
@@ -842,7 +929,8 @@
|
||||
"output": 15
|
||||
},
|
||||
"allowed_roles": ["main", "fallback", "research"],
|
||||
"max_tokens": 65536
|
||||
"max_tokens": 65536,
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "us.anthropic.claude-3-5-haiku-20241022-v1:0",
|
||||
@@ -851,7 +939,8 @@
|
||||
"input": 0.8,
|
||||
"output": 4
|
||||
},
|
||||
"allowed_roles": ["main", "fallback"]
|
||||
"allowed_roles": ["main", "fallback"],
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "us.anthropic.claude-opus-4-20250514-v1:0",
|
||||
@@ -860,7 +949,8 @@
|
||||
"input": 15,
|
||||
"output": 75
|
||||
},
|
||||
"allowed_roles": ["main", "fallback", "research"]
|
||||
"allowed_roles": ["main", "fallback", "research"],
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "us.anthropic.claude-sonnet-4-20250514-v1:0",
|
||||
@@ -869,7 +959,8 @@
|
||||
"input": 3,
|
||||
"output": 15
|
||||
},
|
||||
"allowed_roles": ["main", "fallback", "research"]
|
||||
"allowed_roles": ["main", "fallback", "research"],
|
||||
"supported": true
|
||||
},
|
||||
{
|
||||
"id": "us.deepseek.r1-v1:0",
|
||||
@@ -879,7 +970,8 @@
|
||||
"output": 5.4
|
||||
},
|
||||
"allowed_roles": ["research"],
|
||||
"max_tokens": 65536
|
||||
"max_tokens": 65536,
|
||||
"supported": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user