本文深入解析了 AI Agent 的核心概念,涵盖 Agent 的四大组件(LLM、Tools、Memory、Planning)、ReAct 推理行动循环模式、Function Calling 工具调用机制,并对比了 Agent 与普通 LLM 调用的本质区别。文章还介绍了主流推理模式对比、Java 实战案例以及生产环境 Agent 开发注意事项,旨在帮助读者快速理解和应用 Agent 技术,实现 LLM 从“只会说”到“能做事”的突破。
面试高频题:什么是 AI Agent?ReAct 模式的核心思想是什么?Function Calling 的底层原理是什么?Agent 和普通 LLM 调用有什么本质区别?
一句话答案:Agent = 以 LLM 为大脑 + Tools 为手脚 + Memory 为记忆 + Planning 为规划 的自主系统;ReAct = Thought → Action → Observation 交替循环的推理模式;Function Calling = LLM 经过对齐训练后输出结构化 JSON 调用外部工具的通信机制。三者关系:ReAct 是推理模式,Function Calling 是工具调用机制,Agent 是承载两者的系统。
核心痛点:让 LLM 从"只会说"变成"能做事"——原生 LLM 只能基于训练数据生成文本,Agent 通过工具调用打破信息边界,通过循环执行实现多步推理。
一、Agent 是什么:四大核心组件
Agent(智能体)是以 LLM 为核心驱动的自主系统,能够感知输入、规划任务、调用工具、维护记忆、循环执行直到完成目标。一个完整的 Agent 由四大组件构成:
LLM(大脑)
语言理解、推理、决策
GPT-4o / Claude 3.5 / Gemini / Qwen
Tools(手脚)
搜索、代码执行、DB 查询
API 调用、文件读写
Memory(记忆)
短期:对话上下文窗口
长期:向量数据库检索
Planning(规划)
任务分解、反思 Reflection
动态重新规划 Replan
Agent 运行循环
用户输入
→
LLM 推理 (Thought)
→
工具调用 (Action)
→
执行 & 观察 (Observation)
↑ LLM 推理 → 工具调用 → 观察结果 → 再推理……循环直到不再调用工具,输出最终答案
📌
关键区分:ReAct 是推理模式(告诉 LLM “怎么想”),Function Calling 是工具调用机制(告诉 LLM “怎么调”),Agent 是承载两者的系统。现代 Agent 通常用 Function Calling 实现工具调用,用 ReAct 思想指导 LLM 推理过程,两者结合使用。
二、ReAct 模式:推理-行动循环
ReAct 由 Yao 等人在 2022 年论文“ReAct: Synergizing Reasoning and Acting in Language Models”(ICLR 2023)中提出。核心思想:让 LLM 交替执行推理(Reasoning)和行动(Acting),通过外部工具获取实时信息来辅助推理。
Thought
推理当前状态,分析下一步该做什么(LLM 内部思考)
Action
调用外部工具执行操作(搜索 / 查询 / 计算 / 代码执行)
Observation
获取工具返回的结果,作为下一轮推理的输入
ReAct Prompt 模板
/* ReAct 经典 Prompt 模板(文本格式) */You are a helpful assistant. You have access to the following tools:{tool_descriptions}Use the following format:Thought: your reasoning about what to do nextAction: the tool name to callAction Input: the input parameters (JSON format)Observation: the result returned by the tool(Thought/Action/Action Input/Observation can repeat N times)Thought: I now know the final answerFinal Answer: the final answer to the original questionQuestion: {user_input}ReAct 执行轨迹示例
Question: 深圳今天的 PM2.5 是多少?Thought: 我需要查询深圳今天的空气质量数据Action: get_air_qualityAction Input: {"city": "深圳", "date": "today"}Observation: 深圳今天 PM2.5 为 35,空气质量优Thought: 已获取到深圳今天的 PM2.5 数据,可以回答用户了Final Answer: 深圳今天的 PM2.5 为 35,空气质量为优。💡
为什么 ReAct 比纯 CoT(思维链)好?纯 CoT 只靠 LLM 内部知识推理,无法获取外部实时信息,容易产生幻觉。ReAct 通过 Action 调用工具获取真实数据(Observation),让推理基于事实而非猜测。论文实验证明:ReAct 在事实准确性上显著优于纯 CoT,同时减少了幻觉。
三、Function Calling:LLM 如何调用工具
Function Calling 是让 LLM 调用外部工具的通信机制。LLM 经过对齐训练(SFT + RLHF)后,能在需要调用工具时输出结构化 JSON,而不是纯文本。Agent 程序解析 JSON、执行工具、把结果回传给 LLM 继续推理。
1
定义工具 JSON Schema(名称、描述、参数类型)
2
用户 prompt + 工具定义一起发给 LLM
3
LLM 判断是否需要调用工具
4
若需要,输出tool_callsJSON(工具名 + 参数)
5
Agent 执行工具 → 结果回传 → LLM 继续推理(回到步骤 3)
工具定义(OpenAI 格式)
{ "type": "function", "function": { "name": "get_weather", "description": "查询指定城市的天气预报", "parameters": { "type": "object", "properties": { "city": { "type": "string", "description": "城市名称,如北京、上海" }, "date": { "type": "string", "description": "日期,如 today、tomorrow" } }, "required": ["city"] } }}LLM 响应(发起工具调用)
{ "role": "assistant", "content": null, "tool_calls": [{ "id": "call_abc123", "type": "function", "function": { "name": "get_weather", "arguments": "{/"city/":/"深圳/",/"date/":/"today/"}" } }]}// content = null 表示 LLM 不输出文本,只发起工具调用// Agent 执行 get_weather 后,将结果以 role=tool 回传给 LLM// LLM 拿到结果后继续推理,可能直接回答或继续调用其他工具⚠️
不同厂商 Function Calling 格式有差异:OpenAI(2023.6 首发)用tools参数 +tool_calls响应;Anthropic Claude 用tools参数 +tool_usecontent block;Google Gemini 用function_declarations+functionCall响应。概念相同,API 细节不同。开源模型(Llama / Qwen)需要经过 SFT 微调才能稳定支持 Function Calling。
四、ReAct vs Plan-and-Execute vs ReWOO
Agent 的推理模式不止 ReAct 一种,主流模式有三种,各有适用场景:
| 维度 | 2022 ReAct | 2023 Plan-and-Execute | 2023 ReWOO |
|---|---|---|---|
| 核心思想 | 推理与行动交替执行 | 先全量规划,再逐步执行 | 分离规划与执行,可并行 |
| 规划方式 | 每步动态决策 | 前置一次性规划全部步骤 | 前置一次性规划 |
| 执行方式 | 严格串行,边走边看 | 按计划串行 | 可并行执行独立步骤 |
| 中间结果 | 每步带回 LLM 上下文 | 每步带回 | 不带回,节省 Token |
| Token 消耗 | 最高 | 中等 | 最低 |
| 错误恢复 | 即时反馈,动态调整 | 需触发 Replan | 需整体重跑 |
| 适用场景 | 探索性、信息依赖强 | 步骤明确、依赖链清晰 | 步骤独立、可并行 |
探索性任务 → ReAct
如:调研某技术方案、查多源数据综合分析。每步结果影响下一步方向,需要即时反馈。
步骤明确 → Plan-and-Execute
如:ETL 数据流水线、CI/CD 流程。步骤可预知,减少 LLM 调用次数,降低成本。
步骤独立 → ReWOO
如:批量搜索多个关键词、并行查询多个数据源。Token 消耗最低,执行速度最快。
五、Java 实战:手写简易 Agent
用 Java 手写一个最小可用的 Agent,核心是 Tool 接口 + Agent 主循环。设计思路与 LangChain4j / Spring AI 一致:
1. Tool 工具接口
/ * 工具接口:每个工具实现此接口 * 对标 LangChain4j 的 @Tool 注解 */public interface Tool { String getName(); // 工具名称,LLM 用此名称调用 String getDescription(); // 工具描述,告诉 LLM 何时用 String getParametersSchema(); // JSON Schema 参数定义 String execute(String arguments); // 执行工具,返回结果字符串}2. Agent 主循环(ReAct 核心)
public class Agent { private final LLMClient llm; private final Map<String, Tool> tools = new HashMap<>(); private final List<Message> messages = new ArrayList<>(); private static final int MAX_ITERATIONS = 10; // 防死循环 public Agent(LLMClient llm) { this.llm = llm; } public void registerTool(Tool tool) { tools.put(tool.getName(), tool); } public String run(String userInput) { messages.add(new Message("user", userInput)); for (int i = 0; i < MAX_ITERATIONS; i++) { // 1. 调用 LLM,携带对话历史 + 工具定义 LLMResponse resp = llm.chat(messages, getToolDefinitions()); messages.add(resp.getMessage()); // 2. 无工具调用 → 最终答案,退出循环 if (!resp.hasToolCalls()) { return resp.getContent(); } // 3. 执行所有工具调用 for (ToolCall call : resp.getToolCalls()) { Tool tool = tools.get(call.getName()); String result = (tool != null) ? tool.execute(call.getArguments()) : "Error: tool '" + call.getName() + "' not found"; // 4. 工具结果回传给 LLM(Observation) messages.add(new Message("tool", result)); } } return "已达最大迭代次数,Agent 终止"; }}3. 示例工具:天气查询
public class WeatherTool implements Tool { @Override public String getName() { return "get_weather"; } @Override public String getDescription() { return "查询指定城市的天气预报"; } @Override public String getParametersSchema() { return """ {"type":"object","properties":{ "city":{"type":"string","description":"城市名"}, "date":{"type":"string","description":"日期"} },"required":["city"]}"""; } @Override public String execute(String arguments) { // 解析 JSON 参数 → 调用天气 API → 返回结果 // 此处简化演示 return "深圳今天晴,25°C,湿度40%"; }}// 使用:Agent agent = new Agent(new OpenAIClient(apiKey));agent.registerTool(new WeatherTool());agent.registerTool(new SearchTool());String answer = agent.run("深圳今天适合户外运动吗?");📌
Java 生态 Agent 框架:生产环境推荐 LangChain4j(Java 生态首选,支持 OpenAI/Claude/Ollama,内置 RAG/Tool/Memory),或 Spring AI(Spring Boot 3.x 原生集成,与 Spring 生态无缝衔接)。两者都封装了 Function Calling + ReAct 循环 + 向量记忆,无需手写上述底层代码。
六、高频面试问答(5道)
Q1
Agent 和普通 LLM 调用有什么本质区别?
答:普通 LLM 调用是单轮输入输出,无法获取外部信息或执行操作,只能基于训练数据生成文本。Agent 是多轮循环系统:LLM 决策 → 工具执行 → 观察反馈 → 继续决策,直到完成目标。Agent 额外具备工具使用、记忆维护和自主规划能力,能处理需要外部信息和多步推理的复杂任务。
Q2
ReAct 的核心思想是什么?为什么比纯 CoT 好?
答:ReAct = Reasoning + Acting 交替执行。核心循环是 Thought → Action → Observation:推理当前状态、调用工具执行、获取结果反馈。纯 CoT 只靠 LLM 内部知识推理,无法获取外部实时信息,容易幻觉。ReAct 通过 Action 调用工具获取真实数据(Observation),让推理基于事实而非猜测。论文实验证明 ReAct 在事实准确性上显著优于纯 CoT。
Q3
Function Calling 的底层原理是什么?LLM 是怎么"学会"调用工具的?
答:本质是对齐训练(SFT + RLHF)。模型在预训练阶段学会语言能力,在指令微调阶段用大量"工具调用"格式的训练数据学习输出结构化 JSON。推理时,工具定义放在 system prompt 中,模型根据用户意图判断是否需要调用工具。如需要则输出tool_callsJSON(工具名 + 参数)。注意:LLM 本身不执行工具,只输出调用意图,由 Agent 程序解析 JSON、执行工具、回传结果。
Q4
Agent 的 Memory 分哪几种?怎么实现长期记忆?
答:短期记忆 = 对话上下文窗口(messages 列表),受 Token 上限制约,随轮数增长会被截断。长期记忆 = 向量数据库(如 Milvus / Pinecone / Chroma),将历史对话或知识 Embedding 后存储,检索时用语义相似度召回相关记忆注入 prompt。常见上下文管理策略:滑动窗口(保留最近 N 轮)+ 摘要压缩(旧对话用 LLM 生成摘要替代原文),在信息保留和 Token 成本之间取平衡。
Q5
ReAct、Plan-and-Execute、ReWOO 各自的优缺点?
答:ReAct 优点是动态灵活、即时反馈可调整;缺点是 Token 消耗最高(每步带完整历史)、严格串行慢。Plan-and-Execute 优点是步骤清晰、减少 LLM 调用次数降低成本;缺点是前置规划可能不准、遇到意外需要 Replan。ReWOO 优点是 Token 消耗最低(规划不含中间结果)、可并行执行速度快;缺点是规划与执行解耦,无法根据中间结果动态调整,步骤出错需整体重跑。
七、面试答题模板
标准话术(2 分钟版)
“Agent 是以 LLM 为核心的自主系统,包含四大组件:LLM 负责推理决策,Tools 提供行动能力,Memory 维护上下文,Planning 进行任务分解。核心运行模式是 ReAct 循环——Thought 推理当前状态,Action 调用工具执行,Observation 获取结果反馈,循环往复直到完成目标。工具调用的底层机制是 Function Calling:LLM 经过对齐训练后能输出结构化 JSON 描述工具调用意图,Agent 程序解析 JSON、执行工具、将结果回传给 LLM 继续推理。需要注意 ReAct 是推理模式,Function Calling 是工具调用机制,两者结合使用。相比单轮 LLM 调用,Agent 能自主获取外部信息、使用工具、维护记忆,适合复杂多步任务。生产环境中需注意 Token 消耗控制、工具安全性校验、循环终止条件和幻觉防范。”
八、生产环境 5 条军规
1
Token 消耗控制:每轮循环把完整对话历史发给 LLM,长对话 Token 暴涨。策略:滑动窗口(保留最近 N 轮)+ 历史摘要压缩(旧对话用 LLM 生成摘要替代原文)。监控每轮 input_tokens,设 Token 上限熔断。
2
工具安全性:工具参数必须校验(白名单 / 正则 / 类型检查),防止 LLM 幻觉产生危险操作。如文件操作工具限制路径在白名单目录内,代码执行工具沙箱隔离 + 超时控制。
3
循环终止:必须设置MAX_ITERATIONS和超时时间,防止 Agent 陷入死循环(LLM 反复调用同一工具、或陷入"再查一次"的无限推理)。同时检测重复 Action 模式主动中断。
4
错误恢复:工具调用失败时,不要直接中断,而是将错误信息以role=tool回传给 LLM,让 LLM 自主 Replan(换工具 / 换参数 / 放弃)。这比硬编码重试逻辑更灵活。
5
可观测性:记录每轮 Thought / Action / Observation 完整日志,方便调试和追踪 Agent 决策链路。生产环境接入链路追踪(如 OpenTelemetry),每轮 LLM 调用记录 input/output tokens、延迟、工具执行结果,便于性能优化和故障排查。
大模型的知识又多又杂,到底怎么学?
做这行久了,被问最多的问题就一个:大模型的知识又多又杂,我到底先学啥?翻了一堆资料,看啥都像重点,结果啥都没学进去。今天把我自己一路摸出来的顺序捋一遍,零基础、应届生、转行的都适用。跟着走,至少方向不乱、不瞎忙,学完拿得出手。
第一阶段(10天):初阶应用
这一阶段就一个目标:把大模型真正"玩明白",不是只会聊天那种,而是能调教它、能用代码把大模型和业务接起来。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
这阶段正式进实战,目标很实在:做出两个能拿出手的东西——一个私有知识库,一个 agent 对话机器人。
为什么要做 RAG
搭建一个简单的 ChatPDF
检索的基础概念
什么是向量表示(Embeddings)
向量数据库与向量检索
基于向量检索的 RAG
搭建 RAG 系统的扩展知识
混合检索与 RAG-Fusion 简介
向量模型本地部署
…
走完这 30 天,Python 或 JavaScript 背景的基本能独立做一套 RAG 应用,简历上也敢写"大模型应用开发"了。
第三阶段(约20天):动手微调
学到这,你已经开始 “造” 模型了 —— 通过微调,搞出垂直领域的专用小模型。
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你从 “只会用” 变成 “能造” 的 AI 小子。那么你还想往下探索吗?
想要入局AI大模型赛道、抢占行业红利的朋友,微信扫描下方CSDN官方认证二维码,即可100%免费领取全套学习资料!
第四阶段(20天):商业闭环,部署落地
技术学完,落地才算数。这阶段带你搞明白大模型怎么真正跑起来、用起来。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
想要入坑大模型的朋友,给大家准备了一份2026 年最新 AI 大模型全套学习资料:
1、大模型系统化学习路线
2、大模型学习视频教程
3、大模型学习书籍&电子文档
4、AI大模型最新行业报告
5、大模型项目实战&配套源码
6、2026大模型大厂面试真题
7、为什么要学习大模型?
我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着AI技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。
8、适合谁学?
- 传统后端 / Java / 前端开发,想转型 AI 应用
- 大学生、应届生,想拿更好的 offer
- 产品经理、运营,想武装职业竞争力
- 技术负责人,想给团队落地提效
学习是反人性的,但回报是真金白银。技术会更新,赛道会切换,但只要你先动手,机会就永远站在你这边。
9、这些资料真的有用吗?
这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。
想要入局AI大模型赛道、抢占行业红利的朋友,微信扫描下方CSDN官方认证二维码,即可100%免费领取全套学习资料!
好了,就写到这。路线是死的,人是活的,卡住了随时来问我。觉得有用就点个收藏,别让它进收藏夹吃灰——动起来比啥都强。