优化简历提取速度

This commit is contained in:
zk
2026-04-29 15:02:05 +08:00
parent 0a15e320f5
commit b26c0a7262
5 changed files with 247 additions and 127 deletions
+72 -64
View File
@@ -1,79 +1,87 @@
"""简历各模块提取的 System Prompt
"""简历两阶段提取 Prompt
注意:prompt 中的 JSON 示例花括号必须用 {{ }} 转义,避免被 ChatPromptTemplate 当作变量
第一阶段(概览):5路并行,只提取主表短字段和子表标识名,不提取 description
第二阶段(详情):N路并行,每条子表记录单独提取全部字段,description 用字母编号引用。
花括号用 {{ }} 转义,避免被 ChatPromptTemplate 当作变量。{name} 为运行时替换的记录标识名。
"""
PROFILE_PROMPT = """从简历文本中仅提取个人基本信息,原文提取不要改写,输出JSON:
```json
{{
"name": "姓名",
"email": "邮箱",
"mobileNumber": "手机号",
"city": "所在城市",
"wechatNumber": "微信号",
"portfolioUrl": "作品集链接",
"skills": ["技能1"],
"certificates": ["证书1"],
"summary": "个人概述原文"
}}
```
规则:只提取个人信息,不提取经历内容。summary只填"自我评价/个人概述"原文。没有的填null,数组填[]。只输出JSON。"""
# ==================== 第一阶段:概览提取 ====================
EDUCATION_PROMPT = """简历文本中仅提取教育经历,原文提取不要改写,输出JSON数组:
OVERVIEW_PROFILE_PROMPT = """简历文本每行以 [字母编号] 开头。严格根据简历原文提取不要猜测或编造,没有的填null。
从中仅提取个人基本信息(不含技能、证书、自我评价),输出JSON:
```json
[{{
"school": "学校",
"major": "专业",
"degree": "学历",
"studyType": "全日制/非全日制",
"startDate": "2020.09",
"endDate": "2024.06",
"description": ["原文段落"]
}}]
{{ "name": "姓名", "email": "邮箱", "mobileNumber": "手机号", "city": "所在城市", "wechatNumber": "微信号", "portfolioUrl": "作品集链接" }}
```
规则:只提取教育经历,不提取工作/实习/项目/竞赛。时间格式YYYY.MM。没有输出[]。只输出JSON。"""
规则:只提取以上6个字段,不提取skills/certificates/summary/经历。没有的填null。只输出JSON。"""
WORK_PROMPT = """简历文本中仅提取工作经历和实习经历,原文提取不要改写,输出JSON
OVERVIEW_EDUCATION_PROMPT = """简历文本每行以 [字母编号] 开头。严格根据简历原文提取不要猜测或编造。
从中仅提取教育经历的学校名称列表,输出JSON数组:
```json
{{
"work": [{{
"companyName": "公司",
"position": "职位",
"startDate": "2024.07",
"endDate": "2025.03",
"description": ["原文段落"]
}}],
"internship": [{{
"companyName": "公司",
"position": "职位",
"startDate": "2023.06",
"endDate": "2023.09",
"description": ["原文段落"]
}}]
}}
["北京大学", "清华大学"]
```
规则:标注"实习"的归internship,其余归work。不提取项目/教育/竞赛。时间格式YYYY.MM。没有[]。只输出JSON。"""
规则:只提取学校名称,不提取其他字段。没有输出[]。只输出JSON。"""
PROJECT_PROMPT = """简历文本中仅提取项目经历,原文提取不要改写,输出JSON数组:
OVERVIEW_WORK_PROMPT = """简历文本每行以 [字母编号] 开头。严格根据简历原文提取不要猜测或编造。
从中仅提取工作经历和实习经历的公司名称列表,输出JSON:
```json
[{{
"companyName": "所属公司",
"projectName": "项目名",
"role": "角色名称(如:后端开发、项目经理、前端工程师,只填角色名不填职责描述)",
"startDate": "2023.03",
"endDate": "2023.12",
"description": ["原文段落"]
}}]
{{ "work": ["阿里巴巴", "腾讯"], "internship": ["字节跳动"] }}
```
规则:只提取项目经历,不提取工作/实习/教育/竞赛。role只填简短角色名,职责内容放description。时间格式YYYY.MM。没有输出[]。只输出JSON。"""
规则:标注"实习"的归internship,其余归work。只提取公司名称。没有[]。只输出JSON。"""
COMPETITION_PROMPT = """简历文本中仅提取竞赛/获奖经历,原文提取不要改写,输出JSON数组:
OVERVIEW_PROJECT_PROMPT = """简历文本每行以 [字母编号] 开头。严格根据简历原文提取不要猜测或编造。
从中仅提取项目经历的项目名称列表,输出JSON数组:
```json
[{{
"competitionName": "竞赛名",
"award": "获奖情况",
"awardDate": "2023.07",
"description": ["原文段落"]
}}]
["订单系统重构", "支付网关"]
```
规则:只提取竞赛获奖,不提取其他经历。时间格式YYYY.MM。没有输出[]。只输出JSON。"""
规则:只提取项目名称,不提取其他字段。没有输出[]。只输出JSON。"""
OVERVIEW_COMPETITION_PROMPT = """简历文本每行以 [字母编号] 开头。严格根据简历原文提取,不要猜测或编造。
从中仅提取竞赛/获奖经历的竞赛名称列表,输出JSON数组:
```json
["ACM区域赛", "数学建模大赛"]
```
规则:只提取竞赛名称,不提取其他字段。没有输出[]。只输出JSON。"""
# ==================== 第二阶段:详情提取 ====================
DETAIL_EDUCATION_PROMPT = """简历文本每行以 [字母编号] 开头。严格根据简历原文提取,不要猜测或编造。
请提取"{name}"这条教育经历的详细信息,输出JSON
```json
{{ "school": "学校", "major": "专业", "degree": "学历", "studyType": "全日制/非全日制", "startDate": "2020.09", "endDate": "2024.06", "descLines": "e,f,g" }}
```
规则:descLines填描述内容对应的字母编号逗号分隔。时间格式YYYY.MM。没有的填null。只输出JSON。"""
DETAIL_WORK_PROMPT = """简历文本每行以 [字母编号] 开头。严格根据简历原文提取,不要猜测或编造。
请提取"{name}"这条工作经历的详细信息,输出JSON
```json
{{ "companyName": "公司", "position": "职位", "startDate": "2024.07", "endDate": "2025.03", "descLines": "h,i,j" }}
```
规则:descLines填描述内容对应的字母编号逗号分隔。时间格式YYYY.MM。没有的填null。只输出JSON。"""
DETAIL_INTERNSHIP_PROMPT = """简历文本每行以 [字母编号] 开头。严格根据简历原文提取,不要猜测或编造。
请提取"{name}"这条实习经历的详细信息,输出JSON
```json
{{ "companyName": "公司", "position": "职位", "startDate": "2023.06", "endDate": "2023.09", "descLines": "p,q,r" }}
```
规则:descLines填描述内容对应的字母编号逗号分隔。时间格式YYYY.MM。没有的填null。只输出JSON。"""
DETAIL_PROJECT_PROMPT = """简历文本每行以 [字母编号] 开头。严格根据简历原文提取,不要猜测或编造。
请提取"{name}"这条项目经历的详细信息,输出JSON
```json
{{ "companyName": "所属公司", "projectName": "项目名", "role": "角色名称", "startDate": "2023.03", "endDate": "2023.12", "descLines": "u,v,w" }}
```
规则:role只填简短角色名。descLines填描述内容对应的字母编号逗号分隔。时间格式YYYY.MM。没有的填null。只输出JSON。"""
DETAIL_COMPETITION_PROMPT = """简历文本每行以 [字母编号] 开头。严格根据简历原文提取,不要猜测或编造。
请提取"{name}"这条竞赛/获奖经历的详细信息,输出JSON:
```json
{{ "competitionName": "竞赛名", "award": "获奖情况", "awardDate": "2023.07", "descLines": "ae,af" }}
```
规则:descLines填描述内容对应的字母编号逗号分隔。时间格式YYYY.MM。没有的填null。只输出JSON。"""
DETAIL_PROFILE_PROMPT = """简历文本每行以 [字母编号] 开头。严格根据简历原文提取,不要猜测或编造。
从中提取技能标签、证书和自我评价/个人概述,输出JSON:
```json
{{ "skills": ["技能1"], "certificates": ["证书1"], "summaryLines": "k,l,m" }}
```
规则:skills填技能标签数组。certificates填证书数组。summaryLines填自我评价/个人概述对应的字母编号逗号分隔。没有的填null,数组填[]。只输出JSON。"""