From a912660a2156d5fea43d9aeb718a7dbae2133657 Mon Sep 17 00:00:00 2001 From: liu Date: Sun, 28 Apr 2024 13:55:32 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/supervision/handler/gpt/AnswerQuestionHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kbqa-graph/src/main/java/com/supervision/handler/gpt/AnswerQuestionHandler.java b/kbqa-graph/src/main/java/com/supervision/handler/gpt/AnswerQuestionHandler.java index e3e4dcf..008f682 100644 --- a/kbqa-graph/src/main/java/com/supervision/handler/gpt/AnswerQuestionHandler.java +++ b/kbqa-graph/src/main/java/com/supervision/handler/gpt/AnswerQuestionHandler.java @@ -21,7 +21,7 @@ public class AnswerQuestionHandler { "\"\"\"{}\"\"\"\n" + "同时,有一个和用户的问答过程的记录供你参考以提供更精确的回答,内容是:" + "\"\"\"{}\"\"\"\n" + - "请用不超过 100 个词的长度准确和详细的回答用户的问题。回答一定要忠于原文,简洁但不丢信息,不要胡乱编造。请直接给我最终答案,不要反问"; + "请用不超过 100 个词的长度准确和详细的回答用户的问题。注意别让用户知道这个政策文档。回答一定要忠于原文,简洁但不丢信息,不要胡乱编造。请直接给我最终答案,不要反问"; String askRecordTemplate = "问:{}\n 用户答:{};\n"; StringBuilder askRecord = new StringBuilder(); for (Map.Entry entry : talkRecord.entrySet()) { From c32f69e8455b438fdcb9ea563dd951dc21afcd6f Mon Sep 17 00:00:00 2001 From: liu Date: Sun, 28 Apr 2024 13:56:18 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/supervision/handler/gpt/AnswerQuestionHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kbqa-graph/src/main/java/com/supervision/handler/gpt/AnswerQuestionHandler.java b/kbqa-graph/src/main/java/com/supervision/handler/gpt/AnswerQuestionHandler.java index 008f682..cac21bc 100644 --- a/kbqa-graph/src/main/java/com/supervision/handler/gpt/AnswerQuestionHandler.java +++ b/kbqa-graph/src/main/java/com/supervision/handler/gpt/AnswerQuestionHandler.java @@ -42,7 +42,7 @@ public class AnswerQuestionHandler { public String answerSingleQuestionNew(String question, Map> detailMap) { String template = "作为AI助手,你的任务是帮助用户查找和理解特定政务的政策内容并给于用户答案。在这个场景中,你将使用政策内容来回答用户问题:{}。请根据政策内容\n" + "\"\"\"{}\"\"\"\n" + - "并用不超过 100 个词的长度准确和详细的回答用户的问题。回答一定要忠于原文,简洁但不丢信息,不要胡乱编造。请直接给我最终答案,不要反问"; + "并用不超过 100 个词的长度准确和详细的回答用户的问题。注意别让用户知道这个政策文档。回答一定要忠于原文,简洁但不丢信息,不要胡乱编造。请直接给我最终答案,不要反问"; List messageList = new ArrayList<>(); messageList.add(new MessageDTO("user", StrUtil.format(template, question, JSONUtil.toJsonStr(detailMap)))); From 6d72e22bd2957fa77af4ad653c36d505b82a3cb8 Mon Sep 17 00:00:00 2001 From: liu Date: Sun, 28 Apr 2024 15:05:30 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E7=A6=81=E7=94=A8=E7=BD=91=E7=BB=9C?= =?UTF-8?q?=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/supervision/ai/dto/ChatReqDTO.java | 2 ++ .../main/java/com/supervision/ai/dto/ToolDTO.java | 13 +++++++++++++ .../java/com/supervision/ai/dto/WebSearchDTO.java | 10 ++++++++++ 3 files changed, 25 insertions(+) create mode 100644 kbqa-graph/src/main/java/com/supervision/ai/dto/ToolDTO.java create mode 100644 kbqa-graph/src/main/java/com/supervision/ai/dto/WebSearchDTO.java diff --git a/kbqa-graph/src/main/java/com/supervision/ai/dto/ChatReqDTO.java b/kbqa-graph/src/main/java/com/supervision/ai/dto/ChatReqDTO.java index 6bf78b1..c2eef44 100644 --- a/kbqa-graph/src/main/java/com/supervision/ai/dto/ChatReqDTO.java +++ b/kbqa-graph/src/main/java/com/supervision/ai/dto/ChatReqDTO.java @@ -14,4 +14,6 @@ public class ChatReqDTO { private Float temperature = 0.01f; private List messages; + + private List tools; } diff --git a/kbqa-graph/src/main/java/com/supervision/ai/dto/ToolDTO.java b/kbqa-graph/src/main/java/com/supervision/ai/dto/ToolDTO.java new file mode 100644 index 0000000..9062f0a --- /dev/null +++ b/kbqa-graph/src/main/java/com/supervision/ai/dto/ToolDTO.java @@ -0,0 +1,13 @@ +package com.supervision.ai.dto; + +import lombok.Data; + +import java.util.List; + +@Data +public class ToolDTO { + + private String type = "web_search"; + + private WebSearchDTO web_search; +} diff --git a/kbqa-graph/src/main/java/com/supervision/ai/dto/WebSearchDTO.java b/kbqa-graph/src/main/java/com/supervision/ai/dto/WebSearchDTO.java new file mode 100644 index 0000000..f3bf887 --- /dev/null +++ b/kbqa-graph/src/main/java/com/supervision/ai/dto/WebSearchDTO.java @@ -0,0 +1,10 @@ +package com.supervision.ai.dto; + +import lombok.Data; + +@Data +public class WebSearchDTO { + + private Boolean enable = false; + +} From 25eeb2d123e3fac8c76c9b519b00374f48b4b043 Mon Sep 17 00:00:00 2001 From: liu Date: Tue, 30 Apr 2024 10:44:28 +0800 Subject: [PATCH 4/5] =?UTF-8?q?AiUtil=E6=9B=B4=E6=8D=A2=E4=B8=BA=E6=96=B0?= =?UTF-8?q?=E7=9A=84apiKey?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kbqa-graph/src/main/java/com/supervision/ai/AiUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kbqa-graph/src/main/java/com/supervision/ai/AiUtil.java b/kbqa-graph/src/main/java/com/supervision/ai/AiUtil.java index f9390e6..ed70bfc 100644 --- a/kbqa-graph/src/main/java/com/supervision/ai/AiUtil.java +++ b/kbqa-graph/src/main/java/com/supervision/ai/AiUtil.java @@ -19,7 +19,7 @@ import java.util.Map; @Slf4j public class AiUtil { - private static final String API_KEY = "789c02fa1000afd951145efff01e0461.tGLSHnIsiEEiWNNN"; + private static final String API_KEY = "6e91c91fc9da1f19f0cbaad0d31d90ee.Rsb3KSMJskIpQjhc"; private static final String TOKEN; From c5f11d6f476e14b745c59b0abdf7123d0b640a1e Mon Sep 17 00:00:00 2001 From: liu Date: Mon, 6 May 2024 15:31:54 +0800 Subject: [PATCH 5/5] =?UTF-8?q?AiUtil=E6=9B=B4=E6=8D=A2=E4=B8=BA=E6=96=B0?= =?UTF-8?q?=E7=9A=84apiKey?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/supervision/ai/AiUtil.java | 2 +- .../test/java/com/supervision/AskTest.java | 95 ------------------- 2 files changed, 1 insertion(+), 96 deletions(-) delete mode 100644 kbqa-graph/src/test/java/com/supervision/AskTest.java diff --git a/kbqa-graph/src/main/java/com/supervision/ai/AiUtil.java b/kbqa-graph/src/main/java/com/supervision/ai/AiUtil.java index ed70bfc..f9390e6 100644 --- a/kbqa-graph/src/main/java/com/supervision/ai/AiUtil.java +++ b/kbqa-graph/src/main/java/com/supervision/ai/AiUtil.java @@ -19,7 +19,7 @@ import java.util.Map; @Slf4j public class AiUtil { - private static final String API_KEY = "6e91c91fc9da1f19f0cbaad0d31d90ee.Rsb3KSMJskIpQjhc"; + private static final String API_KEY = "789c02fa1000afd951145efff01e0461.tGLSHnIsiEEiWNNN"; private static final String TOKEN; diff --git a/kbqa-graph/src/test/java/com/supervision/AskTest.java b/kbqa-graph/src/test/java/com/supervision/AskTest.java deleted file mode 100644 index 741070d..0000000 --- a/kbqa-graph/src/test/java/com/supervision/AskTest.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.supervision; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.io.FileUtil; -import cn.hutool.core.io.file.FileReader; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.poi.excel.ExcelReader; -import cn.hutool.poi.excel.ExcelUtil; -import cn.hutool.poi.excel.ExcelWriter; -import com.supervision.service.AskService; -import com.supervision.vo.SingleTalkReqVO; -import com.supervision.vo.SingleTalkResVO; -import lombok.extern.slf4j.Slf4j; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.nio.charset.Charset; -import java.util.List; - -@Slf4j -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@RunWith(SpringJUnit4ClassRunner.class) -public class AskTest { - - @Autowired - private AskService askService; - - @Test - public void test() throws IOException { - // 从excel中获取问题,开始循环调用 - ExcelReader reader = ExcelUtil.getReader("/Users/flevance/Desktop/知识图谱/正常退休业务问题梳理_0422.xlsx", 1); - File file = FileUtil.file("/Users/flevance/Java/KBQA/test.log"); - ExcelWriter writer = ExcelUtil.getWriter("/Users/flevance/Desktop/知识图谱/正常退休业务问题梳理_0422_output.xlsx", "Sheet2"); - - // 从第一行开始读取 - List> readList = reader.read(1); - for (int i = 0; i < readList.size(); i++) { - List objects = readList.get(i); - SingleTalkReqVO singleTalkReqVO = new SingleTalkReqVO(); - singleTalkReqVO.setUserTalk(String.valueOf(objects.get(1))); - SingleTalkResVO singleTalkResVO = null; - try { - singleTalkResVO = askService.singleTalk(singleTalkReqVO); - } catch (Exception e) { - log.info("出现异常,结束"); - } - FileReader fileReader = new FileReader(file); - List strings = fileReader.readLines(); - int y = i + 1; - strings.stream().filter(e -> StrUtil.contains(e, "identifyIntent开始识别意图:")).findAny().ifPresent(e -> { - String s = StrUtil.subAfter(e, "identifyIntent开始识别意图:", true); - writer.writeCellValue(2, y, s); - }); - strings.stream().filter(e -> StrUtil.contains(e, "identifyIntent意图识别结果为:")).findAny().ifPresent(e -> { - String s = StrUtil.subAfter(e, "identifyIntent意图识别结果为:", true); - writer.writeCellValue(3, y, s); - }); - strings.stream().filter(e -> StrUtil.contains(e, "itemExtractByPossibleItemWithExample查询语句为:")).findAny().ifPresent(e -> { - String s = StrUtil.subAfter(e, "itemExtractByPossibleItemWithExample查询语句为:", true); - writer.writeCellValue(4, y, s); - }); - strings.stream().filter(e -> StrUtil.contains(e, "itemExtractByPossibleItemWithExample结果为:")).findAny().ifPresent(e -> { - String s = StrUtil.subAfter(e, "itemExtractByPossibleItemWithExample结果为:", true); - writer.writeCellValue(5, y, s); - }); - strings.stream().filter(e -> StrUtil.contains(e, "answerQuestion的prompt是:")).findAny().ifPresent(e -> { - String s = StrUtil.subAfter(e, "answerQuestion的prompt是:", true); - writer.writeCellValue(6, y, s); - }); - SingleTalkResVO finalSingleTalkResVO = singleTalkResVO; - strings.stream().filter(e -> StrUtil.contains(e, "answerQuestion的答案是:")).findAny().ifPresent(e -> { - String s = StrUtil.subAfter(e, "answerQuestion的答案是:", true); - if (ObjectUtil.isNotNull(finalSingleTalkResVO)) { - writer.writeCellValue(7, y, finalSingleTalkResVO.getAnswerText()); - } - }); - writer.flush(); - BufferedWriter writer1 = FileUtil.getWriter(file, Charset.defaultCharset(), false); - writer1.write(""); - writer1.flush(); - writer1.close(); - } - - - } - -}