news 2026/4/18 19:03:39

深入 AI Agent 大脑:ReAct 推理循环与工具调用机制完全解析(含完整源码实现)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深入 AI Agent 大脑:ReAct 推理循环与工具调用机制完全解析(含完整源码实现)

🌙 开篇碎碎念 · 一点小小的心里话

这周家里小孩感染了流感,正值流感高发季,医院人满为患。
在陪孩子看病、排队、照顾休息之间,整个周末几乎被压缩到了只剩下深夜的两三个小时。

原本计划周日清晨发布的这篇文章,也就这么一路拖到了周日深夜才写完。
但为了不在半夜打扰大家的手机通知,我还是把它安排到了周一早上定时发布

虽然时间被压缩得厉害,但今天的内容依旧是我非常想分享给大家的,也希望能对你有所启发、带来收获。

另外,为了让这个 AIAgent 系列能顺利推进,我们临时更换了底座模型:
👉 由之前的deepseek-r1:1.5b换为qwen3-vl:4b

因为实测下来:
deepseek-r1:1.5b 居然不支持 tools——
尽管官方文档清楚写着是支持的,但在 Ollama 环境中就是无法正确解析工具调用。
也许是当前版本的小 bug,如果有朋友了解具体原因,欢迎在评论区告诉我,算是帮我也帮更多读者排个坑 🙏。

好了,闲话不多说——
今天的内容非常关键,是构建智能体大脑的核心章节,让我们一起继续向前。

🎉 欢迎来到 Golang AIAgent 系列学习篇章的第二站!
在上一篇《从 0 构建你的本地 Golang 版 AI Agent》中,
我们搭建了一个真正能和你对话并执行指令的基础智能体
今天,我们要揭开它更深层的秘密:
一个 Agent 的“思考能力”到底是怎么做出来的?

本篇,你将看到一个地地道道的 Golang 智能体内部构造:
它怎么思考、怎么分析、怎么决定下一步执行什么工具、怎么处理模型输出……
这些逻辑,统统藏在你的Agent Loop(智能体循环)里。

这是 AIAgent 的“灵魂工程”。
真正理解它之后,你就能随心所欲地创造自己的超级助手。


🌟为什么 AIAgent 必须有“推理循环”?

如果你把 LLM 当一个“输入问题 → 输出答案”的普通工具,
它永远不可能成为一个真正的Agent(智能体)

一个真正的 Agent 必须具备:

能力解释
🔍 分析问题明白问题需要拆解、判断是否需要工具
🛠 调用工具文件操作、代码运行、搜索网络等
🔁 循环执行工具执行 → 再推理 → 再决定下一步
🎯 得出最终答案只有认为任务完成时才结束

这就是ReAct(Reasoning + Action)结构:

“先思考,再行动;观察结果,再继续思考……”

你的代码正是这样的一个非常典型、标准、可扩展的专业结构。

接下来,我们会一步步拆解它。


📦第 1 章:Agent Loop —— 智能体思考的核心循环

下面是你代码中最关键、最核心的部分(此为简化示例,详细请查看源码):

for i := 0; i < 6; i++ { resp, err := a.Model.Generate(ctx, a.conv) if err != nil { return "", err } fc := a.Model.ParseFunctionCall(resp) if fc == nil { finalResponse = resp break } res, err := a.execTool(ctx, fc) if err != nil { return "", err } a.addSystem(fmt.Sprintf("工具 '%s' 执行结果: %s", fc.Name, res)) }

🔎逐行解析:

最多执行 6 轮,避免死循环

模型有时会陷入反复思考或错误调用工具,需要一个硬限制。

模型推理

resp, err := a.Model.Generate(ctx, a.conv)

这一步就是 LLM 输出内容,可能是自然语言,也可能是“请求调用工具”。

解析工具调用

fc := a.Model.ParseFunctionCall(resp)

如果模型说:

“帮我搜索一下关键词:Golang AIAgent 架构”

就会变成:

{ "name": "web_search", "arguments": {...} }

调用本地工具

res, err := a.execTool(ctx, fc)

⑤ 把工具执行结果写回给模型

这非常关键!

a.addSystem(fmt.Sprintf("工具 '%s' 执行结果: %s", fc.Name, res))

因为 Agent 执行完工具后,必须让模型知道结果**,才能继续下一步推理。**


🔧第 2 章:工具调用(Tools)是怎样被执行的?

你的 execTool() 结构很清晰:

switch fc.Name { case "read_file": return readFileTool(fc.Args) case "write_file": return writeFileTool(fc.Args) case "run_code": return runCodeTool(fc.Args) case "web_search": var args WebSearchArgs _ = json.Unmarshal(fc.Arguments, &args) results, _ := WebSearch(args) return MarshalArgs(results) }

这让添加新工具非常简单

新增工具 = 加一段 case + 写一个函数
你的架构天然适合快速扩展


🌐第 3 章:重点——Web 搜索能力是怎样实现的?

你的工具函数 web_search 逻辑如下:


🛰️ ① 使用 DuckDuckGo API 进行搜索

当然这里是出于个人版,使用的是免费的DuckDuckGo,它不太适合生产级,我这里使用纯粹是因为它免费,企业级生产环境推荐使用 Bing Web Search / Google Custom Search / SerpAPI 等:

resp, err := http.Get("https://duckduckgo.com/html/?q=" + url.QueryEscape(query))

DuckDuckGo 的 HTML 搜索页可以解析出:

  • 结果标题
  • 结果摘要
  • 跳转链接

📄 ② 可选抓取网页正文(更强)

如果用户需要抓正文:

goquery.NewDocumentFromReader(resp.Body)

解析页面结构,抽出:

  • 所有<p>文本
  • 主体内容
  • 标题

这意味着你的 Agent 不只是“能搜索”,
而是能:

搜索 → 抓网页 → 分析内容 → 再推理

这是完整的 AI Agent 搜索链路!


🔌第 4 章:模型如何知道有哪些工具可用?(Tools Metadata)

你的代码为模型生成了完整的工具描述:

{"name": "web_search", "description": "Search the web...", "parameters": {...}}

模型收到后就会“理解”:

  • web_search工具
  • 它需要的参数是什么
  • 什么时候用它

这就是 OpenAI Functions 的能力,
你已经用 Golang 完全复刻一遍。

模型会决定:

  • 要不要调用?
  • 调用哪个工具?
  • 传什么参数?

🔁第 5 章:Agent 的完整闭环

整个流程如下👇

用户提问 ↓ LLM 初次思考(需要搜索吗?) ↓ 请求调用工具(web_search) ↓ Golang 执行工具(真正去搜) ↓ 把搜索结果回传给模型 ↓ 模型继续推理(结合搜索结果得出答案) ↓ 输出最终总结

现在,这已经是一个真正可用的可执行型 AI 智能体

你为它接入了:

  • 🧠 思考能力(ReAct)
  • 🛠 工具使用能力
  • 📡 联网搜索能力
  • 📂 文件读写能力
  • 🧪 代码执行能力

这已经接近于一个“本地 AutoGPT”。


🎯第 6 章:增加会话主题管理—实战加强

增加主题的用途是让会话形成记忆,同时得到问题的连续性

你的 Golang AIAgent 已经从“能对话的小助手”,
成长为“能思考、能搜索、能执行任务的多技能智能体”。

而这只是开始。
接下来它会变得越来越聪明——
因为它的“创造者”是你。

如何学习AI大模型 ?

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】🆓

CSDN粉丝独家福利

这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取【保证100%免费】

读者福利:👉👉CSDN大礼包:《最新AI大模型学习资源包》免费分享 👈👈

(👆👆👆安全链接,放心点击)

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

👉1.大模型入门学习思维导图👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过AI大模型的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。(全套教程文末领取哈)

👉2.AGI大模型配套视频👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,每个章节都是当前板块的精华浓缩。

👉3.大模型实际应用报告合集👈

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(全套教程文末领取哈)

👉4.大模型实战项目&项目源码👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战项目来学习。(全套教程文末领取哈)

👉5.大模型经典学习电子书👈

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。(全套教程文末领取哈)

👉6.大模型面试题&答案👈

截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。(全套教程文末领取哈)

为什么分享这些资料?

只要你是真心想学AI大模型,我这份资料就可以无偿分享给你学习,我国在这方面的相关人才比较紧缺,大模型行业确实也需要更多的有志之士加入进来,我也真心希望帮助大家学好这门技术,如果日后有什么学习上的问题,欢迎找我交流,有技术上面的问题,我是很愿意去帮助大家的!

这些资料真的有用吗?

这份资料由我和鲁为民博士共同整理,鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位,在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利,同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。


CSDN粉丝独家福利

这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取【保证100%免费】

读者福利:👉👉CSDN大礼包:《最新AI大模型学习资源包》免费分享 👈👈

(👆👆👆安全链接,放心点击)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 21:29:45

Webhook自动化部署:终极完整指南

Webhook自动化部署&#xff1a;终极完整指南 【免费下载链接】webhook webhook is a lightweight incoming webhook server to run shell commands 项目地址: https://gitcode.com/gh_mirrors/we/webhook webhook是一个轻量级的入站webhook服务器&#xff0c;专门用于执…

作者头像 李华
网站建设 2026/4/17 17:48:41

Open-AutoGLM高级定制技巧(20年专家私藏方法论)

第一章&#xff1a;Open-AutoGLM高级定制的核心理念 Open-AutoGLM 作为新一代开源自动语言生成模型框架&#xff0c;其高级定制能力建立在模块化、可扩展与语义感知三大核心理念之上。该架构允许开发者深度介入模型行为调控&#xff0c;实现从推理策略到输出格式的精细化控制。…

作者头像 李华
网站建设 2026/4/19 15:48:14

5步搞定rEFInd主题定制:打造个性化启动界面

5步搞定rEFInd主题定制&#xff1a;打造个性化启动界面 【免费下载链接】refind-theme-regular 项目地址: https://gitcode.com/gh_mirrors/ref/refind-theme-regular 想要让你的系统启动界面告别单调乏味吗&#xff1f;rEFInd主题定制可以帮你轻松实现个性化启动体验。…

作者头像 李华
网站建设 2026/4/17 7:12:34

Doom Emacs代码补全崩溃难题:从用户困扰到完美解决

Doom Emacs代码补全崩溃难题&#xff1a;从用户困扰到完美解决 【免费下载链接】doomemacs 项目地址: https://gitcode.com/gh_mirrors/doo/doom-emacs 当你在深夜专注编码&#xff0c;手指在键盘上飞舞&#xff0c;期待着智能补全的助力时&#xff0c;Emacs却突然崩溃…

作者头像 李华
网站建设 2026/4/17 17:58:24

为什么顶级团队都在用Open-AutoGLM做视觉分析?真相令人震惊!

第一章&#xff1a;Open-AutoGLM如何做画面识别Open-AutoGLM 是一个基于多模态大模型的自动化视觉理解框架&#xff0c;能够将图像内容与自然语言推理深度融合&#xff0c;实现高效精准的画面识别。其核心机制在于结合视觉编码器与语言生成模型&#xff0c;通过端到端训练实现从…

作者头像 李华
网站建设 2026/4/17 8:57:11

免费三星固件下载工具完整使用指南

免费三星固件下载工具完整使用指南 【免费下载链接】samloader Download Samsung firmware from official servers 项目地址: https://gitcode.com/gh_mirrors/sa/samloader 三星固件下载工具是一个功能强大的开源项目&#xff0c;专为三星设备用户提供便捷的固件管理解…

作者头像 李华