Spring-ai-alibaba工具
文章目录Spring AI Alibaba 工具调用实战Tool Calling版本一、依赖引入二、yml 配置三、代码案例声明式工具Tool1. 日期工具2. 天气工具普通业务方法 Tool四、注册到 ChatClientdefaultTools五、Controller 调用1. 查当前时间2. 查天气六、调用流程Spring AI Alibaba 工具调用实战Tool Calling让大模型在对话中调用你写好的 Java 方法查时间、查天气等。版本Spring Boot3.4.5spring-ai-alibaba-starter-dashscope1.1.2.1Java17Spring-ai更新速度快,请以官方为准可参考网址:Spring-ai官网Spring-ai阿里巴巴阿里百炼模型广场开发者指南(API/SDK)一、依赖引入dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdcom.alibaba.cloud.ai/groupIdartifactIdspring-ai-alibaba-starter-dashscope/artifactIdversion1.1.2.1/version/dependency!-- dashscope-sdk 可能带旧版 jsonschema-generator与 spring-ai-model 冲突时需对齐 --dependencyManagementdependenciesdependencygroupIdcom.github.victools/groupIdartifactIdjsonschema-generator/artifactIdversion4.38.0/version/dependency/dependencies/dependencyManagementdependencygroupIdcom.alibaba/groupIdartifactIddashscope-sdk-java/artifactIdversion2.22.18/versionexclusions!-- 避免与 Boot 自带的 logback 双绑 SLF4J --exclusiongroupIdorg.slf4j/groupIdartifactIdslf4j-simple/artifactId/exclusion/exclusions/dependency二、yml 配置spring:application:name:spring-tool-demoai:dashscope:api-key:${DASHSCOPE_API_KEY}chat:options:# 需支持 Tool Calling 的对话模型model:qwen-maxtemperature:0.7三、代码案例声明式工具Tool1. 日期工具Component// 交给 Spring 管理便于注入到 ChatClientpublicclassDateTool{/** * description 很重要模型靠它判断「什么时候该调这个工具」。 * 工具名默认是方法名 getCurrentDateTime。 */Tool(descriptionGet the current date and time in the users timezone)publicStringgetCurrentDateTime(){// 返回给模型的真实数据模型再组织成自然语言回复用户returnDateFormatUtil.now();// 例如 yyyy-MM-dd HH:mm:ss}}2. 天气工具普通业务方法 ToolComponentpublicclassWeatherTool{/** * 查询指定城市天气。 * district 建议用拼音如 beijing / shanghai方便模型稳定传参。 */Tool(description查询指定城市的天气情况)publicStringgetWeather(Stringdistrict){// 这里用 switch 模拟业务真实项目可调第三方天气 APIreturnswitch(district){casebeijing-天气清凉;caseshanghai-天气炎热;caseguangzhou-天气闷热;default-未知地区;};}}四、注册到 ChatClientdefaultToolsConfigurationpublicclassClientConfig{/** * 构建带默认工具的 ChatClient。 * defaultTools该 Client 每次对话都可用这些工具。 */Bean(nametoolClient)publicChatClienttoolClient(DashScopeChatModelchatModel,DateTooldateTool,WeatherToolweatherTool){returnChatClient.builder(chatModel)// 传入带 Tool 方法的对象实例即可框架会扫注解并生成 Schema.defaultTools(dateTool,weatherTool).build();}}注意若已在defaultTools注册请求里不要再写.tools(new DateTool())否则会报Multiple tools with the same name (getCurrentDateTime) founddefaultTools与单次.tools()二选一或确保工具名不重复。五、Controller 调用1. 查当前时间RestControllerpublicclassTestController{Resource(nametoolClient)privateChatClienttoolClient;/** * GET /get/currenttime * 用户说「要当前时间」→ 模型决定调用 getCurrentDateTime → 把结果组织成回答 */GetMapping(/get/currenttime)publicStringgetCurrentTime(){returntoolClient.prompt().system(You are a helpful assistant.).user(Get the current date and time in the users timezone)// 不要再 .tools(...)工具已在 defaultTools 里.call().content();}}2. 查天气RestControllerpublicclassWeatherController{Resource(nametoolClient)privateChatClienttoolClient;/** * GET /get/weather?district上海 * system 提示把中文城市转成拼音参数和 WeatherTool 的 case 对齐 */GetMapping(/get/weather)publicStringgetWeather(RequestParamStringdistrict){returntoolClient.prompt().system(你可以通过工具获取天气情况,中文请转换成拼音作为调用工具的参数,例如上海对应shanghai).user(查一下district的天气).call().content();}}六、调用流程

相关新闻

Python日志轮转实践:RotatingFileHandler与TimedRotatingFileHandler详解

Python日志轮转实践:RotatingFileHandler与TimedRotatingFileHandler详解

1. Python日志轮转的核心价值与场景日志轮转(Log Rotation)是每个Python开发者必须掌握的工程化实践。想象一下你的应用连续运行三个月后,单个日志文件膨胀到50GB的场景——不仅难以打开分析,还可能因磁盘写满导致服务崩溃。我在金…

2026/10/18 3:25:59 阅读更多 →
【AI写作变现指南】:3天掌握公众号爆款生成术,92%的运营者已悄悄启用

【AI写作变现指南】:3天掌握公众号爆款生成术,92%的运营者已悄悄启用

更多请点击: https://codechina.net 第一章:AI写作变现的核心逻辑与行业现状 AI写作变现并非简单地将模型输出直接售卖,其核心逻辑在于构建“数据—能力—场景—价值”的闭环链条:优质垂类数据训练出差异化内容生成能力&#xff…

2026/10/16 7:44:01 阅读更多 →
AnimateDiff Pro实战:从动态生成到AR与虚拟偶像应用

AnimateDiff Pro实战:从动态生成到AR与虚拟偶像应用

1. 项目概述:当AnimateDiff Pro遇上虚拟偶像与AR最近在数字内容创作圈子里,一个词被反复提及:AnimateDiff Pro。这不再是那个仅仅用于生成几秒钟动态视频的玩具了。结合“虚拟偶像直播背景”、“AR滤镜”和“数字人驱动”这些场景&#xff0c…

2026/10/16 7:54:59 阅读更多 →

最新新闻

水性醛酮树脂CT系列:提升漆膜光泽与硬度的功能助树脂

水性醛酮树脂CT系列:提升漆膜光泽与硬度的功能助树脂

做水性涂料这几年,我听得最多的反馈就三个:光泽差一点,硬度软一点,色浆放两天就返粗。这三个问题单拎出来都不算大,但放到工业漆、木器漆和油墨上,就是客户整批次退货的理由,严重一点直接丢订单…

2026/10/18 3:52:22 阅读更多 →
XERJ Autoindex + MCP 在 Windows 上的端到端实战:从安装、建索引到 Agent 检索的一站式闭环

XERJ Autoindex + MCP 在 Windows 上的端到端实战:从安装、建索引到 Agent 检索的一站式闭环

人工智能搜索引擎本地部署后端MCP 服务 【免费下载链接】xerj XERJ is the new way for AI to search data. Its autoindex capability activates agents to know your data without the token waste of grep and sed. One command indexes code, docs, logs and PDFs for sear…

2026/10/18 3:52:22 阅读更多 →
JavaScript原生四则运算计算器:从字符串拼接陷阱到精度控制

JavaScript原生四则运算计算器:从字符串拼接陷阱到精度控制

1. 这不是计算器Demo,而是前端交互逻辑的“最小可行验证”你有没有遇到过这样的场景:在表单里填两个数字,点个按钮,结果却卡在页面上不动?或者更糟——输入1和2,显示出来的却是"12"?这…

2026/10/18 3:52:22 阅读更多 →
JS高德地图设备图标实战:实时位置渲染与Marker管理优化

JS高德地图设备图标实战:实时位置渲染与Marker管理优化

1. 从一张“会说话的地图”说起:设备图标到底在解决什么问题做过物联网监控大屏、车辆调度后台或者共享设备管理平台的人,大概率都绕不开一个需求:把一堆设备的实时位置,用一张地图直观地铺出来。而“基于JS高德地图设置设备图标”…

2026/10/18 3:52:22 阅读更多 →
Unity协程底层原理与生命周期深度解析

Unity协程底层原理与生命周期深度解析

1. 协程不是“多线程”,但比多线程更难讲清楚刚接触 Unity 的开发者,十有八九会在协程(Coroutine)上栽第一个跟头。我见过太多人把StartCoroutine当成“开个后台线程”来用——结果发现 UI 还是卡、计时器不准、对象销毁后协程还在…

2026/10/18 3:52:22 阅读更多 →
从零跑通开源大模型:选型、环境、加载与推理全指南

从零跑通开源大模型:选型、环境、加载与推理全指南

很多人第一次看到“初始大模型”这个说法,第一反应是:是不是得先啃下一堆数学公式和论文?我在刚开始接触时也是这么想的,后来才发现,初始大模型这件事拆开来看,无非是两条线:一条是认知线&#…

2026/10/18 3:51:21 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/16 14:23:36 阅读更多 →