feat(model-profiles): add text_inputs and text_outputs (#35084)

- Add `text_inputs` and `text_outputs` fields to `ModelProfile`
- Regenerate `_profiles.py` for all providers

## Why

models.dev data includes `'text'` as both an input and output modality,
but we didn't capture it.

models.dev broadly contains models without text input (Whisper/ASR) and
without text output (image generators, TTS).

Without this, downstream consumers can't filter on model text support
(e.g. preventing users from passing text input to an audio-only model).

---

We'd need to also run for Google, AWS and cut releases for all to
propagate
This commit is contained in:
Mason Daugherty
2026-02-09 14:50:09 -05:00
committed by GitHub
parent e8e47b083e
commit 4ca586b322
13 changed files with 624 additions and 60 deletions

View File

@@ -19,10 +19,12 @@ _PROFILES: dict[str, dict[str, Any]] = {
"claude-opus-4-0": {
"max_input_tokens": 200000,
"max_output_tokens": 32000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -36,10 +38,12 @@ _PROFILES: dict[str, dict[str, Any]] = {
"claude-3-5-sonnet-20241022": {
"max_input_tokens": 200000,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -53,10 +57,12 @@ _PROFILES: dict[str, dict[str, Any]] = {
"claude-opus-4-1": {
"max_input_tokens": 200000,
"max_output_tokens": 32000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -70,10 +76,12 @@ _PROFILES: dict[str, dict[str, Any]] = {
"claude-haiku-4-5": {
"max_input_tokens": 200000,
"max_output_tokens": 64000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -87,10 +95,12 @@ _PROFILES: dict[str, dict[str, Any]] = {
"claude-3-5-sonnet-20240620": {
"max_input_tokens": 200000,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -102,12 +112,14 @@ _PROFILES: dict[str, dict[str, Any]] = {
"structured_output": False,
},
"claude-opus-4-6": {
"max_input_tokens": 1000000,
"max_input_tokens": 200000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -121,10 +133,12 @@ _PROFILES: dict[str, dict[str, Any]] = {
"claude-3-5-haiku-latest": {
"max_input_tokens": 200000,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -138,10 +152,12 @@ _PROFILES: dict[str, dict[str, Any]] = {
"claude-opus-4-5": {
"max_input_tokens": 200000,
"max_output_tokens": 64000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -155,10 +171,12 @@ _PROFILES: dict[str, dict[str, Any]] = {
"claude-3-opus-20240229": {
"max_input_tokens": 200000,
"max_output_tokens": 4096,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -172,10 +190,12 @@ _PROFILES: dict[str, dict[str, Any]] = {
"claude-opus-4-5-20251101": {
"max_input_tokens": 200000,
"max_output_tokens": 64000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -189,10 +209,12 @@ _PROFILES: dict[str, dict[str, Any]] = {
"claude-sonnet-4-5": {
"max_input_tokens": 200000,
"max_output_tokens": 64000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -206,10 +228,12 @@ _PROFILES: dict[str, dict[str, Any]] = {
"claude-sonnet-4-5-20250929": {
"max_input_tokens": 200000,
"max_output_tokens": 64000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -223,10 +247,12 @@ _PROFILES: dict[str, dict[str, Any]] = {
"claude-sonnet-4-20250514": {
"max_input_tokens": 200000,
"max_output_tokens": 64000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -240,10 +266,12 @@ _PROFILES: dict[str, dict[str, Any]] = {
"claude-opus-4-20250514": {
"max_input_tokens": 200000,
"max_output_tokens": 32000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -257,10 +285,12 @@ _PROFILES: dict[str, dict[str, Any]] = {
"claude-3-5-haiku-20241022": {
"max_input_tokens": 200000,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -274,10 +304,12 @@ _PROFILES: dict[str, dict[str, Any]] = {
"claude-3-haiku-20240307": {
"max_input_tokens": 200000,
"max_output_tokens": 4096,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -291,10 +323,12 @@ _PROFILES: dict[str, dict[str, Any]] = {
"claude-3-7-sonnet-20250219": {
"max_input_tokens": 200000,
"max_output_tokens": 64000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -308,10 +342,12 @@ _PROFILES: dict[str, dict[str, Any]] = {
"claude-3-7-sonnet-latest": {
"max_input_tokens": 200000,
"max_output_tokens": 64000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -325,10 +361,12 @@ _PROFILES: dict[str, dict[str, Any]] = {
"claude-sonnet-4-0": {
"max_input_tokens": 200000,
"max_output_tokens": 64000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -342,10 +380,12 @@ _PROFILES: dict[str, dict[str, Any]] = {
"claude-opus-4-1-20250805": {
"max_input_tokens": 200000,
"max_output_tokens": 32000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -359,10 +399,12 @@ _PROFILES: dict[str, dict[str, Any]] = {
"claude-3-sonnet-20240229": {
"max_input_tokens": 200000,
"max_output_tokens": 4096,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -376,10 +418,12 @@ _PROFILES: dict[str, dict[str, Any]] = {
"claude-haiku-4-5-20251001": {
"max_input_tokens": 200000,
"max_output_tokens": 64000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,

View File

@@ -19,9 +19,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"deepseek-chat": {
"max_input_tokens": 128000,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -31,9 +33,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"deepseek-reasoner": {
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,

View File

@@ -19,9 +19,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"accounts/fireworks/models/deepseek-r1-0528": {
"max_input_tokens": 160000,
"max_output_tokens": 16384,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -31,9 +33,25 @@ _PROFILES: dict[str, dict[str, Any]] = {
"accounts/fireworks/models/deepseek-v3p1": {
"max_input_tokens": 163840,
"max_output_tokens": 163840,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
},
"accounts/fireworks/models/deepseek-v3p2": {
"max_input_tokens": 160000,
"max_output_tokens": 160000,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -41,11 +59,41 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_calling": True,
},
"accounts/fireworks/models/minimax-m2": {
"max_input_tokens": 128000,
"max_output_tokens": 16384,
"max_input_tokens": 192000,
"max_output_tokens": 192000,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
},
"accounts/fireworks/models/minimax-m2p1": {
"max_input_tokens": 200000,
"max_output_tokens": 200000,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
},
"accounts/fireworks/models/glm-4p7": {
"max_input_tokens": 198000,
"max_output_tokens": 198000,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -55,33 +103,81 @@ _PROFILES: dict[str, dict[str, Any]] = {
"accounts/fireworks/models/deepseek-v3-0324": {
"max_input_tokens": 160000,
"max_output_tokens": 16384,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"accounts/fireworks/models/glm-4p6": {
"max_input_tokens": 198000,
"max_output_tokens": 198000,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
},
"accounts/fireworks/models/kimi-k2-thinking": {
"max_input_tokens": 256000,
"max_output_tokens": 256000,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
},
"accounts/fireworks/models/kimi-k2-instruct": {
"max_input_tokens": 128000,
"max_output_tokens": 16384,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"accounts/fireworks/models/kimi-k2p5": {
"max_input_tokens": 256000,
"max_output_tokens": 256000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": True,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
},
"accounts/fireworks/models/qwen3-235b-a22b": {
"max_input_tokens": 128000,
"max_output_tokens": 16384,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -91,9 +187,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"accounts/fireworks/models/gpt-oss-20b": {
"max_input_tokens": 131072,
"max_output_tokens": 32768,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -103,9 +201,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"accounts/fireworks/models/gpt-oss-120b": {
"max_input_tokens": 131072,
"max_output_tokens": 32768,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -115,9 +215,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"accounts/fireworks/models/glm-4p5-air": {
"max_input_tokens": 131072,
"max_output_tokens": 131072,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -127,9 +229,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"accounts/fireworks/models/qwen3-coder-480b-a35b-instruct": {
"max_input_tokens": 256000,
"max_output_tokens": 32768,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -139,9 +243,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"accounts/fireworks/models/glm-4p5": {
"max_input_tokens": 131072,
"max_output_tokens": 131072,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,

View File

@@ -18,10 +18,12 @@ from typing import Any
_PROFILES: dict[str, dict[str, Any]] = {
"llama-3.1-8b-instant": {
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"max_output_tokens": 131072,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -31,9 +33,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"mistral-saba-24b": {
"max_input_tokens": 32768,
"max_output_tokens": 32768,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -43,9 +47,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"llama3-8b-8192": {
"max_input_tokens": 8192,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -55,9 +61,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"qwen-qwq-32b": {
"max_input_tokens": 131072,
"max_output_tokens": 16384,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -67,9 +75,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"llama3-70b-8192": {
"max_input_tokens": 8192,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -79,9 +89,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"deepseek-r1-distill-llama-70b": {
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -91,9 +103,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"llama-guard-3-8b": {
"max_input_tokens": 8192,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -103,9 +117,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gemma2-9b-it": {
"max_input_tokens": 8192,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -115,9 +131,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"llama-3.3-70b-versatile": {
"max_input_tokens": 131072,
"max_output_tokens": 32768,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -127,21 +145,26 @@ _PROFILES: dict[str, dict[str, Any]] = {
"moonshotai/kimi-k2-instruct-0905": {
"max_input_tokens": 262144,
"max_output_tokens": 16384,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
"structured_output": True,
},
"moonshotai/kimi-k2-instruct": {
"max_input_tokens": 131072,
"max_output_tokens": 16384,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -150,34 +173,42 @@ _PROFILES: dict[str, dict[str, Any]] = {
},
"openai/gpt-oss-20b": {
"max_input_tokens": 131072,
"max_output_tokens": 32768,
"max_output_tokens": 65536,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
},
"openai/gpt-oss-120b": {
"max_input_tokens": 131072,
"max_output_tokens": 32768,
"max_output_tokens": 65536,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
},
"qwen/qwen3-32b": {
"max_input_tokens": 131072,
"max_output_tokens": 16384,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -187,33 +218,41 @@ _PROFILES: dict[str, dict[str, Any]] = {
"meta-llama/llama-4-scout-17b-16e-instruct": {
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
"structured_output": True,
},
"meta-llama/llama-4-maverick-17b-128e-instruct": {
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
"structured_output": True,
},
"meta-llama/llama-guard-4-12b": {
"max_input_tokens": 131072,
"max_output_tokens": 128,
"max_output_tokens": 1024,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,

View File

@@ -19,33 +19,81 @@ _PROFILES: dict[str, dict[str, Any]] = {
"moonshotai/Kimi-K2-Instruct": {
"max_input_tokens": 131072,
"max_output_tokens": 16384,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"moonshotai/Kimi-K2.5": {
"max_input_tokens": 262144,
"max_output_tokens": 262144,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": True,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
},
"moonshotai/Kimi-K2-Instruct-0905": {
"max_input_tokens": 262144,
"max_output_tokens": 16384,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"MiniMaxAI/MiniMax-M2": {
"max_input_tokens": 204800,
"max_output_tokens": 204800,
"moonshotai/Kimi-K2-Thinking": {
"max_input_tokens": 262144,
"max_output_tokens": 262144,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
},
"MiniMaxAI/MiniMax-M2.1": {
"max_input_tokens": 204800,
"max_output_tokens": 131072,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
},
"XiaomiMiMo/MiMo-V2-Flash": {
"max_input_tokens": 262144,
"max_output_tokens": 4096,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -55,9 +103,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"Qwen/Qwen3-Embedding-8B": {
"max_input_tokens": 32000,
"max_output_tokens": 4096,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -67,9 +117,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"Qwen/Qwen3-Embedding-4B": {
"max_input_tokens": 32000,
"max_output_tokens": 2048,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -79,9 +131,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"Qwen/Qwen3-Coder-480B-A35B-Instruct": {
"max_input_tokens": 262144,
"max_output_tokens": 66536,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -91,9 +145,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"Qwen/Qwen3-235B-A22B-Thinking-2507": {
"max_input_tokens": 262144,
"max_output_tokens": 131072,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -103,9 +159,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"Qwen/Qwen3-Next-80B-A3B-Instruct": {
"max_input_tokens": 262144,
"max_output_tokens": 66536,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -115,69 +173,67 @@ _PROFILES: dict[str, dict[str, Any]] = {
"Qwen/Qwen3-Next-80B-A3B-Thinking": {
"max_input_tokens": 262144,
"max_output_tokens": 131072,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"zai-org/GLM-4.5": {
"max_input_tokens": 131072,
"max_output_tokens": 98304,
"zai-org/GLM-4.7": {
"max_input_tokens": 204800,
"max_output_tokens": 131072,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
},
"zai-org/GLM-4.6": {
"zai-org/GLM-4.7-Flash": {
"max_input_tokens": 200000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
},
"zai-org/GLM-4.5-Air": {
"max_input_tokens": 128000,
"max_output_tokens": 96000,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
},
"deepseek-ai/Deepseek-V3-0324": {
"max_input_tokens": 16384,
"max_output_tokens": 8192,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"deepseek-ai/DeepSeek-R1-0528": {
"max_input_tokens": 163840,
"max_output_tokens": 163840,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
},
"deepseek-ai/DeepSeek-V3.2": {
"max_input_tokens": 163840,
"max_output_tokens": 65536,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,

View File

@@ -19,9 +19,25 @@ _PROFILES: dict[str, dict[str, Any]] = {
"devstral-medium-2507": {
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"mistral-large-2512": {
"max_input_tokens": 262144,
"max_output_tokens": 262144,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -31,9 +47,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"open-mixtral-8x22b": {
"max_input_tokens": 64000,
"max_output_tokens": 64000,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -43,9 +61,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"ministral-8b-latest": {
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -55,9 +75,39 @@ _PROFILES: dict[str, dict[str, Any]] = {
"pixtral-large-latest": {
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"mistral-small-2506": {
"max_input_tokens": 128000,
"max_output_tokens": 16384,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"devstral-2512": {
"max_input_tokens": 262144,
"max_output_tokens": 262144,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -67,9 +117,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"ministral-3b-latest": {
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -79,9 +131,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"pixtral-12b": {
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -91,9 +145,39 @@ _PROFILES: dict[str, dict[str, Any]] = {
"mistral-medium-2505": {
"max_input_tokens": 131072,
"max_output_tokens": 131072,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"labs-devstral-small-2512": {
"max_input_tokens": 256000,
"max_output_tokens": 256000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"devstral-medium-latest": {
"max_input_tokens": 262144,
"max_output_tokens": 262144,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -103,9 +187,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"devstral-small-2505": {
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -115,21 +201,39 @@ _PROFILES: dict[str, dict[str, Any]] = {
"mistral-medium-2508": {
"max_input_tokens": 262144,
"max_output_tokens": 262144,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"mistral-embed": {
"max_input_tokens": 8000,
"max_output_tokens": 3072,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": False,
},
"mistral-small-latest": {
"max_input_tokens": 128000,
"max_output_tokens": 16384,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -139,9 +243,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"magistral-small": {
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -151,9 +257,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"devstral-small-2507": {
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -163,9 +271,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"codestral-latest": {
"max_input_tokens": 256000,
"max_output_tokens": 4096,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -175,9 +285,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"open-mixtral-8x7b": {
"max_input_tokens": 32000,
"max_output_tokens": 32000,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -187,9 +299,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"mistral-nemo": {
"max_input_tokens": 128000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -199,9 +313,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"open-mistral-7b": {
"max_input_tokens": 8000,
"max_output_tokens": 8000,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -209,11 +325,13 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_calling": True,
},
"mistral-large-latest": {
"max_input_tokens": 131072,
"max_output_tokens": 16384,
"image_inputs": False,
"max_input_tokens": 262144,
"max_output_tokens": 262144,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -223,9 +341,25 @@ _PROFILES: dict[str, dict[str, Any]] = {
"mistral-medium-latest": {
"max_input_tokens": 128000,
"max_output_tokens": 16384,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
},
"mistral-large-2411": {
"max_input_tokens": 131072,
"max_output_tokens": 16384,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -235,9 +369,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"magistral-medium-latest": {
"max_input_tokens": 128000,
"max_output_tokens": 16384,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,

View File

@@ -19,9 +19,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-4.1-nano": {
"max_input_tokens": 1047576,
"max_output_tokens": 32768,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -37,9 +39,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"text-embedding-3-small": {
"max_input_tokens": 8191,
"max_output_tokens": 1536,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -54,9 +58,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-4": {
"max_input_tokens": 8192,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -72,9 +78,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"o1-pro": {
"max_input_tokens": 200000,
"max_output_tokens": 100000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -90,9 +98,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-4o-2024-05-13": {
"max_input_tokens": 128000,
"max_output_tokens": 4096,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -108,10 +118,12 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-5.2-codex": {
"max_input_tokens": 400000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -126,9 +138,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-5.1-codex": {
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -144,9 +158,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-4o-2024-08-06": {
"max_input_tokens": 128000,
"max_output_tokens": 16384,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -162,9 +178,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-4.1-mini": {
"max_input_tokens": 1047576,
"max_output_tokens": 32768,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -180,9 +198,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"o3-deep-research": {
"max_input_tokens": 200000,
"max_output_tokens": 100000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -197,9 +217,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-3.5-turbo": {
"max_input_tokens": 16385,
"max_output_tokens": 4096,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -215,9 +237,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-5.2-pro": {
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -233,9 +257,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"text-embedding-3-large": {
"max_input_tokens": 8191,
"max_output_tokens": 3072,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -250,9 +276,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-4-turbo": {
"max_input_tokens": 128000,
"max_output_tokens": 4096,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -268,9 +296,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"o1-preview": {
"max_input_tokens": 128000,
"max_output_tokens": 32768,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -285,9 +315,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-5.1-codex-mini": {
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -303,9 +335,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"o3-mini": {
"max_input_tokens": 200000,
"max_output_tokens": 100000,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -321,9 +355,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-5.2-chat-latest": {
"max_input_tokens": 272000,
"max_output_tokens": 16384,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -339,9 +375,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-5.1": {
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -357,9 +395,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"codex-mini-latest": {
"max_input_tokens": 200000,
"max_output_tokens": 100000,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -374,9 +414,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-5-nano": {
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -392,9 +434,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-5-codex": {
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -410,9 +454,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-4o": {
"max_input_tokens": 128000,
"max_output_tokens": 16384,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -428,9 +474,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-4.1": {
"max_input_tokens": 1047576,
"max_output_tokens": 32768,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -446,9 +494,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"o4-mini": {
"max_input_tokens": 200000,
"max_output_tokens": 100000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -464,9 +514,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"o1": {
"max_input_tokens": 200000,
"max_output_tokens": 100000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -479,12 +531,34 @@ _PROFILES: dict[str, dict[str, Any]] = {
"image_tool_message": True,
"tool_choice": True,
},
"gpt-5.3-codex": {
"max_input_tokens": 400000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"pdf_inputs": True,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"image_url_inputs": True,
"pdf_tool_message": True,
"image_tool_message": True,
"tool_choice": True,
},
"gpt-5-mini": {
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -500,9 +574,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"o1-mini": {
"max_input_tokens": 128000,
"max_output_tokens": 65536,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -518,9 +594,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"text-embedding-ada-002": {
"max_input_tokens": 8192,
"max_output_tokens": 1536,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -535,9 +613,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"o3-pro": {
"max_input_tokens": 200000,
"max_output_tokens": 100000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -553,9 +633,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-4o-2024-11-20": {
"max_input_tokens": 128000,
"max_output_tokens": 16384,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -571,9 +653,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-5.1-codex-max": {
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -589,9 +673,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"o3": {
"max_input_tokens": 200000,
"max_output_tokens": 100000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -607,9 +693,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"o4-mini-deep-research": {
"max_input_tokens": 200000,
"max_output_tokens": 100000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -624,9 +712,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-5-chat-latest": {
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -642,9 +732,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-4o-mini": {
"max_input_tokens": 128000,
"max_output_tokens": 16384,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -660,9 +752,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-5": {
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -678,9 +772,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-5-pro": {
"max_input_tokens": 272000,
"max_output_tokens": 272000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -696,9 +792,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-5.2": {
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -714,9 +812,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"gpt-5.1-chat-latest": {
"max_input_tokens": 272000,
"max_output_tokens": 16384,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,

View File

@@ -16,24 +16,14 @@ https://docs.langchain.com/oss/python/langchain/models#updating-or-overwriting-p
from typing import Any
_PROFILES: dict[str, dict[str, Any]] = {
"sonar-reasoning": {
"max_input_tokens": 128000,
"max_output_tokens": 4096,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
"reasoning_output": True,
"tool_calling": False,
},
"sonar": {
"max_input_tokens": 128000,
"max_output_tokens": 4096,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -43,9 +33,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"sonar-pro": {
"max_input_tokens": 200000,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -55,9 +47,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"sonar-reasoning-pro": {
"max_input_tokens": 128000,
"max_output_tokens": 4096,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,

View File

@@ -19,9 +19,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"grok-4-fast-non-reasoning": {
"max_input_tokens": 2000000,
"max_output_tokens": 30000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -31,9 +33,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"grok-3-fast": {
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -43,9 +47,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"grok-4": {
"max_input_tokens": 256000,
"max_output_tokens": 64000,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -55,9 +61,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"grok-2-vision": {
"max_input_tokens": 8192,
"max_output_tokens": 4096,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -67,9 +75,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"grok-code-fast-1": {
"max_input_tokens": 256000,
"max_output_tokens": 10000,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -79,9 +89,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"grok-2": {
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -91,9 +103,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"grok-3-mini-fast-latest": {
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -103,9 +117,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"grok-2-vision-1212": {
"max_input_tokens": 8192,
"max_output_tokens": 4096,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -115,9 +131,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"grok-3": {
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -127,9 +145,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"grok-4-fast": {
"max_input_tokens": 2000000,
"max_output_tokens": 30000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -139,9 +159,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"grok-2-latest": {
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -151,9 +173,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"grok-4-1-fast": {
"max_input_tokens": 2000000,
"max_output_tokens": 30000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -163,9 +187,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"grok-2-1212": {
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -175,9 +201,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"grok-3-fast-latest": {
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -187,9 +215,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"grok-3-latest": {
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -199,9 +229,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"grok-2-vision-latest": {
"max_input_tokens": 8192,
"max_output_tokens": 4096,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -211,9 +243,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"grok-vision-beta": {
"max_input_tokens": 8192,
"max_output_tokens": 4096,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -223,9 +257,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"grok-3-mini": {
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -235,9 +271,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"grok-beta": {
"max_input_tokens": 131072,
"max_output_tokens": 4096,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -247,9 +285,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"grok-3-mini-latest": {
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -259,9 +299,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"grok-4-1-fast-non-reasoning": {
"max_input_tokens": 2000000,
"max_output_tokens": 30000,
"text_inputs": True,
"image_inputs": True,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,
@@ -271,9 +313,11 @@ _PROFILES: dict[str, dict[str, Any]] = {
"grok-3-mini-fast": {
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
"image_inputs": False,
"audio_inputs": False,
"video_inputs": False,
"text_outputs": True,
"image_outputs": False,
"audio_outputs": False,
"video_outputs": False,