16 KiB
字段与提示词规则对应关系说明
一、概述
本文档详细说明系统中所有字段的定义、存储位置,以及大模型抽取规则(提示词)的构建方式和存储位置。
二、字段存储位置
2.1 数据库表结构
字段信息存储在 MySQL数据库 中,涉及以下三个表:
1. f_polic_field - 字段定义表
- 存储内容:所有字段的基本定义信息
- 关键字段:
id: 字段IDtenant_id: 租户ID(固定值:615873064429507639)name: 字段名称(中文显示名)filed_code: 字段编码(注意:表中字段名拼写为filed_code,不是field_code)field_type: 字段类型(1=输入字段,2=输出字段)state: 状态(0=未启用,1=启用)
2. f_polic_file_config - 文件模板配置表
- 存储内容:文档模板的基本配置信息
- 关键字段:
id: 文件配置IDname: 文件名称(如:"初步核实审批表")input_data: JSON格式的配置数据,包含template_code和business_typefile_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 默认值应用规则(前端参考)
- AI提取阶段:系统首先尝试使用AI从输入文本中提取字段值
- 空值处理:如果AI提取的字段值为空或未提取到,系统返回空字符串
- 前端应用:前端可以根据业务需求,在用户界面中显示默认值提示,或允许用户选择应用默认值
- 优先级: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 默认值相关代码位置
默认值相关代码在以下位置(供前端参考,系统不会自动应用):
- 默认值加载:
services/field_service.py的_load_field_defaults方法 - 默认值获取:
services/field_service.py的get_field_default_value方法(前端可通过API获取) - 默认值配置:
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 提示词构建逻辑
提示词由以下部分组成:
-
输入文本部分:将用户输入的
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" -
输出字段说明部分:从数据库查询的输出字段,生成字段列表说明
# 位置: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" -
JSON格式示例部分:根据输出字段动态生成JSON示例
# 位置:services/field_service.py 第158-161行 json_example = {} for field in output_fields: json_example[field['field_code']] = "" -
固定规则部分:硬编码的提取要求和格式规范
# 位置:services/field_service.py 第163-181行 prompt = f"""请从以下输入文本中提取结构化信息。
输入文本: {input_text}
需要提取的字段: {output_fields_desc}
请严格按照以下JSON格式返回结果,只返回JSON,不要包含其他文字说明: {json.dumps(json_example, ensure_ascii=False, indent=2)}
要求:
- 仔细分析输入文本,准确提取每个字段的值
- 如果某个字段在输入文本中找不到对应信息,该字段值设为空字符串""
- 日期格式统一为YYYYMM(如:198005表示1980年5月)
- 性别统一为"男"或"女"
- 政治面貌使用标准表述(如:中共党员、群众等)
- 只返回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. 日期格式统一为YYYYMM(如:198005表示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 关键代码位置
- 字段查询:
services/field_service.py的get_output_fields_by_business_type方法 - 提示词构建:
services/field_service.py的build_extract_prompt方法 - AI调用:
services/ai_service.py的extract_fields方法 - API接口:
app.py的/api/ai/extract路由
七、系统限制与扩展说明
7.1 当前限制
- 业务类型支持:目前只支持
businessType: "INVESTIGATION"(调查核实) - 文件模板支持:目前只支持"初步核实审批表"
- 提示词规则:提示词规则硬编码在代码中,无法通过配置修改
7.2 扩展方式
添加新的业务类型
- 在数据库中创建新的文件配置记录(
f_polic_file_config表) - 创建对应的字段记录(
f_polic_field表) - 建立文件和字段的关联关系(
f_polic_file_field表) - 修改
services/field_service.py中的查询逻辑,支持根据business_type查询不同的文件配置 - 在
config/prompt_config.json的business_type_rules中添加新业务类型的规则
修改提示词规则
现在可以直接修改配置文件,无需修改代码!
- 编辑
config/prompt_config.json文件 - 修改
prompt_template部分来调整提示词文本和结构 - 修改
field_formatting部分来调整字段显示格式 - 在
business_type_rules中添加或修改业务类型特定规则 - 重启服务使配置生效
详细说明请参考:config/README.md
为不同字段添加特殊规则
可以在配置文件的 business_type_rules 中为不同业务类型添加特定的提取规则说明。
八、相关文件
services/field_service.py- 字段服务和提示词构建逻辑services/ai_service.py- AI服务调用逻辑app.py- API接口定义init_preliminary_verification_fields.py- 字段初始化脚本初步核实审批表数据设计说明.md- 字段设计文档
九、总结
- 字段存储:所有字段定义存储在MySQL数据库的
f_polic_field表中 - 提示词规则:提示词规则存储在
config/prompt_config.json配置文件中,方便快速修改和调整 - 字段默认值:字段默认值存储在
config/field_defaults.json配置文件中,如果AI未提取到值,系统会自动应用默认值 - 对应关系:通过
business_type→ 文件配置 → 输出字段 → 从配置文件读取规则 → 动态构建提示词的流程建立对应关系 - 扩展性:当前系统设计支持扩展新的业务类型和字段,提示词规则和默认值可通过配置文件灵活调整,无需修改代码