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 1 package cn.iocoder.yudao.module.ai.service.model;
2 2  
3   -import cn.hutool.extra.spring.SpringUtil;
4 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 4 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
6 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 import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiToolDO;
9 8 import cn.iocoder.yudao.module.ai.dal.mysql.model.AiToolMapper;
10 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 12 import org.springframework.stereotype.Service;
13 13 import org.springframework.validation.annotation.Validated;
14 14  
... ... @@ -31,6 +31,9 @@ public class AiToolServiceImpl implements AiToolService {
31 31 @Resource
32 32 private AiToolMapper toolMapper;
33 33  
  34 + @Resource
  35 + private ToolCallbackResolver toolCallbackResolver;
  36 +
34 37 @Override
35 38 public Long createTool(AiToolSaveReqVO createReqVO) {
36 39 // 校验名称是否存在
... ... @@ -70,9 +73,8 @@ public class AiToolServiceImpl implements AiToolService {
70 73 }
71 74  
72 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 78 throw exception(TOOL_NAME_NOT_EXISTS, name);
77 79 }
78 80 }
... ...