跳至内容

模型

Agents SDK 内置支持两种风格的 OpenAI 模型:

混合搭配模型

在单个工作流程中,您可能希望为每个智能体使用不同的模型。例如,可以使用更小、更快的模型进行初步筛选,同时使用更大、功能更强的模型处理复杂任务。在配置Agent时,您可以通过以下任一方式选择特定模型:

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

注意

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

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)
  1. 直接设置OpenAI模型的名称。
  2. 提供一个Model实现。

使用其他LLM提供商

您可以通过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

如果您没有从platform.openai.com获取API密钥,我们建议通过set_tracing_disabled()禁用追踪,或者设置一个不同的追踪处理器

注意

在这些示例中,我们使用Chat Completions API/模型,因为大多数LLM提供商尚未支持Responses API。如果您的LLM提供商确实支持它,我们建议使用Responses。

使用其他LLM提供商时的常见问题

追踪客户端错误401

如果您遇到与追踪相关的错误,这是因为追踪数据会上传到OpenAI服务器,而您没有OpenAI API密钥。您有三种解决方法:

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

响应API支持

该SDK默认使用Responses API,但大多数其他LLM提供商尚未支持它。因此您可能会遇到404或类似问题。要解决此问题,您有两个选择:

  1. 调用set_default_openai_api("chat_completions")。如果您通过环境变量设置OPENAI_API_KEYOPENAI_BASE_URL,这个方法会生效。
  2. 使用 OpenAIChatCompletionsModel。这里有示例

结构化输出支持

某些模型提供商不支持结构化输出。这有时会导致类似以下的错误:

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模式输出的提供商,否则您的应用程序经常会因为格式错误的JSON而崩溃。