在 LangChain4j 中实现 ReAct Agent,需要理解其原理并掌握框架提供的工具集成能力。下面从 原理剖析 到 代码实现 进行详细拆解。
一、ReAct Agent 的工作原理
ReAct(Reason + Act)是一种将推理与行动交替结合的 Agent 模式。其核心思想是让大模型在回答问题时,不仅能'思考',还能通过调用外部工具获取实时信息或执行操作,从而扩展模型的能力边界。
典型工作流程(循环):
- Thought(思考):模型根据当前任务和已观察到的信息,决定下一步需要做什么。
- Action(行动):模型选择一个工具,并指定输入参数。
- Observation(观察):执行工具后,将结果返回给模型。
- 重复以上步骤,直到模型认为任务完成,输出 Final Answer。
示例(文本格式):
Thought: 我需要查询今天的天气,然后才能回答用户。
Action: get_weather
Action Input: {"location": "北京"}
Observation: 晴天,20℃
Thought: 现在我知道天气了,可以回答用户。
Final Answer: 北京今天晴天,气温 20℃。
二、LangChain4j 中的 ReAct 实现机制
LangChain4j 提供了两种实现 ReAct 的方式:
- 基于函数调用(Function Calling):当使用支持函数调用的模型(如 OpenAI GPT-4、Claude 等)时,LangChain4j 会利用模型的原生函数调用能力,由模型直接返回工具调用指令,执行效率高且解析稳定。
- 基于文本提示解析:对于不支持函数调用的模型(如部分开源模型),LangChain4j 会通过精心构造的提示模板,让模型以文本形式输出 Action/Action Input,然后通过正则等方式解析。
框架内部通过 AiServices 和 Tool 注解简化了开发,开发者只需定义工具类,其余由框架自动完成。
三、在 LangChain4j 中实现 ReAct Agent 的步骤
1. 定义工具类
使用 @Tool 注解标记工具方法,框架会自动提取方法名、参数和描述,生成 ToolSpecification。
import dev.langchain4j.agent.tool.Tool;
public class WeatherTools {
String {
;
}
}


