ai-business-write/技术文档/字段与提示词规则说明.md

16 KiB
Raw Blame History

字段与提示词规则对应关系说明

一、概述

本文档详细说明系统中所有字段的定义、存储位置,以及大模型抽取规则(提示词)的构建方式和存储位置。

二、字段存储位置

2.1 数据库表结构

字段信息存储在 MySQL数据库 中,涉及以下三个表:

1. f_polic_field - 字段定义表

  • 存储内容:所有字段的基本定义信息
  • 关键字段
    • id: 字段ID
    • tenant_id: 租户ID固定值615873064429507639
    • name: 字段名称(中文显示名)
    • filed_code: 字段编码(注意:表中字段名拼写为 filed_code,不是 field_code
    • field_type: 字段类型1=输入字段2=输出字段)
    • state: 状态0=未启用1=启用)

2. f_polic_file_config - 文件模板配置表

  • 存储内容:文档模板的基本配置信息
  • 关键字段
    • id: 文件配置ID
    • name: 文件名称(如:"初步核实审批表"
    • input_data: JSON格式的配置数据包含 template_codebusiness_type
    • file_path: MinIO存储路径

3. f_polic_file_field - 文件和字段关联表

  • 存储内容:文件模板与输出字段的关联关系
  • 关键字段
    • file_id: 文件配置ID关联 f_polic_file_config.id
    • filed_id: 字段ID关联 f_polic_field.id

2.2 数据库连接信息

  • IP地址: 152.136.177.240
  • 端口: 5012
  • 用户名: finyx
  • 密码: 6QsGK6MpePZDE57Z
  • 数据库名称: finyx

2.3 字段查询逻辑

字段查询代码位置:services/field_service.py

输入字段查询field_type=1

# 位置services/field_service.py 第82-92行
sql_input = """
    SELECT f.id, f.name, f.filed_code as field_code, f.field_type
    FROM f_polic_field f
    WHERE f.tenant_id = %s
    AND f.field_type = 1
    AND (f.filed_code = 'clue_info' OR f.filed_code = 'target_basic_info_clue')
    ORDER BY f.id
"""

输出字段查询field_type=2

# 位置services/field_service.py 第44-53行
sql = """
    SELECT f.id, f.name, f.filed_code as field_code, f.field_type
    FROM f_polic_field f
    INNER JOIN f_polic_file_field ff ON f.id = ff.filed_id
    INNER JOIN f_polic_file_config fc ON ff.file_id = fc.id
    WHERE f.tenant_id = %s
    AND f.field_type = 2
    AND fc.name = '初步核实审批表'
    ORDER BY f.id
"""

注意:目前系统只支持"初步核实审批表",输出字段通过文件名称关联查询。

三、当前所有字段列表

3.1 输入字段field_type=1

字段名称 字段编码 (field_code) 说明 存储位置
线索信息 clue_info 线索信息用于AI解析 f_polic_field
被核查人员工作基本情况线索 target_basic_info_clue 被核查人员工作基本情况线索用于AI解析 f_polic_field

3.2 输出字段field_type=2

字段名称 字段编码 (field_code) 说明 存储位置
被核查人姓名 target_name 被核查人姓名 f_polic_field
被核查人员单位及职务 target_organization_and_position 被核查人员单位及职务(包括兼职) f_polic_field
被核查人员单位 target_organization 被核查人员单位 f_polic_field
被核查人员职务 target_position 被核查人员职务 f_polic_field
被核查人员性别 target_gender 被核查人员性别(男/女) f_polic_field
被核查人员出生年月 target_date_of_birth 被核查人员出生年月YYYYMM格式 f_polic_field
被核查人员年龄 target_age 被核查人员年龄(数字,单位:岁) f_polic_field
被核查人员文化程度 target_education_level 被核查人员文化程度(如:本科、大专、高中等) f_polic_field
被核查人员政治面貌 target_political_status 被核查人员政治面貌(中共党员、群众等) f_polic_field
被核查人员职级 target_professional_rank 被核查人员职级(如:正处级) f_polic_field
线索来源 clue_source 线索来源 f_polic_field
主要问题线索 target_issue_description 主要问题线索描述 f_polic_field
初步核实审批表承办部门意见 department_opinion 初步核实审批表承办部门意见 f_polic_field
初步核实审批表填表人 filler_name 初步核实审批表填表人 f_polic_field

3.3 谈话前安全风险评估表字段(带默认值)

字段名称 字段编码 (field_code) 说明 默认值 存储位置
被核查人员家庭情况 target_family_situation 被核查人员家庭情况 家庭关系和谐稳定 f_polic_field
被核查人员社会关系 target_social_relations 被核查人员社会关系 社会交往较多,人机关系基本正常 f_polic_field
被核查人员健康状况 target_health_status 被核查人员健康状况 良好 f_polic_field
被核查人员性格特征 target_personality 被核查人员性格特征 开朗 f_polic_field
被核查人员承受能力 target_tolerance 被核查人员承受能力 较强 f_polic_field
被核查人员涉及问题严重程度 target_issue_severity 被核查人员涉及问题严重程度 较轻 f_polic_field
被核查人员涉及其他问题的可能性 target_other_issues_possibility 被核查人员涉及其他问题的可能性 较小 f_polic_field
被核查人员此前被审查情况 target_previous_investigation 被核查人员此前被审查情况 f_polic_field
被核查人员社会负面事件 target_negative_events 被核查人员社会负面事件 f_polic_field
被核查人员其他情况 target_other_situation 被核查人员其他情况 f_polic_field
风险等级 risk_level 风险等级 f_polic_field

四、字段默认值机制

4.1 默认值配置存储

字段默认值存储在配置文件中,方便快速修改和调整。

存储位置:config/field_defaults.json

4.2 默认值说明

重要说明系统在AI提取阶段不会自动应用默认值。如果AI未提取到字段值系统会返回空字符串。

默认值信息提供给前端开发人员,前端可以根据业务需求决定是否在界面上显示默认值或应用默认值。

4.2.1 默认值应用规则(前端参考)

  1. AI提取阶段系统首先尝试使用AI从输入文本中提取字段值
  2. 空值处理如果AI提取的字段值为空或未提取到系统返回空字符串
  3. 前端应用:前端可以根据业务需求,在用户界面中显示默认值提示,或允许用户选择应用默认值
  4. 优先级AI提取的值优先于默认值

4.3 默认值配置示例

{
  "field_defaults": {
    "target_family_situation": "家庭关系和谐稳定",
    "target_social_relations": "社会交往较多,人机关系基本正常",
    "target_health_status": "良好",
    "target_personality": "开朗",
    "target_tolerance": "较强",
    "target_issue_severity": "较轻",
    "target_other_issues_possibility": "较小",
    "target_previous_investigation": "无",
    "target_negative_events": "无",
    "target_other_situation": "无",
    "risk_level": "低"
  }
}

4.4 默认值相关代码位置

默认值相关代码在以下位置(供前端参考,系统不会自动应用):

  1. 默认值加载services/field_service.py_load_field_defaults 方法
  2. 默认值获取services/field_service.pyget_field_default_value 方法前端可通过API获取
  3. 默认值配置config/field_defaults.json 配置文件

注意:系统在 /ai/extract 接口中不会自动应用默认值如果AI未提取到值返回空字符串。

五、提示词规则Prompt存储位置

5.1 存储方式

提示词规则存储在配置文件中,方便快速修改和调整。

存储位置:config/prompt_config.json

5.2 配置文件说明

配置文件采用 JSON 格式,包含以下部分:

  • prompt_template: 提示词模板结构(介绍文本、标签、要求列表等)
  • field_formatting: 字段格式化规则(输入/输出字段的显示格式)
  • business_type_rules: 业务类型特定规则(可为不同业务类型设置特殊规则)

详细配置说明请参考:config/README.md

5.3 提示词构建逻辑

提示词由以下部分组成:

  1. 输入文本部分:将用户输入的 inputData 转换为文本格式

    # 位置services/field_service.py 第144-149行
    input_text = ""
    for item in input_data:
        field_code = item.get('fieldCode', '')
        field_value = item.get('fieldValue', '')
        input_text += f"{field_code}: {field_value}\n"
    
  2. 输出字段说明部分:从数据库查询的输出字段,生成字段列表说明

    # 位置services/field_service.py 第151-156行
    output_fields_desc = ""
    for field in output_fields:
        field_name = field['name']
        field_code = field['field_code']
        output_fields_desc += f"- {field_name} (字段编码: {field_code})\n"
    
  3. JSON格式示例部分根据输出字段动态生成JSON示例

    # 位置services/field_service.py 第158-161行
    json_example = {}
    for field in output_fields:
        json_example[field['field_code']] = ""
    
  4. 固定规则部分:硬编码的提取要求和格式规范

    # 位置services/field_service.py 第163-181行
    prompt = f"""请从以下输入文本中提取结构化信息。
    
    

输入文本: {input_text}

需要提取的字段: {output_fields_desc}

请严格按照以下JSON格式返回结果只返回JSON不要包含其他文字说明 {json.dumps(json_example, ensure_ascii=False, indent=2)}

要求:

  1. 仔细分析输入文本,准确提取每个字段的值
  2. 如果某个字段在输入文本中找不到对应信息,该字段值设为空字符串""
  3. 日期格式统一为YYYYMM198005表示1980年5月
  4. 性别统一为"男"或"女"
  5. 政治面貌使用标准表述(如:中共党员、群众等)
  6. 只返回JSON对象不要包含markdown代码块标记 """
    
    

5.4 完整提示词示例

假设输入数据为:

{
  "fieldCode": "clue_info",
  "fieldValue": "被举报用户名称是张三年龄30岁某公司总经理"
}

输出字段为14个字段生成的提示词如下

请从以下输入文本中提取结构化信息。

输入文本:
clue_info: 被举报用户名称是张三年龄30岁某公司总经理

需要提取的字段:
- 被核查人姓名 (字段编码: target_name)
- 被核查人员单位及职务 (字段编码: target_organization_and_position)
- 被核查人员单位 (字段编码: target_organization)
- 被核查人员职务 (字段编码: target_position)
- 被核查人员性别 (字段编码: target_gender)
- 被核查人员出生年月 (字段编码: target_date_of_birth)
- 被核查人员年龄 (字段编码: target_age)
- 被核查人员文化程度 (字段编码: target_education_level)
- 被核查人员政治面貌 (字段编码: target_political_status)
- 被核查人员职级 (字段编码: target_professional_rank)
- 线索来源 (字段编码: clue_source)
- 主要问题线索 (字段编码: target_issue_description)
- 初步核实审批表承办部门意见 (字段编码: department_opinion)
- 初步核实审批表填表人 (字段编码: filler_name)

请严格按照以下JSON格式返回结果只返回JSON不要包含其他文字说明
{
  "target_name": "",
  "target_organization_and_position": "",
  "target_organization": "",
  "target_position": "",
  "target_gender": "",
  "target_date_of_birth": "",
  "target_age": "",
  "target_education_level": "",
  "target_political_status": "",
  "target_professional_rank": "",
  "clue_source": "",
  "target_issue_description": "",
  "department_opinion": "",
  "filler_name": ""
}

要求:
1. 仔细分析输入文本,准确提取每个字段的值
2. 如果某个字段在输入文本中找不到对应信息,该字段值设为空字符串""
3. 日期格式统一为YYYYMM198005表示1980年5月
4. 性别统一为"男"或"女"
5. 政治面貌使用标准表述(如:中共党员、群众等)
6. 只返回JSON对象不要包含markdown代码块标记

六、字段与提示词规则的对应关系

6.1 对应关系图

业务类型 (businessType: "INVESTIGATION")
    ↓
查询文件配置 (f_polic_file_config.name = "初步核实审批表")
    ↓
查询输出字段 (通过 f_polic_file_field 关联)
    ↓
获取字段列表 (从 f_polic_field 表)
    ↓
构建提示词 (在代码中动态构建)
    ↓
调用AI服务 (services/ai_service.py)

6.2 关键代码位置

  1. 字段查询services/field_service.pyget_output_fields_by_business_type 方法
  2. 提示词构建services/field_service.pybuild_extract_prompt 方法
  3. AI调用services/ai_service.pyextract_fields 方法
  4. API接口app.py/api/ai/extract 路由

七、系统限制与扩展说明

7.1 当前限制

  1. 业务类型支持:目前只支持 businessType: "INVESTIGATION"(调查核实)
  2. 文件模板支持:目前只支持"初步核实审批表"
  3. 提示词规则:提示词规则硬编码在代码中,无法通过配置修改

7.2 扩展方式

添加新的业务类型

  1. 在数据库中创建新的文件配置记录(f_polic_file_config 表)
  2. 创建对应的字段记录(f_polic_field 表)
  3. 建立文件和字段的关联关系(f_polic_file_field 表)
  4. 修改 services/field_service.py 中的查询逻辑,支持根据 business_type 查询不同的文件配置
  5. config/prompt_config.jsonbusiness_type_rules 中添加新业务类型的规则

修改提示词规则

现在可以直接修改配置文件,无需修改代码!

  1. 编辑 config/prompt_config.json 文件
  2. 修改 prompt_template 部分来调整提示词文本和结构
  3. 修改 field_formatting 部分来调整字段显示格式
  4. business_type_rules 中添加或修改业务类型特定规则
  5. 重启服务使配置生效

详细说明请参考:config/README.md

为不同字段添加特殊规则

可以在配置文件的 business_type_rules 中为不同业务类型添加特定的提取规则说明。

八、相关文件

  • services/field_service.py - 字段服务和提示词构建逻辑
  • services/ai_service.py - AI服务调用逻辑
  • app.py - API接口定义
  • init_preliminary_verification_fields.py - 字段初始化脚本
  • 初步核实审批表数据设计说明.md - 字段设计文档

九、总结

  1. 字段存储所有字段定义存储在MySQL数据库的 f_polic_field 表中
  2. 提示词规则:提示词规则存储在 config/prompt_config.json 配置文件中,方便快速修改和调整
  3. 字段默认值:字段默认值存储在 config/field_defaults.json 配置文件中如果AI未提取到值系统会自动应用默认值
  4. 对应关系:通过 business_type → 文件配置 → 输出字段 → 从配置文件读取规则 → 动态构建提示词的流程建立对应关系
  5. 扩展性:当前系统设计支持扩展新的业务类型和字段,提示词规则和默认值可通过配置文件灵活调整,无需修改代码