it calls mcp tool, it uses block,I'm not sure if it's because there's a problem with my configuration
Environment
SpringAI:1.0.0-M8
application.yml
mcp:
client:
toolcallback:
enabled: true
sse:
connections:
server1:
url: http://127.0.0.1:10101
type: ASYNC
request-timeout: 30s
Original Stack Trace:
at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:87) ~[reactor-core-3.6.15.jar:3.6.15]
at reactor.core.publisher.Mono.block(Mono.java:1779) ~[reactor-core-3.6.15.jar:3.6.15]
at org.springframework.ai.mcp.AsyncMcpToolCallback.call(AsyncMcpToolCallback.java:116) ~[spring-ai-mcp-1.0.0-M8.jar:1.0.0-M8]
at org.springframework.ai.mcp.AsyncMcpToolCallback.call(AsyncMcpToolCallback.java:122) ~[spring-ai-mcp-1.0.0-M8.jar:1.0.0-M8]
at org.springframework.ai.model.tool.DefaultToolCallingManager.executeToolCall(DefaultToolCallingManager.java:205) ~[spring-ai-model-1.0.0-M8.jar:1.0.0-M8]
at org.springframework.ai.model.tool.DefaultToolCallingManager.executeToolCalls(DefaultToolCallingManager.java:128) ~[spring-ai-model-1.0.0-M8.jar:1.0.0-M8]
at org.springframework.ai.openai.OpenAiChatModel.internalCall(OpenAiChatModel.java:240) ~[spring-ai-openai-1.0.0-M8.jar:1.0.0-M8]
at org.springframework.ai.openai.OpenAiChatModel.call(OpenAiChatModel.java:179) ~[spring-ai-openai-1.0.0-M8.jar:1.0.0-M8]
at org.springframework.ai.chat.client.advisor.ChatModelCallAdvisor.adviseCall(ChatModelCallAdvisor.java:49) ~[spring-ai-client-chat-1.0.0-M8.jar:1.0.0-M8]
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.lambda$nextCall$1(DefaultAroundAdvisorChain.java:122) ~[spring-ai-client-chat-1.0.0-M8.jar:1.0.0-M8]
at io.micrometer.observation.Observation.observe(Observation.java:565) ~[micrometer-observation-1.13.12.jar:1.13.12]
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.nextCall(DefaultAroundAdvisorChain.java:119) ~[spring-ai-client-chat-1.0.0-M8.jar:1.0.0-M8]
at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.lambda$doGetObservableChatClientResponse$1(DefaultChatClient.java:513) ~[spring-ai-client-chat-1.0.0-M8.jar:1.0.0-M8]
at io.micrometer.observation.Observation.observe(Observation.java:565) ~[micrometer-observation-1.13.12.jar:1.13.12]
at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.doGetObservableChatClientResponse(DefaultChatClient.java:511) ~[spring-ai-client-chat-1.0.0-M8.jar:1.0.0-M8]
at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.doGetObservableChatClientResponse(DefaultChatClient.java:494) ~[spring-ai-client-chat-1.0.0-M8.jar:1.0.0-M8]
at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.content(DefaultChatClient.java:489) ~[spring-ai-client-chat-1.0.0-M8.jar:1.0.0-M8]
@Override
public String call(String functionInput) {
Map<String, Object> arguments = ModelOptionsUtils.jsonToMap(functionInput);
// Note that we use the original tool name here, not the adapted one from
// getToolDefinition
return this.asyncMcpClient.callTool(new CallToolRequest(this.tool.name(), arguments)).map(response -> {
if (response.isError() != null && response.isError()) {
throw new IllegalStateException("Error calling tool: " + response.content());
}
return ModelOptionsUtils.toJsonString(response.content());
}).block();
}
Comment From: GRHorn
升级至1.0.0还有同样的问题,是我哪里配置有问题吗
Comment From: GRHorn
2533 提到了这个问题,但是无论手动添加RestClient
@Bean
public RestClient.Builder builder() {
return RestClient.builder().requestFactory(new SimpleClientHttpRequestFactory());
}
还是配置
spring
http:
client:
factory: simple
都没能解决我的问题。