【实战智能体】《大模型应用开发_动手做AI_Agent》_106.[第6章 Agent实战之ReAct自动定价] 复习ReAct框架——推理与行动为何要协同

为什么你的AI Agent像个"复读机"?揭秘ReAct框架:让大模型从"只会说"进化到"会思考更会动手"的终极密码——推理与行动协同,才是Agent真正的灵魂所在!
目录
- 什么是ReAct?——不只是Prompt模板
- 为什么必须协同?——分离的代价
- ReAct的运作机制——一步一思考
- 实战:自动定价Agent——ReAct落地
- 新手踩坑实录——你中招了吗
- 进阶心法——让ReAct更聪明
- 写在最后
嗨,大家好呀,我是你的老朋友精通代码大仙。接下来我们一起学习 《大模型应用开发_动手做AI_Agent》,震撼你的学习轨迹!
“脑子会了,手不会”——这句话是不是戳中你了?
学编程的时候,看视频觉得"这有啥难的",一动手就"这报错是啥意思"。搞AI Agent开发也一样,很多人看完ReAct论文,觉得"不就是让模型先想后做嘛",结果自己一写Prompt,Agent要么变成"话痨"光说不练,要么变成"莽夫"瞎操作一通。
更扎心的是,现在大模型岗位面试必考Agent设计,ReAct几乎是必问考点。你要是说不出个所以然,或者只会背"Thought-Action-Observation"六个字,面试官那眼神你懂的。
但别慌,今天咱们就把ReAct扒开揉碎了讲。不整那些虚的学术定义,就从"为什么推理和行动必须绑在一起"这个核心问题出发,带你真正理解这个框架的精髓。
什么是ReAct?——不只是Prompt模板
点题
ReAct,全称Reasoning + Acting,是普林斯顿大学和Google Research在2022年提出的一个框架。但很多人对它的理解停留在表面——以为就是在Prompt里加几个"Thought:"、"Action:"的标签就完事了。
大错特错。
ReAct的本质是一种认知架构,它模拟的是人类解决问题时的真实思维模式:我们不是先想完所有步骤再动手,而是边想边做,根据反馈调整。
看这个图,这就是ReAct的核心循环。不是单向的,是螺旋上升的。
痛点分析
新手最容易犯的错,就是把ReAct当成静态的填空模板。
我见过太多这样的Prompt:
请按以下格式回答:
Thought: [你的思考]
Action: [你的行动]
Observation: [观察结果]
问题:查询北京明天天气
然后模型输出:
Thought: 我需要查询北京明天的天气
Action: 调用天气API查询北京明天天气
Observation: 我不知道天气API是什么,无法执行
发现问题了吗?这个"Thought"根本就是废话,只是把问题重复了一遍。真正的推理应该是分析"我现在有什么信息、缺什么信息、怎么获取"。
更离谱的是,有些同学直接把ReAct和Chain-of-Thought(CoT)混为一谈。CoT是"一口气想完",ReAct是"想一步做一步看一步"。用CoT的思路写ReAct,Agent就会陷入"纸上谈兵"——想了一堆,但从不验证想法对不对。
解决方案/正确做法
理解ReAct的三个核心组件,以及它们动态绑定的关系:
| 组件 | 作用 | 关键特征 |
|---|---|---|
| Thought | 推理 | 基于当前所有信息,决定下一步该做什么 |
| Action | 行动 | 调用外部工具,改变环境或获取新信息 |
| Observation | 观察 | 接收Action的反馈,更新认知状态 |
关键区别:Thought必须是可执行的推理,而不是泛泛而谈。
正确的Thought长这样:
Thought: 用户问北京明天天气。我当前没有任何天气信息。
我需要先获取地理位置(北京),然后查询对应日期的天气预报。
可用工具中有get_weather(city, date),我应该调用它。
看到没?包含现状分析、信息缺口识别、工具选择理由。
代码层面的正确姿势:
# ReAct循环的核心结构(伪代码)
def react_loop(query, tools, max_steps=10):
context = f"问题:{query}\n"
for step in range(max_steps):
# 1. 生成Thought + Action
prompt = build_react_prompt(context, tools)
llm_output = llm.generate(prompt)
thought, action = parse_output(llm_output)
context += f"Thought: {thought}\nAction: {action}\n"
# 2. 执行Action,获得Observation
observation = execute_action(action, tools)
context += f"Observation: {observation}\n"
# 3. 检查是否完成
if is_complete(thought, observation):
return extract_answer(context)
return "达到最大步数,未能完成"
重点:每一步的Thought都基于最新的Observation,形成实时反馈闭环。
小结
ReAct不是Prompt模板,是认知-行动-反馈的动态循环系统。Thought的质量决定了Action的有效性,Observation又反过来塑造下一步的Thought。
为什么必须协同?——分离的代价
点题
这一节咱们解决一个根本问题:推理和行动,为什么不能分开做?先想完再做,或者先做再总结,不行吗?
答案是:真实世界太复杂,计划永远赶不上变化。
看这个饼图,这是我在实际项目中统计的Agent失败原因。超过三分之一是因为一开始的信息就不够——你不可能在动手前就想清楚所有事情。
痛点分析
误区一:先想后做(纯推理模式)
典型代表是早期的"Plan-and-Execute"架构。让模型先输出一个完整计划,然后按部就班执行。
坑在哪?看这个案例:
【用户请求】
"帮我订一张明天北京到上海的机票,要便宜的,早上出发"
【模型制定的计划】
1. 查询明天北京到上海的航班
2. 筛选早上出发的航班
3. 按价格排序选择最便宜的
4. 完成预订
【执行时遇到的问题】
- 步骤1返回:明天北京大雨,多个航班取消
- 步骤2发现:剩下的"早上出发"航班只剩商务舱,价格5000+
- 原计划完全失效,需要重新规划
计划是静态的,世界是动态的。没有实时反馈的推理,就像闭着眼睛开车。
误区二:先做后想(纯行动模式)
有些同学走向了另一个极端:让模型直接输出Action,不给思考空间。
结果?Agent变成"工具调用狂魔":
Action: search("北京到上海机票")
Observation: 找到15个结果...
Action: search("北京到上海机票 便宜")
Observation: 找到12个结果...
Action: search("北京到上海机票 便宜 早上")
Observation: 找到8个结果...
...(无限循环,永远在搜索,从不做决定)
没有推理的约束,模型不知道"什么时候该停"、“什么信息够了”、“下一步该做什么”。
误区三:推理和行动脱节
最隐蔽的坑:形式上写了Thought和Action,但两者没有逻辑关联。
Thought: 我应该比较不同航班的价格和时间
Action: search("北京到上海高铁")
Thought说要比较航班,Action去查高铁?这就是典型的脱节。模型在"应付格式",没有真正思考。
解决方案/正确做法
ReAct的协同机制,核心在于三个绑定:
绑定一:Thought必须驱动Action
每个Action都必须能从Thought中找到明确的决策依据。
Thought: 用户要"便宜"且"早上出发"的机票。
当前搜索结果中,CA1234(6:30出发,¥800)和MU5678(7:15出发,¥750)
符合时间要求。需要进一步比较总成本(是否含行李、机场距离等)。
我决定先查询CA1234的详细信息。
Action: get_flight_details("CA1234", "2024-01-15")
看到逻辑链条了吗?需求 → 筛选 → 比较维度 → 具体行动。
绑定二:Observation必须反馈给Thought
Observation不是终点,是下一轮推理的输入。
绑定三:循环必须可终止
协同不是无限循环,需要明确的终止条件:
- 目标达成(找到答案/完成任务)
- 无法继续(工具失败/信息不足)
- 达到安全限制(最大步数/成本上限)
代码实现:
class ReActController:
def should_continue(self, thought, observation, step):
# 终止条件1:模型认为已完成
if "最终答案" in thought or "任务完成" in thought:
return False
# 终止条件2:工具返回错误且无法恢复
if "error" in observation and "无法" in thought:
return False
# 终止条件3:步数限制
if step >= self.max_steps:
return False
return True
小结
推理和行动分离,要么"想太多做太少"(计划失效),要么"做太多想太少"(盲目试错)。ReAct的协同,本质是用最小的行动成本获取最大的信息增益,让每一步都有的放矢。
ReAct的运作机制——一步一思考
点题
这一节咱们深入ReAct的"发动机",看看一个完整的推理-行动循环是怎么转起来的。
这个流程图就是ReAct的"心跳"。每一步都有明确的输入输出,形成确定性的状态机。
痛点分析
新手在实现ReAct循环时,最常踩的坑是状态管理混乱。
坑点一:上下文窗口爆炸
每一步都把Thought-Action-Observation塞进Prompt,几步之后就超长了。模型开始"失忆",重复之前的行动。
Step 1: 查询库存 → 结果A
Step 2: 查询竞品 → 结果B
Step 3: 查询成本 → 结果C
Step 4: 又查询库存 → 结果A(重复了!模型忘了已经查过)
坑点二:Observation解析失败
工具返回的结果格式不统一,模型有时候理解错了,导致下一步Thought基于错误信息。
Observation: {"code": 200, "data": {"price": null, "msg": "商品下架"}}
模型可能只看到了"code": 200,以为成功,没注意到price: null。
坑点三:Action格式不合法
模型输出的Action不是标准的JSON或预定格式,解析失败,循环中断。
Action: 我要调用查询价格的工具,参数是iPhone15
# 期望格式:{"tool": "query_price", "params": {"product": "iPhone15"}}
解决方案/正确做法
解决方案一:智能上下文压缩
不是所有历史都需要保留。可以采用摘要机制:
def compress_context(history, current_step):
if current_step <= 3:
return history # 前几步保留完整
# 早期步骤摘要化
early_summary = summarize(history[:-2]) # 用模型总结前面的大意
recent_full = history[-2:] # 最近两步保留完整
return [early_summary] + recent_full
或者关键信息提取:只保留对当前决策有用的Observation。
解决方案二:Observation结构化
强制工具返回统一格式,并加一层验证和转换:
class ToolResult:
def __init__(self, raw_output):
self.success = self._check_success(raw_output)
self.data = self._extract_data(raw_output) if self.success else None
self.error = self._extract_error(raw_output) if not self.success else None
def to_observation(self):
if self.success:
return f"执行成功。结果:{json.dumps(self.data, ensure_ascii=False)}"
else:
return f"执行失败。原因:{self.error}。请调整策略重试。"
这样模型看到的Observation永远是语义清晰、结构统一的。
解决方案三:Action强制格式
用Few-shot示例约束输出格式,加上解析容错:
REACT_PROMPT_TEMPLATE = """
按以下格式思考并行动(严格遵循格式):
Thought: [分析当前情况,说明下一步要做什么]
Action: {{"tool": "工具名", "params": {{"参数名": "值"}}}}
可用工具:
{tools_description}
示例:
问题:查询北京天气
Thought: 我需要获取北京当前天气信息,应该使用天气查询工具。
Action: {{"tool": "get_weather", "params": {{"city": "北京"}}}}
Observation: {{"temperature": 25, "condition": "晴"}}
Thought: 已获取天气信息,可以直接回答用户。
Action: {{"tool": "finish", "params": {{"answer": "北京今天晴天,25度"}}}}
现在开始:
{context}
"""
def parse_action(text):
# 容错解析:处理各种格式偏差
patterns = [
r'Action:\s*(\{.*?\})', # 标准格式
r'Action\s*=\s*(\{.*?\})', # 等号变体
r'```json\s*(\{.*?\})\s*```', # 代码块
]
for pattern in patterns:
match = re.search(pattern, text, re.DOTALL)
if match:
try:
return json.loads(match.group(1))
except:
continue
return None # 解析失败,触发重试或错误处理
小结
ReAct的可靠运行,依赖严格的格式约束和智能的状态管理。把每一步的输入输出都管好了,循环才能稳定转起来。
实战:自动定价Agent——ReAct落地
点题
理论讲再多,不如一个实战案例。这一节咱们用电商自动定价这个场景,完整走一遍ReAct的设计和实现。
定价为什么适合ReAct?因为它信息分散、决策复杂、需要实时数据:
- 要知道成本(内部系统)
- 要看竞品价格(外部抓取)
- 要考虑库存(实时变化)
- 要权衡利润和销量(策略选择)
痛点分析
没有ReAct的定价系统长什么样?
版本一:规则引擎
if 竞品价格 < 成本 * 1.1:
定价 = 成本 * 1.05 # 亏本清货
elif 库存 < 安全库存:
定价 = 竞品价格 * 1.1 # 溢价
else:
定价 = 竞品价格 * 0.95 # 低价抢市场
问题是规则写不完。遇到"新品首发没有竞品"、“竞品数据异常”、"成本结构复杂"等情况就傻眼。
版本二:纯模型决策
直接把所有信息塞给大模型:“成本7000,竞品8000,库存100,定多少?”
模型输出:“建议定价8500”。
但你问它"为什么",它可能编理由。更危险的是,如果信息不全,模型会瞎猜而不是主动获取。
解决方案/正确做法
Step 1:设计工具集
TOOLS = {
"get_cost": {
"description": "查询商品成本,包括采购价、物流费、平台佣金等",
"params": {"sku_id": "商品SKU编号"}
},
"get_competitor_price": {
"description": "查询主流平台竞品价格,返回价格区间和主要竞品",
"params": {"product_name": "商品名称", "platforms": ["京东", "天猫", "拼多多"]}
},
"get_inventory": {
"description": "查询当前库存和近期销售趋势",
"params": {"sku_id": "商品SKU编号", "days": "统计天数"}
},
"calculate_profit": {
"description": "根据定价计算预期利润和利润率",
"params": {"price": "拟定价", "cost_data": "成本数据"}
},
"finish": {
"description": "完成定价,输出最终方案",
"params": {"price": "最终定价", "reasoning": "定价理由", "confidence": "置信度"}
}
}
Step 2:构建ReAct Prompt
PRICING_REACT_PROMPT = """你是一个专业的电商定价策略师。请通过推理和工具调用,为商品制定最优价格。
定价原则(按优先级):
1. 必须覆盖成本,保证基本利润
2. 考虑库存压力:库存紧张时可适当溢价,库存充足时优先走量
3. 参考竞品,但不必盲目跟随
4. 新品或特殊商品可灵活调整
当前任务:为商品制定价格
商品:{product_name}
SKU:{sku_id}
可用工具:
{tools_desc}
请严格按以下格式工作:
Thought: [分析当前已知信息,识别信息缺口,决定下一步行动]
Action: {{"tool": "工具名", "params": {{"参数": "值"}}}}
历史记录:
{history}
注意:
- 每次只调用一个工具
- 必须基于Observation更新推理,不能重复调用同一工具
- 信息充足后,使用finish工具输出最终定价
"""
Step 3:完整执行流程
=== 第1轮 ===
Thought: 刚开始,我没有任何关于这个商品的信息。需要系统性地收集数据。
首先应该查询成本,这是定价的底线。
Action: {"tool": "get_cost", "params": {"sku_id": "IPHONE15-128-BLUE"}}
Observation: {"purchase": 6800, "logistics": 50, "commission_rate": 0.05, "total_cost": 7200}
=== 第2轮 ===
Thought: 成本已明确为7200元(含5%平台佣金)。接下来需要了解市场竞争情况,
看看竞品定价区间,避免定价过高或过低。
Action: {"tool": "get_competitor_price", "params": {"product_name": "iPhone 15 128GB 蓝色", "platforms": ["京东", "天猫", "拼多多"]}}
Observation: {"jd": 7999, "tmall": 8099, "pdd": 7699, "avg": 7932, "trend": "稳定"}
=== 第3轮 ===
Thought: 竞品均价7932,最低7699(拼多多)。成本7200,如果按竞品均价卖,
毛利约732元,利润率10%,偏低。需要看库存情况决定策略:
如果库存紧张,可以靠近天猫价;如果充足,需要 competitive pricing。
Action: {"tool": "get_inventory", "params": {"sku_id": "IPHONE15-128-BLUE", "days": 7}}
Observation: {"current": 15, "weekly_sales": 8, "status": "紧张", "restock_date": "2024-02-01"}
=== 第4轮 ===
Thought: 关键信息:库存仅15台,周销8台,不到2周卖完,补货要2周后。
库存紧张+竞品价格稳定=溢价机会。但也要注意不能超竞品太多。
策略:定价略高于天猫(8099),测试市场接受度,同时保留降价空间。
计算一下:定价8299,毛利1099,利润率15.3%,合理。
Action: {"tool": "calculate_profit", "params": {"price": 8299, "cost_data": {"total_cost": 7200}}}
Observation: {"gross_profit": 1099, "margin": 15.26, "break_even": 8}
=== 第5轮 ===
Thought: 定价8299,利润率15.26%,盈亏平衡点8台(当前库存15台),风险可控。
库存紧张支持溢价,定价高于主要竞品京东(7999)和天猫(8099),
但iPhone品牌力强,且蓝色款可能缺货,有溢价空间。信息充足,可以输出方案。
Action: {"tool": "finish", "params": {"price": 8299, "reasoning": "基于成本7200元,竞品均价7932元,当前库存紧张(15台/周销8台),采用溢价策略。定价8299元,毛利率15.26%,高于竞品但符合稀缺性溢价逻辑。若2周内销售不及预期,可调价至7999对标京东。", "confidence": "high"}}
=== 最终结果 ===
定价:¥8299
理由:基于成本7200元,竞品均价7932元...
小结
自动定价展示了ReAct的核心价值:复杂决策需要多源信息,而信息获取的顺序和策略本身也需要动态决策。不是一次性收集所有信息,而是根据已有信息判断还需要什么。
新手踩坑实录——你中招了吗
点题
这一节咱们盘点ReAct实践中最常见的坑,都是血泪教训。
痛点分析
坑1:Thought写成了"事后总结"
错误示例:
Thought: 我已经查询了成本和竞品价格,现在需要查询库存。
Action: get_inventory(...)
这描述的是已经做过的事,不是正在进行的推理。模型应该基于当前Observation做决策,而不是流水账。
更隐蔽的错误:
Thought: 根据成本7200和竞品8000,合理定价应该在7500-8500之间。
Action: get_inventory(...)
Thought已经"预判"了结论,但还没查库存——万一库存紧张呢?这个"合理定价"可能完全错误。
坑2:Action和Observation"各说各话"
Thought: 需要查询京东和天猫的价格
Action: {"tool": "get_competitor_price", "params": {"platforms": ["拼多多"]}}
Thought说要查京东天猫,Action去查拼多多?这种不一致会让模型后续推理混乱。
坑3:循环不会终止
常见症状:
- 反复查询同一个工具(模型"失忆")
- 永远在"再确认一下"
- 遇到错误就重试,无限循环
Step 5: Thought: 查询库存失败,再试一次 → Action: get_inventory → Error
Step 6: Thought: 还是失败,再试一次 → Action: get_inventory → Error
Step 7: Thought: 可能网络问题,再试一次 → Action: get_inventory → Error
...
解决方案/正确做法
针对坑1:Thought的"现在进行时"原则
正确的Thought应该包含:
- 现在我知道什么(基于历史Observation)
- 我还需要什么(信息缺口)
- 因此我要做什么(下一步Action)
Thought: [当前状态] 已获取成本7200元,竞品均价7932元。
[信息缺口] 尚不清楚库存压力,无法判断溢价空间还是走量策略。
[决策] 需要查询库存水平和销售趋势,决定定价策略。
[行动] 调用库存查询工具。
针对坑2:一致性检查机制
在解析Action后,加一层语义验证:
def validate_consistency(thought, action):
# 简单版本:检查Thought提到的工具名和Action是否一致
mentioned_tools = extract_tool_mentions(thought)
actual_tool = action.get("tool")
if mentioned_tools and actual_tool not in mentioned_tools:
# 不一致,提示模型或重试
return False, f"Thought提到使用{mentioned_tools},但Action调用{actual_tool}"
# 检查参数合理性
if action["tool"] == "get_competitor_price":
if "platforms" in action["params"]:
if len(action["params"]["platforms"]) > 3:
return False, "一次查询平台过多,建议分批"
return True, "ok"
针对坑3:智能终止策略
class LoopController:
def __init__(self):
self.action_history = []
self.error_count = {}
def check_loop(self, action):
action_key = f"{action['tool']}:{json.dumps(action['params'], sort_keys=True)}"
# 检测完全重复
if action_key in self.action_history[-3:]:
return "检测到重复Action,建议更换策略或终止"
self.action_history.append(action_key)
# 检测错误重试过多
tool_name = action["tool"]
if tool_name in self.error_count and self.error_count[tool_name] >= 2:
return f"{tool_name}已连续失败2次,建议放弃或人工介入"
return "ok"
def record_error(self, tool_name):
self.error_count[tool_name] = self.error_count.get(tool_name, 0) + 1
小结
ReAct的坑大多源于格式与语义的不一致。严格约束Thought的"进行时"特征、Action与Thought的一致性、循环的智能终止,才能让Agent稳定可靠。
进阶心法——让ReAct更聪明
点题
基础ReAct跑通了,怎么让它更强?这一节分享三个进阶技巧。
痛点分析
基础ReAct的问题:
- 工具描述太抽象,模型不知道怎么用
- 遇到没见过的情况,模型容易懵
- 一步走错,后面全错,没有纠错能力
解决方案/正确做法
技巧一:工具描述的场景化
不要只写"这个工具是干嘛的",要写"什么时候用、怎么用、注意什么"。
对比:
【基础版】
get_inventory: 查询商品库存
【进阶版】
get_inventory:
用途: 获取当前可售库存和近期销售速度,用于判断供需关系
何时使用:
- 定价前评估库存压力
- 促销前确认库存充足
- 发现销售异常时排查原因
关键输出:
- current: 当前库存(判断稀缺性)
- weekly_sales: 周销量(判断周转速度)
- status: 库存状态标签(紧张/充足/积压)
注意: 库存紧张时(status="紧张"),定价策略可偏向溢价而非走量
技巧二:精心设计的Few-shot
提供正例+反例+边界案例:
【正例】
问题:iPhone 15刚发布,如何定价?
Thought: 这是新品首发,没有直接竞品。需要查询:1)官方指导价作为锚点;
2)上一代产品当前价格作为参考;3)首批到货库存量。
Action: {"tool": "get_official_price", "params": {"model": "iPhone 15"}}
【反例】❌ 错误示范
Thought: iPhone 15定价应该在6000-10000之间(❌过早下结论,未查数据)
Action: {"tool": "finish", "params": {"price": 7999}}(❌信息不足就终止)
【边界案例】
问题:查询某商品,但系统返回"商品不存在"
Thought: 商品不存在可能是SKU错误 or 已下架。先尝试用名称搜索确认,
若确实无此商品,向用户澄清而非强行定价。
Action: {"tool": "search_by_name", "params": {"keyword": "iPhone 15 蓝色"}}
技巧三:自我修正机制
让模型能识别自己的错误并调整:
SELF_CORRECTION_PROMPT = """
如果Observation显示执行失败或结果异常,请:
1. 分析失败原因(参数错误?工具故障?数据问题?)
2. 决定修正策略(重试?换工具?调整参数?终止并报告?)
3. 在Thought中明确说明修正思路
修正策略优先级:
- 参数错误 → 修正参数重试(最多2次)
- 工具故障 → 换替代工具或终止
- 数据缺失 → 基于已有信息做合理假设(需明确标注)
"""
# 代码层面:给模型"反悔"的机会
def react_with_correction(query, tools):
context = init_context(query)
for step in range(max_steps):
output = llm.generate(build_prompt(context, tools))
thought, action = parse(output)
# 执行前:检查是否有自我修正指示
if "修正" in thought or "重试" in thought:
context += f"[系统提示] 模型识别到需要修正,上一步Action未执行\n"
continue
observation = execute(action)
# 执行后:如果是错误,给模型明确的修正提示
if is_error(observation):
context += f"Observation: {observation}\n"
context += "[系统提示] 上一步执行失败。请在下一步Thought中分析原因并决定修正策略。\n"
else:
context += f"Observation: {observation}\n"
if is_complete(thought, observation):
return extract_answer(context)
小结
进阶ReAct的核心是让模型更懂工具、更会学习、更能纠错。好的工具描述降低使用门槛,精心设计的示例拓展能力边界,自我修正机制提升鲁棒性。
写在最后
聊到这儿,ReAct框架的核心你应该有感觉了。它不是简单的"先想后做",而是想与做的动态共舞——每一步思考都扎根于当下的信息,每一个行动都服务于明确的目标,每一次观察都开启新的认知。
做AI Agent开发这几年,我最大的体会是:框架是死的,协同是活的。ReAct给的只是结构,真正让Agent聪明的,是你对业务的理解、对工具的打磨、对边界情况的处理。
很多新手容易陷入两个极端:要么觉得ReAct太简单,不就是加几个标签嘛;要么觉得太复杂,不敢动手。其实啊,最好的学习就是边踩坑边修。先跑起来一个基础版本,再慢慢加工具、优化Prompt、处理异常,Agent就在这个过程中长成了。
编程之路不易,但每一步成长都算数。ReAct只是Agent技术的起点,后面还有Plan-and-Solve、Reflexion、LATS等更复杂的架构等着你去探索。保持好奇,持续动手,你也能做出让人眼前一亮的AI Agent。
记住,好的Agent不是一次写成的,是迭代出来的。就像咱们写代码一样,先能跑,再跑好,最后跑得漂亮。加油!
关注私信备注:“资料代找获取”,全网计算机学习资料代找:例如:
《课程:2026 年多模态大模型实战训练营》
《课程:AI 大模型工程师系统课程 (22 章完整版 持续更新)》
《课程:AI 大模型系统实战课第四期 (2026 年开课 持续更新)》
《课程:2026 年 AGI 大模型系统课 23 期》
《课程:2026 年 AGI 大模型系统课 21 期》
《课程:AI 大模型实战课 8 期 (2026 年 2 月最新完结版)》
《课程:AI 大模型系统实战课三期》
《课程:AI 大模型系统课程 (2026 年 2 月开课 持续更新)》
《课程:AI 大模型全阶课程 (2025 年 12 月开课 2026 年 6 月结课)》
《课程:AI 大模型工程师全阶课程 (2025 年 10 月开课 2026 年 4 月结课)》
《课程:2026 年最新大模型 Agent 开发系统课 (持续更新)》
《课程:LLM 多模态视觉大模型系统课》
《课程:大模型 AI 应用开发企业级项目实战课 (2026 年 1 月开课)》
《课程:大模型智能体线上速成班 V2.0》
《课程:Java+AI 大模型智能应用开发全阶课》
《课程:Python+AI 大模型实战视频教程》
《书籍:软件工程 3.0: 大模型驱动的研发新范式.pdf》
《课程:人工智能大模型系统课 (2026 年 1 月底完结版)》
《课程:AI 大模型零基础到商业实战全栈课第五期》
《课程:Vue3.5+Electron + 大模型跨平台 AI 桌面聊天应用实战 (2025)》
《课程:AI 大模型实战训练营 从入门到实战轻松上手》
《课程:2026 年 AI 大模型 RAG 与 Agent 智能体项目实战开发课》
《课程:大模型训练营配套补充资料》
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)