资讯详情 新手必看:用50行代码快速入门ReAct大模型Agent(收藏版)
📅 2026/11/5 1:56:50
本文深入浅出地介绍了ReAct大模型Agent的核心原理通过50行代码实例展示了最小Agent的实现过程并详细讲解了Prompt设计技巧。此外还探讨了工程化时需要注意的状态持久化、错误恢复、人工介入及成本控制等问题帮助读者快速掌握大模型Agent开发的关键要点适合小白和程序员学习参考。一、ReAct 到底是什么ReAct Reasoning Acting它让模型在推理和行动之间交替先判断下一步该做什么再调用工具再根据观察结果继续。说实话ReAct 是理解 Agent loop 的入门框架。但工程里不要迷信让模型一直想——你真正要设计的是工具、状态、停止条件、错误恢复和 trace。二、基本模式经典的 ReAct 格式是这样的Question: ... Thought: I need to search for evidence. Action: search(query...) Observation: ... Thought: The evidence is enough. Final Answer: ...但真实系统建议不要存完整的Thought而是存可审计的摘要。不然模型想太多不仅费 token还容易跑偏。2.1 可审计的 Trace 格式{ step: 2, action: search, args: {query: agentic rag evaluation}, reason_summary: Need external evidence before comparing methods., observation_summary: Found 5 papers from 2024-2025. }这样既保留了可追溯性又不会让模型的思考过程膨胀到失控。三、50 行代码实现一个最小 Agent话不多说直接上代码。这段代码能让你看清 Agent loop 的完整过程。3.1 最小实现def react(task, model, tools, max_steps6): trace [] observations [] for step in range(max_steps): prompt build_prompt(task, tools, observations) decision model.generate_json(prompt) if decision[type] final: return { answer: decision[answer], trace: trace, status: completed, } tool_name decision[tool] if tool_name not in tools: obs {ok: False, error: unknown_tool} else: args decision.get(args, {}) tool tools[tool_name] obs tool(args) observations.append(obs) trace.append({ step: step 1, tool: tool_name, args: decision.get(args, {}), observation: summarize(obs), }) return { answer: None, trace: trace, status: max_steps_exceeded, }3.2 代码深度解读这段代码虽然短但包含了 Agent 的核心逻辑初始化阶段trace []记录每一步的决策用于调试和审计observations []保存工具返回的结果用于上下文构建循环阶段for step in range(max_steps)最多执行 max_steps 步防止无限循环build_prompt(task, tools, observations)构建 prompt包含任务、工具、历史观察model.generate_json(prompt)模型根据当前状态生成下一步决策决策分支if decision[type] final模型决定结束返回答案和 traceelse模型决定调用工具执行工具调用工具调用if tool_name not in tools工具不存在返回错误else工具存在执行工具调用获取观察结果记录阶段observations.append(obs)保存观察结果用于后续上下文trace.append({...})记录这一步的决策和结果异常处理超过最大步数返回max_steps_exceeded状态工具不存在返回错误信息3.3 数据流分析Task (用户任务) ↓ Prompt Builder (构建 prompt) ├─ Task ├─ Tools (工具列表) └─ Observations (历史观察) ↓ Model (模型决策) ├─ Type: tool_call | final ├─ Tool: 工具名称 ├─ Args: 工具参数 └─ Answer: 最终答案 ↓ Tool Executor (执行工具) ├─ Tool Name ├─ Args └─ Observation (观察结果) ↓ Trace Recorder (记录 trace) ├─ Step ├─ Tool ├─ Args └─ Observation Summary ↓ Return (返回结果) ├─ Answer ├─ Trace └─ Status3.4 关键设计决策为什么用 JSON 格式结构化输出容易解析类型明确减少错误易于扩展可以添加新字段为什么限制最大步数防止无限循环控制成本强制模型在有限步数内完成任务为什么记录 trace调试出问题时可以查看每一步的决策审计可以追踪 Agent 的行为优化可以分析哪些步骤可以优化为什么 summarize observation控制上下文长度提取关键信息减少干扰四、Prompt 设计技巧Prompt 是 Agent 的灵魂。好的 Prompt 能让模型更聪明坏的 Prompt 能让模型发疯。4.1 推荐的 Prompt 结构You are an agent that solves the task by calling tools. Rules: - Use only the listed tools. - Stop when enough evidence is collected. - If evidence is missing, say what is missing. - Never fabricate tool results. Task: {task} Tools: {tool_cards} Previous observations: {observations} Return JSON: { type: tool_call | final, tool: tool name or null, args: {}, answer: final answer or null, reason_summary: short auditable reason }4.2 Prompt 各部分深度解析System Role系统角色You are an agent that solves the task by calling tools.明确 Agent 的角色一个通过调用工具解决问题的智能体设定 Agent 的行为模式调用工具、观察结果、推进任务Rules规则- Use only the listed tools. - Stop when enough evidence is collected. - If evidence is missing, say what is missing. - Never fabricate tool results.限制工具使用只能使用列出的工具不能编造工具明确停止条件收集到足够证据就停止处理缺失信息如果证据缺失明确说明缺失什么禁止编造不能编造工具结果必须基于真实观察Task任务{task}清晰描述任务目标包含任务约束如预算、时间明确成功标准Tools工具列表{tool_cards}每个工具卡片包含工具名称清晰、具体、无歧义工具描述能做什么不能做什么参数定义参数类型、范围、默认值返回值返回什么格式是什么示例如何调用返回什么Previous Observations历史观察{observations}记录之前的工具调用和结果用于上下文构建帮助模型理解当前状态Return JSON返回格式{ type: tool_call | final, tool: tool name or null, args: {}, answer: final answer or null, reason_summary: short auditable reason }type决策类型工具调用或结束tool工具名称如果 type 是 final 则为 nullargs工具参数如果 type 是 final 则为空answer最终答案如果 type 是 tool_call 则为 nullreason_summary简短的可审计理由4.3 关键设计原则规则要明确别写尽量不要…“这种模糊的话直接写禁止…”、“必须…”。反例- Try to use the listed tools. - Stop when you think you have enough evidence.正例- Use only the listed tools. - Stop when enough evidence is collected.工具描述要具体别写查数据要写清楚工具能做什么参数是什么类型是什么返回什么举个例子反例search: 查数据正例search: 搜索互联网上的信息 参数: query: 搜索关键词字符串必需 num_results: 返回结果数量整数可选默认 5 返回: results: 搜索结果列表每个结果包含 title、url、snippet 示例: 输入: {query: AI Agent, num_results: 3} 输出: {results: [{title: ..., url: ..., snippet: ...}]}格式要严格让模型返回 JSON并且明确每个字段的含义。最好给个示例模型更容易理解。反例Return your decision.正例Return JSON: { type: tool_call | final, tool: tool name or null, args: {}, answer: final answer or null, reason_summary: short auditable reason } Example: { type: tool_call, tool: search, args: {query: AI Agent}, answer: null, reason_summary: Need to search for information about AI Agent. }限制思考长度不要让模型写长篇大论的思考只让它写reason_summary——一句话说明为什么选这个工具。反例thought: I need to search for information about AI Agent. Let me think about what keywords to use. Maybe AI Agent or autonomous agent. Ill start with AI Agent and see what I get.正例reason_summary: Need to search for information about AI Agent.4.4 Prompt 优化技巧技巧 1使用 Few-Shot Examples给模型几个示例让它理解如何调用工具。Example 1: Task: What is the weather in Beijing tomorrow? Decision: { type: tool_call, tool: search_weather, args: {city: Beijing, date: tomorrow}, answer: null, reason_summary: Need to check weather forecast for Beijing tomorrow. } Example 2: Task: Summarize the latest news about AI. Decision: { type: tool_call, tool: search_news, args: {query: AI, num_results: 5}, answer: null, reason_summary: Need to search for latest AI news to summarize. }技巧 2使用 Chain-of-Thought让模型先思考再行动。Think step by step: 1. **What do I need to do?** 2. **Which tool can help?** 3. **What parameters does the tool need?** 4. **What do I expect the tool to return?** Then make your decision.技巧 3使用 Reflection让模型反思之前的决策。After each tool call, reflect: - Did the tool return what I expected? - Do I have enough information to answer the question? - What should I do next? If the tool failed or returned unexpected results, try a different approach.技巧 4使用 Self-Correction让模型自我纠正错误。If you make a mistake: 1. **Acknowledge the mistake.** 2. **Explain why it was a mistake.** 3. **Propose a correction.** 4. **Execute the correction.** Example: Mistake: I called the wrong tool. Correction: I should have called search_weather instead of search_news. Action: Call search_weather with the correct parameters.五、工程化注意事项上面的代码只是一个最小实现。真实项目中你还需要考虑这些问题5.1 状态持久化长任务需要持久化状态不然 Agent 重启后就忘了之前做了什么。我之前做过一个代码修复 Agent改到第三步就忘了第一步改了什么——因为状态只存在内存里重启后全丢了。后来用 LangGraph 的持久执行问题就解决了。5.2 错误恢复工具调用可能失败网络可能超时模型可能返回格式错误。你需要重试机制超时控制格式校验降级方案5.3 人工介入有些高风险操作需要人工确认比如发邮件、删文件、付款。你需要权限分级human-in-the-loop 机制审核日志5.4 成本控制模型调用和工具调用都要花钱。你需要Token 预算控制缓存机制成本监控六、常见坑坑一让模型想太多模型的思考过程会消耗大量 token而且不一定有用。建议只记录reason_summary而不是完整的 chain-of-thought。坑二工具返回值太长工具返回 10MB 的原始数据模型根本处理不过来。建议返回摘要分页返回只返回关键信息坑三没有停止条件Agent 可能无限循环搜索信息。建议设置最大步数设置时间限制让模型自己判断是否停止坑四没有 trace出问题时不知道模型做了什么根本无法调试。一定要记录完整的 trace。七、从 50 行代码到生产级系统上面的代码只是一个起点。要做成生产级系统你需要1. 状态管理用 LangGraph 或类似框架管理复杂状态流2. 持久化把状态和 trace 存到数据库3. 安全权限分级、审计日志、数据脱敏4. 评测构造 eval case持续评估 Agent 效果5. 监控监控延迟、成本、成功率6. 运维部署、扩容、故障恢复如何学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线科技企业深耕十二载见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事早已在效率与薪资上形成代际优势我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我们整理出这套AI 大模型突围资料包✅ 从零到一的 AI 学习路径图✅ 大模型调优实战手册附医疗/金融等大厂真实案例✅ 百度/阿里专家闭门录播课✅ 大模型当下最新行业报告✅ 真实大厂面试真题✅ 2026 最新岗位需求图谱所有资料 ⚡️ 朋友们如果有需要《AI大模型入门进阶学习资源包》下方扫码获取~① 全套AI大模型应用开发视频教程包含提示工程、RAG、LangChain、Agent、模型微调与部署、DeepSeek等技术点② 大模型系统化学习路线作为学习AI大模型技术的新手方向至关重要。 正确的学习路线可以为你节省时间少走弯路方向不对努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划带你从零基础入门到精通③ 大模型学习书籍文档学习AI大模型离不开书籍文档我精选了一系列大模型技术的书籍和学习文档电子版它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。④ AI大模型最新行业报告2025最新行业报告针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。⑤ 大模型项目实战配套源码学以致用在项目实战中检验和巩固你所学到的知识同时为你找工作就业和职业发展打下坚实的基础。⑥ 大模型大厂面试真题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我精心整理了一份大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。以上资料如何领取为什么大家都在学大模型最近科技巨头英特尔宣布裁员2万人传统岗位不断缩减但AI相关技术岗疯狂扩招有3-5年经验大厂薪资就能给到50K*20薪不出1年“有AI项目经验”将成为投递简历的门槛。风口之下与其像“温水煮青蛙”一样坐等被行业淘汰不如先人一步掌握AI大模型原理应用技术项目实操经验“顺风”翻盘这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。以上全套大模型资料如何领取