修改提示词

This commit is contained in:
zk
2026-07-01 14:22:50 +08:00
parent 29f414e00a
commit 13a9292e48
+55 -16
View File
@@ -12,6 +12,11 @@
- 没有内容则返回空字符串 "" - 没有内容则返回空字符串 ""
- 行号必须是上面输入文本中真实出现过的编号,严禁编造不存在的行号。 - 行号必须是上面输入文本中真实出现过的编号,严禁编造不存在的行号。
各详情 prompt 通用铁律(防跨记录串扰/重复):
- 只选取真正属于当前这条记录({name})本身的行;即使原文中相邻的行属于**另一条**记录
(另一家公司、另一个项目、另一段学历、校园/社团/实习/竞赛等),也**绝不纳入**。
- 宁可少选,不确定归属的行一律不选。
花括号用 {{ }} 转义,避免被 ChatPromptTemplate 当作变量。{name} 为运行时替换的记录标识名。 花括号用 {{ }} 转义,避免被 ChatPromptTemplate 当作变量。{name} 为运行时替换的记录标识名。
""" """
@@ -22,21 +27,35 @@ OVERVIEW_PROFILE_PROMPT = """严格根据简历原文提取,不要猜测或编
```json ```json
{{ "name": "姓名", "email": "邮箱", "mobileNumber": "手机号", "city": "所在城市", "wechatNumber": "微信号", "portfolioUrl": "作品集链接" }} {{ "name": "姓名", "email": "邮箱", "mobileNumber": "手机号", "city": "所在城市", "wechatNumber": "微信号", "portfolioUrl": "作品集链接" }}
``` ```
规则:只提取以上6个字段,不提取skills/certificates/summary/经历。没有的填null。只输出JSON。""" 规则:
- 只提取以上6个字段,不提取skills/certificates/summary/经历。没有的填null。
- name:填完整姓名,原文怎么写就怎么填,不要截断或只取一个字。
- mobileNumber:只填手机号(通常11位数字);微信号必须填到wechatNumber,绝不能把微信号当手机号。
- portfolioUrl:只填作品集/个人主页/GitHub 等链接。
只输出JSON。"""
OVERVIEW_EDUCATION_PROMPT = """严格根据简历原文提取,不要猜测或编造。 OVERVIEW_EDUCATION_PROMPT = """严格根据简历原文提取,不要猜测或编造。
输入为带行号的简历文本。从中提取教育经历的学校名称列表,输出JSON数组: 输入为带行号的简历文本。从中提取所有**学历教育**经历的标识名列表,输出JSON数组:
```json ```json
["北京大学", "清华大学"] ["北京大学", "剑桥大学-哲学硕士", "剑桥大学-经济学士"]
``` ```
规则:只提取学校名称,不提取其他字段。没有输出[]。只输出JSON。""" 规则:
1. 列出原文中出现的每一段学历教育,**一段都不能漏**(含本科、硕士、博士、海外院校、联合培养/交换等)。
2. 每个标识必须**唯一**:若同一所学校有多个学位/专业,用「学校+学位或专业」区分(如"剑桥大学-哲学硕士"),避免重名导致后续混淆。
3. 只列学历教育;培训机构、实习/工作单位、科研机构、社团不算学历教育,不要列入。
4. 没有输出[]。只输出JSON。"""
OVERVIEW_WORK_PROMPT = """严格根据简历原文提取,不要猜测或编造。 OVERVIEW_WORK_PROMPT = """严格根据简历原文提取,不要猜测或编造。
输入为带行号的简历文本。从中提取工作经历和实习经历的公司名列表,输出JSON 输入为带行号的简历文本。从中提取工作经历和实习经历的公司标识名列表,输出JSON
```json ```json
{{ "work": ["阿里巴巴", "腾讯"], "internship": ["字节跳动"] }} {{ "work": ["阿里巴巴", "腾讯"], "internship": ["字节跳动"] }}
``` ```
规则:标注"实习"的归internship,其余归work。只提取公司名称。没有填[]。只输出JSON。""" 规则:
1. 明确标注"实习/intern"的归 internship,其余正式工作归 work。
2. 每个标识唯一:若同一公司有多段不同岗位/时间的经历,用「公司+岗位或时间」区分(如"腾讯-产品经理""腾讯-2020"),确保后续能分别提取,不要合并成一条。
3. 每一段真实的任职经历都要列出,不要遗漏;但同一段经历不要重复列。
4. 只提取公司名相关标识,不要把公司内部的具体项目当作工作/实习条目。
5. 没有填[]。只输出JSON。"""
OVERVIEW_PROJECT_PROMPT = """严格根据简历原文提取,不要猜测或编造。 OVERVIEW_PROJECT_PROMPT = """严格根据简历原文提取,不要猜测或编造。
输入为带行号的简历文本。从中仅提取项目经历的项目名称列表,输出JSON数组: 输入为带行号的简历文本。从中仅提取项目经历的项目名称列表,输出JSON数组:
@@ -46,14 +65,20 @@ OVERVIEW_PROJECT_PROMPT = """严格根据简历原文提取,不要猜测或编
规则: 规则:
1. 只提取作为**独立项目条目标题**出现的项目名(通常单独成行、常带"项目X"前缀或【】标题、并配有自己的起止时间/角色/描述)。 1. 只提取作为**独立项目条目标题**出现的项目名(通常单独成行、常带"项目X"前缀或【】标题、并配有自己的起止时间/角色/描述)。
2. **绝对不要**把出现在某段职责/产品描述句子内部、被"如/包括/例如/【】"等列举的功能点、模块、子功能当作项目(这些是描述内容,不是项目)。 2. **绝对不要**把出现在某段职责/产品描述句子内部、被"如/包括/例如/【】"等列举的功能点、模块、子功能当作项目(这些是描述内容,不是项目)。
3. 没有输出[]。只输出JSON。""" 3. **绝对不要**把社团/学生组织、校园活动、志愿服务、任职/职务、兴趣爱好当作项目——这些不是项目经历。
4. 同一个项目只列一次,不要因为它在工作经历里被提到就重复列。
5. 没有输出[]。只输出JSON。"""
OVERVIEW_COMPETITION_PROMPT = """严格根据简历原文提取,不要猜测或编造。 OVERVIEW_COMPETITION_PROMPT = """严格根据简历原文提取,不要猜测或编造。
输入为带行号的简历文本。从中仅提取竞赛/获奖经历的竞赛名称列表,输出JSON数组: 输入为带行号的简历文本。从中仅提取竞赛/获奖经历的竞赛名称列表,输出JSON数组:
```json ```json
["ACM区域赛", "数学建模大赛"] ["ACM区域赛", "数学建模大赛"]
``` ```
规则:只提取竞赛名称,不提取其他字段。没有输出[]。只输出JSON。""" 规则:
1. 只提取真正的**竞赛/比赛/获奖**条目名称。
2. 同一个竞赛只算一条,即使它拿了多个奖项,也不要按奖项拆成多条。
3. **绝对不要**把社团活动、职务、项目、示例文字、描述里顺带提到的活动当作竞赛。
4. 没有输出[]。只输出JSON。"""
# ==================== 第二阶段:详情提取 ==================== # ==================== 第二阶段:详情提取 ====================
@@ -62,35 +87,49 @@ DETAIL_EDUCATION_PROMPT = """严格根据简历原文提取,不要猜测或编
```json ```json
{{ "school": "学校", "major": "专业", "degree": "学历", "studyType": "全日制/非全日制", "startDate": "2020.09", "endDate": "2024.06", "descriptionRange": "起-止,起-止" }} {{ "school": "学校", "major": "专业", "degree": "学历", "studyType": "全日制/非全日制", "startDate": "2020.09", "endDate": "2024.06", "descriptionRange": "起-止,起-止" }}
``` ```
规则:短字段直接填值。descriptionRange 只填该校的额外描述正文(如主修课程、在校成就、排名等成段文字)所在行号区间;学校/专业/学历/时间等已在上面字段提取,不要纳入;若无额外描述正文则填""。区间规则:0开始、闭区间,行号必须真实存在,排除明显的乱码/水印碎片行;同一段落被折成的连续多行用一个区间(如3-5,会拼接为一段),不同段落/每条bullet之间用逗号分开(如3-5,6,7-9,每个逗号段成为一个独立段落,不要把多条bullet塞进同一个区间)。时间格式YYYY.MM没有的填null。只输出JSON。""" 规则:短字段直接填值时间格式YYYY.MM没有的填null。
descriptionRange 只填该校**学业本身**的额外正文(主修课程、绩点/排名、在校获得的学术成就)所在行号区间;学校/专业/学历/时间已在上面字段提取,不要纳入。
**严禁纳入以下内容**(它们属于其它模块、会被单独提取,即使在原文中紧跟这条教育经历也不要选):实习、工作、项目、社团/学生组织、校园活动、志愿服务、竞赛获奖、科研/论文经历。宁可少选,不确定是否属于本校学业的行一律不选;若无纯学业描述则填""
区间规则:0开始、闭区间,行号必须真实存在,排除明显的乱码/水印碎片行;同一段落被折成的连续多行用一个区间(如3-5,会拼接为一段),不同段落/每条bullet之间用逗号分开(如3-5,6,7-9,每个逗号段成为一个独立段落,不要把多条bullet塞进同一个区间)。只输出JSON。"""
DETAIL_WORK_PROMPT = """严格根据简历原文提取,不要猜测或编造。输入为带行号的简历文本(每行 `[行号] 内容`)。 DETAIL_WORK_PROMPT = """严格根据简历原文提取,不要猜测或编造。输入为带行号的简历文本(每行 `[行号] 内容`)。
请提取"{name}"这条工作经历的详细信息,输出JSON 请提取"{name}"这条工作经历的详细信息,输出JSON
```json ```json
{{ "companyName": "公司", "position": "职位", "startDate": "2024.07", "endDate": "2025.03", "descriptionRange": "起-止,起-止" }} {{ "companyName": "公司", "position": "职位", "startDate": "2024.07", "endDate": "2025.03", "descriptionRange": "起-止,起-止" }}
``` ```
规则:短字段直接填值。descriptionRange 只填直接描述该公司/岗位的概述性正文行号区间;若该经历下的内容都属于具体项目(项目会单独提取),则填"",不要把项目明细并入工作描述。区间规则:0开始、闭区间,行号必须真实存在,排除明显的乱码/水印碎片行;同一段落被折成的连续多行用一个区间(如3-5,会拼接为一段),不同段落/每条bullet之间用逗号分开(如3-5,6,7-9,每个逗号段成为一个独立段落,不要把多条bullet塞进同一个区间)。时间格式YYYY.MM。没有的填null。只输出JSON。""" 规则:短字段直接填值,时间格式YYYY.MM,在职/至今则 endDate 填null,没有的填null。
descriptionRange 填直接描述该公司/岗位**整体职责或概述**的正文行号区间。若某段内容明显是某个**独立项目的明细**(且该项目会作为项目单独提取),不要纳入,避免与项目模块重复;但公司层面的职责概述应当保留,不要整条留空导致内容丢失。
只选属于"{name}"这段经历的行,不要选到其它公司、其它项目、教育或校园经历的行,即使它们在原文中相邻。
区间规则:0开始、闭区间,行号必须真实存在,排除明显的乱码/水印碎片行;同一段落被折成的连续多行用一个区间(如3-5,会拼接为一段),不同段落/每条bullet之间用逗号分开(如3-5,6,7-9,每个逗号段成为一个独立段落,不要把多条bullet塞进同一个区间)。只输出JSON。"""
DETAIL_INTERNSHIP_PROMPT = """严格根据简历原文提取,不要猜测或编造。输入为带行号的简历文本(每行 `[行号] 内容`)。 DETAIL_INTERNSHIP_PROMPT = """严格根据简历原文提取,不要猜测或编造。输入为带行号的简历文本(每行 `[行号] 内容`)。
请提取"{name}"这条实习经历的详细信息,输出JSON 请提取"{name}"这条实习经历的详细信息,输出JSON
```json ```json
{{ "companyName": "公司", "position": "职位", "startDate": "2023.06", "endDate": "2023.09", "descriptionRange": "起-止,起-止" }} {{ "companyName": "公司", "position": "职位", "startDate": "2023.06", "endDate": "2023.09", "descriptionRange": "起-止,起-止" }}
``` ```
规则:短字段直接填值。descriptionRange 只填直接描述该公司/岗位的概述性正文行号区间;若该经历下的内容都属于具体项目(项目会单独提取),则填"",不要把项目明细并入实习描述。区间规则:0开始、闭区间,行号必须真实存在,排除明显的乱码/水印碎片行;同一段落被折成的连续多行用一个区间(如3-5,会拼接为一段),不同段落/每条bullet之间用逗号分开(如3-5,6,7-9,每个逗号段成为一个独立段落,不要把多条bullet塞进同一个区间)。时间格式YYYY.MM。没有的填null。只输出JSON。""" 规则:短字段直接填值,时间格式YYYY.MM,至今则 endDate 填null,没有的填null。
descriptionRange 填直接描述该公司/岗位**整体职责或概述**的正文行号区间。若某段内容明显是某个**独立项目的明细**(且该项目会作为项目单独提取),不要纳入,避免与项目模块重复;但岗位层面的职责概述应保留,不要整条留空导致内容丢失。
只选属于"{name}"这段经历的行,不要选到其它公司、其它项目、教育或校园经历的行,即使它们在原文中相邻。
区间规则:0开始、闭区间,行号必须真实存在,排除明显的乱码/水印碎片行;同一段落被折成的连续多行用一个区间(如3-5,会拼接为一段),不同段落/每条bullet之间用逗号分开(如3-5,6,7-9,每个逗号段成为一个独立段落,不要把多条bullet塞进同一个区间)。只输出JSON。"""
DETAIL_PROJECT_PROMPT = """严格根据简历原文提取,不要猜测或编造。输入为带行号的简历文本(每行 `[行号] 内容`)。 DETAIL_PROJECT_PROMPT = """严格根据简历原文提取,不要猜测或编造。输入为带行号的简历文本(每行 `[行号] 内容`)。
请提取"{name}"这条项目经历的详细信息,输出JSON 请提取"{name}"这条项目经历的详细信息,输出JSON
```json ```json
{{ "companyName": "所属公司", "projectName": "项目名", "role": "角色名称", "startDate": "2023.03", "endDate": "2023.12", "descriptionRange": "起-止,起-止" }} {{ "companyName": "所属公司", "projectName": "项目名", "role": "角色名称", "startDate": "2023.03", "endDate": "2023.12", "descriptionRange": "起-止,起-止" }}
``` ```
规则:role只填简短角色名。短字段直接填值。descriptionRange 填该项目描述所在的行号区间,没有描述填""。区间规则:0开始、闭区间,行号必须真实存在,排除明显的乱码/水印碎片行;同一段落被折成的连续多行用一个区间(如3-5,会拼接为一段),不同段落/每条bullet之间用逗号分开(如3-5,6,7-9,每个逗号段成为一个独立段落,不要把多条bullet塞进同一个区间)。时间格式YYYY.MM没有的填null。只输出JSON。""" 规则:短字段直接填值,时间格式YYYY.MM没有的填null。
role 只填原文中**明确写出**的简短角色名;若原文没有写明该项目的角色,填null,**不要臆造或默认**(如不要凭空填"Developer""开发工程师""团队成员")。
descriptionRange 填该项目描述所在的行号区间,没有描述填""。只选属于"{name}"这个项目的行,不要串入其它项目、所属公司的其它经历、教育或竞赛的行,即使它们在原文中相邻。
区间规则:0开始、闭区间,行号必须真实存在,排除明显的乱码/水印碎片行;同一段落被折成的连续多行用一个区间(如3-5,会拼接为一段),不同段落/每条bullet之间用逗号分开(如3-5,6,7-9,每个逗号段成为一个独立段落,不要把多条bullet塞进同一个区间)。只输出JSON。"""
DETAIL_COMPETITION_PROMPT = """严格根据简历原文提取,不要猜测或编造。输入为带行号的简历文本(每行 `[行号] 内容`)。 DETAIL_COMPETITION_PROMPT = """严格根据简历原文提取,不要猜测或编造。输入为带行号的简历文本(每行 `[行号] 内容`)。
请提取"{name}"这条竞赛/获奖经历的详细信息,输出JSON: 请提取"{name}"这条竞赛/获奖经历的详细信息,输出JSON:
```json ```json
{{ "competitionName": "竞赛名", "award": "获奖情况", "awardDate": "2023.07", "descriptionRange": "起-止,起-止" }} {{ "competitionName": "竞赛名", "award": "获奖情况", "awardDate": "2023.07", "descriptionRange": "起-止,起-止" }}
``` ```
规则:短字段直接填值。descriptionRange 填该竞赛/获奖的额外描述所在行号区间,没有描述填""。区间规则:0开始、闭区间,行号必须真实存在,排除明显的乱码/水印碎片行;同一段落被折成的连续多行用一个区间,不同段落用逗号分开(每个逗号段成为一个独立段落)。时间格式YYYY.MM没有的填null。只输出JSON。""" 规则:短字段直接填值时间格式YYYY.MM没有的填null。award 里可包含该竞赛的多个奖项,不要因为多个奖项而拆成多条。
descriptionRange 填该竞赛/获奖的额外描述所在行号区间,没有描述填""。只选属于"{name}"这条竞赛的行,不要把社团活动、职务、项目、其它竞赛的内容串入,即使它们在原文中相邻。
区间规则:0开始、闭区间,行号必须真实存在,排除明显的乱码/水印碎片行;同一段落被折成的连续多行用一个区间,不同段落用逗号分开(每个逗号段成为一个独立段落)。只输出JSON。"""
DETAIL_PROFILE_PROMPT = """严格根据简历原文提取,不要猜测或编造。输入为带行号的简历文本(每行 `[行号] 内容`)。 DETAIL_PROFILE_PROMPT = """严格根据简历原文提取,不要猜测或编造。输入为带行号的简历文本(每行 `[行号] 内容`)。
从中提取技能标签、证书和自我评价/个人概述,输出JSON: 从中提取技能标签、证书和自我评价/个人概述,输出JSON:
@@ -98,7 +137,7 @@ DETAIL_PROFILE_PROMPT = """严格根据简历原文提取,不要猜测或编
{{ "skills": ["技能1"], "certificates": ["证书1"], "summaryRange": "起-止,起-止" }} {{ "skills": ["技能1"], "certificates": ["证书1"], "summaryRange": "起-止,起-止" }}
``` ```
规则: 规则:
- skills:仅当简历中有明确的"技能"/"专业技能"等独立模块时才提取,原文有什么填什么,最多5个;如果简历没有专门的技能模块,填[],不要从经历中归纳 - skills:仅当简历中有明确的"技能"/"专业技能"**独立模块**时才提取,原文逐字填,最多5个;如果没有专门的技能模块,填[]。**不要**从工作/项目/自我评价里归纳技能,尤其不要把"团队沟通""抗压能力""责任心"等软素质描述当作技能
- certificates填证书数组,没有填[]。 - certificates只填真正的**证书/证件**(如CET-4/6、CPA、教师资格证、驾照等)。不要把奖项、荣誉、竞赛名次,或工作描述里顺带提到的"认证"句子当作证书;没有填[]。
- summaryRange:填自我评价/个人概述**正文**所在的行号区间字符串(0开始、闭区间,行号必须真实存在)不要包含板块标题行(如"个人优势""自我评价"),排除明显的乱码/水印碎片行;同一段落被折成的连续多行用一个区间,不同段落用逗号分开(每个逗号段是一个独立段落,段间会以换行连接),没有填"" - summaryRange:填自我评价/个人概述**正文**所在的行号区间字符串(0开始、闭区间,行号必须真实存在)不要包含板块标题行(如"个人优势""自我评价"),不要把技能列表、兴趣爱好、经历内容纳入;排除明显的乱码/水印碎片行;同一段落被折成的连续多行用一个区间,不同段落用逗号分开(每个逗号段是一个独立段落,段间会以换行连接),没有填""
只输出JSON。""" 只输出JSON。"""