当前位置: 首页 > news >正文

Spring AI 支持 Agent 人机交互:让 AI 先问清楚再行动

传统的 AI 交互往往遵循一个固定模式:你提供问题,AI 基于假设给出答案。

当这些假设与你的实际需求不符时,你就会陷入反复修正的循环,每一个错误的假设都意味着返工——浪费时间和上下文。

如果你的 AI Agent 能够在提供答案之前主动询问明确的问题呢?

AskUserQuestionTool 正是为此而生。它让 AI Agent 在回答之前主动提出澄清性问题,以交互方式收集需求,从一开始就创建与你实际需求完全对齐的方案。

Spring AI 的实现将这种交互模式带入 Java 生态系统,确保 LLM 的可移植性——只需定义一次问题处理器,就能在 OpenAI、Anthropic、Google Gemini 或任何其他支持的模型中使用。

这是 Spring AI Agentic Patterns 系列的第二部分。

现在我们将深入研究 AskUserQuestionTool,它将 AI Agent 转变为以交互方式收集需求的协作伙伴。

AskUserQuestionTool 的工作原理

AskUserQuestionTool 是 spring-ai-agent-utils 工具包的一部分,是对 Claude Code 的 AskUserQuestion 工具的可移植 Spring AI 实现,使 AI Agent 能够在执行过程中向用户提出多选问题。

该工具遵循问答工作流:

• AI 生成问题- Agent 判断需要输入并构建问题(每个问题包含问题文本、标题、2-4 个选项和 multiSelect 标志),然后调用 askUserQuestion 工具函数

• 用户提供答案- 你的自定义处理器接收这些问题,通过 UI 呈现它们,收集答案,然后将答案返回给 AI

• 提出更多问题- 如有必要,重复步骤 1 和 2 以收集更多用户反馈

• AI 基于上下文继续- Agent 使用答案提供定制化的解决方案

每个问题都支持:

• 单选或多选- 选择一个选项或组合多个选项

• 自由文本输入- 用户始终可以在预定义选项之外提供自定义文本

• 丰富的上下文- 每个选项都包含描述,解释其影响和权衡

可移植性与模型无关 - 无供应商锁定:与绑定到特定 LLM 平台的实现不同,这个 Spring AI 实现可跨多个 LLM 提供商使用,让你无需重写代码或问题处理器即可切换模型。

与 MCP Elicitation 的关系:AskUserQuestionTool 作为 Agent 本地的交互式用户输入方法,在概念上类似于 MCP Elicitation 能力。虽然 MCP Elicitation 使 MCP 服务器能够通过 JSON schemas 请求结构化的用户输入,但 AskUserQuestionTool 直接在你的 Agent 内部提供相同的交互模式,无需 MCP 服务器。Spring AI 还通过 @McpElicitation 注解为服务器驱动场景提供完整的 MCP Elicitation 支持。

实战案例:旅行推荐助手

以下是该工具在 ask-user-question-demo 的旅行推荐用例中的实际运作方式:

用户:我下次应该去哪个欧洲国家旅行?

AI(兴趣):你旅行时的主要兴趣是什么?

1. 历史与文化 - 博物馆、历史遗迹、建筑

2. 自然与户外 - 徒步、海滩、山地、国家公园

3. 美食与饮品 - 烹饪体验、葡萄酒产区、美食之旅

4. 城市与都市 - 城市探索、购物、夜生活

(输入用逗号分隔的数字,或输入自定义文本)

用户选择:1,2

AI(季节):你计划什么时候旅行?

1. 春季 - 3月至5月 - 温和的气温,较少的游客

2. 夏季 - 6月至8月 - 温暖的天气,旅游旺季

3. 秋季 - 9月至11月 - 较凉爽的温度,秋色

4. 冬季 - 12月至2月 - 圣诞市场,冬季运动

(输入一个数字,或输入自定义文本)

用户选择:3

AI(预算):这次旅行的大致预算水平是多少?

...

AI 回答:根据你对秋季旅行的偏好,以及对历史、文化和自然的兴趣,在中等预算下,既想去热门景点又想探索小众目的地,以下是值得考虑的优秀欧洲国家:

1. 葡萄牙- 里斯本的历史街区、杜罗河谷的葡萄酒收获、阿尔加维海岸线。价格实惠,秋季气温宜人。

2. 希腊- 古代遗迹、美丽的岛屿,秋季仍然适合游泳,游客较少。

3. 斯洛文尼亚- 布莱德湖、朱利安阿尔卑斯山、壮观的秋色。比邻近的奥地利或意大利更实惠。

Agent 在提供个性化推荐之前,通过交互式问题收集了全面的需求——无需假设,无需迭代。

快速上手

1. 添加依赖:
<dependency> <groupId>org.springaicommunity</groupId> <artifactId>spring-ai-agent-utils</artifactId> <version>0.3.0</version></dependency>
2. 配置你的 Agent:
ChatClient chatClient = chatClientBuilder .defaultTools(AskUserQuestionTool.builder() .questionHandler(this::handleQuestions) .build()) .build();
3. 实现你的 QuestionHandler,可以参考下文的控制台或 Web 示例。

当 Agent 需要澄清时会自动调用该工具,并使用答案提供定制化的解决方案。

QuestionHandler 示例

基于控制台的 QuestionHandler

一个基于控制台的实现:

基于 Web 的 QuestionHandler

对于 Web 应用,使用 CompletableFuture 来桥接异步 UI 交互与同步 QuestionHandler API。通过 WebSocket/SSE 向前端发送问题,并在 future.get() 上阻塞。当用户通过 REST 端点提交答案时完成 future。

总结

AskUserQuestionTool 将 AI Agent 从基于假设的响应者转变为在行动前收集需求的协作伙伴,从第一次尝试就提供与你需求完全对齐的答案。

本系列即将推出的内容:

• 使用 TodoWriteTool 进行任务管理- 透明地跟踪多步骤工作流

• 分层子 Agent- 构建具有专门子 Agent 的复杂多 Agent 架构

开始使用 ask-user-question-demo 进行实验吧。

学习资源推荐

如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!​

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示

​因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

四、AI大模型商业化落地方案

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

http://www.jsqmd.com/news/293647/

相关文章:

  • AI大模型:程序员的2026新机遇窗口【建议收藏】
  • 个人介绍(mjhcsp)
  • 2026缠膜机行业佼佼者:哪些公司值得你选择,无人化缠绕包装机/套膜包装机/自动绕膜机,缠膜机联系方式怎么选择
  • 视频制作优选方案:2026年4A公司口碑推荐实战指南,视频制作大型公司优选实力品牌
  • 2026优质油水分离器厂家推荐:行业领先品牌盘点
  • 信创环境下,网页文件上传下载有哪些推荐的解决方案?
  • 国企项目网页开发,文件上传下载有哪些实用的解决方案?
  • 国防军工网页项目,如何选择文件上传下载的解决方案?
  • JS截屏内容粘贴到CKEDITOR为何无法生成高清图?
  • 2026年性价比高的演出服厂家,广东汇杰服饰是成人演出服优质生产商
  • CKEDITOR前端粘贴图片如何触发PHP后台自动转存?
  • 2025年广东省职业院校技能大赛高职组“区块链技术应用”竞赛试题(二) - 实践
  • 防水施工公司选哪家好,上海大友建设集团性价比高排前十
  • 跨平台CKEDITOR插件如何实现图片粘贴即传PHP服务器?
  • 2025年市面上评价高的非标设备机架公司推荐,非标设备机架怎么选择技术领航者深度解析
  • 基于MPPT和PI控制器的光伏蓄电池微电网能量管理系统simulink建模与仿真
  • 规范驱动研发的几点思考
  • 2026年值得关注的油脂分离器厂家推荐
  • 2026进口油脂分离器品牌推荐及行业应用参考
  • 2026商业广场线性排水沟推荐:选型要点与高效方案解析
  • 2026市政道路树脂线性排水沟推荐及选型参考
  • 接口通讯学习(day06):串行通信核心标准深度解析:UART、RS-232、RS-422与RS-485 - 指南
  • 【品牌出海】店铺乱得像“杂货铺”?揭秘 AI 如何批量统一图片风格,3 秒打造国际大牌感!
  • 使用conda创建的虚拟环境在哪个文件下
  • 如何使用CONDA创建python 3.12虚拟环境
  • 启动Docker中DIFY或者Ragflow的命令
  • Python中的强大时间序列预测工具:Facebook Prophet
  • 达梦(DM) vs Vastbase 完整对比报告
  • 完整教程:WSL子系统(Ubuntu)安装Docker
  • 2026年盐城中考复读个性化机构推荐,鸿文学校分层教学提升