Skip to content
2 changes: 1 addition & 1 deletion libs/agno/agno/models/defaults.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
DEFAULT_OPENAI_MODEL_ID: str = "gpt-4o"
DEFAULT_OPENAI_MODEL_ID: str = "gpt-5.4-mini"
4 changes: 2 additions & 2 deletions libs/agno/agno/models/fireworks/fireworks.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@ class Fireworks(OpenAILike):
A class for interacting with models hosted on Fireworks.

Attributes:
id (str): The model name to use. Defaults to "accounts/fireworks/models/llama-v3p1-405b-instruct".
id (str): The model name to use. Defaults to "accounts/fireworks/models/gpt-oss-120b".
name (str): The model name to use. Defaults to "Fireworks".
provider (str): The provider to use. Defaults to "Fireworks".
api_key (Optional[str]): The API key to use.
base_url (str): The base URL to use. Defaults to "https://api.fireworks.ai/inference/v1".
"""

id: str = "accounts/fireworks/models/llama-v3p1-405b-instruct"
id: str = "accounts/fireworks/models/gpt-oss-120b"
name: str = "Fireworks"
Comment on lines +22 to 23
Copy link

Copilot AI Apr 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fireworks’ default model id is updated here, but integration tests still reference the previous serverless model (e.g., libs/agno/tests/integration/models/fireworks/* uses "accounts/fireworks/models/llama-v3p1-405b-instruct"). If that model is no longer available serverless (per PR description), those tests/examples should be updated to a currently supported Fireworks model to avoid CI breakage and to exercise the new default path.

Copilot uses AI. Check for mistakes.
provider: str = "Fireworks"

Expand Down
2 changes: 1 addition & 1 deletion libs/agno/agno/models/google/gemini.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ class Gemini(Model):
Based on https://googleapis.github.io/python-genai/
"""

id: str = "gemini-2.0-flash-001"
id: str = "gemini-flash-latest"
name: str = "Gemini"
provider: str = "Google"
Comment on lines +81 to 83
Copy link

Copilot AI Apr 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gemini’s default model id is updated here, but several integration tests still reference the previous id explicitly (e.g., libs/agno/tests/integration/models/google/* and other integration tests use "gemini-2.0-flash-001"). If the motivation is avoiding upcoming deprecations, those pinned test model IDs should be updated as well to prevent future breakage and to validate the new default in practice.

Copilot uses AI. Check for mistakes.

Expand Down
4 changes: 2 additions & 2 deletions libs/agno/agno/models/moonshot/moonshot.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@ class MoonShot(OpenAILike):
A class for interacting with MoonShot models.

Attributes:
id (str): The model id. Defaults to "kimi-k2-thinking".
id (str): The model id. Defaults to "kimi-k2.5".
name (str): The model name. Defaults to "Moonshot".
provider (str): The provider name. Defaults to "Moonshot".
api_key (Optional[str]): The API key.
base_url (str): The base URL. Defaults to "https://api.moonshot.ai/v1".
"""

id: str = "kimi-k2-thinking"
id: str = "kimi-k2.5"
name: str = "Moonshot"
Comment on lines +22 to 23
Copy link

Copilot AI Apr 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MoonShot’s default model id is updated, but unit tests still hard-code the old id (libs/agno/tests/unit/models/moonshot/test_moonshot.py uses "kimi-k2-thinking"). Given the stated goal of migrating away from deprecated models, update those tests (and any docs/examples) to a supported model id so the test suite doesn’t keep validating a model slated for deprecation.

Copilot uses AI. Check for mistakes.
provider: str = "Moonshot"

Expand Down
2 changes: 1 addition & 1 deletion libs/agno/agno/models/openai/chat.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class OpenAIChat(Model):
For more information, see: https://platform.openai.com/docs/api-reference/chat/create
"""

id: str = "gpt-4o"
id: str = "gpt-5.4-mini"
name: str = "OpenAIChat"
provider: str = "OpenAI"
supports_native_structured_outputs: bool = True
Comment on lines +41 to 44
Copy link

Copilot AI Apr 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OpenAIChat’s default model id is updated here, but there are still other OpenAI defaults hard-coded to "gpt-4o" (e.g., agno/models/defaults.py defines DEFAULT_OPENAI_MODEL_ID = "gpt-4o" and OpenAIResponses defaults to "gpt-4o"). This leaves the codebase with multiple conflicting "default" OpenAI model sources. Consider updating the central default constant/usages (and the Responses default if intended) so defaults are consistent across the library.

Copilot uses AI. Check for mistakes.
Expand Down
2 changes: 1 addition & 1 deletion libs/agno/agno/models/openai/responses.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class OpenAIResponses(Model):
For more information, see: https://platform.openai.com/docs/api-reference/responses
"""

id: str = "gpt-4o"
id: str = "gpt-5.4-mini"
name: str = "OpenAIResponses"
provider: str = "OpenAI"
supports_native_structured_outputs: bool = True
Expand Down
4 changes: 2 additions & 2 deletions libs/agno/agno/models/openrouter/openrouter.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class OpenRouter(OpenAILike):
A class for using models hosted on OpenRouter.

Attributes:
id (str): The model id. Defaults to "gpt-4o".
id (str): The model id. Defaults to "gpt-5.4-mini".
name (str): The model name. Defaults to "OpenRouter".
provider (str): The provider name. Defaults to "OpenRouter".
api_key (Optional[str]): The API key.
Expand All @@ -29,7 +29,7 @@ class OpenRouter(OpenAILike):
these models in order. Example: ["anthropic/claude-sonnet-4", "deepseek/deepseek-r1"]
"""

id: str = "gpt-4o"
id: str = "gpt-5.4-mini"
name: str = "OpenRouter"
Comment on lines 21 to 33
Copy link

Copilot AI Apr 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OpenRouter’s default model id is updated here, but integration tests still pin the old id (e.g., libs/agno/tests/integration/models/openrouter/* uses OpenRouter(id="gpt-4o")). If those tests run in CI or are used as examples, they’ll likely start failing once the model is deprecated/unavailable. Update the OpenRouter integration tests/examples to the new default (or reference OpenRouter().id) to keep the test suite aligned with this migration.

Copilot uses AI. Check for mistakes.
provider: str = "OpenRouter"

Expand Down
4 changes: 2 additions & 2 deletions libs/agno/agno/models/together/together.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@ class Together(OpenAILike):
A class for interacting with Together API.

Attributes:
id (str): The id of the Together model to use. Default is "mistralai/Mixtral-8x7B-Instruct-v0.1".
id (str): The id of the Together model to use. Default is "MiniMaxAI/MiniMax-M2.7".
name (str): The name of this chat model instance. Default is "Together"
provider (str): The provider of the model. Default is "Together".
api_key (str): The api key to authorize request to Together.
base_url (str): The base url to which the requests are sent. Defaults to "https://api.together.xyz/v1".
"""

id: str = "mistralai/Mixtral-8x7B-Instruct-v0.1"
id: str = "MiniMaxAI/MiniMax-M2.7"
name: str = "Together"
provider: str = "Together"
api_key: Optional[str] = None
Expand Down
4 changes: 2 additions & 2 deletions libs/agno/agno/models/xai/xai.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,15 @@ class xAI(OpenAILike):
Class for interacting with the xAI API.

Attributes:
id (str): The ID of the language model. Defaults to "grok-beta".
id (str): The ID of the language model. Defaults to "grok-4-1-fast-non-reasoning-latest".
name (str): The name of the API. Defaults to "xAI".
provider (str): The provider of the API. Defaults to "xAI".
api_key (Optional[str]): The API key for the xAI API.
base_url (Optional[str]): The base URL for the xAI API. Defaults to "https://api.x.ai/v1".
search_parameters (Optional[Dict[str, Any]]): Search parameters for enabling live search.
"""

id: str = "grok-beta"
id: str = "grok-4-1-fast-non-reasoning-latest"
name: str = "xAI"
provider: str = "xAI"

Expand Down
2 changes: 1 addition & 1 deletion libs/agno/tests/integration/agent/test_parser_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ def test_openai_with_claude_parser_model():

def test_gemini_with_openai_parser_model():
park_agent = Agent(
model=Gemini(id="gemini-2.0-flash-001"), # Main model to generate the content
model=Gemini(id="gemini-flash-latest"), # Main model to generate the content
description="You are an expert on national parks and provide concise guides.",
output_schema=ParkGuide,
parser_model=OpenAIChat(id="gpt-4o"), # Model to parse the output
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ async def test_agentic_filtering_openai_with_output_schema(knowledge_base):

@pytest.mark.skipif(not os.environ.get("GOOGLE_API_KEY"), reason="GOOGLE_API_KEY not set")
async def test_agentic_filtering_gemini(knowledge_base):
agent = Agent(model=Gemini("gemini-2.0-flash-001"), knowledge=knowledge_base, enable_agentic_knowledge_filters=True)
agent = Agent(model=Gemini("gemini-flash-latest"), knowledge=knowledge_base, enable_agentic_knowledge_filters=True)
response = await agent.arun(
"Tell me about revenue performance and top selling products in the region north_america and data_type sales",
markdown=True,
Expand Down
4 changes: 2 additions & 2 deletions libs/agno/tests/integration/models/fireworks/test_basic.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ class MovieScript(BaseModel):
plot: str = Field(..., description="Brief plot summary")

agent = Agent(
model=Fireworks(id="accounts/fireworks/models/llama-v3p1-405b-instruct"),
model=Fireworks(id="accounts/fireworks/models/gpt-oss-120b"),
output_schema=MovieScript,
telemetry=False,
)
Expand All @@ -138,7 +138,7 @@ class MovieScript(BaseModel):
plot: str = Field(..., description="Brief plot summary")

agent = Agent(
model=Fireworks(id="accounts/fireworks/models/llama-v3p1-405b-instruct"),
model=Fireworks(id="accounts/fireworks/models/gpt-oss-120b"),
output_schema=MovieScript,
use_json_mode=True,
telemetry=False,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class MovieScript(BaseModel):

def test_structured_response():
structured_output_agent = Agent(
model=Fireworks(id="accounts/fireworks/models/llama-v3p1-405b-instruct"),
model=Fireworks(id="accounts/fireworks/models/gpt-oss-120b"),
description="You help people write movie scripts.",
output_schema=MovieScript,
)
Expand Down Expand Up @@ -52,7 +52,7 @@ class Recipe(BaseModel):
rating: Grade

structured_output_agent = Agent(
model=Fireworks(id="accounts/fireworks/models/llama-v3p1-405b-instruct"),
model=Fireworks(id="accounts/fireworks/models/gpt-oss-120b"),
description="You help generate recipe names and ratings.",
output_schema=Recipe,
)
Expand Down
18 changes: 9 additions & 9 deletions libs/agno/tests/integration/models/fireworks/test_tool_use.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

def test_tool_use():
agent = Agent(
model=Fireworks(id="accounts/fireworks/models/llama-v3p1-405b-instruct"),
model=Fireworks(id="accounts/fireworks/models/gpt-oss-120b"),
tools=[YFinanceTools(cache_results=True)],
markdown=True,
telemetry=False,
Expand All @@ -28,7 +28,7 @@ def test_tool_use():

def test_tool_use_stream():
agent = Agent(
model=Fireworks(id="accounts/fireworks/models/llama-v3p1-405b-instruct"),
model=Fireworks(id="accounts/fireworks/models/gpt-oss-120b"),
tools=[YFinanceTools(cache_results=True)],
markdown=True,
telemetry=False,
Expand All @@ -55,7 +55,7 @@ def test_tool_use_stream():
@pytest.mark.asyncio
async def test_async_tool_use():
agent = Agent(
model=Fireworks(id="accounts/fireworks/models/llama-v3p1-405b-instruct"),
model=Fireworks(id="accounts/fireworks/models/gpt-oss-120b"),
tools=[YFinanceTools(cache_results=True)],
markdown=True,
telemetry=False,
Expand All @@ -73,7 +73,7 @@ async def test_async_tool_use():
@pytest.mark.asyncio
async def test_async_tool_use_stream():
agent = Agent(
model=Fireworks(id="accounts/fireworks/models/llama-v3p1-405b-instruct"),
model=Fireworks(id="accounts/fireworks/models/gpt-oss-120b"),
tools=[YFinanceTools(cache_results=True)],
markdown=True,
telemetry=False,
Expand All @@ -92,7 +92,7 @@ async def test_async_tool_use_stream():

def test_parallel_tool_calls():
agent = Agent(
model=Fireworks(id="accounts/fireworks/models/llama-v3p1-405b-instruct"),
model=Fireworks(id="accounts/fireworks/models/gpt-oss-120b"),
tools=[YFinanceTools(cache_results=True)],
markdown=True,
telemetry=False,
Expand All @@ -113,7 +113,7 @@ def test_parallel_tool_calls():

def test_multiple_tool_calls():
agent = Agent(
model=Fireworks(id="accounts/fireworks/models/llama-v3p1-405b-instruct"),
model=Fireworks(id="accounts/fireworks/models/gpt-oss-120b"),
tools=[YFinanceTools(cache_results=True), WebSearchTools(cache_results=True)],
markdown=True,
telemetry=False,
Expand All @@ -140,7 +140,7 @@ def get_the_weather_in_tokyo():
return "It is currently 70 degrees and cloudy in Tokyo"

agent = Agent(
model=Fireworks(id="accounts/fireworks/models/llama-v3p1-405b-instruct"),
model=Fireworks(id="accounts/fireworks/models/gpt-oss-120b"),
tools=[get_the_weather_in_tokyo],
markdown=True,
telemetry=False,
Expand Down Expand Up @@ -169,7 +169,7 @@ def get_the_weather(city: Optional[str] = None):
return f"It is currently 70 degrees and cloudy in {city}"

agent = Agent(
model=Fireworks(id="accounts/fireworks/models/llama-v3p1-405b-instruct"),
model=Fireworks(id="accounts/fireworks/models/gpt-oss-120b"),
tools=[get_the_weather],
markdown=True,
telemetry=False,
Expand All @@ -186,7 +186,7 @@ def get_the_weather(city: Optional[str] = None):

def test_tool_call_list_parameters():
agent = Agent(
model=Fireworks(id="accounts/fireworks/models/llama-v3p1-405b-instruct"),
model=Fireworks(id="accounts/fireworks/models/gpt-oss-120b"),
tools=[ExaTools()],
instructions="Use a single tool call if possible",
markdown=True,
Expand Down
12 changes: 6 additions & 6 deletions libs/agno/tests/integration/models/google/test_multimodal.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

def test_image_input(image_path):
agent = Agent(
model=Gemini(id="gemini-2.0-flash-001"),
model=Gemini(id="gemini-flash-latest"),
exponential_backoff=True,
delay_between_retries=5,
markdown=True,
Expand All @@ -37,7 +37,7 @@ def test_audio_input_bytes():

# Provide the agent with the audio file and get result as text
agent = Agent(
model=Gemini(id="gemini-2.0-flash-001"),
model=Gemini(id="gemini-flash-latest"),
exponential_backoff=True,
delay_between_retries=5,
markdown=True,
Expand All @@ -50,7 +50,7 @@ def test_audio_input_bytes():

def test_audio_input_url():
agent = Agent(
model=Gemini(id="gemini-2.0-flash-001"),
model=Gemini(id="gemini-flash-latest"),
exponential_backoff=True,
delay_between_retries=5,
markdown=True,
Expand All @@ -67,7 +67,7 @@ def test_audio_input_url():

def test_video_input_bytes():
agent = Agent(
model=Gemini(id="gemini-2.0-flash-001"),
model=Gemini(id="gemini-flash-latest"),
exponential_backoff=True,
delay_between_retries=5,
markdown=True,
Expand Down Expand Up @@ -255,7 +255,7 @@ def test_combined_text_and_image_generation():

def test_file_input_bytes():
agent = Agent(
model=Gemini(id="gemini-2.0-flash-001"),
model=Gemini(id="gemini-flash-latest"),
exponential_backoff=True,
delay_between_retries=5,
markdown=True,
Expand All @@ -276,7 +276,7 @@ def test_file_input_bytes():

def test_file_input_with_text_prompt():
agent = Agent(
model=Gemini(id="gemini-2.0-flash-001"),
model=Gemini(id="gemini-flash-latest"),
exponential_backoff=True,
delay_between_retries=5,
markdown=True,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
@pytest.fixture
def model():
"""Fixture to create a Gemini model."""
return Gemini(id="gemini-2.0-flash-001")
return Gemini(id="gemini-flash-latest")


def create_mock_response(finish_reason: str = "STOP", content: str = "Test response"):
Expand Down
12 changes: 6 additions & 6 deletions libs/agno/tests/integration/models/google/test_tool_use.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ def get_weather(city: str) -> str:
return f"The weather in {city} is sunny."

agent = Agent(
model=Gemini(id="gemini-2.0-flash-001"),
model=Gemini(id="gemini-flash-latest"),
tools=[get_weather],
tool_choice="none",
markdown=True,
Expand All @@ -142,7 +142,7 @@ def get_weather(city: str) -> str:
return f"The weather in {city} is sunny."

agent = Agent(
model=Gemini(id="gemini-2.0-flash-001"),
model=Gemini(id="gemini-flash-latest"),
tools=[get_weather],
tool_choice="auto",
markdown=True,
Expand Down Expand Up @@ -185,7 +185,7 @@ class StockPrice(BaseModel):
currency: str = Field(..., description="The currency of the stock")

agent = Agent(
model=Gemini(id="gemini-2.0-flash-001"),
model=Gemini(id="gemini-flash-latest"),
tools=[YFinanceTools(cache_results=True)],
exponential_backoff=True,
delay_between_retries=5,
Expand Down Expand Up @@ -250,7 +250,7 @@ def test_multiple_tool_calls():

def test_grounding():
agent = Agent(
model=Gemini(id="gemini-2.0-flash-001", grounding=True),
model=Gemini(id="gemini-flash-latest", grounding=True),
exponential_backoff=True,
delay_between_retries=5,
telemetry=False,
Expand All @@ -267,7 +267,7 @@ def test_grounding():

def test_grounding_stream():
agent = Agent(
model=Gemini(id="gemini-2.0-flash-001", grounding=True),
model=Gemini(id="gemini-flash-latest", grounding=True),
exponential_backoff=True,
delay_between_retries=5,
telemetry=False,
Expand All @@ -289,7 +289,7 @@ def test_grounding_stream():

def test_search_stream():
agent = Agent(
model=Gemini(id="gemini-2.0-flash-001", search=True),
model=Gemini(id="gemini-flash-latest", search=True),
exponential_backoff=True,
delay_between_retries=5,
telemetry=False,
Expand Down
Loading
Loading