news 2026/9/4 6:13:18

Java AI转型实战(十三):Agent 循环推理与自主决策

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java AI转型实战(十三):Agent 循环推理与自主决策

让 Agent 从“单次思考”升级为“多轮推理”,真正具备自主决策能力

01 引子

在实战十二中,我们完成了 Agent 的工程化落地——错误处理、优雅降级、可观测性。Agent 在理想场景下表现得稳定可靠。

但有一个核心能力仍然缺失:循环推理

当前的 Agent 是这样的:

用户提问 → 调用一次 AI → 调用工具 → 返回结果

这是“一次性的”。用户问什么,AI 就回答什么。但如果用户问的是复杂任务呢?

“帮我规划一个上海2日游,查查天气,推荐景点,安排行程”

这时候 Agent 需要做多件事:查天气 → 推荐景点 → 规划行程。每一步都需要根据上一步的结果来决定下一步做什么。这就需要循环推理

这一篇的目标:让 Agent 具备多轮思考能力,能够像人类一样分步解决问题。

02 什么是循环推理?

2.1 当前 Agent 的局限
对比当前 Agent循环推理 Agent
推理轮次1 轮多轮(直到任务完成)
决策方式一次决策根据中间结果动态决策
工具调用最多 1-2 个可调用多个,按顺序执行
任务复杂度简单任务复杂任务
2.2 ReAct 模式

ReAct =Reasoning(推理)+Acting(行动)

2.3 核心思想

循环推理不是“一次性回答”,而是“思考 → 行动 → 观察 → 再思考”的循环,直到任务完成。

03 代码实现

3.1 整体架构

3.2 完整代码

ReActAgentService.java

3.3 Controller 接口

ReActAgentController.java

04 测试验证

场景一:简单问题(无需工具)

请求:

分析:Agent 判断为简单问题,直接回答,没有调用工具。✅

场景二:单工具调用

请求:

分析:Agent 识别需要查询天气,调用getWeather("北京")。✅

场景三:多工具协作

请求:

分析:Agent 分别查询了两个城市的天气。✅

05 踩坑记录

坑一:AI 不按格式输出,导致循环空转

现象:请求后返回"抱歉,经过 6 轮思考,我无法完整回答您的问题。"

原因:AI 没有输出Action:Final Answer:格式,导致parseOutput无法识别,循环空转 6 次后超时。

解决:

  1. parseOutput中添加兜底逻辑:如果 AI 直接回复了自然语言(无 Action 标记),直接当作最终答案。

  2. 优化 System Prompt,明确告诉 AI:简单问题直接回答,复杂问题用Action:格式。

// 兜底逻辑 if (response != null && response.length() > 5) { parsed.isFinal = true; parsed.finalAnswer = response.trim(); }
坑二:参数解析失败

现象:工具调用返回“参数不足”。

原因:parseParams方法在解析带多个参数的工具调用时出错。

解决:完善参数解析逻辑,支持双引号和逗号分隔。

private String[] parseParams(String paramsStr) { // 支持 "北京", "上海" 格式 // 支持 "G123", "二等座" 格式 }
坑三:observability注入失败

现象:启动报错Bean not found

原因:AgentObservability类没有添加@Component注解。

解决:确保AgentObservability类上有@Component注解。

06 成果总结

经过这一篇,你的 Agent 现在具备:

能力状态
单工具调用
多工具协作
简单问题直接回答
循环推理框架
任务完成判断
超时降级
可观测性

07 下期预告

循环推理完成后,Agent 系列的核心能力已经全部就绪。下一步,我们将把这些能力整合成一个完整的“智能助手”应用,涵盖:

  • 多工具协作(天气 + 时间 + 订票)

  • 循环推理(复杂任务拆解)

  • 可观测性(调试模式)

  • 错误处理(优雅降级)

下一篇:实战项目整合——构建完整的智能助手应用。

📌 我是超超不吵吵,10年Java全栈,正在转型AI应用开发。
每周一篇实战笔记,不贩卖焦虑,只分享能落地的技术。
全网同名,欢迎关注。

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

08 分类微调:把 GPT 变成垃圾邮件分类器

08 分类微调:把 GPT 变成垃圾邮件分类器 系列第 8 篇。到现在为止,我们的 GPT 只会"生成文本"。这一篇开始微调——让预训练模型适配特定任务。首先是最简单也最实用的形态:分类微调,用 GPT 做垃圾邮件识别。 对应《从零构建大模型》第 6 章:微调策略、数据集准…

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

MOS管检测电路实战:从万用表到LED开关的完整测试方法

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/4 6:12:33

SKILL.state论文降低Token消耗、提高长程任务效率的

你的 Agent 每跑一步都在烧钱?一篇论文告诉你怎么把 100 万 Token 压到 6 万 目录 你的 Agent 每跑一步都在烧钱?一篇论文告诉你怎么把 100 万 Token 压到 6 万 一个让你心疼钱包的场景 一篇最近很火的论文说:你确实不需要 核心洞察,一句话 ReAct vs. SKILL.state:书包 v…

作者头像 李华
网站建设 2026/9/4 6:10:27

索尼联手台积电:下一代图像传感器如何重塑实体AI

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/4 6:09:04

LTX2.3导演台V2工作流:从音频到数字人MV的ComfyUI低配部署指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/4 6:07:59

STM32老人防跌倒报警系统设计与实现

简介:本资源是一套完整的基于STM32的嵌入式毕业设计项目,面向电子信息、自动化及物联网方向的本科生与嵌入式初学者,聚焦老人居家安全监护场景,解决跌倒实时识别与远程求救响应难题。系统以STM32F103为核心,集成ADXL34…

作者头像 李华