From 8461725a135fda89fc835cca9a563c0b497aea3e Mon Sep 17 00:00:00 2001 From: python Date: Tue, 9 Dec 2025 11:39:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=8F=90=E7=A4=BA=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=92=8CAI=E6=9C=8D=E5=8A=A1=E5=86=85=E5=AE=B9?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=BC=BA=E4=BF=A1=E6=81=AF=E6=8F=90=E5=8F=96?= =?UTF-8?q?=E5=8A=A9=E6=89=8B=E7=9A=84=E6=8F=8F=E8=BF=B0=EF=BC=8C=E6=98=8E?= =?UTF-8?q?=E7=A1=AE=E6=8F=90=E5=8F=96=E8=A6=81=E6=B1=82=E5=92=8C=E8=A7=84?= =?UTF-8?q?=E5=88=99=EF=BC=8C=E6=B7=BB=E5=8A=A0=E6=96=B0=E7=9A=84=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E6=8F=90=E5=8F=96=E9=80=BB=E8=BE=91=E4=BB=A5=E6=8F=90?= =?UTF-8?q?=E9=AB=98=E6=8F=90=E5=8F=96=E5=87=86=E7=A1=AE=E6=80=A7=E5=92=8C?= =?UTF-8?q?=E5=AE=8C=E6=95=B4=E6=80=A7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/prompt_config.json | 104 ++++++++++++++++++++++++++++++++++---- services/ai_service.py | 7 +-- 2 files changed, 99 insertions(+), 12 deletions(-) diff --git a/config/prompt_config.json b/config/prompt_config.json index 03ccc0c..a00be71 100644 --- a/config/prompt_config.json +++ b/config/prompt_config.json @@ -1,21 +1,31 @@ { "prompt_template": { - "intro": "请从以下输入文本中提取结构化信息。", + "intro": "你是一个专业的信息提取助手。请仔细阅读以下输入文本,全面分析其中的所有信息,包括显式信息和可以合理推断的信息。对于每个需要提取的字段,请仔细查找文本中的相关信息,包括但不限于:直接提及的信息、隐含的信息、可以通过上下文推断的信息。", "input_text_label": "输入文本:", - "output_fields_label": "需要提取的字段:", - "json_format_label": "请严格按照以下JSON格式返回结果,只返回JSON,不要包含其他文字说明:", - "requirements_label": "要求:", + "output_fields_label": "需要提取的字段(请仔细分析每个字段,确保提取完整):", + "json_format_label": "请严格按照以下JSON格式返回结果,只返回JSON对象,不要包含任何其他文字说明、思考过程或markdown代码块标记:", + "requirements_label": "重要要求(请严格遵守):", "requirements": [ - "仔细分析输入文本,准确提取每个字段的值", - "如果某个字段在输入文本中找不到对应信息,该字段值设为空字符串\"\"", + "逐字逐句仔细分析输入文本,不要遗漏任何信息", + "对于每个字段,请从多个角度思考:直接提及、同义词、隐含信息、可推断信息", + "如果文本中明确提到某个信息,必须提取出来,不能设为空", + "如果可以通过已有信息合理推断(如根据出生年月推算年龄),请进行推断并填写", + "如果某个字段在输入文本中确实找不到任何相关信息,该字段值才设为空字符串\"\"", "日期格式统一为YYYYMM(如:198005表示1980年5月),如果包含日期信息则格式为YYYYMMDD", - "性别统一为\"男\"或\"女\",不要使用\"男性\"或\"女性\"", - "政治面貌使用标准表述(如:中共党员、中共预备党员、共青团员、群众等)", + "性别统一为\"男\"或\"女\",不要使用\"男性\"或\"女性\"。如果文本中提到\"男性\"、\"男\"、\"先生\"等,统一转换为\"男\";如果提到\"女性\"、\"女\"、\"女士\"等,统一转换为\"女\"", + "年龄字段:如果文本中直接提到年龄(如\"30岁\"、\"30周岁\"),直接提取数字;如果只有出生年月,可以根据当前年份计算年龄(当前年份为2024年)", + "单位及职务字段:如果文本中提到\"XX公司总经理\"、\"XX单位XX职务\"等,需要同时提取单位名称和职务名称", + "单位字段:从单位及职务信息中提取单位名称部分(如\"XX公司\"、\"XX局\"、\"XX部门\"等)", + "职务字段:从单位及职务信息中提取职务名称部分(如\"总经理\"、\"局长\"、\"主任\"等)", + "文化程度字段:注意识别\"本科\"、\"大专\"、\"高中\"、\"中专\"、\"研究生\"、\"硕士\"、\"博士\"等表述", + "政治面貌使用标准表述(如:中共党员、中共预备党员、共青团员、群众等)。如果文本中提到\"党员\",统一转换为\"中共党员\"", "职级使用标准表述(如:正处级、副处级、正科级、副科级等)", + "线索来源字段:注意识别\"举报\"、\"来信\"、\"来电\"、\"网络举报\"、\"上级交办\"等表述", + "主要问题线索字段:提取文本中关于问题、线索、举报内容等的描述", "身份证号码只提取数字,不包含其他字符", "联系方式提取电话号码,格式化为纯数字", "地址信息保持完整,包含省市区街道等详细信息", - "只返回JSON对象,不要包含markdown代码块标记" + "只返回JSON对象,不要包含markdown代码块标记、思考过程或其他说明文字" ] }, "field_formatting": { @@ -99,6 +109,82 @@ "学历使用标准表述:本科、大专、高中、中专、研究生等", "政治面貌部分:如果是中共党员,写\"加入中国共产党\";如果不是,省略此部分" ] + }, + "target_age": { + "description": "被核查人员年龄", + "rules": [ + "如果文本中直接提到年龄(如\"30岁\"、\"30周岁\"、\"年龄30\"),直接提取数字部分", + "如果只有出生年月(如\"1980年5月出生\"、\"198005\"),可以根据当前年份(2024年)计算年龄", + "年龄格式:纯数字,单位为岁,如\"44\"表示44岁", + "如果文本中既没有直接提到年龄,也没有出生年月信息,则设为空字符串" + ] + }, + "target_organization_and_position": { + "description": "被核查人员单位及职务(包括兼职)", + "rules": [ + "提取完整的单位及职务信息,格式如:\"XX公司总经理\"、\"XX局XX处处长\"、\"XX单位XX职务\"", + "如果文本中提到\"XX公司总经理\"、\"XX单位XX职务\"等,需要完整提取", + "如果文本中分别提到单位和职务,需要组合成\"单位+职务\"的格式", + "如果文本中提到多个职务或兼职,需要全部包含,用\"、\"或\"兼\"连接", + "保持原文中的表述,不要随意修改" + ] + }, + "target_organization": { + "description": "被核查人员单位", + "rules": [ + "从单位及职务信息中提取单位名称部分", + "单位名称包括:公司、企业、机关、事业单位、部门等(如\"XX公司\"、\"XX局\"、\"XX部门\"、\"XX委员会\"等)", + "如果文本中只提到单位名称,直接提取", + "如果文本中提到\"XX公司总经理\",提取\"XX公司\"部分", + "如果文本中提到\"XX单位XX职务\",提取\"XX单位\"部分", + "保持单位名称的完整性,不要遗漏" + ] + }, + "target_position": { + "description": "被核查人员职务", + "rules": [ + "从单位及职务信息中提取职务名称部分", + "职务名称包括:总经理、经理、局长、处长、科长、主任、书记、部长等", + "如果文本中只提到职务名称,直接提取", + "如果文本中提到\"XX公司总经理\",提取\"总经理\"部分", + "如果文本中提到\"XX单位XX职务\",提取\"XX职务\"部分", + "如果文本中提到多个职务,需要全部提取,用\"、\"连接", + "保持职务名称的准确性" + ] + }, + "target_education_level": { + "description": "被核查人员文化程度", + "rules": [ + "识别文本中关于学历、文化程度的表述", + "标准表述包括:小学、初中、高中、中专、大专、本科、研究生、硕士、博士等", + "如果文本中提到\"大学\"、\"大学毕业\",通常指\"本科\"", + "如果文本中提到\"专科\",通常指\"大专\"", + "如果文本中提到\"研究生学历\",可以写\"研究生\"", + "保持标准表述,不要使用非标准表述" + ] + }, + "clue_source": { + "description": "线索来源", + "rules": [ + "识别文本中关于线索来源的表述", + "常见来源包括:举报、来信、来电、网络举报、上级交办、巡视发现、审计发现、媒体曝光等", + "如果文本中提到\"举报\"、\"被举报\",线索来源可能是\"举报\"或\"来信举报\"", + "如果文本中提到\"电话\"、\"来电\",线索来源可能是\"来电举报\"", + "如果文本中提到\"网络\"、\"网上\",线索来源可能是\"网络举报\"", + "如果文本中提到\"上级\"、\"交办\",线索来源可能是\"上级交办\"", + "如果文本中没有明确提到线索来源,但提到\"举报\"相关信息,可以推断为\"举报\"", + "保持标准表述" + ] + }, + "target_issue_description": { + "description": "主要问题线索", + "rules": [ + "提取文本中关于问题、线索、举报内容等的描述", + "包括但不限于:违纪违法问题、工作作风问题、经济问题、生活作风问题等", + "如果文本中提到\"问题\"、\"线索\"、\"举报\"、\"反映\"等关键词,提取相关内容", + "保持问题描述的完整性和准确性,不要遗漏重要信息", + "如果文本中没有明确的问题描述,但提到了相关情况,也要尽量提取" + ] } } } diff --git a/services/ai_service.py b/services/ai_service.py index 4fa434e..8bf6df0 100644 --- a/services/ai_service.py +++ b/services/ai_service.py @@ -123,7 +123,7 @@ class AIService: "messages": [ { "role": "system", - "content": "你是一个专业的数据提取助手,能够从文本中准确提取结构化信息。请严格按照JSON格式返回结果,只返回JSON对象,不要包含任何其他文字说明、思考过程或markdown代码块标记。" + "content": "你是一个专业的数据提取助手,擅长从非结构化文本中准确提取结构化信息。你需要仔细分析输入文本,识别所有相关信息,并按照指定的JSON格式返回结果。请确保提取的信息准确、完整,对于能够从文本中推断出的信息也要尽量提取。" }, { "role": "user", @@ -134,12 +134,13 @@ class AIService: "presence_penalty": 1.03, "frequency_penalty": 1.0, "repetition_penalty": 1.0, - "temperature": 0.5, + "temperature": 0.3, "top_p": 0.95, "top_k": 1, "seed": 1, "max_tokens": 8192, - "n": 1 + "n": 1, + "enable_thinking": True } headers = {