|
|
|
@ -18,18 +18,18 @@ import java.util.*;
|
|
|
|
|
public class AiServiceImpl implements AiService {
|
|
|
|
|
|
|
|
|
|
public static final String userPromptTemplate = """
|
|
|
|
|
预设病例的基本情况如下:
|
|
|
|
|
预设病人的详细情况的如下:
|
|
|
|
|
---
|
|
|
|
|
{medicalRecord}
|
|
|
|
|
---
|
|
|
|
|
回复格式为json:{"answer":"扮演病人并根据病历回复的内容"}
|
|
|
|
|
回复格式为json:{"answer":"扮演病人,根据病人详细情况,回答的内容"}
|
|
|
|
|
""";
|
|
|
|
|
|
|
|
|
|
private static final String systemPrompt = """
|
|
|
|
|
我们现在来进行一个角色扮演连续对话场景。
|
|
|
|
|
你现在扮演一个病人的角色,我来扮演医生,我们进行模拟问诊。
|
|
|
|
|
我会给你设定病人的病历,你根据给定病历内容进行回复。
|
|
|
|
|
如果病历中的信息不能回该问题,则回复'没有注意过'或'不清楚'或'不知道',但所有问话都必须给回复!
|
|
|
|
|
需要你现在扮演一个病人,我来扮演医生,我们进行模拟问诊。
|
|
|
|
|
我会给你设定病人的详细情况,你结合问题,从内容中找到答案原文回复。
|
|
|
|
|
如果详细情况中的信息不能回该问题,则根据问题的情形,选择回复'正常'或'没有注意过'或'不清楚',但所有问话都必须给回复!
|
|
|
|
|
如果医生说'你好'等礼貌用语,你就回复'你好,医生'!!!
|
|
|
|
|
""";
|
|
|
|
|
|
|
|
|
@ -45,7 +45,7 @@ public class AiServiceImpl implements AiService {
|
|
|
|
|
List<Message> messageHistoryList = new ArrayList<>();
|
|
|
|
|
messageHistoryList.add(new SystemMessage(systemPrompt));
|
|
|
|
|
messageHistoryList.add(new UserMessage(StrUtil.format(userPromptTemplate, paramMap)));
|
|
|
|
|
messageHistoryList.add(new AssistantMessage("好的,已了解我要扮演病人的病历。已准备好对话了。"));
|
|
|
|
|
messageHistoryList.add(new AssistantMessage("好的,已了解我要扮演病人的详细情况。已准备好对话了。"));
|
|
|
|
|
messageHistoryList.add(new UserMessage(question));
|
|
|
|
|
Optional<AiTalkAnswerDTO> chat = AiChatUtil.chat(messageHistoryList, AiTalkAnswerDTO.class);
|
|
|
|
|
if (chat.isPresent()) {
|
|
|
|
|