feat(azure): add all tool-calling models from models.dev/api.json

Expand azure model list from 27 (OpenAI-only) to 64 models with
tool_call support, including Claude, Cohere, DeepSeek, Grok, Kimi,
Llama, Mistral, Phi, and Model Router families.

All model metadata (pricing, context window, capabilities) sourced
from https://models.dev/api.json. Existing Roo-specific overrides
(includedTools, excludedTools, reasoningEffort, etc.) preserved.
This commit is contained in:
Hannes Rudolph 2026-02-06 14:20:57 -07:00
parent 562e9ea894
commit d3fe52c8e8

View file

@ -6,10 +6,68 @@ import type { ModelInfo } from "../model.js"
* NOTE:
* - Azure AI Foundry uses *deployment names* at runtime, but Roo still needs underlying model
* capabilities (maxTokens/contextWindow/etc.) for validation and parameter shaping.
* - This list is derived from https://models.dev/api.json (provider: "azure") and intentionally
* restricted to OpenAI/Azure OpenAI-style IDs (gpt-*, o*, codex-*).
* - This list is derived from https://models.dev/api.json (provider: "azure") and includes
* all models with tool calling support available through Azure AI Foundry deployments.
*/
export const azureModels = {
"claude-haiku-4-5": {
maxTokens: 64_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 1,
outputPrice: 5,
cacheWritesPrice: 1.25,
cacheReadsPrice: 0.1,
supportsTemperature: true,
description: "Claude Haiku 4.5",
},
"claude-opus-4-1": {
maxTokens: 32_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 15,
outputPrice: 75,
cacheWritesPrice: 18.75,
cacheReadsPrice: 1.5,
supportsTemperature: true,
description: "Claude Opus 4.1",
},
"claude-opus-4-5": {
maxTokens: 64_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 5,
outputPrice: 25,
cacheWritesPrice: 6.25,
cacheReadsPrice: 0.5,
supportsTemperature: true,
description: "Claude Opus 4.5",
},
"claude-sonnet-4-5": {
maxTokens: 64_000,
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 3,
outputPrice: 15,
cacheWritesPrice: 3.75,
cacheReadsPrice: 0.3,
supportsTemperature: true,
description: "Claude Sonnet 4.5",
},
"codestral-2501": {
maxTokens: 256_000,
contextWindow: 256_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.3,
outputPrice: 0.9,
supportsTemperature: true,
description: "Codestral 25.01",
},
"codex-mini": {
maxTokens: 100_000,
contextWindow: 200_000,
@ -19,8 +77,77 @@ export const azureModels = {
outputPrice: 6,
cacheReadsPrice: 0.375,
supportsTemperature: false,
description:
"Codex Mini: Cloud-based software engineering agent powered by codex-1, a version of o3 optimized for coding tasks",
description: "Codex Mini",
},
"cohere-command-a": {
maxTokens: 8_000,
contextWindow: 256_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2.5,
outputPrice: 10,
supportsTemperature: true,
description: "Command A",
},
"cohere-command-r-08-2024": {
maxTokens: 4_000,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.15,
outputPrice: 0.6,
supportsTemperature: true,
description: "Command R",
},
"cohere-command-r-plus-08-2024": {
maxTokens: 4_000,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2.5,
outputPrice: 10,
supportsTemperature: true,
description: "Command R+",
},
"deepseek-r1-0528": {
maxTokens: 163_840,
contextWindow: 163_840,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 1.35,
outputPrice: 5.4,
supportsTemperature: true,
description: "DeepSeek-R1-0528",
},
"deepseek-v3-0324": {
maxTokens: 131_072,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 1.14,
outputPrice: 4.56,
supportsTemperature: true,
description: "DeepSeek-V3-0324",
},
"deepseek-v3.1": {
maxTokens: 131_072,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.56,
outputPrice: 1.68,
supportsTemperature: true,
description: "DeepSeek-V3.1",
},
"deepseek-v3.2": {
maxTokens: 128_000,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.58,
outputPrice: 1.68,
supportsTemperature: true,
description: "DeepSeek-V3.2",
},
"gpt-4": {
maxTokens: 8_192,
@ -131,7 +258,7 @@ export const azureModels = {
cacheReadsPrice: 0.13,
supportsVerbosity: true,
supportsTemperature: false,
description: "GPT-5: The best model for coding and agentic tasks across domains",
description: "GPT-5",
},
"gpt-5-codex": {
maxTokens: 128_000,
@ -146,7 +273,7 @@ export const azureModels = {
outputPrice: 10,
cacheReadsPrice: 0.13,
supportsTemperature: false,
description: "GPT-5-Codex: A version of GPT-5 optimized for agentic coding in Codex",
description: "GPT-5-Codex",
},
"gpt-5-mini": {
maxTokens: 128_000,
@ -162,7 +289,7 @@ export const azureModels = {
cacheReadsPrice: 0.03,
supportsVerbosity: true,
supportsTemperature: false,
description: "GPT-5 Mini: A faster, more cost-efficient version of GPT-5 for well-defined tasks",
description: "GPT-5 Mini",
},
"gpt-5-nano": {
maxTokens: 128_000,
@ -178,7 +305,7 @@ export const azureModels = {
cacheReadsPrice: 0.01,
supportsVerbosity: true,
supportsTemperature: false,
description: "GPT-5 Nano: Fastest, most cost-efficient version of GPT-5",
description: "GPT-5 Nano",
},
"gpt-5-pro": {
maxTokens: 272_000,
@ -210,7 +337,7 @@ export const azureModels = {
cacheReadsPrice: 0.125,
supportsVerbosity: true,
supportsTemperature: false,
description: "GPT-5.1: The best model for coding and agentic tasks across domains",
description: "GPT-5.1",
},
"gpt-5.1-chat": {
maxTokens: 16_384,
@ -224,7 +351,7 @@ export const azureModels = {
outputPrice: 10,
cacheReadsPrice: 0.125,
supportsTemperature: false,
description: "GPT-5.1 Chat: Optimized for conversational AI and chat use cases",
description: "GPT-5.1 Chat",
},
"gpt-5.1-codex": {
maxTokens: 128_000,
@ -240,7 +367,7 @@ export const azureModels = {
outputPrice: 10,
cacheReadsPrice: 0.125,
supportsTemperature: false,
description: "GPT-5.1 Codex: A version of GPT-5.1 optimized for agentic coding in Codex",
description: "GPT-5.1 Codex",
},
"gpt-5.1-codex-max": {
maxTokens: 128_000,
@ -256,8 +383,7 @@ export const azureModels = {
outputPrice: 10,
cacheReadsPrice: 0.125,
supportsTemperature: false,
description:
"GPT-5.1 Codex Max: Our most intelligent coding model optimized for long-horizon, agentic coding tasks",
description: "GPT-5.1 Codex Max",
},
"gpt-5.1-codex-mini": {
maxTokens: 128_000,
@ -273,7 +399,7 @@ export const azureModels = {
outputPrice: 2,
cacheReadsPrice: 0.025,
supportsTemperature: false,
description: "GPT-5.1 Codex mini: A version of GPT-5.1 optimized for agentic coding in Codex",
description: "GPT-5.1 Codex Mini",
},
"gpt-5.2": {
maxTokens: 128_000,
@ -290,7 +416,7 @@ export const azureModels = {
cacheReadsPrice: 0.125,
supportsVerbosity: true,
supportsTemperature: false,
description: "GPT-5.2: Our flagship model for coding and agentic tasks across industries",
description: "GPT-5.2",
},
"gpt-5.2-chat": {
maxTokens: 16_384,
@ -303,7 +429,7 @@ export const azureModels = {
outputPrice: 14,
cacheReadsPrice: 0.175,
supportsTemperature: false,
description: "GPT-5.2 Chat: Optimized for conversational AI and chat use cases",
description: "GPT-5.2 Chat",
},
"gpt-5.2-codex": {
maxTokens: 128_000,
@ -319,10 +445,225 @@ export const azureModels = {
outputPrice: 14,
cacheReadsPrice: 0.175,
supportsTemperature: false,
description:
"GPT-5.2 Codex: Our most intelligent coding model optimized for long-horizon, agentic coding tasks",
description: "GPT-5.2 Codex",
},
o1: {
"grok-3": {
maxTokens: 8_192,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 3,
outputPrice: 15,
cacheReadsPrice: 0.75,
supportsTemperature: true,
description: "Grok 3",
},
"grok-3-mini": {
maxTokens: 8_192,
contextWindow: 131_072,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.3,
outputPrice: 0.5,
cacheReadsPrice: 0.075,
supportsTemperature: true,
description: "Grok 3 Mini",
},
"grok-4": {
maxTokens: 64_000,
contextWindow: 256_000,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 3,
outputPrice: 15,
cacheReadsPrice: 0.75,
supportsTemperature: true,
description: "Grok 4",
},
"grok-4-fast-non-reasoning": {
maxTokens: 30_000,
contextWindow: 2_000_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.2,
outputPrice: 0.5,
cacheReadsPrice: 0.05,
supportsTemperature: true,
description: "Grok 4 Fast (Non-Reasoning)",
},
"grok-4-fast-reasoning": {
maxTokens: 30_000,
contextWindow: 2_000_000,
supportsImages: true,
supportsPromptCache: true,
inputPrice: 0.2,
outputPrice: 0.5,
cacheReadsPrice: 0.05,
supportsTemperature: true,
description: "Grok 4 Fast (Reasoning)",
},
"grok-code-fast-1": {
maxTokens: 10_000,
contextWindow: 256_000,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.2,
outputPrice: 1.5,
cacheReadsPrice: 0.02,
supportsTemperature: true,
description: "Grok Code Fast 1",
},
"kimi-k2-thinking": {
maxTokens: 262_144,
contextWindow: 262_144,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.6,
outputPrice: 2.5,
cacheReadsPrice: 0.15,
supportsTemperature: true,
description: "Kimi K2 Thinking",
},
"llama-3.2-11b-vision-instruct": {
maxTokens: 8_192,
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0.37,
outputPrice: 0.37,
supportsTemperature: true,
description: "Llama-3.2-11B-Vision-Instruct",
},
"llama-3.2-90b-vision-instruct": {
maxTokens: 8_192,
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 2.04,
outputPrice: 2.04,
supportsTemperature: true,
description: "Llama-3.2-90B-Vision-Instruct",
},
"llama-3.3-70b-instruct": {
maxTokens: 32_768,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.71,
outputPrice: 0.71,
supportsTemperature: true,
description: "Llama-3.3-70B-Instruct",
},
"llama-4-maverick-17b-128e-instruct-fp8": {
maxTokens: 8_192,
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0.25,
outputPrice: 1,
supportsTemperature: true,
description: "Llama 4 Maverick 17B 128E Instruct FP8",
},
"llama-4-scout-17b-16e-instruct": {
maxTokens: 8_192,
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0.2,
outputPrice: 0.78,
supportsTemperature: true,
description: "Llama 4 Scout 17B 16E Instruct",
},
"meta-llama-3.1-405b-instruct": {
maxTokens: 32_768,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 5.33,
outputPrice: 16,
supportsTemperature: true,
description: "Meta-Llama-3.1-405B-Instruct",
},
"meta-llama-3.1-70b-instruct": {
maxTokens: 32_768,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2.68,
outputPrice: 3.54,
supportsTemperature: true,
description: "Meta-Llama-3.1-70B-Instruct",
},
"meta-llama-3.1-8b-instruct": {
maxTokens: 32_768,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.3,
outputPrice: 0.61,
supportsTemperature: true,
description: "Meta-Llama-3.1-8B-Instruct",
},
"ministral-3b": {
maxTokens: 8_192,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.04,
outputPrice: 0.04,
supportsTemperature: true,
description: "Ministral 3B",
},
"mistral-large-2411": {
maxTokens: 32_768,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 2,
outputPrice: 6,
supportsTemperature: true,
description: "Mistral Large 24.11",
},
"mistral-medium-2505": {
maxTokens: 128_000,
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0.4,
outputPrice: 2,
supportsTemperature: true,
description: "Mistral Medium 3",
},
"mistral-nemo": {
maxTokens: 128_000,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.15,
outputPrice: 0.15,
supportsTemperature: true,
description: "Mistral Nemo",
},
"mistral-small-2503": {
maxTokens: 32_768,
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0.1,
outputPrice: 0.3,
supportsTemperature: true,
description: "Mistral Small 3.1",
},
"model-router": {
maxTokens: 16_384,
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: false,
inputPrice: 0.14,
outputPrice: 0,
description: "Model Router",
},
"o1": {
maxTokens: 100_000,
contextWindow: 200_000,
supportsImages: true,
@ -336,7 +677,7 @@ export const azureModels = {
"o1-mini": {
maxTokens: 65_536,
contextWindow: 128_000,
supportsImages: true,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 1.1,
outputPrice: 4.4,
@ -347,7 +688,7 @@ export const azureModels = {
"o1-preview": {
maxTokens: 32_768,
contextWindow: 128_000,
supportsImages: true,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 16.5,
outputPrice: 66,
@ -355,7 +696,7 @@ export const azureModels = {
supportsTemperature: false,
description: "o1-preview",
},
o3: {
"o3": {
maxTokens: 100_000,
contextWindow: 200_000,
supportsImages: true,
@ -394,6 +735,26 @@ export const azureModels = {
supportsTemperature: false,
description: "o4-mini",
},
"phi-4-mini": {
maxTokens: 4_096,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.075,
outputPrice: 0.3,
supportsTemperature: true,
description: "Phi-4-mini",
},
"phi-4-mini-reasoning": {
maxTokens: 4_096,
contextWindow: 128_000,
supportsImages: false,
supportsPromptCache: false,
inputPrice: 0.075,
outputPrice: 0.3,
supportsTemperature: true,
description: "Phi-4-mini-reasoning",
},
} as const satisfies Record<string, ModelInfo>
export type AzureModelId = keyof typeof azureModels