feat:【ai 大模型】Tool 校验是否存在时,基于 ToolCallbackResolver,更好兼容 @Tool 注解的场景
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user