create_react_agent(model, tools) 和 graph_builder.add_conditional_edges 的联系和区别
create_react_agent(model, tools)
和 graph_builder.add_conditional_edges
的联系和区别
这两者都是在LangGraph 框架下用于构建智能代理(Agent)工作流的,但它们的作用完全不同:
create_react_agent(model, tools) | graph_builder.add_conditional_edges | |
---|---|---|
作用 | 创建一个可以调用工具的智能代理(Agent) | 在 LangGraph 中定义工作流中的条件分支 |
本质 | 让 AI 通过ReAct 机制决定如何调用 tools 处理任务 | 让任务执行时,根据不同的条件决定下一步执行哪个节点 |
适用场景 | 需要让 AI 代理根据用户输入选择并执行合适的工具 | 需要在一个有条件分支的工作流里决定下一个执行的步骤 |
是否依赖 AI 解析 | 是,AI 决定何时调用工具 | 否,条件逻辑通常由代码或数据判断 |
联系
通常,你会先用 create_react_agent(model, tools)
创建一个可以调用工具的 AI 代理,然后在 LangGraph 的工作流 里用 graph_builder.add_conditional_edges
控制代理的执行流程。
换句话说:
create_react_agent(model, tools)
让 AI 代理能使用工具来处理任务。graph_builder.add_conditional_edges
则决定 AI 代理完成任务后,下一个应该执行的步骤。
它们经常配合使用,比如:
- 先用
create_react_agent(model, tools)
让 AI 代理能查询数据库、调用 API 等。 - 再用
add_conditional_edges
让 AI 代理在不同情况下执行不同的逻辑。
举例说明
场景:智能宠物助手
我们想创建一个智能宠物助手,它能够:
- 查询用户的宠物喜好(如果用户有存过宠物,就告诉他喜欢什么)
- 推荐宠物(如果用户没有存过宠物,就推荐一些宠物给他)
1. 使用 create_react_agent(model, tools)
graph = create_react_agent(model, tools)
这行代码创建了一个AI 代理,它可以调用 tools
(比如 list_favorite_pets
查询宠物、update_favorite_pets
存储宠物)。
- 如果用户问“我喜欢什么宠物?”
- 代理会调用
list_favorite_pets
工具来查询数据
- 代理会调用
- 如果用户说“我喜欢猫和狗。”
- 代理会调用
update_favorite_pets
工具来存储信息
- 代理会调用
➡️ 这一步只是让 AI 具备调用工具的能力,但它并不决定下一步要执行哪个任务。
2. 使用 graph_builder.add_conditional_edges
graph_builder.add_conditional_edges(
"check_pets", # 当前步骤
lambda data: "recommend_pets" if not data["pets"] else "show_pets", # 条件判断
)
这行代码的作用是:
- 如果
data["pets"]
为空(用户没有存过宠物),执行"recommend_pets"
(推荐宠物)。 - 否则,执行
"show_pets"
(告诉用户他喜欢的宠物)。
完整的流程
- 用户输入:“我喜欢什么宠物?”
- AI 代理调用
list_favorite_pets
查询宠物 - 工作流分支
- 如果有宠物信息,执行
show_pets
,回复“你喜欢猫和狗”。 - 如果没有宠物信息,执行
recommend_pets
,回复“你可以试试养猫或狗”。
- 如果有宠物信息,执行
总结
功能 | create_react_agent(model, tools) | graph_builder.add_conditional_edges |
---|---|---|
作用 | 让 AI 代理能够调用工具处理任务 | 让 AI 代理在任务完成后决定执行哪个步骤 |
是否涉及 AI 解析 | 是,AI 自己决定是否调用工具 | 否,执行路径由代码逻辑决定 |
使用场景 | 让 AI 代理能查询数据库、调用 API、处理用户请求 | 在一个工作流中,定义执行路径的分支逻辑 |
举例 | AI 代理查询用户喜欢的宠物 | AI 代理根据查询结果决定是显示宠物还是推荐宠物 |
一句话总结
create_react_agent(model, tools)
让 AI 代理能调用工具,但不管执行顺序。graph_builder.add_conditional_edges
决定执行顺序,但不涉及 AI 解析。
它们经常搭配使用,create_react_agent
负责执行任务,add_conditional_edges
负责控制任务流。