fix:【AI 大模型】UserProfileQueryToolFunction 没有参数,会报错

This commit is contained in:
YunaiV 2025-07-14 19:50:02 +08:00
parent c96f6bb360
commit e50250449a

View File

@ -7,6 +7,8 @@ import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import com.fasterxml.jackson.annotation.JsonClassDescription; import com.fasterxml.jackson.annotation.JsonClassDescription;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyDescription;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@ -17,7 +19,7 @@ import org.springframework.stereotype.Component;
import java.util.function.BiFunction; import java.util.function.BiFunction;
/** /**
* 工具当前用户信息查询 * 工具用户信息查询
* *
* 同时也是展示 ToolContext 上下文的使用 * 同时也是展示 ToolContext 上下文的使用
* *
@ -31,8 +33,17 @@ public class UserProfileQueryToolFunction
private AdminUserApi adminUserApi; private AdminUserApi adminUserApi;
@Data @Data
@JsonClassDescription("当前用户信息查询") @JsonClassDescription("用户信息查询")
public static class Request { } public static class Request {
/**
* 用户编号
*/
@JsonProperty(value = "id")
@JsonPropertyDescription("用户编号例如说1。如果查询自己则 id 为空")
private Long id;
}
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@ -61,13 +72,19 @@ public class UserProfileQueryToolFunction
@Override @Override
public Response apply(Request request, ToolContext toolContext) { public Response apply(Request request, ToolContext toolContext) {
LoginUser loginUser = (LoginUser) toolContext.getContext().get(AiUtils.TOOL_CONTEXT_LOGIN_USER);
Long tenantId = (Long) toolContext.getContext().get(AiUtils.TOOL_CONTEXT_TENANT_ID); Long tenantId = (Long) toolContext.getContext().get(AiUtils.TOOL_CONTEXT_TENANT_ID);
if (loginUser == null | tenantId == null) { if (tenantId == null) {
return null; return new Response();
}
if (request.getId() == null) {
LoginUser loginUser = (LoginUser) toolContext.getContext().get(AiUtils.TOOL_CONTEXT_LOGIN_USER);
if (loginUser == null) {
return new Response();
}
request.setId(loginUser.getId());
} }
return TenantUtils.execute(tenantId, () -> { return TenantUtils.execute(tenantId, () -> {
AdminUserRespDTO user = adminUserApi.getUser(loginUser.getId()); AdminUserRespDTO user = adminUserApi.getUser(request.getId());
return BeanUtils.toBean(user, Response.class); return BeanUtils.toBean(user, Response.class);
}); });
} }