Java AI转型实战(十):Agent 智能体初探

让 AI 不只是"回答问题",而是"完成任务"

01 引子

在之前的九篇文章中,我们完成了:

  • Spring AI 核心功能(多轮对话、流式输出、Function Calling、Output Parser)
  • RAG 完整链路(文档加载、向量化、混合检索、元数据过滤)

这些能力让 AI 能够回答问题,并且回答得越来越精准。

但有一个问题始终存在:用户需要自己拆解任务。

比如用户说"我现在在北京,想出门散步",他需要自己去查天气、看空气质量、规划路线------AI 只能回答"好的"或者给一些通用建议。

如果 AI 能主动调用工具获取实时信息,再给出针对性建议呢?

这就是 Agent 要做的事。

02 什么是 Agent?

一句话定义: Agent 是一个能够自主理解意图、调用工具、完成任务的 AI 系统。

对比理解:

能力 普通对话 Function Calling Agent
理解用户意图 ✅ ✅ ✅
调用单个工具 ❌ ✅ ✅
多工具协作 ❌ ❌ ✅
自主规划步骤 ❌ ❌ ✅
根据结果调整 ❌ ❌ ✅

03 ReAct 模式:Agent 的工作方式

ReAct = Re asoning(推理)+ Acting(行动)

这是目前最主流的 Agent 工作模式:

核心思想: Agent 不是一次性回答,而是"思考 → 行动 → 观察 → 再思考"的循环过程。

04 代码实现

4.1 准备工作:已有的 Tool

在之前的实战中,我们已经定义了 Tool:

WeatherTool.java

TimeTool.java

4.2 创建 Agent 服务

AgentService.java

4.3 创建 Controller

AgentController.java

05 测试验证

场景一:多工具协作

请求:

行为分析:

  1. Agent 识别用户问了两个问题
  2. 调用 getCurrentTime 获取时间
  3. 调用 getWeather("上海") 获取天气
  4. 汇总两个结果,生成完整回复

场景二:复杂任务规划

请求:

行为分析:

  1. Agent 理解"散步"需要天气信息
  2. 自动调用 getWeather("北京")
  3. 根据天气结果给出针对性建议
  4. 结合常识补充细节(防晒、补水、时段、空气质量)

06 Agent vs Function Calling

对比项 Function Calling Agent
工具数量 单次调用 可多次调用
决策方式 一次决策 循环决策
任务复杂度 简单任务 复杂任务
中间结果 不保留 保留并用于后续决策
典型场景 "现在几点了?" "查天气→判断→给建议"

07 踩坑记录

坑一:CHAT_MEMORY_CONVERSATION_ID_KEY 常量找不到

在某些 Spring AI 版本中,这个常量可能不存在或名称不同。

解决: 直接使用字符串字面量 "chat_memory_conversation_id"。

坑二:Agent 不调用工具

原因: 系统提示词(System Prompt)不够清晰。

解决: 明确告诉 AI 有哪些工具可用,以及在什么情况下调用。

坑三:Agent 只调用一个工具

当用户问了多个问题时,Agent 可能只调用了一个工具。

解决: 在提示词中强调"如果用户问了多个问题,需要分别调用对应的工具"。

08 成果总结

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

能力 状态
理解用户意图 ✅
多工具注册 ✅
多工具协作 ✅
主动调用工具 ✅
基于结果生成建议 ✅

09 下期预告

你已经实现了 Agent 的基础能力。接下来可以深入的方向:

方向 内容
Agent 进阶 复杂任务拆解、多步推理、错误重试
Rerank 重排序 在 RAG 检索结果上进一步精排
实战项目 构建一个"智能会议助手"或"智能客服"

下一篇,我们探索 Agent 的进阶能力------让 Agent 能够拆解复杂任务、多步推理。

📌 我是超超不吵吵,10年Java全栈,正在转型AI应用开发。

每周一篇实战笔记,不贩卖焦虑,只分享能落地的技术。

掘金/CSDN同名,欢迎关注。

相关推荐
代码什么用1 小时前
Spring基础使用
java·后端·spring
明月_清风2 小时前
Deno 终局来了:从挑战 Node 到被 Cloudflare 收编
前端·后端·node.js
蜗牛互联网2 小时前
Java 17 HttpClient调用文件转写API的超时与失败回退
java·人工智能·后端
用户69371750013844 小时前
2026,程序员的时代拐点到了
android·前端·后端
惜鸟5 小时前
从源码看 pi 的上下文管理:原始数据永久保留,模型视角按需裁剪
后端
量化分析码农5 小时前
【Python量化策略评估体系 #05】极端行情扛得住吗?2008/2015/2020 三场景压力测试
后端
十年Java程序媛5 小时前
Java 接口和抽象类对比|Java8 新特性,抛弃老旧八股,正确选型
java·spring boot·后端
IT_陈寒5 小时前
SpringBoot自动配置差点让我加班到凌晨
前端·人工智能·后端
用户8356290780515 小时前
使用 Python 对 Excel 工作表进行排序
后端·python
程序员cxuan5 小时前
腾讯又来一王炸,开源版 WorkBuddy 太夯了!
人工智能·后端·程序员