跳转至

模型

Agents SDK 提供两种对 OpenAI 模型的开箱即用支持:

OpenAI 模型

当你在初始化 Agent 时未指定模型,将使用默认模型。目前默认是 gpt-4.1,在智能体工作流的可预测性与低延迟之间具有良好平衡。

如果你想切换到其他模型,如 gpt-5,请按照下一节的步骤进行。

默认 OpenAI 模型

如果你希望对所有未设置自定义模型的智能体一致地使用某个特定模型,请在运行你的智能体之前设置 OPENAI_DEFAULT_MODEL 环境变量。

export OPENAI_DEFAULT_MODEL=gpt-5
python3 my_awesome_agent.py

GPT-5 模型

当你以这种方式使用任一 GPT-5 的推理模型(gpt-5gpt-5-minigpt-5-nano)时,SDK 会默认应用合理的 ModelSettings。具体来说,它会将 reasoning.effortverbosity 都设置为 "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-minigpt-5-nanoreasoning.effort="minimal" 搭配使用,通常会比默认设置更快地返回结果。不过,Responses API 中的一些内置工具(如 文件检索 与 图像生成)不支持 "minimal" 推理强度,这也是本 Agents SDK 默认使用 "low" 的原因。

非 GPT-5 模型

如果你在未提供自定义 model_settings 的情况下传入非 GPT-5 模型名,SDK 会回退到与任意模型兼容的通用 ModelSettings

非 OpenAI 模型

你可以通过 LiteLLM 集成使用大多数其他非 OpenAI 模型。首先,安装 litellm 依赖组:

pip install "openai-agents[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 提供商(示例见此处):

  1. set_default_openai_client 适用于你希望全局使用一个 AsyncOpenAI 实例作为 LLM 客户端的情况。适合 LLM 提供商有与 OpenAI 兼容的 API 端点、并可设置 base_urlapi_key 的情形。可参考 examples/model_providers/custom_example_global.py 中可配置示例。
  2. ModelProvider 作用于 Runner.run 级别。它允许你在一次运行中声明“为该次运行的所有智能体使用自定义模型提供商”。可参考 examples/model_providers/custom_example_provider.py 中可配置示例。
  3. 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 时,你可以通过以下方式选择特定模型:

  1. 传入模型名称。
  2. 传入任意模型名 + 一个可以将该名称映射到 Model 实例的 ModelProvider
  3. 直接提供一个 Model 的实现。

Note

尽管我们的 SDK 同时支持 OpenAIResponsesModelOpenAIChatCompletionsModel 两种形态,但我们建议在每个工作流中使用单一模型形态,因为两者支持的功能和工具集合不同。如果你的工作流需要混合使用不同的模型形态,请确保你使用的所有功能在两者上都可用。

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)
  1. 直接设置一个 OpenAI 模型的名称。
  2. 提供一个 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 时,还有一些其他可选参数(例如 userservice_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。你可以通过以下三种方式解决:

  1. 完全禁用追踪:set_tracing_disabled(True)
  2. 为追踪设置 OpenAI key:set_tracing_export_api_key(...)。此 API key 仅用于上传追踪数据,且必须来自 platform.openai.com
  3. 使用非 OpenAI 的追踪进程。参见追踪文档

Responses API 支持

SDK 默认使用 Responses API,但大多数其他 LLM 提供商尚不支持。这可能导致出现 404 或类似问题。解决方法有两种:

  1. 调用 set_default_openai_api("chat_completions")。当你通过环境变量设置 OPENAI_API_KEYOPENAI_BASE_URL 时可用。
  2. 使用 OpenAIChatCompletionsModel。示例见此处

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。