Commit c8a584c51e29509891bb33d329174251f3327645
1 parent
73ac8f7e
fix(ai): 显式注册工具回调,修复异步线程类型解析失败
Showing
1 changed file
with
26 additions
and
1 deletions
yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/config/AiAutoConfiguration.java
| @@ -21,6 +21,9 @@ import cn.iocoder.yudao.module.ai.framework.ai.core.model.yiyan.YiYanChatModel; | @@ -21,6 +21,9 @@ import cn.iocoder.yudao.module.ai.framework.ai.core.model.yiyan.YiYanChatModel; | ||
| 21 | import cn.iocoder.yudao.module.ai.framework.ai.core.model.zhipu.ZhiPuChatModel; | 21 | import cn.iocoder.yudao.module.ai.framework.ai.core.model.zhipu.ZhiPuChatModel; |
| 22 | import cn.iocoder.yudao.module.ai.framework.ai.core.webserch.AiWebSearchClient; | 22 | import cn.iocoder.yudao.module.ai.framework.ai.core.webserch.AiWebSearchClient; |
| 23 | import cn.iocoder.yudao.module.ai.framework.ai.core.webserch.bocha.AiBoChaWebSearchClient; | 23 | import cn.iocoder.yudao.module.ai.framework.ai.core.webserch.bocha.AiBoChaWebSearchClient; |
| 24 | +import cn.iocoder.yudao.module.ai.tool.function.DirectoryListToolFunction; | ||
| 25 | +import cn.iocoder.yudao.module.ai.tool.function.UserProfileQueryToolFunction; | ||
| 26 | +import cn.iocoder.yudao.module.ai.tool.function.WeatherQueryToolFunction; | ||
| 24 | import cn.iocoder.yudao.module.ai.tool.method.PersonService; | 27 | import cn.iocoder.yudao.module.ai.tool.method.PersonService; |
| 25 | import io.micrometer.observation.ObservationRegistry; | 28 | import io.micrometer.observation.ObservationRegistry; |
| 26 | import lombok.extern.slf4j.Slf4j; | 29 | import lombok.extern.slf4j.Slf4j; |
| @@ -38,6 +41,7 @@ import org.springframework.ai.support.ToolCallbacks; | @@ -38,6 +41,7 @@ import org.springframework.ai.support.ToolCallbacks; | ||
| 38 | import org.springframework.ai.tokenizer.JTokkitTokenCountEstimator; | 41 | import org.springframework.ai.tokenizer.JTokkitTokenCountEstimator; |
| 39 | import org.springframework.ai.tokenizer.TokenCountEstimator; | 42 | import org.springframework.ai.tokenizer.TokenCountEstimator; |
| 40 | import org.springframework.ai.tool.ToolCallback; | 43 | import org.springframework.ai.tool.ToolCallback; |
| 44 | +import org.springframework.ai.tool.function.FunctionToolCallback; | ||
| 41 | import org.springframework.ai.vectorstore.milvus.autoconfigure.MilvusServiceClientProperties; | 45 | import org.springframework.ai.vectorstore.milvus.autoconfigure.MilvusServiceClientProperties; |
| 42 | import org.springframework.ai.vectorstore.milvus.autoconfigure.MilvusVectorStoreProperties; | 46 | import org.springframework.ai.vectorstore.milvus.autoconfigure.MilvusVectorStoreProperties; |
| 43 | import org.springframework.ai.vectorstore.qdrant.autoconfigure.QdrantVectorStoreProperties; | 47 | import org.springframework.ai.vectorstore.qdrant.autoconfigure.QdrantVectorStoreProperties; |
| @@ -424,7 +428,7 @@ public class AiAutoConfiguration { | @@ -424,7 +428,7 @@ public class AiAutoConfiguration { | ||
| 424 | return new AiBoChaWebSearchClient(yudaoAiProperties.getWebSearch().getApiKey()); | 428 | return new AiBoChaWebSearchClient(yudaoAiProperties.getWebSearch().getApiKey()); |
| 425 | } | 429 | } |
| 426 | 430 | ||
| 427 | - // ========== MCP 相关 ========== | 431 | + // ========== MCP & 工具相关 ========== |
| 428 | 432 | ||
| 429 | /** | 433 | /** |
| 430 | * 参考自 <a href="https://docs.spring.io/spring-ai/reference/api/mcp/mcp-client-boot-starter-docs.html">MCP Server Boot Starter</> | 434 | * 参考自 <a href="https://docs.spring.io/spring-ai/reference/api/mcp/mcp-client-boot-starter-docs.html">MCP Server Boot Starter</> |
| @@ -434,4 +438,25 @@ public class AiAutoConfiguration { | @@ -434,4 +438,25 @@ public class AiAutoConfiguration { | ||
| 434 | return List.of(ToolCallbacks.from(personService)); | 438 | return List.of(ToolCallbacks.from(personService)); |
| 435 | } | 439 | } |
| 436 | 440 | ||
| 441 | + @Bean | ||
| 442 | + public ToolCallback directoryListToolCallback(DirectoryListToolFunction function) { | ||
| 443 | + return FunctionToolCallback.builder("directory_list", function) | ||
| 444 | + .description("列出指定目录的文件列表") | ||
| 445 | + .inputType(DirectoryListToolFunction.Request.class).build(); | ||
| 446 | + } | ||
| 447 | + | ||
| 448 | + @Bean | ||
| 449 | + public ToolCallback weatherQueryToolCallback(WeatherQueryToolFunction function) { | ||
| 450 | + return FunctionToolCallback.builder("weather_query", function) | ||
| 451 | + .description("查询指定城市的天气信息") | ||
| 452 | + .inputType(WeatherQueryToolFunction.Request.class).build(); | ||
| 453 | + } | ||
| 454 | + | ||
| 455 | + @Bean | ||
| 456 | + public ToolCallback userProfileQueryToolCallback(UserProfileQueryToolFunction function) { | ||
| 457 | + return FunctionToolCallback.builder("user_profile_query", function) | ||
| 458 | + .description("用户信息查询") | ||
| 459 | + .inputType(UserProfileQueryToolFunction.Request.class).build(); | ||
| 460 | + } | ||
| 461 | + | ||
| 437 | } | 462 | } |