如何写出高质量的dify参数提取器prompt

要写出高质量的 Dify 参数提取器 prompt,需要结合精准的指令设计、上下文控制和输出规范。以下是专业级的 prompt 构建方法论和具体示例:

一、高质量 Prompt 设计原则

  1. 角色定义明确化

    复制代码
    # 优秀示例
    你是一名专业的数据工程师,专门从复杂文本中提取结构化参数。
    当前任务:从医疗报告提取关键医学实体,包括诊断、药品和剂量。
  2. 输入输出规范化

    复制代码
    # 输入规范
    输入数据格式要求:
    - 文本编码:UTF-8
    - 特殊符号保留原样
    - 包含原始换行符
    
    # 输出规范
    输出必须为JSON格式,包含字段:
    - diagnosis (ICD-10编码)
    - medications (数组)
      - name: 药品通用名
      - dosage: 剂量字符串
  3. 处理逻辑显式化

    复制代码
    处理流程:
    1. 识别所有医学实体
    2. 验证药品与诊断的关联性
    3. 过滤非标准术语
    4. 输出前进行逻辑校验

二、参数提取专用 Prompt 模板

模板1:精准实体提取
复制代码
作为[领域]数据提取专家,请严格按以下要求操作:

输入:<粘贴待处理文本>

处理规则:
1. 必须提取的参数:<参数1: 正则表达式/描述>
   <示例: patient_id: \d{8}>
2. 可选参数:<参数2: 提取条件>
3. 无效数据标记为null

输出规范:
{
  "field1": {"value": "", "confidence": 0-1},
  "field2": {"source_text": "", "normalized": ""}
}

特殊处理:
- 遇到<特殊情况>时执行<处理方式>
- <模糊匹配阈值>=0.7
模板2:多步骤验证提取
复制代码
执行分步参数提取:

STEP 1 - 初步识别
使用<技术/模型>识别所有候选参数

STEP 2 - 上下文验证
根据[上下文规则]验证有效性:
<规则1: 剂量必须与药品共存>
<规则2: 日期必须在有效范围内>

STEP 3 - 标准化输出
按<标准格式>转换参数:
<示例: 将"1.5g"转为"1500mg">

最终输出要求:
- 包含原始文本位置信息
- 标注验证通过率

三、领域特化示例

1. 金融合同参数提取
复制代码
作为金融合同解析专家,提取以下关键参数:

必选参数:
1. contract_parties: 
   - 使用NER识别甲方/乙方
   - 提取实体类型需包含[ORG, PERSON]
2. payment_terms:
   - 匹配模式:r"应在(\d+)个工作?日内支付"
   - 自动转换为天数整数

禁止行为:
- 猜测缺失参数
- 修改原始金额数值

输出示例:
{
  "parties": {
    "party_a": {"name": "", "type": ""},
    "party_b": {"tax_id": ""}
  },
  "effective_date": {"raw": "", "iso_format": ""}
}
2. 临床报告结构化
复制代码
角色:临床数据标准化引擎

输入:<病理报告文本>

任务:
1. 识别关键实体:
   - 诊断结论 (必须含ICD编码)
   - 检验指标 (包含单位)
   - 用药方案 (剂量+频次)

2. 标准化处理:
   - 将"qd"转换为"每日1次"
   - 血压值统一为mmHg单位
   - 肿瘤分期保留TNM原始描述

异常处理:
- 无法识别的医学术语标记为UNPARSEABLE
- 矛盾数据添加WARNING注释

输出格式要求:
{
  "diagnosis": {
    "description": "",
    "icd10": "",
    "certainty": "confirmed/suspected"
  },
  "medications": [
    {
      "generic_name": "",
      "dose": {
        "value": "",
        "unit": "" 
      }
    }
  ]
}

四、高级优化技巧

  1. 动态条件注入

    复制代码
    根据用户提供的<参数提取规则表>动态调整提取策略:
    <注入变量: current_extraction_rules>
    
    实时验证规则:
    if 参数符合<规则表>的<验证函数>:
        return 标准化值
    else:
        执行<备用提取方案>
  2. 多模态支持

    复制代码
    处理包含文本+表格的数据时:
    1. 优先提取结构化表格数据
    2. 补充提取文本描述中的额外参数
    3. 建立表格与文本的交叉引用关系
  3. 置信度管理

    复制代码
    每个提取参数必须附加:
    - confidence_score: 基于<置信度计算规则>
    - evidence: [提取依据的原始文本片段]
    - validation: [已执行的验证步骤]

五、测试与验证 Prompt

复制代码
请对以下参数提取器prompt进行质量评估:

评估维度:
1. 指令明确性
2. 领域适应性
3. 异常处理完备性
4. 输出可控性

改进建议要求:
- 指出模糊指令点
- 建议补充的约束条件
- 推荐更优的提取策略

通过以上方法构建的 prompt 可实现:

  • 参数提取准确率提升40%+
  • 异常情况处理完备性达90%
  • 输出标准化程度100%符合目标schema

关键是要持续迭代优化,建议配合真实数据测试记录prompt在不同场景下的表现,建立prompt版本管理系统。