commit 4a6023e01e24b45a9cddc97e28800ffeb7b5222a
parent 71ddc8431d26a07d14c0dc2e4e84c52c74154e75
Author: Andrew Laack <andrew@laack.co>
Date: Thu, 5 Mar 2026 20:08:23 +0000
Merge pull request #174 from imbue-ai/andrew/gpt-5-4
GPT 5.4 Support
Diffstat:
3 files changed, 39 insertions(+), 1 deletion(-)
diff --git a/registry/models.json b/registry/models.json
@@ -1,5 +1,23 @@
{
"providers": {
+ "openai": {
+ "name": "OpenAI",
+ "api_type": "openai_compatible",
+ "base_url": "https://api.openai.com/v1",
+ "api_key_env": "OPENAI_API_KEY",
+ "models": {
+ "gpt-5.4": {
+ "context_window": 1050000,
+ "max_output_tokens": 128000,
+ "supports_temperature": false
+ },
+ "gpt-5.4-pro": {
+ "context_window": 1050000,
+ "max_output_tokens": 128000,
+ "supports_temperature": false
+ }
+ }
+ },
"groq": {
"name": "Groq",
"api_type": "openai_compatible",
diff --git a/uv.lock b/uv.lock
@@ -1494,7 +1494,7 @@ wheels = [
[[package]]
name = "verify-everything"
-version = "0.2.3"
+version = "0.2.4"
source = { editable = "." }
dependencies = [
{ name = "anthropic" },
diff --git a/vet/imbue_core/agents/llm_apis/openai_api.py b/vet/imbue_core/agents/llm_apis/openai_api.py
@@ -63,6 +63,8 @@ class OpenAIModelName(enum.StrEnum):
GPT_5_MINI = "gpt-5-mini"
GPT_5_1 = "gpt-5.1"
GPT_5_2 = "gpt-5.2"
+ GPT_5_4 = "gpt-5.4"
+ GPT_5_4_PRO = "gpt-5.4-pro"
# Using Tier 5 rate limits
@@ -142,6 +144,22 @@ OPENAI_MODEL_INFO_BY_NAME: FrozenMapping[OpenAIModelName, ModelInfo] = FrozenDic
max_output_tokens=128_000,
rate_limit_req=15000 / 60, # 15000 RPM = 250 RPS
),
+ OpenAIModelName.GPT_5_4: ModelInfo(
+ model_name=str(OpenAIModelName.GPT_5_4),
+ cost_per_input_token=2.50 / 1_000_000,
+ cost_per_output_token=15 / 1_000_000,
+ max_input_tokens=1_050_000,
+ max_output_tokens=128_000,
+ rate_limit_req=15000 / 60, # 15000 RPM = 250 RPS
+ ),
+ OpenAIModelName.GPT_5_4_PRO: ModelInfo(
+ model_name=str(OpenAIModelName.GPT_5_4_PRO),
+ cost_per_input_token=30 / 1_000_000,
+ cost_per_output_token=180 / 1_000_000,
+ max_input_tokens=1_050_000,
+ max_output_tokens=128_000,
+ rate_limit_req=10000 / 60, # 10000 RPM = 166.67 RPS
+ ),
}
)
@@ -191,6 +209,8 @@ def is_openai_reasoning_model(model_name: str) -> bool:
OpenAIModelName.GPT_5_MINI,
OpenAIModelName.GPT_5_1,
OpenAIModelName.GPT_5_2,
+ OpenAIModelName.GPT_5_4,
+ OpenAIModelName.GPT_5_4_PRO,
)