From f477fdd6d71426ff84f4ae9abb15d87636acf165 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Mon, 11 Aug 2025 14:09:14 +0800 Subject: [PATCH] feat(ai): 添加 jsonTemplate 字段并更新相关逻辑 --- src/main/java/cc/mrbird/febs/ai/service/impl/AiServiceImpl.java | 22 +++++++++++++++++----- src/main/java/cc/mrbird/febs/ai/req/ai/AiRequest.java | 1 + src/main/java/cc/mrbird/febs/ai/entity/AiProductRole.java | 5 +++++ 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/ai/entity/AiProductRole.java b/src/main/java/cc/mrbird/febs/ai/entity/AiProductRole.java index 5b477b3..692437d 100644 --- a/src/main/java/cc/mrbird/febs/ai/entity/AiProductRole.java +++ b/src/main/java/cc/mrbird/febs/ai/entity/AiProductRole.java @@ -34,6 +34,11 @@ private String promptTemplate; /** + * 返回数据格式要求 + */ + private String jsonTemplate; + + /** * 小图标 */ private String iconImg; diff --git a/src/main/java/cc/mrbird/febs/ai/req/ai/AiRequest.java b/src/main/java/cc/mrbird/febs/ai/req/ai/AiRequest.java index 8978209..b97f61a 100644 --- a/src/main/java/cc/mrbird/febs/ai/req/ai/AiRequest.java +++ b/src/main/java/cc/mrbird/febs/ai/req/ai/AiRequest.java @@ -11,6 +11,7 @@ public class AiRequest { private String promptTemplate; + private String jsonTemplate; private String linkId; private String content; } diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiServiceImpl.java index fca39c3..4c84874 100644 --- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiServiceImpl.java @@ -112,14 +112,20 @@ String promptTemplate = aiProductRole.getPromptTemplate(); String linkId = aiProductRole.getLinkId(); + String jsonTemplate = aiProductRole.getJsonTemplate(); - if (!StringUtils.hasText(promptTemplate) || !StringUtils.hasText(linkId)) { - log.warn("角色配置不完整,promptTemplate 或 linkId 为空,productRoleId: {}", productRoleId); + if ( + !StringUtils.hasText(promptTemplate) + || !StringUtils.hasText(linkId) + || !StringUtils.hasText(jsonTemplate) + ) { + log.warn("角色配置不完整,promptTemplate 或 linkId 或 jsonTemplate为空,productRoleId: {}", productRoleId); return buildErrorResponse(CODE_ERROR, "角色配置不完整"); } AiRequest aiRequest = new AiRequest(); aiRequest.setPromptTemplate(promptTemplate); + aiRequest.setJsonTemplate(jsonTemplate); aiRequest.setLinkId(linkId); aiRequest.setContent(content); @@ -131,8 +137,14 @@ String promptTemplate = aiRequest.getPromptTemplate(); String linkId = aiRequest.getLinkId(); String content = aiRequest.getContent(); - if (!StringUtils.hasText(promptTemplate) || !StringUtils.hasText(linkId) || !StringUtils.hasText(content)) { - log.warn("请求参数不完整,promptTemplate: {}, linkId: {}, content: {}", promptTemplate, linkId, content); + String jsonTemplate = aiRequest.getJsonTemplate(); + if ( + !StringUtils.hasText(promptTemplate) + || !StringUtils.hasText(linkId) + || !StringUtils.hasText(content) + || !StringUtils.hasText(jsonTemplate) + ) { + log.warn("请求参数不完整,promptTemplate: {}, linkId: {}, content: {}, jsonTemplate: {}", promptTemplate, linkId, content, jsonTemplate); return buildErrorResponse(CODE_ERROR, "请求参数不完整"); } @@ -143,7 +155,7 @@ messages.add(userMessage); try { - JsonNode schemaNode = objectMapper.readTree(SCHEMA_JSON); + JsonNode schemaNode = objectMapper.readTree(jsonTemplate); ChatCompletionRequest.ChatCompletionRequestResponseFormat responseFormat = new ChatCompletionRequest.ChatCompletionRequestResponseFormat( "json_schema", new ResponseFormatJSONSchemaJSONSchemaParam( -- Gitblit v1.9.1