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得到天气结果。