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同名,欢迎关注。

相关推荐
步行cgn26 分钟前
@AllArgsConstructor 是 Lombok 提供的注解
后端
柠檬味拥抱29 分钟前
鸿蒙原生 AI 应用开发实战:用蓝耘 MaaS 给纪念日 App 装上「大模型大脑」
后端
步行cgn33 分钟前
Lombok 详解:通过注解消除样板代码
后端
用户411800341534133 分钟前
MySql 事务和锁
后端
一只小闪闪41 分钟前
easy-trans java数据通用翻译框架v2.3.0
java·后端·架构
2601_9620558142 分钟前
Spring全部注解
java·后端·spring
步行cgn2 小时前
Spring Boot 启动报错:MissingServletWebServerFactoryBean 的排查与解决
java·spring boot·后端
步行cgn2 小时前
Spring Boot 项目打包部署详解
java·spring boot·后端
我的xiaodoujiao3 小时前
Django 基础知识详细图文教程 4-Django 视图定义与使用
开发语言·数据库·后端·测试工具·django·sqlite