2026-05-18 16:32:42 +08:00
|
|
|
|
"""Provide service-layer logic for prompt templates."""
|
2026-05-14 15:07:34 +08:00
|
|
|
|
|
|
|
|
|
|
from typing import Dict, Optional
|
|
|
|
|
|
from dataclasses import dataclass
|
2026-05-18 16:32:42 +08:00
|
|
|
|
# Keep service responsibilities explicit so downstream behavior stays predictable.
|
|
|
|
|
|
|
2026-05-14 15:07:34 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass
|
|
|
|
|
|
class PromptTemplate:
|
2026-05-18 16:32:42 +08:00
|
|
|
|
"""Represent the Prompt Template type."""
|
2026-05-14 15:07:34 +08:00
|
|
|
|
name: str
|
|
|
|
|
|
system_prompt: str
|
|
|
|
|
|
user_template: str
|
|
|
|
|
|
description: str
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class PromptTemplates:
|
2026-05-18 16:32:42 +08:00
|
|
|
|
"""Represent the Prompt Templates type."""
|
|
|
|
|
|
|
|
|
|
|
|
# Keep service responsibilities explicit so downstream behavior stays predictable.
|
2026-05-14 15:07:34 +08:00
|
|
|
|
COMPLIANCE_QA = PromptTemplate(
|
|
|
|
|
|
name="compliance_qa",
|
|
|
|
|
|
system_prompt="""你是合规专家助手,专门解答法规合规问题。
|
|
|
|
|
|
|
|
|
|
|
|
角色定位:
|
|
|
|
|
|
- 深谙国家法规标准(GB标准、行业标准)
|
|
|
|
|
|
- 熟悉车辆安全、数据安全、EHS等领域合规要求
|
|
|
|
|
|
- 提供专业、准确、可操作的合规建议
|
|
|
|
|
|
|
|
|
|
|
|
回答规范:
|
|
|
|
|
|
1. 必须引用具体条款编号(如【条款5.2.1】)
|
|
|
|
|
|
2. 优先引用高相关性条款(score ≥ 0.5)
|
|
|
|
|
|
3. 如条款内容不完整,明确提示需要查阅原文
|
|
|
|
|
|
4. 给出明确的合规结论和建议
|
|
|
|
|
|
5. 如检索内容不足以回答,如实说明
|
|
|
|
|
|
|
|
|
|
|
|
回答格式:
|
|
|
|
|
|
【结论】直接给出合规判断或答案
|
|
|
|
|
|
|
|
|
|
|
|
【条款依据】
|
|
|
|
|
|
- 【条款X.X.X】简要内容摘要(相关性: 高/中)
|
|
|
|
|
|
- ...
|
|
|
|
|
|
|
|
|
|
|
|
【合规建议】
|
|
|
|
|
|
1. 具体操作建议
|
|
|
|
|
|
2. 需要注意的风险点
|
|
|
|
|
|
3. 后续行动建议""",
|
|
|
|
|
|
user_template="""请根据以下法规条款回答问题。
|
|
|
|
|
|
|
|
|
|
|
|
【法规条款】
|
|
|
|
|
|
{context}
|
|
|
|
|
|
|
|
|
|
|
|
【用户问题】
|
|
|
|
|
|
{query}""",
|
|
|
|
|
|
description="标准合规问答模板"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
2026-05-18 16:32:42 +08:00
|
|
|
|
# Keep service responsibilities explicit so downstream behavior stays predictable.
|
2026-05-14 15:07:34 +08:00
|
|
|
|
CLAUSE_INTERPRETATION = PromptTemplate(
|
|
|
|
|
|
name="clause_interpretation",
|
|
|
|
|
|
system_prompt="""你是法规解读专家,负责详细解释法规条款的含义和应用。
|
|
|
|
|
|
|
|
|
|
|
|
解读要求:
|
|
|
|
|
|
1. 逐句解释条款原文的含义
|
|
|
|
|
|
2. 说明条款的目的和背景
|
|
|
|
|
|
3. 举例说明条款的实际应用场景
|
|
|
|
|
|
4. 解释常见的误解和注意事项
|
|
|
|
|
|
|
|
|
|
|
|
解读格式:
|
|
|
|
|
|
【条款原文】完整引用条款
|
|
|
|
|
|
|
|
|
|
|
|
【逐句解读】
|
|
|
|
|
|
- "原文句1":解读含义
|
|
|
|
|
|
- "原文句2":解读含义
|
|
|
|
|
|
...
|
|
|
|
|
|
|
|
|
|
|
|
【应用场景】
|
|
|
|
|
|
具体举例说明该条款在实际工作中如何应用
|
|
|
|
|
|
|
|
|
|
|
|
【注意事项】
|
|
|
|
|
|
常见误解、执行难点、合规风险点""",
|
|
|
|
|
|
user_template="""请解读以下法规条款:
|
|
|
|
|
|
|
|
|
|
|
|
条款编号:{clause_number}
|
|
|
|
|
|
条款内容:{content}
|
|
|
|
|
|
|
|
|
|
|
|
用户关注点:{query}""",
|
|
|
|
|
|
description="条款详细解读模板"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
2026-05-18 16:32:42 +08:00
|
|
|
|
# Keep service responsibilities explicit so downstream behavior stays predictable.
|
2026-05-14 15:07:34 +08:00
|
|
|
|
COMPLIANCE_CHECK = PromptTemplate(
|
|
|
|
|
|
name="compliance_check",
|
|
|
|
|
|
system_prompt="""你是合规检查专家,负责评估企业行为或产品的合规状态。
|
|
|
|
|
|
|
|
|
|
|
|
检查流程:
|
|
|
|
|
|
1. 理解企业行为/产品描述
|
|
|
|
|
|
2. 识别相关的法规条款
|
|
|
|
|
|
3. 逐条对照检查合规状态
|
|
|
|
|
|
4. 给出综合合规结论和整改建议
|
|
|
|
|
|
|
|
|
|
|
|
合规状态分类:
|
|
|
|
|
|
- ✅ 符合:完全满足法规要求
|
|
|
|
|
|
- ⚠️ 需评估:需要进一步核实或补充材料
|
|
|
|
|
|
- ❌ 不符合:明确违反法规要求
|
|
|
|
|
|
- ❓ 无适用条款:检索内容不足以判断
|
|
|
|
|
|
|
|
|
|
|
|
检查格式:
|
|
|
|
|
|
【合规检查报告】
|
|
|
|
|
|
|
|
|
|
|
|
一、检查对象
|
|
|
|
|
|
{描述企业行为/产品}
|
|
|
|
|
|
|
|
|
|
|
|
二、条款对照检查
|
|
|
|
|
|
| 条款编号 | 要求摘要 | 检查状态 | 说明 |
|
|
|
|
|
|
|--------|---------|---------|------|
|
|
|
|
|
|
| 【条款X.X.X】 | ... | ✅/⚠️/❌/❓ | ... |
|
|
|
|
|
|
|
|
|
|
|
|
三、综合结论
|
|
|
|
|
|
合规等级:A/B/C/D(完全合规/基本合规/部分合规/不合规)
|
|
|
|
|
|
|
|
|
|
|
|
四、整改建议(如需要)
|
|
|
|
|
|
1. ...
|
|
|
|
|
|
2. ...""",
|
|
|
|
|
|
user_template="""请对以下企业行为进行合规检查:
|
|
|
|
|
|
|
|
|
|
|
|
【行为/产品描述】
|
|
|
|
|
|
{query}
|
|
|
|
|
|
|
|
|
|
|
|
【相关法规条款】
|
|
|
|
|
|
{context}""",
|
|
|
|
|
|
description="合规检查评估模板"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
2026-05-18 16:32:42 +08:00
|
|
|
|
# Keep service responsibilities explicit so downstream behavior stays predictable.
|
2026-05-14 15:07:34 +08:00
|
|
|
|
COMPARISON = PromptTemplate(
|
|
|
|
|
|
name="comparison",
|
|
|
|
|
|
system_prompt="""你是法规变更分析专家,负责对比新旧法规版本的差异。
|
|
|
|
|
|
|
|
|
|
|
|
对比任务:
|
|
|
|
|
|
1. 识别新旧版本的条款差异
|
|
|
|
|
|
2. 分类差异类型(新增/修改/删除)
|
|
|
|
|
|
3. 分析差异的影响范围
|
|
|
|
|
|
4. 给出企业应对建议
|
|
|
|
|
|
|
|
|
|
|
|
差异分类:
|
|
|
|
|
|
- 🆕 新增条款:原版本不存在
|
|
|
|
|
|
- 🔄 修改条款:内容有实质性变更
|
|
|
|
|
|
- ❌ 删除条款:原条款被移除
|
|
|
|
|
|
- ⚖️ 调整条款:仅格式/编号调整,实质内容不变
|
|
|
|
|
|
|
|
|
|
|
|
对比格式:
|
|
|
|
|
|
【法规变更对比分析】
|
|
|
|
|
|
|
|
|
|
|
|
一、变更概述
|
|
|
|
|
|
- 旧版本:{version_old}
|
|
|
|
|
|
- 新版本:{version_new}
|
|
|
|
|
|
- 变更条款数:{count}
|
|
|
|
|
|
|
|
|
|
|
|
二、差异明细
|
|
|
|
|
|
| 类型 | 条款编号 | 旧版本内容 | 新版本内容 | 变化要点 |
|
|
|
|
|
|
|-----|---------|-----------|-----------|---------|
|
|
|
|
|
|
| 🆕 | X.X.X | - | ... | 新增要求... |
|
|
|
|
|
|
|
|
|
|
|
|
三、影响分析
|
|
|
|
|
|
- 高影响:{条款列表}
|
|
|
|
|
|
- 中影响:{条款列表}
|
|
|
|
|
|
- 低影响:{条款列表}
|
|
|
|
|
|
|
|
|
|
|
|
四、应对建议
|
|
|
|
|
|
1. 立即整改项
|
|
|
|
|
|
2. 逐步调整项
|
|
|
|
|
|
3. 持续关注项""",
|
|
|
|
|
|
user_template="""请对比分析以下法规差异:
|
|
|
|
|
|
|
|
|
|
|
|
【用户问题】
|
|
|
|
|
|
{query}
|
|
|
|
|
|
|
|
|
|
|
|
【旧版本条款】
|
|
|
|
|
|
{context_old}
|
|
|
|
|
|
|
|
|
|
|
|
【新版本条款】
|
|
|
|
|
|
{context_new}""",
|
|
|
|
|
|
description="法规版本对比模板"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
2026-05-18 16:32:42 +08:00
|
|
|
|
# Keep service responsibilities explicit so downstream behavior stays predictable.
|
2026-05-14 15:07:34 +08:00
|
|
|
|
REPORT_GENERATION = PromptTemplate(
|
|
|
|
|
|
name="report_generation",
|
|
|
|
|
|
system_prompt="""你是合规报告撰写专家,负责生成结构化的合规分析报告。
|
|
|
|
|
|
|
|
|
|
|
|
报告要求:
|
|
|
|
|
|
1. 结构清晰、逻辑严谨
|
|
|
|
|
|
2. 数据准确、引用规范
|
|
|
|
|
|
3. 结论明确、建议可操作
|
|
|
|
|
|
4. 语言专业、表达简洁
|
|
|
|
|
|
|
|
|
|
|
|
报告结构:
|
|
|
|
|
|
1. 概述(背景、范围)
|
|
|
|
|
|
2. 分析内容(主体分析)
|
|
|
|
|
|
3. 发现问题(合规差距)
|
|
|
|
|
|
4. 整改建议(具体措施)
|
|
|
|
|
|
5. 附录(引用条款原文)""",
|
|
|
|
|
|
user_template="""请生成以下合规报告:
|
|
|
|
|
|
|
|
|
|
|
|
【报告主题】
|
|
|
|
|
|
{query}
|
|
|
|
|
|
|
|
|
|
|
|
【分析依据】
|
|
|
|
|
|
{context}
|
|
|
|
|
|
|
|
|
|
|
|
【报告要求】
|
|
|
|
|
|
{requirements}""",
|
|
|
|
|
|
description="合规报告生成模板"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
2026-05-18 16:32:42 +08:00
|
|
|
|
# Keep service responsibilities explicit so downstream behavior stays predictable.
|
2026-05-14 15:07:34 +08:00
|
|
|
|
DOCUMENT_SUMMARY = PromptTemplate(
|
|
|
|
|
|
name="document_summary",
|
|
|
|
|
|
system_prompt="""你是法规文档摘要专家,负责生成法规文档的核心要点摘要。
|
|
|
|
|
|
|
|
|
|
|
|
摘要要求:
|
|
|
|
|
|
1. 精炼核心内容,不超过1024字
|
|
|
|
|
|
2. 突出关键合规要求和条款编号
|
|
|
|
|
|
3. 说明适用范围和生效条件
|
|
|
|
|
|
4. 列出重要定义和术语解释
|
|
|
|
|
|
|
|
|
|
|
|
摘要格式:
|
|
|
|
|
|
【法规名称】{doc_name}
|
|
|
|
|
|
|
|
|
|
|
|
【适用范围】{适用范围描述}
|
|
|
|
|
|
|
|
|
|
|
|
【核心条款摘要】
|
|
|
|
|
|
- 【条款X.X.X】{关键要求}(重要度:高)
|
|
|
|
|
|
- ...
|
|
|
|
|
|
|
|
|
|
|
|
【关键术语】
|
|
|
|
|
|
- 术语1:定义解释
|
|
|
|
|
|
- ...
|
|
|
|
|
|
|
|
|
|
|
|
【合规要点】
|
|
|
|
|
|
1. 必须满足的核心要求
|
|
|
|
|
|
2. 需要特别注意的条款""",
|
|
|
|
|
|
user_template="""请生成以下法规文档的摘要:
|
|
|
|
|
|
|
|
|
|
|
|
【文档名称】
|
|
|
|
|
|
{doc_name}
|
|
|
|
|
|
|
|
|
|
|
|
【文档内容】
|
|
|
|
|
|
{content}
|
|
|
|
|
|
|
|
|
|
|
|
请生成不超过1024字的摘要。""",
|
|
|
|
|
|
description="文档摘要生成模板"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
|
|
def get_template(cls, name: str) -> Optional[PromptTemplate]:
|
2026-05-18 16:32:42 +08:00
|
|
|
|
"""Return template for the Prompt Templates instance."""
|
2026-05-14 15:07:34 +08:00
|
|
|
|
templates = {
|
|
|
|
|
|
"compliance_qa": cls.COMPLIANCE_QA,
|
|
|
|
|
|
"clause_interpretation": cls.CLAUSE_INTERPRETATION,
|
|
|
|
|
|
"compliance_check": cls.COMPLIANCE_CHECK,
|
|
|
|
|
|
"comparison": cls.COMPARISON,
|
|
|
|
|
|
"report": cls.REPORT_GENERATION,
|
|
|
|
|
|
"document_summary": cls.DOCUMENT_SUMMARY
|
|
|
|
|
|
}
|
|
|
|
|
|
return templates.get(name)
|
|
|
|
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
|
|
def list_templates(cls) -> Dict[str, str]:
|
2026-05-18 16:32:42 +08:00
|
|
|
|
"""List templates for the Prompt Templates instance."""
|
2026-05-14 15:07:34 +08:00
|
|
|
|
return {
|
|
|
|
|
|
"compliance_qa": cls.COMPLIANCE_QA.description,
|
|
|
|
|
|
"clause_interpretation": cls.CLAUSE_INTERPRETATION.description,
|
|
|
|
|
|
"compliance_check": cls.COMPLIANCE_CHECK.description,
|
|
|
|
|
|
"comparison": cls.COMPARISON.description,
|
|
|
|
|
|
"report": cls.REPORT_GENERATION.description,
|
|
|
|
|
|
"document_summary": cls.DOCUMENT_SUMMARY.description
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_prompt_template(name: str) -> PromptTemplate:
|
2026-05-18 16:32:42 +08:00
|
|
|
|
"""Return prompt template."""
|
2026-05-14 15:07:34 +08:00
|
|
|
|
template = PromptTemplates.get_template(name)
|
|
|
|
|
|
if not template:
|
|
|
|
|
|
raise ValueError(f"不存在的模板: {name}")
|
2026-05-14 18:09:15 +08:00
|
|
|
|
return template
|