驾驭AI:OpenAI Agents SDK入门指南
June 04, 2025
项目描述
OpenAI智能体(Agents)SDK是一个基于Python的框架,专为构建多智能体工作流设计。它不限于特定提供商,既支持OpenAI Responses和Chat Completions API,也支持超过100种其他大型语言模型(LLMs)。该SDK注重轻量化设计,并具备强大的能力来编排多个智能体之间的交互。
核心概念: - 智能体(Agents):配置了特定指令、工具、防护栏和交接(handoffs)能力的LLMs。 - 交接(Handoffs):一种特殊的工具调用,用于在不同智能体之间转移控制权。 - 防护栏(Guardrails):可配置的安全检查,用于验证输入和输出。 - 追踪(Tracing):内置功能,用于跟踪、调试和优化智能体运行。
使用说明
1. 设置Python环境:
python -m venv env
source env/bin/activate
2. 安装智能体SDK:
pip install openai-agents
pip install 'openai-agents[voice]'
3. Hello World示例: 运行一个基本的智能体:
from agents import Agent, Runner
agent = Agent(name="Assistant", instructions="You are a helpful assistant")
result = Runner.run_sync(agent, "Write a haiku about recursion in programming.")
print(result.final_output)
OPENAI_API_KEY
环境变量。)
4. 交接示例: 根据语言演示智能体交接:
from agents import Agent, Runner
import asyncio
spanish_agent = Agent(
name="Spanish agent",
instructions="You only speak Spanish.",
)
english_agent = Agent(
name="English agent",
instructions="You only speak English",
)
triage_agent = Agent(
name="Triage agent",
instructions="Handoff to the appropriate agent based on the language of the request.",
handoffs=[spanish_agent, english_agent],
)
async def main():
result = await Runner.run(triage_agent, input="Hola, ¿cómo estás?")
print(result.final_output)
if __name__ == "__main__":
asyncio.run(main())
5. 函数示例: 将自定义函数集成为智能体的工具:
import asyncio
from agents import Agent, Runner, function_tool
@function_tool
def get_weather(city: str) -> str:
return f"The weather in {city} is sunny."
agent = Agent(
name="Hello world",
instructions="You are a helpful agent.",
tools=[get_weather],
)
async def main():
result = await Runner.run(agent, input="What's the weather in Tokyo?")
print(result.final_output)
if __name__ == "__main__":
asyncio.run(main())
开发(贡献SDK):
1. 确保已安装uv
。
2. 安装依赖:make sync
3. 代码检查/测试:make tests
、make mypy
、make lint
主要特性
- 多智能体工作流:构建多个LLM智能体之间复杂交互的框架。
- 提供商无关:支持OpenAI API以及超过100种其他LLMs。
- 智能体配置:智能体可配置指令、工具、防护栏和交接。
- 交接机制:专用工具调用,实现智能体之间无缝的控制转移。
- 防护栏:实现可配置的安全检查,用于输入和输出验证。
- 内置追踪:自动追踪和调试智能体运行,并支持自定义跟踪跨度(spans)和外部目的地(如Logfire、AgentOps、Braintrust)。
- 结构化输出:支持为智能体定义
output_type
,以生成结构化的最终输出。 - 灵活的智能体循环:持续运行直到产生最终输出,迭代处理工具调用和交接;通过
max_turns
参数进行控制。 - 工具集成:允许智能体使用自定义函数作为工具。
目标用户
- 构建多智能体AI应用的开发者。
- 从事LLMs和AI工作流研究及实践的人员。
- 需要编排涉及多个AI智能体的复杂任务的用户。
项目链接
应用场景
- 复杂信息抽取与处理:智能体可协同从不同来源抽取、处理和汇总信息。
- 自动化客户服务:分诊智能体可将查询路由到专业智能体,或智能体处理客户交互的不同阶段(如初始问候、问题诊断、解决方案建议)。
- 代码生成与调试:智能体可专门针对不同编程语言或调试任务,并根据需要进行交接。
- 内容创作工作流:智能体可协作起草、编辑和完善创意内容,并通过防护栏确保符合风格指南或安全协议。
- 数据分析与报告:智能体可被分配数据检索、分析、可视化和报告生成的角色。
- 交互式教程与学习环境:智能体可引导用户完成步骤,提供反馈,并根据用户输入或进度调整响应。