模型
Agents SDK 内置支持两种风格的 OpenAI 模型:
- 推荐: 使用
OpenAIResponsesModel,它通过新的Responses API调用OpenAI接口。 OpenAIChatCompletionsModel,它使用Chat Completions API调用OpenAI API。
混合搭配模型
在单个工作流程中,您可能希望为每个智能体使用不同的模型。例如,可以使用更小、更快的模型进行初步筛选,同时使用更大、功能更强的模型处理复杂任务。在配置Agent时,您可以通过以下任一方式选择特定模型:
- 传递OpenAI模型的名称。
- 传递任何模型名称 + 一个
ModelProvider,该提供者可以将该名称映射到Model实例。 - 直接提供一个
Model实现。
注意
虽然我们的SDK同时支持OpenAIResponsesModel和OpenAIChatCompletionsModel两种模型结构,但我们建议在每个工作流中使用单一模型结构,因为这两种结构支持的功能和工具集有所不同。如果您的工作流需要混合使用不同模型结构,请确保您使用的所有功能在两种结构上都可用。
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)
- 直接设置OpenAI模型的名称。
- 提供一个
Model实现。
使用其他LLM提供商
您可以通过3种方式使用其他LLM提供商(示例此处):
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。
如果您没有从platform.openai.com获取API密钥,我们建议通过set_tracing_disabled()禁用追踪,或者设置一个不同的追踪处理器。
注意
在这些示例中,我们使用Chat Completions API/模型,因为大多数LLM提供商尚未支持Responses API。如果您的LLM提供商确实支持它,我们建议使用Responses。
使用其他LLM提供商时的常见问题
追踪客户端错误401
如果您遇到与追踪相关的错误,这是因为追踪数据会上传到OpenAI服务器,而您没有OpenAI API密钥。您有三种解决方法:
- 完全禁用追踪功能:
set_tracing_disabled(True)。 - 设置用于追踪的OpenAI密钥:
set_tracing_export_api_key(...)。此API密钥仅用于上传追踪数据,且必须来自platform.openai.com。 - 使用非OpenAI的追踪处理器。参见追踪文档。
响应API支持
该SDK默认使用Responses API,但大多数其他LLM提供商尚未支持它。因此您可能会遇到404或类似问题。要解决此问题,您有两个选择:
- 调用
set_default_openai_api("chat_completions")。如果您通过环境变量设置OPENAI_API_KEY和OPENAI_BASE_URL,这个方法会生效。 - 使用
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而崩溃。