mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-08 03:00:28 -04:00
feat(platform): add missing OpenAI API models (GPT-5.4, O4-mini, O3-pro, etc.)
Add 18 missing OpenAI models to the platform's LLM blocks: - GPT-5.4 series (current flagship): gpt-5.4, gpt-5.4-mini, gpt-5.4-nano, gpt-5.4-pro - O-series reasoning: o4-mini, o4-mini-deep-research, o3-pro, o3-deep-research - GPT-5.3 series: gpt-5.3, gpt-5.3-codex - Pro variants: gpt-5.2-pro, gpt-5-pro - Codex models: gpt-5.1-codex - Legacy: gpt-4.1-nano Changes: - LlmModel enum: added 18 new model entries with proper API model IDs - MODEL_METADATA: added context window, max output tokens, and pricing tier - block_cost_config.py: added credit costs for all new models - codex.py: added GPT-5.3 Codex and updated default - Updated DEFAULT_LLM_MODEL from GPT-5.2 to GPT-5.4
This commit is contained in:
@@ -35,6 +35,7 @@ class CodexCallResult:
|
||||
class CodexModel(str, Enum):
|
||||
"""Codex-capable OpenAI models."""
|
||||
|
||||
GPT5_3_CODEX = "gpt-5.3-codex"
|
||||
GPT5_1_CODEX = "gpt-5.1-codex"
|
||||
|
||||
|
||||
@@ -91,7 +92,7 @@ class CodeGenerationBlock(Block):
|
||||
)
|
||||
model: CodexModel = SchemaField(
|
||||
title="Codex Model",
|
||||
default=CodexModel.GPT5_1_CODEX,
|
||||
default=CodexModel.GPT5_3_CODEX,
|
||||
description="Codex-optimized model served via the Responses API.",
|
||||
advanced=False,
|
||||
)
|
||||
|
||||
@@ -116,20 +116,39 @@ class LlmModel(str, Enum, metaclass=LlmModelMeta):
|
||||
return None
|
||||
return None
|
||||
|
||||
# OpenAI models
|
||||
O3_MINI = "o3-mini"
|
||||
# OpenAI models — O-series reasoning
|
||||
O4_MINI = "o4-mini"
|
||||
O4_MINI_DEEP_RESEARCH = "o4-mini-deep-research"
|
||||
O3 = "o3-2025-04-16"
|
||||
O3_MINI = "o3-mini"
|
||||
O3_PRO = "o3-pro"
|
||||
O3_DEEP_RESEARCH = "o3-deep-research"
|
||||
O1 = "o1"
|
||||
O1_MINI = "o1-mini"
|
||||
# GPT-5 models
|
||||
# OpenAI models — GPT-5.4 series (current flagship)
|
||||
GPT5_4 = "gpt-5.4-2026-03-05"
|
||||
GPT5_4_MINI = "gpt-5.4-mini-2026-03-17"
|
||||
GPT5_4_NANO = "gpt-5.4-nano-2026-03-17"
|
||||
GPT5_4_PRO = "gpt-5.4-pro"
|
||||
# OpenAI models — GPT-5.3 series
|
||||
GPT5_3 = "gpt-5.3"
|
||||
GPT5_3_CODEX = "gpt-5.3-codex"
|
||||
# OpenAI models — GPT-5.2 series
|
||||
GPT5_2 = "gpt-5.2-2025-12-11"
|
||||
GPT5_2_PRO = "gpt-5.2-pro"
|
||||
# OpenAI models — GPT-5.1 series
|
||||
GPT5_1 = "gpt-5.1-2025-11-13"
|
||||
GPT5_1_CODEX = "gpt-5.1-codex"
|
||||
# OpenAI models — GPT-5 series
|
||||
GPT5 = "gpt-5-2025-08-07"
|
||||
GPT5_MINI = "gpt-5-mini-2025-08-07"
|
||||
GPT5_NANO = "gpt-5-nano-2025-08-07"
|
||||
GPT5_PRO = "gpt-5-pro"
|
||||
GPT5_CHAT = "gpt-5-chat-latest"
|
||||
# OpenAI models — GPT-4.x series
|
||||
GPT41 = "gpt-4.1-2025-04-14"
|
||||
GPT41_MINI = "gpt-4.1-mini-2025-04-14"
|
||||
GPT41_NANO = "gpt-4.1-nano"
|
||||
GPT4O_MINI = "gpt-4o-mini"
|
||||
GPT4O = "gpt-4o"
|
||||
GPT4_TURBO = "gpt-4-turbo"
|
||||
@@ -254,23 +273,64 @@ class LlmModel(str, Enum, metaclass=LlmModelMeta):
|
||||
|
||||
MODEL_METADATA = {
|
||||
# https://platform.openai.com/docs/models
|
||||
# O-series reasoning models
|
||||
LlmModel.O4_MINI: ModelMetadata(
|
||||
"openai", 200000, 100000, "O4 Mini", "OpenAI", "OpenAI", 1
|
||||
),
|
||||
LlmModel.O4_MINI_DEEP_RESEARCH: ModelMetadata(
|
||||
"openai", 200000, 100000, "O4 Mini Deep Research", "OpenAI", "OpenAI", 2
|
||||
),
|
||||
LlmModel.O3: ModelMetadata("openai", 200000, 100000, "O3", "OpenAI", "OpenAI", 2),
|
||||
LlmModel.O3_MINI: ModelMetadata(
|
||||
"openai", 200000, 100000, "O3 Mini", "OpenAI", "OpenAI", 1
|
||||
), # o3-mini-2025-01-31
|
||||
LlmModel.O3_PRO: ModelMetadata(
|
||||
"openai", 200000, 100000, "O3 Pro", "OpenAI", "OpenAI", 3
|
||||
),
|
||||
LlmModel.O3_DEEP_RESEARCH: ModelMetadata(
|
||||
"openai", 200000, 100000, "O3 Deep Research", "OpenAI", "OpenAI", 3
|
||||
),
|
||||
LlmModel.O1: ModelMetadata(
|
||||
"openai", 200000, 100000, "O1", "OpenAI", "OpenAI", 3
|
||||
), # o1-2024-12-17
|
||||
LlmModel.O1_MINI: ModelMetadata(
|
||||
"openai", 128000, 65536, "O1 Mini", "OpenAI", "OpenAI", 2
|
||||
), # o1-mini-2024-09-12
|
||||
# GPT-5 models
|
||||
# GPT-5.4 models (current flagship, March 2026)
|
||||
LlmModel.GPT5_4: ModelMetadata(
|
||||
"openai", 1050000, 128000, "GPT-5.4", "OpenAI", "OpenAI", 2
|
||||
),
|
||||
LlmModel.GPT5_4_MINI: ModelMetadata(
|
||||
"openai", 400000, 128000, "GPT-5.4 Mini", "OpenAI", "OpenAI", 1
|
||||
),
|
||||
LlmModel.GPT5_4_NANO: ModelMetadata(
|
||||
"openai", 400000, 128000, "GPT-5.4 Nano", "OpenAI", "OpenAI", 1
|
||||
),
|
||||
LlmModel.GPT5_4_PRO: ModelMetadata(
|
||||
"openai", 1050000, 128000, "GPT-5.4 Pro", "OpenAI", "OpenAI", 3
|
||||
),
|
||||
# GPT-5.3 models
|
||||
LlmModel.GPT5_3: ModelMetadata(
|
||||
"openai", 128000, 16384, "GPT-5.3", "OpenAI", "OpenAI", 2
|
||||
),
|
||||
LlmModel.GPT5_3_CODEX: ModelMetadata(
|
||||
"openai", 400000, 128000, "GPT-5.3 Codex", "OpenAI", "OpenAI", 2
|
||||
),
|
||||
# GPT-5.2 models
|
||||
LlmModel.GPT5_2: ModelMetadata(
|
||||
"openai", 400000, 128000, "GPT-5.2", "OpenAI", "OpenAI", 3
|
||||
),
|
||||
LlmModel.GPT5_2_PRO: ModelMetadata(
|
||||
"openai", 400000, 128000, "GPT-5.2 Pro", "OpenAI", "OpenAI", 3
|
||||
),
|
||||
# GPT-5.1 models
|
||||
LlmModel.GPT5_1: ModelMetadata(
|
||||
"openai", 400000, 128000, "GPT-5.1", "OpenAI", "OpenAI", 2
|
||||
),
|
||||
LlmModel.GPT5_1_CODEX: ModelMetadata(
|
||||
"openai", 400000, 128000, "GPT-5.1 Codex", "OpenAI", "OpenAI", 2
|
||||
),
|
||||
# GPT-5 models
|
||||
LlmModel.GPT5: ModelMetadata(
|
||||
"openai", 400000, 128000, "GPT-5", "OpenAI", "OpenAI", 1
|
||||
),
|
||||
@@ -280,15 +340,22 @@ MODEL_METADATA = {
|
||||
LlmModel.GPT5_NANO: ModelMetadata(
|
||||
"openai", 400000, 128000, "GPT-5 Nano", "OpenAI", "OpenAI", 1
|
||||
),
|
||||
LlmModel.GPT5_PRO: ModelMetadata(
|
||||
"openai", 400000, 128000, "GPT-5 Pro", "OpenAI", "OpenAI", 3
|
||||
),
|
||||
LlmModel.GPT5_CHAT: ModelMetadata(
|
||||
"openai", 400000, 16384, "GPT-5 Chat Latest", "OpenAI", "OpenAI", 2
|
||||
),
|
||||
# GPT-4.x models
|
||||
LlmModel.GPT41: ModelMetadata(
|
||||
"openai", 1047576, 32768, "GPT-4.1", "OpenAI", "OpenAI", 1
|
||||
),
|
||||
LlmModel.GPT41_MINI: ModelMetadata(
|
||||
"openai", 1047576, 32768, "GPT-4.1 Mini", "OpenAI", "OpenAI", 1
|
||||
),
|
||||
LlmModel.GPT41_NANO: ModelMetadata(
|
||||
"openai", 1047576, 32768, "GPT-4.1 Nano", "OpenAI", "OpenAI", 1
|
||||
),
|
||||
LlmModel.GPT4O_MINI: ModelMetadata(
|
||||
"openai", 128000, 16384, "GPT-4o Mini", "OpenAI", "OpenAI", 1
|
||||
), # gpt-4o-mini-2024-07-18
|
||||
@@ -661,7 +728,7 @@ MODEL_METADATA = {
|
||||
LlmModel.V0_1_0_MD: ModelMetadata("v0", 128000, 64000, "v0 1.0 MD", "V0", "V0", 1),
|
||||
}
|
||||
|
||||
DEFAULT_LLM_MODEL = LlmModel.GPT5_2
|
||||
DEFAULT_LLM_MODEL = LlmModel.GPT5_4
|
||||
|
||||
for model in LlmModel:
|
||||
if model not in MODEL_METADATA:
|
||||
|
||||
@@ -60,19 +60,33 @@ from backend.integrations.credentials_store import (
|
||||
# =============== Configure the cost for each LLM Model call =============== #
|
||||
|
||||
MODEL_COST: dict[LlmModel, int] = {
|
||||
LlmModel.O4_MINI: 2,
|
||||
LlmModel.O4_MINI_DEEP_RESEARCH: 5,
|
||||
LlmModel.O3: 4,
|
||||
LlmModel.O3_MINI: 2,
|
||||
LlmModel.O3_PRO: 30,
|
||||
LlmModel.O3_DEEP_RESEARCH: 15,
|
||||
LlmModel.O1: 16,
|
||||
LlmModel.O1_MINI: 4,
|
||||
# GPT-5 models
|
||||
LlmModel.GPT5_4: 5,
|
||||
LlmModel.GPT5_4_MINI: 2,
|
||||
LlmModel.GPT5_4_NANO: 1,
|
||||
LlmModel.GPT5_4_PRO: 60,
|
||||
LlmModel.GPT5_3: 5,
|
||||
LlmModel.GPT5_3_CODEX: 5,
|
||||
LlmModel.GPT5_2: 6,
|
||||
LlmModel.GPT5_2_PRO: 60,
|
||||
LlmModel.GPT5_1: 5,
|
||||
LlmModel.GPT5_1_CODEX: 4,
|
||||
LlmModel.GPT5: 2,
|
||||
LlmModel.GPT5_MINI: 1,
|
||||
LlmModel.GPT5_NANO: 1,
|
||||
LlmModel.GPT5_PRO: 30,
|
||||
LlmModel.GPT5_CHAT: 5,
|
||||
LlmModel.GPT41: 2,
|
||||
LlmModel.GPT41_MINI: 1,
|
||||
LlmModel.GPT41_NANO: 1,
|
||||
LlmModel.GPT4O_MINI: 1,
|
||||
LlmModel.GPT4O: 3,
|
||||
LlmModel.GPT4_TURBO: 10,
|
||||
@@ -285,6 +299,18 @@ BLOCK_COSTS: dict[Type[Block], list[BlockCost]] = {
|
||||
AITextSummarizerBlock: LLM_COST,
|
||||
AIListGeneratorBlock: LLM_COST,
|
||||
CodeGenerationBlock: [
|
||||
BlockCost(
|
||||
cost_type=BlockCostType.RUN,
|
||||
cost_filter={
|
||||
"model": CodexModel.GPT5_3_CODEX,
|
||||
"credentials": {
|
||||
"id": openai_credentials.id,
|
||||
"provider": openai_credentials.provider,
|
||||
"type": openai_credentials.type,
|
||||
},
|
||||
},
|
||||
cost_amount=5,
|
||||
),
|
||||
BlockCost(
|
||||
cost_type=BlockCostType.RUN,
|
||||
cost_filter={
|
||||
@@ -296,7 +322,7 @@ BLOCK_COSTS: dict[Type[Block], list[BlockCost]] = {
|
||||
},
|
||||
},
|
||||
cost_amount=5,
|
||||
)
|
||||
),
|
||||
],
|
||||
CreateTalkingAvatarVideoBlock: [
|
||||
BlockCost(
|
||||
|
||||
Reference in New Issue
Block a user