上周在 GitHub 刷到一个有意思的现象:OpenAI 悄悄开源了他们的 Agents SDK,Star 短短几天破万。点进去一看,代码简洁得让人意外——整个核心就几百行,但功能却很完整。
作为后端开发,我第一反应是:这玩意儿架构怎么设计的?为什么能做到又轻又强?
源码下载:
openai-agents-python-main.zip
(2.01 MB, 下载次数: 1)
先看个例子
假设你要做个客服系统,需要根据用户语言自动切换到对应的客服。传统做法可能要写一堆 if-else 判断,还得维护状态。用这个 SDK,代码是这样的:
from agents import Agent, Runner
# 定义两个专业客服
spanish_agent = Agent(
name="西班牙语客服",
instructions="你只会说西班牙语"
)
english_agent = Agent(
name="英语客服",
instructions="你只会说英语"
)
# 定义一个分流客服
triage_agent = Agent(
name="总台",
instructions="根据用户语言转接到对应客服",
handoffs=[spanish_agent, english_agent]
)
# 运行
result = Runner.run_sync(triage_agent, "Hola!")
就这么几行,系统会自动识别用户说的是西班牙语,然后把对话转给西班牙语客服。中间的路由逻辑、上下文传递、状态管理,全都自动处理了。
核心就三个概念
整个框架的设计哲学很克制,没搞一堆花里胡哨的抽象:
1. Agent(智能体)
就是一个配置对象,包含指令、可用工具、能转接的其他 Agent。类比微服务里的一个服务单元。
2. Handoffs(转接机制)
Agent 之间通过特殊的 function call 传递控制权。本质是责任链模式,但实现得很优雅——对开发者完全透明。
3. Tools(工具)
用装饰器把普通 Python 函数变成 LLM 可调用的工具:
@function_tool
def query_database(user_id: str) -> dict:
"""查询用户信息"""
return db.get_user(user_id)
类型注解会自动转成 JSON Schema,LLM 就知道怎么调用了。
架构上的巧思
看源码发现几个有意思的设计:
事件循环 + 状态机
核心的 Runner 其实是个状态机,每轮循环做三件事:调用 LLM → 检查是否转接 → 执行工具。用 max_turns
参数防止死循环,简单粗暴但有效。
提供商无关
虽然叫 OpenAI Agents,但架构上做了抽象层,理论上支持任何兼容 OpenAI API 格式的模型。这点很符合后端"面向接口编程"的思路。
可选依赖
基础包很轻量,需要语音功能装 [voice]
,需要 Redis 会话装 [redis]
。避免了依赖地狱,这个设计值得学习。
适合什么场景
从架构角度看,这个框架适合:
- 多角色协作:客服系统、审批流程、内容审核
- 复杂决策链:投资分析、风险评估、多步骤推理
- 工具调用密集:需要频繁查数据库、调 API 的场景
不适合的场景:
- 简单的单轮对话(用 SDK 反而重了)
- 需要极致性能优化的场景(毕竟每次都要调 LLM)
生产环境的坑
测试时发现几个要注意的点:
- 成本控制:每次 Handoff 都是一次 LLM 调用,转接多了费用会上去
- 超时处理:LLM 调用可能很慢,记得设置合理的 timeout
- 会话管理:内存存储只适合开发,生产环境建议上 Redis
官方文档里有个投资组合管理的案例,展示了如何用多个 Agent 协作完成复杂任务,值得一看。
和其他框架比
市面上类似的框架不少,比如 LangChain、LlamaIndex。这个 SDK 的特点是:
- 更轻:核心代码量是 LangChain 的零头
- 更直接:用原生 Python 控制流,不需要学新的 DSL
- 更聚焦:只做多智能体编排,不像 LangChain 啥都想做
当然,功能丰富度肯定比不上 LangChain,看你的需求了。
快速上手
安装很简单:
pip install openai-agents
配置 API Key:
export OPENAI_API_KEY="your-key"
跑个 Hello World:
from agents import Agent, Runner
agent = Agent(
name="助手",
instructions="你是个有帮助的助手"
)
result = Runner.run_sync(agent, "写个关于递归的俳句")
print(result.final_output)
输出:
代码套代码,
函数自己调自己,
无限循环舞。
写在最后
这个项目让我想起 Unix 哲学:做好一件事。不追求大而全,而是把多智能体编排这一件事做到极致简洁。
对于后端开发来说,这种设计思路很值得借鉴——不是所有问题都需要复杂的解决方案,有时候简单的抽象反而更有生命力。
如果你最近在做 AI Agent 相关的项目,不妨试试这个 SDK。代码简单,上手快,出问题也容易调试。
关注《云栈后端架构》,持续分享后端技术与开源项目解析
项目地址
https://github.com/openai/openai-agents-python
官方文档
https://openai.github.io/openai-agents-python/
标签 :#OpenAIAgents #GitHub #多智能体 #Python #AI框架 #后端架构 #开源项目