Tutorial 6: ReAct Agent
ReAct 模式简介
ReAct(Reasoning + Acting)是让 LLM 交替进行「推理」与「行动」的 Agent 模式:根据当前上下文决定下一步是生成回答,还是调用某个工具,并根据工具结果继续推理,直到得出最终答案。
Eino 在 Flow 层提供 ReAct 的预置实现,并与 ToolsNode、ToolCallingChatModel 配合使用。
图中结构概览
典型 ReAct 图包含:
模型节点:使用
ToolCallingChatModel,输出中可包含tool_calls。工具节点(ToolsNode):根据
tool_calls调用对应BaseTool,将结果写回消息(如 assistant message + tool results)。边与循环:
模型 → 若存在 tool_calls → 工具节点 → 将结果追加到对话 → 再回到模型;
模型 → 若无 tool_calls(或已满足终止条件)→ 结束,输出最终回答。
这样形成「思考 → 选工具 → 执行 → 再思考」的循环,直到模型选择不再调用工具。
配置要点
工具注册:为 ToolsNode 提供一组
BaseTool(名称、描述、参数 schema),与模型 function calling 对齐。模型:使用 eino-ext 中支持 function calling 的 ChatModel(如 OpenAI、Claude)。
终止条件:图中需定义「何时结束循环」(例如无 tool_calls、或达到最大步数)。
流式:若需流式输出,使用图的
Stream执行;工具调用回合仍由框架按需拼接/收集。
与 ADK 的关系
ChatModelAgent(ADK)是对 ReAct 模式的高层封装:内部已包含「模型 + 工具循环」的图结构,你主要配置 ChatModel、Tools 和可选中间件即可,无需手写图的每条边。
因此:
快速上手:用 ChatModelAgent 即可得到 ReAct 行为。
需要自定义图结构、分支或状态时:使用 Graph + 模型节点 + ToolsNode 自行编排。
小结
ReAct = 推理 + 行动:模型决定是否调用工具,工具结果再回馈模型,循环直到结束。
Eino 通过 Graph(模型节点 + ToolsNode + 循环边)或 ADK 的 ChatModelAgent 实现 ReAct。
配置要点:ToolCallingChatModel、Tools 注册、终止条件与可选流式。
下一节将系统介绍 ADK:Agent 接口、Runner、ChatModelAgent 及扩展方式。