模型
Agents SDK 开箱即用地支持两种 OpenAI 模型调用方式:
- 推荐:
OpenAIResponsesModel,使用全新的 Responses API 调用 OpenAI API。 OpenAIChatCompletionsModel,使用 Chat Completions API 调用 OpenAI API。
OpenAI 模型
当你在初始化 Agent 时没有指定模型,将使用默认模型。当前默认模型是 gpt-4.1,在面向智能体的工作流可预测性与低延迟之间取得了良好平衡。
如果你想切换到其他模型(例如 gpt-5),请按照下一节的步骤操作。
默认 OpenAI 模型
如果你希望在所有未设置自定义模型的智能体中始终使用特定模型,请在运行你的智能体之前设置 OPENAI_DEFAULT_MODEL 环境变量。
GPT-5 模型
当你以这种方式使用任一 GPT-5 推理模型(gpt-5、gpt-5-mini 或 gpt-5-nano)时,SDK 会默认应用合理的 ModelSettings。具体来说,它会将 reasoning.effort 和 verbosity 都设置为 "low"。如果你想自行构建这些设置,请调用 agents.models.get_default_model_settings("gpt-5")。
针对更低延迟或特定需求,你可以选择不同的模型和设置。要为默认模型调整推理力度,请传入你自己的 ModelSettings:
from openai.types.shared import Reasoning
from agents import Agent, ModelSettings
my_agent = Agent(
name="My Agent",
instructions="You're a helpful agent.",
model_settings=ModelSettings(reasoning=Reasoning(effort="minimal"), verbosity="low")
# If OPENAI_DEFAULT_MODEL=gpt-5 is set, passing only model_settings works.
# It's also fine to pass a GPT-5 model name explicitly:
# model="gpt-5",
)
特别是为了更低延迟,使用 gpt-5-mini 或 gpt-5-nano 并设置 reasoning.effort="minimal",通常会比默认设置更快返回响应。不过,由于 Responses API 中的一些内置工具(如 文件检索 和图像生成)不支持 "minimal" 的推理力度,因此本 Agents SDK 默认使用 "low"。
非 GPT-5 模型
如果你传入的是非 GPT-5 的模型名且没有自定义 model_settings,SDK 会回退到适用于任意模型的通用 ModelSettings。
非 OpenAI 模型
你可以通过 LiteLLM 集成使用大多数其他非 OpenAI 模型。首先,安装 litellm 依赖组:
然后,使用带有 litellm/ 前缀的任一受支持模型:
claude_agent = Agent(model="litellm/anthropic/claude-3-5-sonnet-20240620", ...)
gemini_agent = Agent(model="litellm/gemini/gemini-2.5-flash-preview-04-17", ...)
使用非 OpenAI 模型的其他方式
你还可以通过另外 3 种方式集成其他 LLM 提供商(code examples 在这里):
set_default_openai_client适用于你希望在全局使用一个AsyncOpenAI实例作为 LLM 客户端的场景。适用于 LLM 提供商具有 OpenAI 兼容 API 端点、且你可以设置base_url和api_key的情况。参见可配置示例:examples/model_providers/custom_example_global.py。ModelProvider用在Runner.run层级。它允许你为“本次运行中的所有智能体使用自定义模型提供商”。参见可配置示例:examples/model_providers/custom_example_provider.py。Agent.model允许你在某个特定的 Agent 实例上指定模型。这使你可以为不同的智能体混用不同的提供商。参见可配置示例:examples/model_providers/custom_example_agent.py。使用多数可用模型的简便方式是通过 LiteLLM 集成。
如果你没有来自 platform.openai.com 的 API key,我们建议通过 set_tracing_disabled() 禁用 追踪,或设置一个不同的追踪 进程。
Note
在这些示例中,我们使用 Chat Completions API/模型,因为大多数 LLM 提供商尚未支持 Responses API。如果你的 LLM 提供商支持它,我们建议使用 Responses。
模型的混合与搭配
在单个工作流中,你可能希望为每个智能体使用不同模型。例如,你可以在分诊时使用更小、更快的模型,而在复杂任务中使用更大、更强的模型。配置 Agent 时,你可以通过以下方式选择特定模型:
- 传入模型名称。
- 传入任意模型名称 + 一个可以将该名称映射到 Model 实例的
ModelProvider。 - 直接提供一个
Model实现。
Note
虽然我们的 SDK 同时支持 OpenAIResponsesModel 和 OpenAIChatCompletionsModel 两种形态,但我们建议在每个工作流中使用单一模型形态,因为两种形态所支持的特性和工具不同。如果你的工作流需要混合使用不同的模型形态,请确保你所用的所有特性在两种形态上都可用。
from agents import Agent, Runner, AsyncOpenAI, OpenAIChatCompletionsModel
import asyncio
spanish_agent = Agent(
name="Spanish agent",
instructions="You only speak Spanish.",
model="gpt-5-mini", # (1)!
)
english_agent = Agent(
name="English agent",
instructions="You only speak English",
model=OpenAIChatCompletionsModel( # (2)!
model="gpt-5-nano",
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-5",
)
async def main():
result = await Runner.run(triage_agent, input="Hola, ¿cómo estás?")
print(result.final_output)
- 直接设置一个 OpenAI 模型的名称。
- 提供一个
Model实现。
当你希望进一步配置某个智能体所使用的模型时,可以传入 ModelSettings,它提供诸如 temperature 等可选的模型配置参数。
from agents import Agent, ModelSettings
english_agent = Agent(
name="English agent",
instructions="You only speak English",
model="gpt-4.1",
model_settings=ModelSettings(temperature=0.1),
)
此外,当你使用 OpenAI 的 Responses API 时,还有一些其他可选参数(例如 user、service_tier 等)。如果它们未在顶层提供,你可以通过 extra_args 一并传入。
from agents import Agent, ModelSettings
english_agent = Agent(
name="English agent",
instructions="You only speak English",
model="gpt-4.1",
model_settings=ModelSettings(
temperature=0.1,
extra_args={"service_tier": "flex", "user": "user_12345"},
),
)
使用其他 LLM 提供商的常见问题
追踪客户端错误 401
如果你遇到与 追踪 相关的错误,这是因为追踪数据会上传到 OpenAI 服务,而你没有 OpenAI API key。你可以通过以下三种方式解决:
- 完全禁用追踪:
set_tracing_disabled(True)。 - 为追踪设置一个 OpenAI key:
set_tracing_export_api_key(...)。此 API key 仅用于上传追踪数据,且必须来自 platform.openai.com。 - 使用非 OpenAI 的追踪 进程。参见追踪文档。
Responses API 支持
SDK 默认使用 Responses API,但大多数其他 LLM 提供商尚未支持它。因此你可能会看到 404 或类似问题。要解决,你有两种选择:
- 调用
set_default_openai_api("chat_completions")。当你通过环境变量设置OPENAI_API_KEY和OPENAI_BASE_URL时适用。 - 使用
OpenAIChatCompletionsModel。相关 code examples 在这里。
structured outputs 支持
有些模型提供商不支持 structured outputs。这有时会导致如下类似错误:
BadRequestError: Error code: 400 - {'error': {'message': "'response_format.type' : value is not one of the allowed values ['text','json_object']", 'type': 'invalid_request_error'}}
这是某些模型提供商的短板——它们支持 JSON 输出,但不允许你为输出指定要使用的 json_schema。我们正在着手修复,但我们建议优先依赖支持 JSON schema 输出的提供商,否则你的应用常常会因为 JSON 格式不正确而出错(不是 格式良好的数据)。
跨提供商混用模型
你需要了解不同模型提供商之间的特性差异,否则可能会遇到错误。例如,OpenAI 支持 structured outputs、多模态输入、以及托管的 文件检索 和 网络检索,但许多其他提供商并不支持这些特性。请注意以下限制:
- 不要向不支持的提供商发送其无法理解的
tools - 在调用仅支持文本的模型之前,过滤掉多模态输入
- 注意不支持结构化 JSON 输出的提供商偶尔会产生无效的 JSON。