Commit 4afa67f34ea10cb0ed20b3c6ce5d14647eab2d0f
1 parent
9b2f2f58
feat:【ai 大模型】Tool 校验是否存在时,基于 ToolCallbackResolver,更好兼容 @Tool 注解的场景
Showing
1 changed file
with
7 additions
and
5 deletions
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 | } | ... | ... |