2025-08-11 16:25:04 +08:00
|
|
|
|
from agent_system.base import BasePrompt
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class InquirerPrompt(BasePrompt):
|
|
|
|
|
|
"""
|
|
|
|
|
|
询问者智能体的提示词模板
|
|
|
|
|
|
|
|
|
|
|
|
该提示词模板的description和instructions主体内容由Prompter智能体动态生成,
|
|
|
|
|
|
只在末尾添加固定的输入信息和输出格式要求。
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
# 基础描述,将被prompter结果动态替换
|
|
|
|
|
|
description = ""
|
|
|
|
|
|
|
|
|
|
|
|
# 基础指令,将被prompter结果动态替换
|
|
|
|
|
|
instructions = []
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
|
def get_example_output() -> str:
|
|
|
|
|
|
"""
|
|
|
|
|
|
获取示例输出格式,用于指导 LLM 生成符合要求的结构化输出
|
|
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
str: JSON 格式的示例输出
|
|
|
|
|
|
"""
|
|
|
|
|
|
return """{
|
2025-09-03 21:44:01 +08:00
|
|
|
|
"current_chat": "请问头痛什么时候开始的?疼痛程度如何?"
|
2025-08-11 16:25:04 +08:00
|
|
|
|
}"""
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
|
def get_fixed_format_instructions() -> list:
|
|
|
|
|
|
"""
|
|
|
|
|
|
获取固定的输入输出格式指令
|
|
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
list: 固定的格式指令列表
|
|
|
|
|
|
"""
|
|
|
|
|
|
return [
|
|
|
|
|
|
"",
|
|
|
|
|
|
"## 患者信息输入格式",
|
|
|
|
|
|
"- 现病史: 患者当前疾病的详细描述",
|
|
|
|
|
|
"- 既往史: 患者过往的疾病史和治疗史",
|
|
|
|
|
|
"",
|
|
|
|
|
|
"## 输出要求",
|
|
|
|
|
|
"生成的问诊问题应该:",
|
2025-09-03 21:44:01 +08:00
|
|
|
|
"1. 可以问2-3个相关问题,但总长度不超过80字",
|
|
|
|
|
|
"2. 问题必须简洁明了,符合真实医患对话习惯",
|
|
|
|
|
|
"3. 优先询问最紧急、最重要的症状信息",
|
|
|
|
|
|
"4. 使用患者容易理解的日常用语",
|
|
|
|
|
|
"5. 避免冗长的分点罗列,用自然对话方式提问",
|
|
|
|
|
|
"6. 问题要具有针对性,直接关联患者主诉",
|
2025-08-11 16:25:04 +08:00
|
|
|
|
"",
|
|
|
|
|
|
"## 示例输出格式(JSON)",
|
|
|
|
|
|
InquirerPrompt.get_example_output()
|
|
|
|
|
|
]
|