Models
The Agents SDK comes with out-of-the-box support for OpenAI models in two flavors:
- Recommended: the
OpenAIResponsesModel
, which calls OpenAI APIs using the new Responses API. - The
OpenAIChatCompletionsModel
, which calls OpenAI APIs using the Chat Completions API.
Mixing and matching models
Within a single workflow, you may want to use different models for each agent. For example, you could use a smaller, faster model for triage, while using a larger, more capable model for complex tasks. When configuring an Agent
, you can select a specific model by either:
- Passing the name of an OpenAI model.
- Passing any model name + a
ModelProvider
that can map that name to a Model instance. - Directly providing a
Model
implementation.
Note
While our SDK supports both the OpenAIResponsesModel
and the OpenAIChatCompletionsModel
shapes, we recommend using a single model shape for each workflow because the two shapes support a different set of features and tools. If your workflow requires mixing and matching model shapes, make sure that all the features you're using are available on both.
from agents import Agent, Runner, AsyncOpenAI, OpenAIChatCompletionsModel
import asyncio
spanish_agent = Agent(
name="Spanish agent",
instructions="You only speak Spanish.",
model="o3-mini", # (1)!
)
english_agent = Agent(
name="English agent",
instructions="You only speak English",
model=OpenAIChatCompletionsModel( # (2)!
model="gpt-4o",
openai_client=AsyncOpenAI()
),
)
triage_agent = Agent(
name="Triage agent",
instructions="Handoff to the appropriate agent based on the language of the request.",
handoffs=[spanish_agent, english_agent],
model="gpt-3.5-turbo",
)
async def main():
result = await Runner.run(triage_agent, input="Hola, ¿cómo estás?")
print(result.final_output)
- Sets the name of an OpenAI model directly.
- Provides a
Model
implementation.
Using other LLM providers
Many providers also support the OpenAI API format, which means you can pass a base_url
to the existing OpenAI model implementations and use them easily. ModelSettings
is used to configure tuning parameters (e.g., temperature, top_p) for the model you select.
external_client = AsyncOpenAI(
api_key="EXTERNAL_API_KEY",
base_url="https://api.external.com/v1/",
)
spanish_agent = Agent(
name="Spanish agent",
instructions="You only speak Spanish.",
model=OpenAIChatCompletionsModel(
model="EXTERNAL_MODEL_NAME",
openai_client=external_client,
),
model_settings=ModelSettings(temperature=0.5),
)