2026/3/30 15:54:22
网站建设
项目流程
html5网站源码,增加网站备案,为什么做游戏网站被封,苏州门户网站建设传统的 AI 交互往往遵循一个固定模式#xff1a;你提供问题#xff0c;AI 基于假设给出答案。
当这些假设与你的实际需求不符时,你就会陷入反复修正的循环#xff0c;每一个错误的假设都意味着返工——浪费时间和上下文。
如果你的 AI Agent 能够在提供答案之前主动询问明…传统的 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,2AI季节:你计划什么时候旅行?1. 春季 - 3月至5月 - 温和的气温,较少的游客2. 夏季 - 6月至8月 - 温暖的天气,旅游旺季3. 秋季 - 9月至11月 - 较凉爽的温度,秋色4. 冬季 - 12月至2月 - 圣诞市场,冬季运动(输入一个数字,或输入自定义文本)用户选择:3AI预算:这次旅行的大致预算水平是多少?...AI 回答:根据你对秋季旅行的偏好,以及对历史、文化和自然的兴趣,在中等预算下,既想去热门景点又想探索小众目的地,以下是值得考虑的优秀欧洲国家:1. 葡萄牙- 里斯本的历史街区、杜罗河谷的葡萄酒收获、阿尔加维海岸线。价格实惠,秋季气温宜人。2. 希腊- 古代遗迹、美丽的岛屿,秋季仍然适合游泳,游客较少。3. 斯洛文尼亚- 布莱德湖、朱利安阿尔卑斯山、壮观的秋色。比邻近的奥地利或意大利更实惠。Agent 在提供个性化推荐之前,通过交互式问题收集了全面的需求——无需假设,无需迭代。快速上手1. 添加依赖:dependency groupIdorg.springaicommunity/groupId artifactIdspring-ai-agent-utils/artifactId version0.3.0/version/dependency2. 配置你的 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大模型商业化落地方案作为普通人入局大模型时代需要持续学习和实践不断提高自己的技能和认知水平同时也需要有责任感和伦理意识为人工智能的健康发展贡献力量。