用OpenAI Agents SDK Python搭建多智能体工作流:从安装、运行到调试的三步上手法
【免费下载链接】openai-agents-pythonA lightweight, powerful framework for multi-agent workflows项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-python
OpenAI Agents SDK(包名openai-agents)是 OpenAI 开源的 Python 多智能体工作流框架。它把智能体开发中最容易重复造轮子的部分——Agent 定义、工具调用、智能体间交接、会话记忆、运行追踪——打包成一套小库,你只管写业务逻辑,循环调度的脏活它来干。
这套框架不绑定模型厂商:默认走 OpenAI 的 Responses 和 Chat Completions API,也支持通过扩展接入其他 100 多家 LLM 提供商。本文带你走完"能装、能跑、能调"的最小路径,并讲清楚它适合你的哪些场景。
它解决什么问题:别手写智能体循环了
如果你从零做过 LLM 应用,大概率写过这样一段代码:调模型 → 解析响应 → 发现是工具调用就执行、把结果塞回消息列表 → 再调模型 → 直到模型给出最终答案。
再往后一点,你会开始处理更多分支:这个任务该转给哪个专家智能体?多轮对话的历史往哪存?敏感输入怎么拦?出了问题去翻哪里?每加一个需求,主循环就膨胀一圈,最后没人敢动。
OpenAI Agents SDK 的做法是把这些分支收敛成明确的构件:
- Runner 负责循环:调模型、分发工具调用、处理交接,直到拿到最终输出才返回,你不需要自己 while True。
- Handoff 是一种特殊工具:智能体可以"把话交给别人",控制权自动切换,而不是你手写路由。
- Session 管历史:跨多次运行自动维护对话上下文。
- Tracing 管排查:每一步模型调用、工具执行都自动记录成可回放的时间线。
一句话:它不是又一个提示词模板库,而是一个替你维护"智能体主循环"的运行时。
如何快速安装:3 分钟跑通第一个 Agent
环境要求不高:Python 3.10 或更高,装包只需一条命令:
pip install openai-agents按需安装可选依赖组:语音流水线加openai-agents[voice],Redis 会话加openai-agents[redis]。
装好后,确保环境变量里配好了OPENAI_API_KEY,然后写一个最小例子——定义智能体、同步运行、打印结果:
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)四行代码就是完整闭环:Agent声明"它是谁、怎么做事",Runner.run_sync负责跑完整个循环并返回带final_output的结果对象。异步场景把run_sync换成run即可。
关键能力拆解:它到底给了你什么
工具调用:让 Agent 真的动手
给函数加一个@function_tool装饰器(或直接用函数),挂到tools参数上,模型就能在对话中发起调用,SDK 负责执行并把结果回填。除了本地函数,它还支持 MCP 协议的工具服务和托管工具,接入现成的工具生态不需要自己写适配层。
交接(Handoffs):把任务转给专家智能体
当你的业务天然分工——比如按语言分流、按问题类型分诊——交接就是核心机制。做法是把多个专家智能体列进handoffs参数:
from agents import Agent, Runner spanish = Agent(name="Spanish agent", instructions="You only speak Spanish.") english = Agent(name="English agent", instructions="You only speak English.") triage = Agent( name="Triage agent", instructions="Hand off to the agent matching the language of the request.", handoffs=[spanish, english], ) print(Runner.run_sync(triage, "Hola, ¿cómo estás?").final_output)分诊智能体判断请求语言后,直接把控制权交给对应专家,整个过程对调用方透明。官方仓库里有一个航空客服的多智能体示例,分诊、改座、FAQ 检索各管一摊:examples/customer_service/。
交接只是协作方式之一。另一种更"硬"的方式是Agents as tools:把一个智能体整体包装成另一个智能体的工具,调用方拿到的是一段结构化结果,控制权始终不离开调用方。前者适合"接管对话",后者适合"委托子任务"。
会话(Sessions):跨运行记住上下文
多轮对话应用里,你需要自己维护消息历史。接入 SDK 的会话能力后,每次运行把同一个session对象传给 Runner 就行:第一轮问"金门大桥在哪个城市",第二轮直接问"它在哪个州",智能体自动记得前文。
内置实现覆盖了常见后端——SQLiteSession适合本地开发,OpenAIConversationsSession依托云端,Redis、MongoDB、SQLAlchemy 等后端通过可选依赖组接入。想用自己的存储,实现Session协议即可。
追踪(Tracing):看清每一步花了多久
调试智能体最痛苦的是"它为什么这么做"。SDK 默认对每次运行自动埋点:哪一次模型调用、耗时多少、参数是什么、哪个工具执行了几毫秒、在哪里发生了交接,全部按时间线呈现。
这种时间线在排查"多智能体跑偏"时尤其有用——你能直接看到控制权在哪一步转手、哪个工具返回了异常值。追踪是插件化的,除了官方可视化界面,也可以对接第三方可观测后端。接入 MCP 工具时,每个工具调用同样会在追踪里单独成项,方便定位是哪个服务慢了。
护栏(Guardrails)与人在环:给自动执行上保险
护栏是挂在智能体输入和输出上的校验逻辑:输入侧可以拦截恶意或越界的请求,输出侧可以检查回复是否合规,不通过就中止运行。
另一个实用机制是人在环(Human in the loop):把某个工具标记为需要审批后,模型发起调用时运行会暂停,等你的代码(或用户)批准后再继续。删文件、发资金这类高危操作,建议默认走这条路径。
沙箱智能体:给长任务一个真工作区
如果任务不只是"聊",而是要读文件、跑命令、改代码并保持工作区状态,SDK 提供SandboxAgent:预配置一个容器化的沙箱工作区,智能体在里面干活,你的应用通过网关访问内部数据并拦截不可信的外发请求。本地 macOS/Linux 可直接用,Windows 或生产环境可接 Docker 或托管沙箱客户端。
适合哪些场景:对照你的业务判断
适合直接上手的:
- 多轮对话助手:需要跨请求记忆,Session + 结构化输出基本够用。
- 任务分诊与路由:客服、工单、技术支持类场景,用分诊智能体 + 交接拆给专家智能体,代码量很小。
- 工具密集型 Agent:查天气、查库存、操作文件、调 MCP 服务,工具调用是这套 SDK 最成熟的部分。
- 需要审计和评估的智能体:Tracing 时间线可以直接当回归测试的素材,配合评估流程迭代提示词。
需要额外评估的:
- 复杂的 DAG 编排:它给你的是"循环 + 交接 + 工具"原语,不是可视化流程引擎。分支逻辑复杂时,编排代码还是你自己写,只是写法更整洁。
- 强一致性长事务:持久化长运行任务需要借助 Temporal 等外部方案,SDK 本身不管任务恢复。
更多可运行的参考实现可以直接看示例目录:examples/,其中agent_patterns子目录按模式分类(路由、并行化、护栏、流式等),basic子目录是入门小例。
常见限制:动手前要知道的边界
- 默认面向 OpenAI 系 API。接入其他厂商(如通过 LiteLLM 扩展)可行,但部分依赖 Responses API 的行为(结构化输出细节、托管工具等)在非 OpenAI 模型上可能有功能落差,选型前先验证你的目标模型。
- 版本仍在 0.x。迭代快意味着 API 有变动可能,升级时留意 changelog,生产环境建议锁定版本。
- 可视化追踪依赖其配套平台。如果你要求数据完全不出内网,需要自行评估对接自建可观测后端。
- 沙箱和语音是可选能力,依赖额外安装组,且沙箱在不同操作系统的可用客户端不一样,部署前确认平台支持。
落地建议:让智能体稳定跑起来的五件事
- 提示词写明工具契约。在 instructions 里说清每个工具干什么、何时用、参数从哪来——模型选错工具,十有八九是说明不够。
- 一个智能体只擅长一件事。与其养一个万能智能体,不如拆成职责单一的专家,再用交接串起来。
- 高危工具默认加审批。删除、支付、外发类操作挂上人在环,护栏兜底。
- 会话持久化从第一天就做。哪怕本地 SQLite,也能让你重启后用户不失忆,后期换 Redis 或数据库只是换 Session 实现。
- 用 Tracing 驱动迭代。每次改提示词前后各跑一遍,对比时间线和输出,比凭感觉调有效得多。
更多模式化的完整代码可以对照 examples/agent_patterns/ 和官方文档 docs/ 阅读。
总结
OpenAI Agents SDK 的价值在于把智能体开发里最琐碎的"循环调度层"收进库里:你写 Agent、工具和业务规则,Runner 负责跑,Tracing 负责事后复盘。对需要工具调用、多智能体协作、会话记忆和运行可观测性的 Python 项目,它能把原型到上线的路径明显缩短。如果你的场景恰好落在这些点上,建议先跑通本文的最小例子,再按业务逐步叠加交接、护栏和会话能力。
【免费下载链接】openai-agents-pythonA lightweight, powerful framework for multi-agent workflows项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-python
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考