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

spring-ai-alibaba 1.0.0.2 学习(五)——集成外部工具

摘要:Spring-AI-Alibaba工具集成简明教程,以高德天气服务为例。只需三步:1)引入starter工具包;2)申请API Key并配置;3)通过toolNames调用。核心原理是将工具封装为Function接口实现,包含自动配置、属性加载和服务实现类。开发者可参考此模式轻松接入其他外部工具,源码结构清晰,主要逻辑集中在Function接口的apply方法实现和API调用。

spring-ai-alibaba提供了许多集成外部工具的包,如高德地图,有道翻译等

简单样例

使用起来也非常方便,只需三步,以高德地图的天气服务为例

第一步:引入jar包

        <dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter-tool-calling-amap</artifactId></dependency>

引入以spring-ai-alibaba-starter-tool-calling开头的工具包,具体包含哪些工具,可以参考spring-ai-alibaba 1.0.0.2 学习(二)——jar包盘点-CSDN博客

第二步:申请权限并添加配置

到工具对应的管理平台申请相关Key(这里是高德开放平台我的应用 | 高德控制台)

并将其加入配置文件

spring.ai.alibaba.toolcalling.amap.enabled=true
spring.ai.alibaba.toolcalling.amap.api-key=your api key

具体需要配置哪些key,可以参考官方文档(Tool Calling 工具插件集成-阿里云Spring AI Alibaba官网官网)

第三步:注册为工具并使用

    @GetMapping("/tool")public String tool(String input) {return chatClient.prompt().toolNames("gaoDeGetAddressWeather").user(input).call().content();}

只需在调用大模型时,通过toolNames方法声明对应的工具名称即可使用相关服务

这些工具被封装为实现了Function接口的服务,spring-ai会自动解析为ToolCallback

进阶知识

源码解读

其实通过查看源码可以发现,接入这样一个工具并不复杂,我们也可以仿照其实现接入其他工具。

spring-ai-ablibaba-tool-calling-amap包下主要包含2部分内容:

META-INF:主要包括所需外部依赖pom.xml和配置项metadata文件等,我们在自行实现接入时仅需在pom文件中添加相关外部依赖。

java类文件:共三个类文件

        自动配置文件:AmapAutoConfiguraion,提供WeatherSearchService的Bean,并通过Description注解添加描述

        属性类:AmapProperties,加载spring.ai.alibaba.toolcalling.amap相关配置

        服务实现类:WeatherSearchService,实现了Function接口,内部包含WebClientTool、JsonParseTool两个工具和AmapProperties属性类,主要有2个功能

        1)实现Function接口的apply方法,即调用高德天气的api,实现天气查询的逻辑

        2)声明请求参数的类,并在其各属性上添加描述

通过以上分析,我们可以看出,spring-ai-ablibaba-tool-calling-amap的主要逻辑即实现的Function接口的apply方法,其通过WebClientTool调用高德地图的天气查询api得到天气结果。

http://www.lryc.cn/news/578376.html

相关文章:

  • 使用tensorflow的线性回归的例子(三)
  • 【C#】如果有一个数值如 168.0000100,如何去除末尾的无效零,只显示有效的小数位数,让DeepSeek给我们解答
  • C++11中 <cinttypes>的入门与精通
  • CppCon 2018 学习:A New Take on Polymorphism
  • Redis——常用指令汇总指南(一)
  • Electron 沙箱模式深度解析:构建更安全的桌面应用
  • 笨方法学python-习题12
  • jQuery 安装使用教程
  • 【算法】动态规划 斐波那契类型: 740. 删除并获得点数
  • 设计模式之上下文对象设计模式
  • IntelliJ IDEA 2025- 下载安装教程图文版详细教程(附激活码)
  • 使用nlohmann/json.hpp实现json文件读写
  • SpringBoot全局异常详解
  • 【实时Linux实战系列】实时数据库与数据存储方案
  • 学习threejs,使用自定义GLSL 着色器,生成艺术作品
  • 使用Rust原生实现小波卡尔曼滤波算法
  • 408第三季part1 - 操作系统 - 基本分页
  • 算法赋能管理:工厂安全与效率双突破
  • 【仿muduo库实现并发服务器】Channel模块
  • 回转体航行器控制系统中深度控制与俯仰姿态控制的解耦策略
  • 基于springboot的养老院管理系统
  • C# Linq to XML 详解:强大的XML处理工具
  • (自用)Java学习-5.21(支付宝沙箱支付、Vue总结)
  • 插入排序解析
  • sqlmap学习笔记ing(1.Easy_SQLi(时间,表单注入))
  • Django打造智能Web机器人控制平台
  • HarmonyOS应用开发高级认证知识点梳理 (一) 布局与样式
  • 记本好书:矩阵力量:线性代数全彩图解+微课+Python编程
  • 深蓝海域承建某大型保险集团产险知识库升级项目
  • 主流零信任安全产品深度介绍