Spring AI ToolCallbackProvider 实现类详解

ToolCallbackProvider 是 Spring AI 中用于提供工具回调的接口。本文将详细介绍其主要实现类及其使用场景。

版本说明:本文基于 Spring AI 1.1.0 版本编写,代码示例和 API 说明均基于此版本。随着框架的不断发展,部分 API 可能会有变化,建议参考 Spring AI 官方文档获取最新信息。

接口定义

public interface ToolCallbackProvider {
ToolCallback[] getToolCallbacks();
}

主要实现类

1. MethodToolCallbackProvider

用途:包装本地带有 @Tool 注解的方法,将其转换为工具回调。

包路径org.springframework.ai.tool.method.MethodToolCallbackProvider

使用场景

示例代码

@Service
class WeatherService {
@Tool(description = "Get weather for a location")
String getWeather(@ToolParam(description = "City name") String city) {
return "Sunny, 25°C in " + city;
}
@Tool(description = "Get forecast")
String getForecast(@ToolParam String city, @ToolParam int days) {
return "Forecast for " + city " for " + days + " days";
}
}
// 配置 Bean
@Bean
MethodToolCallbackProvider weatherTools(WeatherService weatherService) {
return MethodToolCallbackProvider
.builder()
.toolObjects(weatherService) // 传入带有 @Tool 注解的对象
.build();
}
// 使用
ChatClient chatClient = ChatClient.builder(chatModel)
.defaultToolCallbacks(weatherTools)
.build();

特点

Builder 方法

MethodToolCallbackProvider.builder()
.toolObjects(object1, object2, ...) // 添加工具对象
.build();

2. SyncMcpToolCallbackProvider

用途:通过 MCP(Model Context Protocol)协议调用远程工具。

包路径org.springframework.ai.mcp.SyncMcpToolCallbackProvider

使用场景

示例代码

// 1. 创建 MCP 客户端
@Bean
McpSyncClient schedulerMcp() {
var mcp = McpClient
.sync(HttpClientSseClientTransport.builder("http://localhost:8081/").build())
.build();
mcp.initialize();
return mcp;
}
// 2. 创建 SyncMcpToolCallbackProvider
@Bean
SyncMcpToolCallbackProvider mcpToolProvider(McpSyncClient schedulerMcp) {
return SyncMcpToolCallbackProvider
.builder()
.mcpClients(schedulerMcp) // 传入 MCP 客户端
.build();
}
// 3. 使用
ChatClient chatClient = ChatClient.builder(chatModel)
.defaultToolCallbacks(mcpToolProvider)

订阅文章

订阅更新,不错过后续文章

直接通过 RSS 和 Telegram 订阅本站更新。

订阅 RSS关注 Telegram

分享文章

如果这篇有帮助,可以顺手转发

直接分享给同事、朋友,或者发到你的社交平台。

分享到 X 分享到 Telegram 邮件分享
Spring AI 提示词模板
零基础实战:用 Spring AI 写一个会“思考”的狗狗领养助手