跳到正文

Prompt 系统设计原则与技巧

构建原则、少样本学习与思维链技巧,覆盖实际场景

原题:在大模型应用中,如何系统地设计和构建有效的prompt?请说明构建原则、常用技巧(如少样本学习、思维链等)及实际应用场景。

Prompt工程 · 阿里真题

回答与解析

一、核心设计原则

1. 清晰性(Clarity)

  • 任务边界明确:告诉模型"做什么"和"不做什么"
  • 输出格式约束:用JSON/XML模板、Markdown表格等结构化输出

2. 具体性(Specificity)

  • 避免模糊指令,如"写得好一点" → 改为"用学术风格,包含3个论点,每个论点配1个数据支撑"

3. 上下文完整性

  • 提供必要的背景知识、角色设定、用户画像

二、关键技巧与场景

技巧 核心做法 典型场景
Few-shot 2-5个输入-输出示例 格式固定任务(抽取、分类、SQL生成)
CoT(思维链) "Let's think step by step" 或显式拆解步骤 数学推理、复杂决策、多步分析
Self-consistency 多次采样取多数投票 高确定性要求的推理任务
ReAct Thought → Action → Observation 循环 Agent工具调用场景

三、RAG与Agent中的差异化设计

RAG场景

【系统指令】你是领域专家,严格基于提供的参考资料回答。
【参考资料】{retrieved_docs}
【约束】若资料不足,明确告知"根据现有信息无法确定",禁止编造。

Agent场景

  • 工具描述:用Function Schema精确定义参数和返回值
  • 状态管理:在Prompt中维护任务进度、历史Action、错误回溯

四、工程实践要点

  • 版本管理:用Git管理Prompt模板,记录变更与效果
  • 动态组装:按场景拼接System/User/Context模块,避免硬编码
  • 评测闭环:建立Prompt-level的单元测试(输入变体→输出断言)

学习建议

掌握Prompt基本结构,结合实例练习少样本学习与思维链技巧,理解其在RAG和Agent中的应用逻辑。

口语版讲法(约4分钟)

  • 一句话定位:prompt设计本质是跟模型对齐意图
  • 核心原则:清晰性、具体性、上下文完整性
  • 关键技巧:few-shot和chain-of-thought的适用边界
  • 业务落地:客服退款场景中的prompt设计
  • 风险与取舍:动态组装与评测闭环

这道题其实问的是,你怎么让大模型听懂人话并且干好活,本质是意图对齐。我理解prompt设计不是写作文,而是做接口,得把任务边界、输出格式、上下文约束都交代清楚。

先说核心原则。我总结三个:清晰性、具体性、上下文完整性。清晰性就是告诉模型做什么和不做什么,比如输出格式用JSON模板框死,避免模型自由发挥。具体性就是别写“写得好一点”,要改成“用学术风格,包含三个论点,每个配一个数据支撑”。上下文完整性是说提供必要的背景,比如角色设定、用户画像。这三个原则其实对应的是模型最怕的三种情况:歧义、模糊、信息缺失。

再说技巧。最常用的两个是Few-shot和Chain-of-Thought。Few-shot适合格式固定的任务,比如抽取、分类、SQL生成,给两到五个输入输出示例,模型基本就能照做。Chain-of-Thought适合数学推理、复杂决策,加一句“Let's think step by step”或者显式拆解步骤。但落地时很少只用一种,比如做客服退款意图识别,我会先给几个例子做few-shot,再让模型按“用户诉求-订单状态-退款原因”的链条推理,这样准确率更高。

举个例子,客服退款场景。用户说“我买了件衣服,大小不合适,想退”,如果只给few-shot,模型可能直接输出“退货申请”,但忽略了订单是否已发货、是否在退款期内。所以我会在prompt里加CoT,让模型先判断订单状态,再检查退款政策,最后输出结果。同时输出格式用JSON,包含“action”和“reason”字段,这样下游系统可以直接解析。

这里有个坑:前提是模型能力要够。如果模型本身逻辑弱,CoT反而会放大错误。还有,few-shot的示例要覆盖边界情况,比如退款被拒的例子,否则模型会偏向常见情况。我上线前会特别关注这些。

另外,在RAG场景下,prompt设计要区分系统指令和用户指令。系统指令强调“基于参考资料回答”,用户指令才是具体问题。如果资料不足,要明确说“根据现有信息无法确定”,禁止编造。这个其实涉及到Faithfulness评估,怎么判断模型有没有忠实于资料,是一个值得深挖的点。

最后,工程上我会用动态组装,把系统指令、上下文、示例拆成模块,按场景拼接,避免硬编码在代码里。版本管理用Git,每次改动记录效果。同时建立prompt级的单元测试,输入变体看输出是否符合断言。

所以,我更倾向把prompt设计看成持续的调试过程,不是一锤子买卖。核心是理解模型能力和任务特点,动态调整。

关键一句:RAG场景下prompt设计要区分系统指令和用户指令,并关注Faithfulness评估

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设你在做电商客服,用户问‘这款手机续航怎么样?’只回一句不够,你打算怎么设计prompt让模型既能给出参数,又能对比竞品,最后还推荐配件?

  2. 问法 2 · 层层追问

    你平时写prompt一般注意什么?……如果模型输出总是不符合格式,你会怎么调整?……那再进阶一点,比如让它做多步推理,你会用什么技巧来保证准确性?

  3. 问法 3 · 直球架构

    请系统地讲一下构建有效prompt的原则、常用技巧比如few-shot和思维链,以及在RAG或Agent场景下有什么特别的考虑?

同模块相关题目