feat(autoconfigure): Support both FunctionCallback and ToolCallback in ToolCallingAutoConfiguration
- Extends the ToolCallingAutoConfiguration to support both FunctionCallback and ToolCallback types. - The toolCallbackResolver bean now handles both callback types through ObjectProvider injection. - Added comprehensive tests to verify the resolution of multiple function and tool callbacks. - Introduce new StaticToolCallbackProvider implementation - Update ToolCallbackProvider to return FunctionCallback[] - Migrate from List to ToolCallbackProvider in configurations - Update tests to use new provider pattern - Enhance tool callback providers to support multiple clients - Refactor AsyncMcpToolCallbackProvider and SyncMcpToolCallbackProvider to handle multiple MCP clients - Add ToolCallbackProvider support to ChatClient API - Deprecate direct tool callback list methods in favor of providers - Fix typos in Closeable class names - Update MCP documentation with new examples and usage patterns Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
This commit is contained in:
@@ -38,7 +38,7 @@ import org.springframework.ai.chat.client.advisor.api.CallAroundAdvisor;
|
||||
import org.springframework.ai.chat.client.advisor.api.CallAroundAdvisorChain;
|
||||
import org.springframework.ai.model.function.FunctionCallback;
|
||||
import org.springframework.ai.model.tool.ToolCallingManager;
|
||||
import org.springframework.ai.tool.ToolCallback;
|
||||
import org.springframework.ai.tool.ToolCallbackProvider;
|
||||
import org.springframework.ai.tool.ToolCallbacks;
|
||||
import org.springframework.ai.tool.annotation.Tool;
|
||||
import org.springframework.ai.tool.execution.DefaultToolExecutionExceptionProcessor;
|
||||
@@ -183,9 +183,8 @@ public class VertexAiGeminiPaymentTransactionMethodIT {
|
||||
public static class TestConfiguration {
|
||||
|
||||
@Bean
|
||||
public List<ToolCallback> paymentServiceTools() {
|
||||
var tools = List.of(ToolCallbacks.from(new PaymentService()));
|
||||
return tools;
|
||||
public ToolCallbackProvider paymentServiceTools() {
|
||||
return ToolCallbackProvider.from(List.of(ToolCallbacks.from(new PaymentService())));
|
||||
}
|
||||
|
||||
@Bean
|
||||
@@ -221,11 +220,11 @@ public class VertexAiGeminiPaymentTransactionMethodIT {
|
||||
|
||||
@Bean
|
||||
ToolCallingManager toolCallingManager(GenericApplicationContext applicationContext,
|
||||
List<ToolCallback> toolCallbacks, List<FunctionCallback> functionCallbacks,
|
||||
List<ToolCallbackProvider> tcps, List<FunctionCallback> functionCallbacks,
|
||||
ObjectProvider<ObservationRegistry> observationRegistry) {
|
||||
|
||||
List<FunctionCallback> allFunctionCallbacks = new ArrayList(functionCallbacks);
|
||||
allFunctionCallbacks.addAll(toolCallbacks.stream().map(tc -> (FunctionCallback) tc).toList());
|
||||
tcps.stream().map(pr -> List.of(pr.getToolCallbacks())).forEach(allFunctionCallbacks::addAll);
|
||||
|
||||
var staticToolCallbackResolver = new StaticToolCallbackResolver(allFunctionCallbacks);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user