feat(model-profiles): new fields + Makefile target (#35788)

Extract additional fields from models.dev into `_model_data_to_profile`:
`name`, `status`, `release_date`, `last_updated`, `open_weights`,
`attachment`, `temperature`

Move the model profile refresh logic from an inline bash script in the
GitHub Actions workflow into a `make refresh-profiles` target in
`libs/model-profiles/Makefile`. This makes it runnable locally with a
single command and keeps the provider map in one place instead of
duplicated between CI and developer docs.
This commit is contained in:
Mason Daugherty
2026-03-12 09:56:25 -04:00
committed by GitHub
parent 1891d414be
commit 5d9568b5f5
15 changed files with 2373 additions and 34 deletions

View File

@@ -17,6 +17,10 @@ from typing import Any
_PROFILES: dict[str, dict[str, Any]] = {
"codex-mini-latest": {
"name": "Codex Mini",
"release_date": "2025-05-16",
"last_updated": "2025-05-16",
"open_weights": False,
"max_input_tokens": 200000,
"max_output_tokens": 100000,
"text_inputs": True,
@@ -29,6 +33,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -36,6 +42,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-3.5-turbo": {
"name": "GPT-3.5-turbo",
"release_date": "2023-03-01",
"last_updated": "2023-11-06",
"open_weights": False,
"max_input_tokens": 16385,
"max_output_tokens": 4096,
"text_inputs": True,
@@ -49,6 +59,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": False,
"tool_calling": False,
"structured_output": False,
"attachment": False,
"temperature": True,
"image_url_inputs": False,
"pdf_inputs": False,
"pdf_tool_message": False,
@@ -56,6 +68,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-4": {
"name": "GPT-4",
"release_date": "2023-11-06",
"last_updated": "2024-04-09",
"open_weights": False,
"max_input_tokens": 8192,
"max_output_tokens": 8192,
"text_inputs": True,
@@ -69,6 +85,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": False,
"tool_calling": True,
"structured_output": False,
"attachment": True,
"temperature": True,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -76,6 +94,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-4-turbo": {
"name": "GPT-4 Turbo",
"release_date": "2023-11-06",
"last_updated": "2024-04-09",
"open_weights": False,
"max_input_tokens": 128000,
"max_output_tokens": 4096,
"text_inputs": True,
@@ -89,6 +111,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": False,
"tool_calling": True,
"structured_output": False,
"attachment": True,
"temperature": True,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -96,6 +120,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-4.1": {
"name": "GPT-4.1",
"release_date": "2025-04-14",
"last_updated": "2025-04-14",
"open_weights": False,
"max_input_tokens": 1047576,
"max_output_tokens": 32768,
"text_inputs": True,
@@ -109,6 +137,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": False,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": True,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -116,6 +146,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-4.1-mini": {
"name": "GPT-4.1 mini",
"release_date": "2025-04-14",
"last_updated": "2025-04-14",
"open_weights": False,
"max_input_tokens": 1047576,
"max_output_tokens": 32768,
"text_inputs": True,
@@ -129,6 +163,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": False,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": True,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -136,6 +172,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-4.1-nano": {
"name": "GPT-4.1 nano",
"release_date": "2025-04-14",
"last_updated": "2025-04-14",
"open_weights": False,
"max_input_tokens": 1047576,
"max_output_tokens": 32768,
"text_inputs": True,
@@ -149,6 +189,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": False,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": True,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -156,6 +198,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-4o": {
"name": "GPT-4o",
"release_date": "2024-05-13",
"last_updated": "2024-08-06",
"open_weights": False,
"max_input_tokens": 128000,
"max_output_tokens": 16384,
"text_inputs": True,
@@ -169,6 +215,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": False,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": True,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -176,6 +224,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-4o-2024-05-13": {
"name": "GPT-4o (2024-05-13)",
"release_date": "2024-05-13",
"last_updated": "2024-05-13",
"open_weights": False,
"max_input_tokens": 128000,
"max_output_tokens": 4096,
"text_inputs": True,
@@ -189,6 +241,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": False,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": True,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -196,6 +250,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-4o-2024-08-06": {
"name": "GPT-4o (2024-08-06)",
"release_date": "2024-08-06",
"last_updated": "2024-08-06",
"open_weights": False,
"max_input_tokens": 128000,
"max_output_tokens": 16384,
"text_inputs": True,
@@ -209,6 +267,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": False,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": True,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -216,6 +276,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-4o-2024-11-20": {
"name": "GPT-4o (2024-11-20)",
"release_date": "2024-11-20",
"last_updated": "2024-11-20",
"open_weights": False,
"max_input_tokens": 128000,
"max_output_tokens": 16384,
"text_inputs": True,
@@ -229,6 +293,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": False,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": True,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -236,6 +302,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-4o-mini": {
"name": "GPT-4o mini",
"release_date": "2024-07-18",
"last_updated": "2024-07-18",
"open_weights": False,
"max_input_tokens": 128000,
"max_output_tokens": 16384,
"text_inputs": True,
@@ -249,6 +319,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": False,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": True,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -256,6 +328,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-5": {
"name": "GPT-5",
"release_date": "2025-08-07",
"last_updated": "2025-08-07",
"open_weights": False,
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"text_inputs": True,
@@ -269,6 +345,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -276,6 +354,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-5-chat-latest": {
"name": "GPT-5 Chat (latest)",
"release_date": "2025-08-07",
"last_updated": "2025-08-07",
"open_weights": False,
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"text_inputs": True,
@@ -289,6 +371,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": False,
"structured_output": True,
"attachment": True,
"temperature": True,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -296,6 +380,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-5-codex": {
"name": "GPT-5-Codex",
"release_date": "2025-09-15",
"last_updated": "2025-09-15",
"open_weights": False,
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"text_inputs": True,
@@ -309,6 +397,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"attachment": False,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -316,6 +406,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-5-mini": {
"name": "GPT-5 Mini",
"release_date": "2025-08-07",
"last_updated": "2025-08-07",
"open_weights": False,
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"text_inputs": True,
@@ -329,6 +423,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -336,6 +432,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-5-nano": {
"name": "GPT-5 Nano",
"release_date": "2025-08-07",
"last_updated": "2025-08-07",
"open_weights": False,
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"text_inputs": True,
@@ -349,6 +449,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -356,6 +458,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-5-pro": {
"name": "GPT-5 Pro",
"release_date": "2025-10-06",
"last_updated": "2025-10-06",
"open_weights": False,
"max_input_tokens": 272000,
"max_output_tokens": 272000,
"text_inputs": True,
@@ -369,6 +475,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -376,6 +484,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-5.1": {
"name": "GPT-5.1",
"release_date": "2025-11-13",
"last_updated": "2025-11-13",
"open_weights": False,
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"text_inputs": True,
@@ -389,6 +501,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -396,6 +510,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-5.1-chat-latest": {
"name": "GPT-5.1 Chat",
"release_date": "2025-11-13",
"last_updated": "2025-11-13",
"open_weights": False,
"max_input_tokens": 272000,
"max_output_tokens": 16384,
"text_inputs": True,
@@ -409,6 +527,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -416,6 +536,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-5.1-codex": {
"name": "GPT-5.1 Codex",
"release_date": "2025-11-13",
"last_updated": "2025-11-13",
"open_weights": False,
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"text_inputs": True,
@@ -429,6 +553,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -436,6 +562,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-5.1-codex-max": {
"name": "GPT-5.1 Codex Max",
"release_date": "2025-11-13",
"last_updated": "2025-11-13",
"open_weights": False,
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"text_inputs": True,
@@ -449,6 +579,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -456,6 +588,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-5.1-codex-mini": {
"name": "GPT-5.1 Codex mini",
"release_date": "2025-11-13",
"last_updated": "2025-11-13",
"open_weights": False,
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"text_inputs": True,
@@ -469,6 +605,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -476,6 +614,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-5.2": {
"name": "GPT-5.2",
"release_date": "2025-12-11",
"last_updated": "2025-12-11",
"open_weights": False,
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"text_inputs": True,
@@ -489,6 +631,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -496,6 +640,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-5.2-chat-latest": {
"name": "GPT-5.2 Chat",
"release_date": "2025-12-11",
"last_updated": "2025-12-11",
"open_weights": False,
"max_input_tokens": 272000,
"max_output_tokens": 16384,
"text_inputs": True,
@@ -509,6 +657,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -516,6 +666,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-5.2-codex": {
"name": "GPT-5.2 Codex",
"release_date": "2025-12-11",
"last_updated": "2025-12-11",
"open_weights": False,
"max_input_tokens": 400000,
"max_output_tokens": 128000,
"text_inputs": True,
@@ -530,12 +684,18 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_tool_message": True,
"image_tool_message": True,
"tool_choice": True,
},
"gpt-5.2-pro": {
"name": "GPT-5.2 Pro",
"release_date": "2025-12-11",
"last_updated": "2025-12-11",
"open_weights": False,
"max_input_tokens": 272000,
"max_output_tokens": 128000,
"text_inputs": True,
@@ -549,6 +709,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": False,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -556,6 +718,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"gpt-5.3-codex": {
"name": "GPT-5.3 Codex",
"release_date": "2026-02-05",
"last_updated": "2026-02-05",
"open_weights": False,
"max_input_tokens": 400000,
"max_output_tokens": 128000,
"text_inputs": True,
@@ -570,12 +736,18 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_tool_message": True,
"image_tool_message": True,
"tool_choice": True,
},
"gpt-5.3-codex-spark": {
"name": "GPT-5.3 Codex Spark",
"release_date": "2026-02-05",
"last_updated": "2026-02-05",
"open_weights": False,
"max_input_tokens": 128000,
"max_output_tokens": 32000,
"text_inputs": True,
@@ -590,12 +762,18 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_tool_message": True,
"image_tool_message": True,
"tool_choice": True,
},
"gpt-5.4": {
"name": "GPT-5.4",
"release_date": "2026-03-05",
"last_updated": "2026-03-05",
"open_weights": False,
"max_input_tokens": 1050000,
"max_output_tokens": 128000,
"text_inputs": True,
@@ -610,12 +788,18 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_tool_message": True,
"image_tool_message": True,
"tool_choice": True,
},
"gpt-5.4-pro": {
"name": "GPT-5.4 Pro",
"release_date": "2026-03-05",
"last_updated": "2026-03-05",
"open_weights": False,
"max_input_tokens": 1050000,
"max_output_tokens": 128000,
"text_inputs": True,
@@ -629,6 +813,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": False,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -636,6 +822,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"o1": {
"name": "o1",
"release_date": "2024-12-05",
"last_updated": "2024-12-05",
"open_weights": False,
"max_input_tokens": 200000,
"max_output_tokens": 100000,
"text_inputs": True,
@@ -649,6 +839,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -656,6 +848,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"o1-mini": {
"name": "o1-mini",
"release_date": "2024-09-12",
"last_updated": "2024-09-12",
"open_weights": False,
"max_input_tokens": 128000,
"max_output_tokens": 65536,
"text_inputs": True,
@@ -669,6 +865,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": False,
"structured_output": True,
"attachment": False,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -676,6 +874,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"o1-preview": {
"name": "o1-preview",
"release_date": "2024-09-12",
"last_updated": "2024-09-12",
"open_weights": False,
"max_input_tokens": 128000,
"max_output_tokens": 32768,
"text_inputs": True,
@@ -688,6 +890,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": True,
"tool_calling": False,
"attachment": False,
"temperature": True,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -695,6 +899,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"o1-pro": {
"name": "o1-pro",
"release_date": "2025-03-19",
"last_updated": "2025-03-19",
"open_weights": False,
"max_input_tokens": 200000,
"max_output_tokens": 100000,
"text_inputs": True,
@@ -708,6 +916,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -715,6 +925,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"o3": {
"name": "o3",
"release_date": "2025-04-16",
"last_updated": "2025-04-16",
"open_weights": False,
"max_input_tokens": 200000,
"max_output_tokens": 100000,
"text_inputs": True,
@@ -728,6 +942,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -735,6 +951,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"o3-deep-research": {
"name": "o3-deep-research",
"release_date": "2024-06-26",
"last_updated": "2024-06-26",
"open_weights": False,
"max_input_tokens": 200000,
"max_output_tokens": 100000,
"text_inputs": True,
@@ -747,6 +967,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -754,6 +976,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"o3-mini": {
"name": "o3-mini",
"release_date": "2024-12-20",
"last_updated": "2025-01-29",
"open_weights": False,
"max_input_tokens": 200000,
"max_output_tokens": 100000,
"text_inputs": True,
@@ -767,6 +993,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"attachment": False,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -774,6 +1002,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"o3-pro": {
"name": "o3-pro",
"release_date": "2025-06-10",
"last_updated": "2025-06-10",
"open_weights": False,
"max_input_tokens": 200000,
"max_output_tokens": 100000,
"text_inputs": True,
@@ -787,6 +1019,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -794,6 +1028,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"o4-mini": {
"name": "o4-mini",
"release_date": "2025-04-16",
"last_updated": "2025-04-16",
"open_weights": False,
"max_input_tokens": 200000,
"max_output_tokens": 100000,
"text_inputs": True,
@@ -807,6 +1045,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"reasoning_output": True,
"tool_calling": True,
"structured_output": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -814,6 +1054,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"o4-mini-deep-research": {
"name": "o4-mini-deep-research",
"release_date": "2024-06-26",
"last_updated": "2024-06-26",
"open_weights": False,
"max_input_tokens": 200000,
"max_output_tokens": 100000,
"text_inputs": True,
@@ -826,6 +1070,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
"attachment": True,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -833,6 +1079,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"text-embedding-3-large": {
"name": "text-embedding-3-large",
"release_date": "2024-01-25",
"last_updated": "2024-01-25",
"open_weights": False,
"max_input_tokens": 8191,
"max_output_tokens": 3072,
"text_inputs": True,
@@ -845,6 +1095,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": False,
"tool_calling": False,
"attachment": False,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -852,6 +1104,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"text-embedding-3-small": {
"name": "text-embedding-3-small",
"release_date": "2024-01-25",
"last_updated": "2024-01-25",
"open_weights": False,
"max_input_tokens": 8191,
"max_output_tokens": 1536,
"text_inputs": True,
@@ -864,6 +1120,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": False,
"tool_calling": False,
"attachment": False,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,
@@ -871,6 +1129,10 @@ _PROFILES: dict[str, dict[str, Any]] = {
"tool_choice": True,
},
"text-embedding-ada-002": {
"name": "text-embedding-ada-002",
"release_date": "2022-12-15",
"last_updated": "2022-12-15",
"open_weights": False,
"max_input_tokens": 8192,
"max_output_tokens": 1536,
"text_inputs": True,
@@ -883,6 +1145,8 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": False,
"tool_calling": False,
"attachment": False,
"temperature": False,
"image_url_inputs": True,
"pdf_inputs": True,
"pdf_tool_message": True,