Commit 4afa67f34ea10cb0ed20b3c6ce5d14647eab2d0f

Authored by YunaiV
1 parent 9b2f2f58

feat:【ai 大模型】Tool 校验是否存在时,基于 ToolCallbackResolver,更好兼容 @Tool 注解的场景

yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/service/model/AiToolServiceImpl.java
1 package cn.iocoder.yudao.module.ai.service.model; 1 package cn.iocoder.yudao.module.ai.service.model;
2 2
3 -import cn.hutool.extra.spring.SpringUtil;  
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 import cn.iocoder.yudao.framework.common.util.object.BeanUtils; 4 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
6 import cn.iocoder.yudao.module.ai.controller.admin.model.vo.tool.AiToolPageReqVO; 5 import cn.iocoder.yudao.module.ai.controller.admin.model.vo.tool.AiToolPageReqVO;
@@ -8,7 +7,8 @@ import cn.iocoder.yudao.module.ai.controller.admin.model.vo.tool.AiToolSaveReqVO @@ -8,7 +7,8 @@ import cn.iocoder.yudao.module.ai.controller.admin.model.vo.tool.AiToolSaveReqVO
8 import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiToolDO; 7 import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiToolDO;
9 import cn.iocoder.yudao.module.ai.dal.mysql.model.AiToolMapper; 8 import cn.iocoder.yudao.module.ai.dal.mysql.model.AiToolMapper;
10 import jakarta.annotation.Resource; 9 import jakarta.annotation.Resource;
11 -import org.springframework.beans.factory.NoSuchBeanDefinitionException; 10 +import org.springframework.ai.tool.ToolCallback;
  11 +import org.springframework.ai.tool.resolution.ToolCallbackResolver;
12 import org.springframework.stereotype.Service; 12 import org.springframework.stereotype.Service;
13 import org.springframework.validation.annotation.Validated; 13 import org.springframework.validation.annotation.Validated;
14 14
@@ -31,6 +31,9 @@ public class AiToolServiceImpl implements AiToolService { @@ -31,6 +31,9 @@ public class AiToolServiceImpl implements AiToolService {
31 @Resource 31 @Resource
32 private AiToolMapper toolMapper; 32 private AiToolMapper toolMapper;
33 33
  34 + @Resource
  35 + private ToolCallbackResolver toolCallbackResolver;
  36 +
34 @Override 37 @Override
35 public Long createTool(AiToolSaveReqVO createReqVO) { 38 public Long createTool(AiToolSaveReqVO createReqVO) {
36 // 校验名称是否存在 39 // 校验名称是否存在
@@ -70,9 +73,8 @@ public class AiToolServiceImpl implements AiToolService { @@ -70,9 +73,8 @@ public class AiToolServiceImpl implements AiToolService {
70 } 73 }
71 74
72 private void validateToolNameExists(String name) { 75 private void validateToolNameExists(String name) {
73 - try {  
74 - SpringUtil.getBean(name);  
75 - } catch (NoSuchBeanDefinitionException e) { 76 + ToolCallback toolCallback = toolCallbackResolver.resolve(name);
  77 + if (toolCallback == null) {
76 throw exception(TOOL_NAME_NOT_EXISTS, name); 78 throw exception(TOOL_NAME_NOT_EXISTS, name);
77 } 79 }
78 } 80 }