第 6 课:系统提示词设计
什么是系统提示词?
系统提示词(System Prompt)就是你给 AI 的"岗位说明书":
- 你是谁(角色)
- 你该怎么干活(工作流程)
- 输出要求是什么(格式规范)
AI 每次开始工作前,都会先读这份"说明书",然后严格按照它来执行。
resume-generator 的系统提示词
项目里的 SYSTEM_PROMPT 很短,只有几行,但信息量很大:
const SYSTEM_PROMPT = `You are a professional resume writer.
Research a person and create a 1-page .docx resume.
WORKFLOW:
1. WebSearch for the person's background (LinkedIn, GitHub, company pages)
2. Create a .docx file using the docx library
OUTPUT:
- Script: agent/custom_scripts/generate_resume.js
- Resume: agent/custom_scripts/resume.docx
PAGE FIT (must be exactly 1 page):
- 0.5 inch margins, Name 24pt, Headers 12pt, Body 10pt
- 2-3 bullet points per job, ~80-100 chars each
- Max 3 job roles, 2-line summary, 2-line skills`;
我们来逐块分析。
逐块拆解
第一块:角色定义
You are a professional resume writer.
Research a person and create a 1-page .docx resume.
只用两句话就讲清楚了: - 你是谁:专业简历写手 - 你要做什么:搜索一个人 → 生成 1 页 Word 简历
为什么要定义角色?因为 AI 会根据角色来调整自己的"行事风格"。如果你说它是"简历写手",它会更注重简洁、专业、条理清晰。
第二块:工作流程
WORKFLOW:
1. WebSearch for the person's background (LinkedIn, GitHub, company pages)
2. Create a .docx file using the docx library
这里明确了两步走: 1. 先搜索(而且指明了去哪搜:LinkedIn、GitHub、公司官网) 2. 再生成文档(指明了用 docx 库)
为什么要写明工作流程?因为不写的话,AI 可能会"乱来"——比如先写一份纯文本简历,或者用 HTML 格式输出。你要的是 .docx,就得明确说。
第三块:输出路径
OUTPUT:
- Script: agent/custom_scripts/generate_resume.js
- Resume: agent/custom_scripts/resume.docx
精确指定了两个文件的输出位置: - AI 自己写的代码放这里 - 最终简历放这里
为什么要指定路径?因为主程序最后要检查 resume.docx 是否存在:
// 代码里写死了检查路径
const expectedPath = path.join(process.cwd(), 'agent', 'custom_scripts', 'resume.docx');
if (fs.existsSync(expectedPath)) {
console.log(`📄 Resume saved to: ${expectedPath}`);
}
如果不在系统提示词里约定路径,AI 可能把文件存到别的地方,程序就找不到了。
第四块:页面排版约束
PAGE FIT (must be exactly 1 page):
- 0.5 inch margins, Name 24pt, Headers 12pt, Body 10pt
- 2-3 bullet points per job, ~80-100 chars each
- Max 3 job roles, 2-line summary, 2-line skills
这是最细致的部分,精确到像素级:
| 约束 | 具体值 | 为什么这么设 |
|---|---|---|
| 页边距 | 0.5 英寸 | 比默认的 1 英寸窄,腾出更多空间 |
| 名字字号 | 24pt | 够醒目但不占太多空间 |
| 标题字号 | 12pt | 区分板块但不抢名字的风头 |
| 正文字号 | 10pt | 够小以塞入更多内容 |
| 每份工作 | 2-3 个要点 | 控制内容量 |
| 每个要点 | 80-100 字符 | 不会太长导致换行 |
| 最多工作数 | 3 份 | 1 页就那么大 |
| 个人简介 | 2 行 | 简洁 |
| 技能列表 | 2 行 | 简洁 |
为什么要这么精确?因为目标是"恰好 1 页"。如果 AI 自由发挥,可能写成 3 页,也可能内容太少只有半页。精确的排版约束确保输出稳定一致。
好的系统提示词 vs 差的系统提示词
❌ 差的系统提示词:
"帮我生成一份简历"
问题:
- 什么格式?Word?PDF?纯文本?
- 内容从哪来?编的还是搜的?
- 多长?1页还是10页?
- 文件存哪里?
AI 会自己猜,结果不可预测。
✅ 好的系统提示词:
角色:你是谁
流程:先做什么,后做什么
输出:文件存到哪里,叫什么名字
格式:排版规格,精确到字号和间距
AI 的行为可预测、可重复。
设计系统提示词的四个原则
原则一:角色先行
一句话告诉 AI 它是什么角色。角色决定了 AI 的"行为模式"。
"You are a professional resume writer." ← 简洁专业
"You are a creative novelist." ← 有创意有文采
"You are a strict legal counsel." ← 严谨保守
原则二:流程要明确
用编号列出步骤,别让 AI 自己猜该先做什么。
WORKFLOW:
1. 先搜索
2. 再分析
3. 最后生成
原则三:输出要具体
文件名、文件路径、文件格式,全部写清楚。
OUTPUT:
- File: /path/to/output.docx
- Format: .docx with Arial font
原则四:约束要量化
"排版好看" → "Name 24pt, Headers 12pt, Body 10pt" "内容适中" → "Max 3 jobs, 2-3 bullets each" "不要太长" → "Must be exactly 1 page"
能量化的就量化,不要给 AI 模糊的空间。
系统提示词 vs 用户提示词
这个项目里其实有两个"提示词":
系统提示词(systemPrompt):
→ 永久生效的"岗位说明书"
→ 定义角色、流程、格式规范
用户提示词(prompt):
→ 单次任务的具体指令
→ "帮张三做简历" / "帮李四做简历"
// 系统提示词——固定不变
systemPrompt: SYSTEM_PROMPT,
// 用户提示词——每次不同
prompt: `Research "${personName}" and create a professional
1-page resume as a .docx file.`,
打个比方: - 系统提示词 = 公司的《员工手册》 - 用户提示词 = 今天的《工单》
本课小结
- 系统提示词是 AI 的"岗位说明书"
- resume-generator 的提示词包含四块:角色、流程、输出路径、排版约束
- 好的提示词要具体、量化、可执行
- 系统提示词(固定规范)和用户提示词(具体任务)分工明确
课后练习
- 把 SYSTEM_PROMPT 里的 "Max 3 job roles" 改成 "Max 5 job roles",看看会不会超过 1 页
- 在提示词里加一句 "Include a professional headshot placeholder",看 AI 会怎么处理
- 试着为一个"公司调研报告生成器"写一份系统提示词,包含角色、流程、输出和格式要求