[特殊字符]绝了!原来AI智能体是这样思考的?Golang实现完整Agent Loop,附源码

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

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

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

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

另外,为了让这个 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 伙伴。

尾部放一个刚开通的视频号,聊一聊Golang 的几点学习心得,期待大家的关注。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

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

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

我在一线科技企业深耕十二载,见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事,早已在效率与薪资上形成代际优势,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我们整理出这套 AI 大模型突围资料包

  • ✅ 从零到一的 AI 学习路径图
  • ✅ 大模型调优实战手册(附医疗/金融等大厂真实案例)
  • ✅ 百度/阿里专家闭门录播课
  • ✅ 大模型当下最新行业报告
  • ✅ 真实大厂面试真题
  • ✅ 2025 最新岗位需求图谱

所有资料 ⚡️ ,朋友们如果有需要 《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大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。

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

以上全套大模型资料如何领取?

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值