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

This commit is contained in:
YunaiV
2025-08-26 13:57:12 +08:00
parent 9b2f2f581b
commit 4afa67f34e

View File

@@ -1,6 +1,5 @@
package cn.iocoder.yudao.module.ai.service.model; package cn.iocoder.yudao.module.ai.service.model;
import cn.hutool.extra.spring.SpringUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.ai.controller.admin.model.vo.tool.AiToolPageReqVO; 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
import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiToolDO; import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiToolDO;
import cn.iocoder.yudao.module.ai.dal.mysql.model.AiToolMapper; import cn.iocoder.yudao.module.ai.dal.mysql.model.AiToolMapper;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.ai.tool.ToolCallback;
import org.springframework.ai.tool.resolution.ToolCallbackResolver;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@@ -31,6 +31,9 @@ public class AiToolServiceImpl implements AiToolService {
@Resource @Resource
private AiToolMapper toolMapper; private AiToolMapper toolMapper;
@Resource
private ToolCallbackResolver toolCallbackResolver;
@Override @Override
public Long createTool(AiToolSaveReqVO createReqVO) { public Long createTool(AiToolSaveReqVO createReqVO) {
// 校验名称是否存在 // 校验名称是否存在
@@ -70,9 +73,8 @@ public class AiToolServiceImpl implements AiToolService {
} }
private void validateToolNameExists(String name) { private void validateToolNameExists(String name) {
try { ToolCallback toolCallback = toolCallbackResolver.resolve(name);
SpringUtil.getBean(name); if (toolCallback == null) {
} catch (NoSuchBeanDefinitionException e) {
throw exception(TOOL_NAME_NOT_EXISTS, name); throw exception(TOOL_NAME_NOT_EXISTS, name);
} }
} }