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,