<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>ReAct on Cooper&#39;s Blog</title>
    <link>https://www.wsqyouth.cn/tags/re-act/</link>
    <description>Recent content in ReAct on Cooper&#39;s Blog</description>
    <generator>Hugo</generator>
    <language>en</language>
    <managingEditor>Coopers</managingEditor>
    <atom:link href="https://www.wsqyouth.cn/tags/re-act/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>基于 golang 构建一个专家级 ReAct 学习助手</title>
      <link>https://www.wsqyouth.cn/2025/12/26/react-demo/</link>
      <pubDate>Fri, 26 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://www.wsqyouth.cn/2025/12/26/react-demo/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;在 AI 如此强大的今天，&lt;strong&gt;足够清晰聚焦的目标、一条迭代演进的路线，才是我们不至于在技术的浪潮中翻车的压舱石。&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;一超级学习助手缘起与效果&#34;&gt;一、超级学习助手缘起与效果&lt;/h2&gt;
&lt;h3 id=&#34;11背景&#34;&gt;1.1、背景&lt;/h3&gt;
&lt;p&gt;最近我正在学习 AI 领域大热的 ReAct 思想，它强调了“思考+行动”的循环。但是我不想仅仅停留在理论上学习，而是尝试通过实战的方式加深学习。&lt;/p&gt;
&lt;p&gt;当下我有一个痛点&amp;ndash; 我想深入学习一些框架知识或者源码（例如 Gin, Golang），但是直接啃源码效率比较低；使用大模型直接问他每次的回答又过于发散，因此我期望通过 ReAct 构建一个“架构师”级别的超级学习助手，每次能够给我专家级别的指导，AI 高效辅助我学习。&lt;/p&gt;
&lt;h3 id=&#34;12目标&#34;&gt;1.2、目标&lt;/h3&gt;
&lt;p&gt;理想中的学习助手，当我向它提问时，例如“Gin 的中间件是如何实现的？”，我期望得到的是一份&lt;strong&gt;专家级的分析报告&lt;/strong&gt;。这份报告应该：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;结论先行&lt;/strong&gt;: 直接告诉我核心答案。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;结构清晰&lt;/strong&gt;: 像思维导图一样，让我对全貌一目了然。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;深入浅出&lt;/strong&gt;: 用“费曼学习法”的思路，通过类比和场景让我快速理解。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;授人以渔&lt;/strong&gt;: 不仅有结论，还有关键的伪代码和源码位置，引导我自己去探索。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自动归档&lt;/strong&gt;: 每次的问答都自动生成一份 Markdown 文件。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;13效果&#34;&gt;1.3、效果&lt;/h3&gt;
&lt;p&gt;经过一番探索和迭代，我最终实现了一个命令行工具。&lt;/p&gt;
&lt;div class=&#34;mermaid&#34;&gt;graph TD
    subgraph &amp;#34;最终报告结构 (金字塔原理)&amp;#34;
        A(核心结论 TL;DR);
        B(思维导图);
        C(深入分析);
        A --&amp;gt; B;
        B --&amp;gt; C;
    end&lt;/div&gt;
&lt;p&gt;当我运行它时，它会像下面这样工作：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 提出我的问题&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ go run . -q &lt;span class=&#34;s2&#34;&gt;&amp;#34;请深入讲解一下 Gin 框架的中间件是如何实现的&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 程序开始像一个真正的专家一样，分阶段思考和行动&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;╔════════════════════════════════════════════════════════════╗
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;║          Go 源码架构师 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;三阶段专家模式&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;                        ║
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;╚════════════════════════════════════════════════════════════╝
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;========================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;任务：请深入讲解一下 Gin &lt;span class=&#34;nv&#34;&gt;框架的中间件是如何实现的&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;========================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--- 阶段 1: 信息规划师 ---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;思考：为了深入回答这个问题，我需要从哪些角度和技术点进行分析？
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;行动：规划出以下核心关键词 -&amp;gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; Gin, Middleware, HandlersChain, Context, Next&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt;, ... &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--- 阶段 2: 知识提炼师 ---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;思考：基于这些关键词，我脑中的知识库能整理出一份怎样的核心知识摘要？
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;行动：生成了核心技术研究报告。 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;内容省略&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--- 阶段 3: 架构师与表达者 ---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;思考：现在我拥有了问题的核心关键词和一份深度研究报告，可以开始撰写最终的专家级回答了。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;✅ 任务完成
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 在控制台输出报告预览&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;================&lt;/span&gt; 最终回答 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;预览&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;**核心结论 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;TL&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;DR&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;**
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Gin 的中间件本质上是一个函数调用链（&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;HandlersChain&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;），通过共享一个包含执行位置指针（&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;index&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;）的 &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;Context&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt; 对象，并利用 &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;c.Next&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt; 方法驱动指针移动和函数递归调用，从而实现了洋葱式的“请求前”和“请求后”处理逻辑。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;... &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;内容已保存到 .md 文件&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;====================================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--- 行动：保存报告 ---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;报告已成功保存到文件: Gin框架中间件原理核心说明.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://github.com/wsqyouth/tech_note/tree/master/ReAct_study/react_assistant_v3&#34;&gt;超级学习助手 Github 链接&lt;/a&gt;:  可直接使用，仅依赖 Google API Key&lt;/p&gt;
&lt;h2 id=&#34;二实现之旅&#34;&gt;二、实现之旅&lt;/h2&gt;
&lt;h3 id=&#34;21-什么是-react-让-ai-手脑并用&#34;&gt;2.1 什么是 ReAct？—— 让 AI “手脑并用”&lt;/h3&gt;
&lt;p&gt;ReAct 是一种将推理（Reasoning）和行动（Acting）结合的 AI 智能体范式，通过 &lt;strong&gt;&amp;ldquo;思维 → 行动 → 观察&amp;rdquo;&lt;/strong&gt; 的循环迭代，逐步完成复杂任务。&lt;/p&gt;
&lt;div class=&#34;mermaid&#34;&gt;graph TD
    A[思考 Thought] --&amp;gt; B{行动 Action};
    B --&amp;gt; C[执行工具/输出];
    C --&amp;gt; D[观察 Observation];
    D --&amp;gt; A;&lt;/div&gt;
&lt;p&gt;它和平常的 LLM 大模型有什么不一样呢？传统的 LLM 通过一系列推理直接完成任务，而 ReAct 显著的特点是 Reasoning + Act (即 “思考+行动”），也就是说，它通过一些推理、行动和反馈完成（就像人学习东西一样：思考方方案、试错、迭代），这种清晰可控将复杂任务的思考与行动外显，不再是黑盒子，而是透明的白盒。&lt;/p&gt;
&lt;h3 id=&#34;2-第一步打造一个无依赖的-react-框架&#34;&gt;2. 第一步：打造一个“无依赖”的 ReAct 框架&lt;/h3&gt;
&lt;p&gt;在接入要付费的大模型 API 之前，我们参考了腾讯云公众号文章，使用&lt;strong&gt;纯 Go 语言模拟&lt;/strong&gt; 整个 ReAct 的框架模型，让我们对整个框架有一个核心的认知。&lt;/p&gt;
&lt;p&gt;我们创建了一个 &lt;code&gt;react_demo.go&lt;/code&gt;，里面的 “LLM” 只是固定 Mock 的数据。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;核心收获&lt;/strong&gt;: 这个“沙盘推演”的阶段，让我们能完全专注于 ReAct 流程本身的设计，定义出清晰的接口和循环逻辑，而不会被网络、API Key 等细节分散精力。&lt;strong&gt;先用代码把骨架搭对，是后续所有工作的基础。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;┌─────────────────────────────────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│           ReAct Core Loop                   │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  (TAO循环调度 + 上下文管理 + 任务控制)           │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└─────────────────┬───────────────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         ┌────────┴────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         │                 │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ┌────▼────┐      ┌────▼────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │  LLM    │      │  Tools  │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │ 模拟器   │      │  工具层  │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └─────────┘      └────┬────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                          │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              ┌───────────┴───────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              │                       │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         ┌────▼─────┐          ┌─────▼────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         │ Flight   │          │ Flight   │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         │ Search   │          │ Book     │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         └──────────┘          └──────────┘
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;工具封装层tool-layer&#34;&gt;&lt;strong&gt;工具封装层（Tool Layer）&lt;/strong&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;BaseTool&lt;/code&gt; 接口：定义工具的标准化调用规范&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FlightSearchTool&lt;/code&gt;：航班查询工具&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FlightBookTool&lt;/code&gt;：航班预订工具&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;上下文管理器context-manager&#34;&gt;&lt;strong&gt;上下文管理器（Context Manager）&lt;/strong&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;存储 TAO 历史轨迹&lt;/li&gt;
&lt;li&gt;智能裁剪超长上下文（保留近期3轮 + 早期摘要）&lt;/li&gt;
&lt;li&gt;生成 LLM 可理解的上下文字符串&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;LLM 模拟器（Simulated LLM）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;根据任务类型和当前步骤生成预设的思维和行动&lt;/li&gt;
&lt;li&gt;模拟真实 LLM 的推理过程&lt;/li&gt;
&lt;li&gt;支持 Good/Bad Example 的不同响应策略&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ReAct 核心循环（Core Loop）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;控制 TAO 迭代流程&lt;/li&gt;
&lt;li&gt;解析 LLM 输出的思维和行动&lt;/li&gt;
&lt;li&gt;调用工具并更新上下文&lt;/li&gt;
&lt;li&gt;处理任务完成和超时终止&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/wsqyouth/tech_note/tree/master/ReAct_study/react_demo_v1&#34;&gt;ReAct Demo Github 链接&lt;/a&gt; : 无任何外部依赖，主要用于学习 ReAct 框架思想。&lt;/p&gt;
&lt;h3 id=&#34;3-第二步用真实的-gemini-api-替换掉模拟-llm&#34;&gt;3. 第二步：用真实的 Gemini API 替换掉模拟 “LLM”&lt;/h3&gt;
&lt;p&gt;这里我使用了 Google API Key，同时使用最新出的大模型：&amp;ldquo;gemini-3-flash-preview&amp;rdquo;。将上一阶段 LLM 模拟器替换掉，实现真正的智能助手。&lt;/p&gt;
&lt;p&gt;在这个过程中，我的主要踩坑点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;调用 Google API SDK 失败。原因是大模型不知道 Googel SDK 的函数原型，我提供多次的源码也以失败而告终。最后我直接提供了官方 API 源码示例。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;过于热情的 LLM。本次我想通过 ReAct 模型一步一步让 LLM 思考拆解问题，但是大模型根据 Prompt 直接在第一轮思考中就输出答案，过于热情。因此我重新设计了三层 Prompt ，让他一步一步回答思考&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;顿悟与架构升级：从“引导”LLM，到“掌控”LLM。&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;这次失败让我意识到，不能把流程控制权完全交给 LLM，必须夺回主导权。于是，我设计了**“三阶段专家流水线”**的全新架构。由 Go 程序担任“总指挥”，用三个不同但目标单一的 Prompt，去“命令”LLM 在每个阶段只做一件事（比如“只返回关键词”或“只写最终报告”）。
也就是说：让代码负责流程的确定性，让 LLM 负责每个步骤的创造性。&lt;/p&gt;
&lt;div class=&#34;mermaid&#34;&gt;graph LR
    subgraph &amp;#34;旧模式：LLM主导&amp;#34;
        A[复杂 Prompt] --&amp;gt; B((LLM));
        B -- &amp;#34;思维: ...\n行动: ...&amp;#34; --&amp;gt; C[解析];
        C -- 不稳定 --&amp;gt; D[❌ 失败];
    end
    subgraph &amp;#34;新模式：代码主导&amp;#34;
        E[Go程序] -- &amp;#34;Prompt 1: 要关键词&amp;#34; --&amp;gt; F((LLM));
        F -- &amp;#34;关键词&amp;#34; --&amp;gt; E;
        E -- &amp;#34;Prompt 2: 要报告&amp;#34; --&amp;gt; F;
        F -- &amp;#34;研究报告&amp;#34; --&amp;gt; E;
        E -- &amp;#34;Prompt 3: 要最终答案&amp;#34; --&amp;gt; F;
        F -- &amp;#34;最终答案&amp;#34; --&amp;gt; G[✅ 成功];
    end&lt;/div&gt;
&lt;h3 id=&#34;三-展望真正联网智能体&#34;&gt;三、 展望：真正“联网”智能体&lt;/h3&gt;
&lt;p&gt;最终的版本只使用了“ &lt;code&gt;GEMINI_API_KEY&lt;/code&gt;”，，为了减少外部依赖，知识来源完全依赖于 LLM 自身。&lt;/p&gt;
&lt;p&gt;但我们已经构建了一个极其优雅的架构。由于我们将所有工具都抽象成了 &lt;code&gt;BaseTool&lt;/code&gt;，未来我们只需要再创建一个 &lt;code&gt;RealSearchTool&lt;/code&gt;，并为它配置一个真实的搜索 API Key，就可以在不改动主体流程的情况下，让这个 Agent 拥有访问互联网实时信息的能力，成为一个真正完全体的 ReAct 学习助手。&lt;/p&gt;
&lt;h2 id=&#34;四总结&#34;&gt;四、总结&lt;/h2&gt;
&lt;p&gt;这段从 0 到 1 的旅程，最重要的收获不是这个工具本身，而是设计这样一个产品的经验：没有一开始就设计一个大而全的系统，而是在一个清晰的目标下，从一个最小的模拟器开始，不断引入变量、遭遇问题、调整架构、精炼细节，最终才抵达了终点。&lt;/p&gt;
&lt;h2 id=&#34;-参考资料&#34;&gt;📚 参考资料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://arxiv.org/abs/2210.03629&#34;&gt;ReAct 论文&lt;/a&gt;: &amp;ldquo;ReAct: Synergizing Reasoning and Acting in Language Models&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://python.langchain.com/docs/modules/agents/agent_types/react&#34;&gt;LangChain ReAct 文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://mp.weixin.qq.com/s/YQfqLoL1Z94yx9z48CE8bQ&#34;&gt;Agent 全面爆发，一文搞懂背后的核心范式 ReAct&lt;/a&gt; 腾讯云开发者&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
  </channel>
</rss>
