主题
高频面试题
Prompt 提示词的基本结构包括哪些部分?
这道题看似基础,实际考你能否把散乱需求拆成模型容易遵守、程序容易校验的结构。
面试官角度分析,想考什么
- 一个完整 Prompt 应该写哪些块?
考基础结构是否清楚。 - 为什么要把指令、输入和示例分开?
考你是否理解边界混淆会带来注入和格式风险。 - 所有 Prompt 都要很完整吗?
考取舍能力,简单任务不该模板过度。 - 结构化 Prompt 如何服务工程落地?
考下游解析、测试和复用意识。
可直接抄走的 30 秒参考答案
text
Prompt 的基本结构一般是角色、任务、上下文、输入、约束、输出格式、示例和失败处理。角色决定视角,任务说明目标,上下文提供资料,输入要和指令隔离,约束定义边界,输出格式方便程序解析,示例帮助模型对齐风格和格式。复杂任务建议结构化,简单任务则保持清晰简洁。面试回答详解,知其所以然
Prompt 的基本结构不是固定八股,而是为了让模型清楚地区分“要做什么”“基于什么做”“不能做什么”“结果长什么样”。
1. 常见结构
text
# 角色/身份
# 任务
# 上下文
# 输入
# 约束
# 输出格式
# 示例
# 失败处理不是每个任务都需要全部字段。越是复杂、高风险、需要下游解析的任务,越需要显式结构。
2. 每个部分的作用
- 角色/身份:告诉模型回答视角和语气,但不要用空泛专家人设替代任务说明。
- 任务目标:一句话说明最终要完成什么,最好包含验收标准。
- 上下文:提供业务背景、术语口径、用户画像、可用资料。
- 输入数据:把用户文本、文档、表格或代码清晰包起来,避免被误认成指令。
- 约束条件:限定信息来源、长度、语气、禁止事项和安全边界。
- 输出格式:指定 JSON、Markdown、表格、纯文本或字段列表。
- 示例:用 one-shot 或 few-shot 展示期望风格和边界样例。
- 失败处理:说明信息不足、格式无法满足或发现冲突时如何回答。
3. 一个基础模板
text
你是{角色}。
任务:{要完成的事}
背景:{必要上下文}
输入:
"""
{用户输入}
"""
要求:
- {约束 1}
- {约束 2}
输出格式:
{结构或字段}
如果信息不足:{拒答或追问方式}4. 为什么结构化有效
结构化 Prompt 给模型提供了明显的段落边界,也让团队更容易维护。对工程系统来说,结构化还有三个好处:可以模板化复用,可以对不同字段做版本管理,可以将输出格式接到自动校验和重试逻辑。
5. 常见失败点
- 指令和用户输入混在一起,用户输入中的句子被模型当成新指令。
- 只写“请严格输出 JSON”,但没有给 schema、字段类型和失败处理。
- 示例和真实要求冲突,模型更容易模仿示例而不是遵守文字说明。
- 约束过多且优先级不清,模型不知道冲突时听哪一条。
面试官追问3个问题
追问一:输入为什么要用分隔符包起来?
- 考察点:是否理解边界隔离和注入风险。
- 回答方向:分隔符把用户内容从开发者指令中分离出来,降低模型把输入当指令执行的概率。
追问二:示例应该放在哪里?
- 考察点:是否理解 few-shot 对格式和行为的影响。
- 回答方向:通常放在真实输入前,格式要和最终任务一致,避免示例规则与文字要求冲突。
追问三:格式要求写在前面还是后面?
- 考察点:是否有实战经验。
- 回答方向:关键格式可以前后都强调,但不要重复矛盾;复杂格式最好给 schema 和示例,并由程序校验。
扩展知识
结构化 Prompt 的优先级
text
目标 > 信息来源 > 安全边界 > 输出格式 > 风格偏好当规则冲突时,Prompt 里最好明确优先级,否则模型可能按最近、最具体或最像示例的规则执行。