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]] = {
"grok-2": {
"name": "Grok 2",
"release_date": "2024-08-20",
"last_updated": "2024-08-20",
"open_weights": False,
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
@@ -29,8 +33,14 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
"attachment": False,
"temperature": True,
},
"grok-2-1212": {
"name": "Grok 2 (1212)",
"release_date": "2024-12-12",
"last_updated": "2024-12-12",
"open_weights": False,
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
@@ -43,8 +53,14 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
"attachment": False,
"temperature": True,
},
"grok-2-latest": {
"name": "Grok 2 Latest",
"release_date": "2024-08-20",
"last_updated": "2024-12-12",
"open_weights": False,
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
@@ -57,8 +73,14 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
"attachment": False,
"temperature": True,
},
"grok-2-vision": {
"name": "Grok 2 Vision",
"release_date": "2024-08-20",
"last_updated": "2024-08-20",
"open_weights": False,
"max_input_tokens": 8192,
"max_output_tokens": 4096,
"text_inputs": True,
@@ -71,8 +93,14 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
"attachment": True,
"temperature": True,
},
"grok-2-vision-1212": {
"name": "Grok 2 Vision (1212)",
"release_date": "2024-08-20",
"last_updated": "2024-12-12",
"open_weights": False,
"max_input_tokens": 8192,
"max_output_tokens": 4096,
"text_inputs": True,
@@ -85,8 +113,14 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
"attachment": True,
"temperature": True,
},
"grok-2-vision-latest": {
"name": "Grok 2 Vision Latest",
"release_date": "2024-08-20",
"last_updated": "2024-12-12",
"open_weights": False,
"max_input_tokens": 8192,
"max_output_tokens": 4096,
"text_inputs": True,
@@ -99,8 +133,14 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
"attachment": True,
"temperature": True,
},
"grok-3": {
"name": "Grok 3",
"release_date": "2025-02-17",
"last_updated": "2025-02-17",
"open_weights": False,
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
@@ -113,8 +153,14 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
"attachment": False,
"temperature": True,
},
"grok-3-fast": {
"name": "Grok 3 Fast",
"release_date": "2025-02-17",
"last_updated": "2025-02-17",
"open_weights": False,
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
@@ -127,8 +173,14 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
"attachment": False,
"temperature": True,
},
"grok-3-fast-latest": {
"name": "Grok 3 Fast Latest",
"release_date": "2025-02-17",
"last_updated": "2025-02-17",
"open_weights": False,
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
@@ -141,8 +193,14 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
"attachment": False,
"temperature": True,
},
"grok-3-latest": {
"name": "Grok 3 Latest",
"release_date": "2025-02-17",
"last_updated": "2025-02-17",
"open_weights": False,
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
@@ -155,8 +213,14 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
"attachment": False,
"temperature": True,
},
"grok-3-mini": {
"name": "Grok 3 Mini",
"release_date": "2025-02-17",
"last_updated": "2025-02-17",
"open_weights": False,
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
@@ -169,8 +233,14 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
"attachment": False,
"temperature": True,
},
"grok-3-mini-fast": {
"name": "Grok 3 Mini Fast",
"release_date": "2025-02-17",
"last_updated": "2025-02-17",
"open_weights": False,
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
@@ -183,8 +253,14 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
"attachment": False,
"temperature": True,
},
"grok-3-mini-fast-latest": {
"name": "Grok 3 Mini Fast Latest",
"release_date": "2025-02-17",
"last_updated": "2025-02-17",
"open_weights": False,
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
@@ -197,8 +273,14 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
"attachment": False,
"temperature": True,
},
"grok-3-mini-latest": {
"name": "Grok 3 Mini Latest",
"release_date": "2025-02-17",
"last_updated": "2025-02-17",
"open_weights": False,
"max_input_tokens": 131072,
"max_output_tokens": 8192,
"text_inputs": True,
@@ -211,8 +293,14 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
"attachment": False,
"temperature": True,
},
"grok-4": {
"name": "Grok 4",
"release_date": "2025-07-09",
"last_updated": "2025-07-09",
"open_weights": False,
"max_input_tokens": 256000,
"max_output_tokens": 64000,
"text_inputs": True,
@@ -225,8 +313,14 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
"attachment": False,
"temperature": True,
},
"grok-4-1-fast": {
"name": "Grok 4.1 Fast",
"release_date": "2025-11-19",
"last_updated": "2025-11-19",
"open_weights": False,
"max_input_tokens": 2000000,
"max_output_tokens": 30000,
"text_inputs": True,
@@ -239,8 +333,14 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
"attachment": True,
"temperature": True,
},
"grok-4-1-fast-non-reasoning": {
"name": "Grok 4.1 Fast (Non-Reasoning)",
"release_date": "2025-11-19",
"last_updated": "2025-11-19",
"open_weights": False,
"max_input_tokens": 2000000,
"max_output_tokens": 30000,
"text_inputs": True,
@@ -253,8 +353,14 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
"attachment": True,
"temperature": True,
},
"grok-4-fast": {
"name": "Grok 4 Fast",
"release_date": "2025-09-19",
"last_updated": "2025-09-19",
"open_weights": False,
"max_input_tokens": 2000000,
"max_output_tokens": 30000,
"text_inputs": True,
@@ -267,8 +373,14 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
"attachment": True,
"temperature": True,
},
"grok-4-fast-non-reasoning": {
"name": "Grok 4 Fast (Non-Reasoning)",
"release_date": "2025-09-19",
"last_updated": "2025-09-19",
"open_weights": False,
"max_input_tokens": 2000000,
"max_output_tokens": 30000,
"text_inputs": True,
@@ -281,8 +393,15 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
"attachment": True,
"temperature": True,
},
"grok-4.20-experimental-beta-0304-non-reasoning": {
"name": "Grok 4.20 (Experimental, Non-Reasoning)",
"status": "beta",
"release_date": "2026-03-04",
"last_updated": "2026-03-04",
"open_weights": False,
"max_input_tokens": 2000000,
"max_output_tokens": 30000,
"text_inputs": True,
@@ -295,8 +414,15 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
"attachment": True,
"temperature": True,
},
"grok-4.20-experimental-beta-0304-reasoning": {
"name": "Grok 4.20 (Experimental, Reasoning)",
"status": "beta",
"release_date": "2026-03-04",
"last_updated": "2026-03-04",
"open_weights": False,
"max_input_tokens": 2000000,
"max_output_tokens": 30000,
"text_inputs": True,
@@ -309,8 +435,15 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
"attachment": True,
"temperature": True,
},
"grok-4.20-multi-agent-experimental-beta-0304": {
"name": "Grok 4.20 Multi-Agent (Experimental)",
"status": "beta",
"release_date": "2026-03-04",
"last_updated": "2026-03-04",
"open_weights": False,
"max_input_tokens": 2000000,
"max_output_tokens": 30000,
"text_inputs": True,
@@ -323,8 +456,14 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
"attachment": True,
"temperature": True,
},
"grok-beta": {
"name": "Grok Beta",
"release_date": "2024-11-01",
"last_updated": "2024-11-01",
"open_weights": False,
"max_input_tokens": 131072,
"max_output_tokens": 4096,
"text_inputs": True,
@@ -337,8 +476,14 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
"attachment": False,
"temperature": True,
},
"grok-code-fast-1": {
"name": "Grok Code Fast 1",
"release_date": "2025-08-28",
"last_updated": "2025-08-28",
"open_weights": False,
"max_input_tokens": 256000,
"max_output_tokens": 10000,
"text_inputs": True,
@@ -351,8 +496,14 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": True,
"tool_calling": True,
"attachment": False,
"temperature": True,
},
"grok-vision-beta": {
"name": "Grok Vision Beta",
"release_date": "2024-11-01",
"last_updated": "2024-11-01",
"open_weights": False,
"max_input_tokens": 8192,
"max_output_tokens": 4096,
"text_inputs": True,
@@ -365,5 +516,7 @@ _PROFILES: dict[str, dict[str, Any]] = {
"video_outputs": False,
"reasoning_output": False,
"tool_calling": True,
"attachment": True,
"temperature": True,
},
}