Prompt 工程
Prompt 工程(Prompt Engineering)详细解读
一、什么是 Prompt 工程
Prompt 工程是指设计、优化输入文本(Prompt),使大语言模型(LLM)产出更符合预期结果的一套方法论与技术体系。
一句话本质:你不会"编程"模型,你是在"沟通"模型,Prompt 就是这门沟通语言。
随着 GPT 为代表的 LLM 爆发,模型能力不再卡在"模型本身",而卡在"你怎么问"。同样一个模型,Prompt 写得好不好,输出质量可能差 10 倍。
二、为什么 Prompt 工程有效(底层原理)
要写好 Prompt,得先理解模型是怎么"读"它的:
Next-token prediction:模型本质是根据上文预测下一个 token,Prompt 就是"上文"。
In-context Learning(上下文学习):LLM 不在 Prompt 里更新权重,但通过示例能在上下文里"临时学会"任务模式。
Attention 聚焦:Prompt 里的关键词会通过注意力机制影响模型关注哪些知识。
概率采样:温度、top-p 等参数决定模型是"保守复述"还是"发散创造"。
💡 所以 Prompt 工程的本质:用自然语言"编程"模型的注意力分配和推理路径。
三、Prompt 工程的六大核心要素
一个成熟的 Prompt 通常包含以下模块(不一定全用,按场景组合):
1. 角色设定(Role / Persona)
让模型切换到特定身份,激活对应知识分布。
你是一位有 10 年经验的资深 Java 架构师,擅长高并发系统设计。2. 任务描述(Task)
清晰告诉模型"做什么",避免歧义。
请将下面这段中文技术文档翻译成英文,要求:术语准确、句式简洁、保留 Markdown 格式。3. 上下文(Context)
给背景信息,减少模型"猜"的空间。
我们的系统是电商秒杀场景,QPS 峰值 5 万,用的是 Redis + MySQL 架构……4. 示例(Few-shot / 思维链触发)
给 1~3 个"输入→输出"样例,模型会模仿模式。
例 1:输入"今天天气好" → 输出"晴朗宜出门,紫外线中等" 例 2:输入"明天有雨" → 输出"记得带伞,气温下降 3℃" 现在处理:输入"周末降温"5. 约束条件(Constraints)
格式、长度、风格、禁忌。
- 输出 JSON,不要多余解释 - 不超过 200 字 - 避免使用"首先/其次/最后"6. 输出格式(Output Format)
明确指定返回结构,方便程序解析。
请按以下格式返回: { "summary": "...", "tags": [...], "confidence": 0.0-1.0 }四、经典 Prompt 技巧图谱
🔹 零样本(Zero-shot)
直接描述任务,不給示例。适合简单任务。
判断下列评论的情感:正面/负面/中性 评论:这手机续航太拉了🔹 少样本(Few-shot)
给 2~5 个示例,模型泛化效果显著提升,尤其对分类、抽取、格式转换。
🔹 思维链(Chain-of-Thought, CoT)
让模型"一步步想",对数学、推理、代码类任务效果炸裂。
请一步步推理,再给答案: 小明有 3 个苹果,小红给他 2 个,他又吃了 1 个,还剩几个?变体:Self-Consistency CoT(跑多次取多数投票)、Least-to-Most(把大问题拆小问题)。
🔹 角色 + 分步(Role + Step-by-Step)
复杂任务拆阶段,每阶段确认再继续,避免一口气跑偏。
🔹 反向 Prompt(Negative Prompt / "不要什么")
明确告诉模型别做什么,比只说"要什么"更有效。
不要编造数据,如果不确定请说"未知"。🔹 结构化分隔符
用###、===、XML 标签帮模型分清结构,尤其长 Prompt。
<context>...</context> <question>...</question> <format>...</format>五、进阶:Prompt 工程的工作流
工业级用法不是"写一句就完事",而是迭代闭环:
写初版 Prompt → 跑测试集 → 看 bad case → 加示例/调措辞 → 再测 → 固化配套工具链:
Prompt 版本管理:像管代码一样管 Prompt(PromptLayer、LangSmith)
自动优化:APE、DSPy、PromptBreeder 等框架让模型自己改 Prompt
RAG 结合:Retrieval-Augmented Generation,Prompt 里塞检索回来的知识,解决幻觉
六、常见坑位 ⚠️
坑 | 表现 | 解法 |
|---|---|---|
指令太模糊 | 输出东拉西扯 | 加角色+约束+格式 |
示例不一致 | 模型学歪 | 示例风格/格式要统一 |
上下文太长 | 模型忘记开头 | 关键信息放开头或结尾(位置偏见) |
温度设太高 | 胡说八道 | 事实类任务 temperature=0 |
忽略模型差异 | GPT 能懂 Claude 懵 | 按模型调 Prompt,别一套通吃 |
七、Prompt 工程 vs 微调 vs RAG
这三件事常被混着谈,其实定位不同:
Prompt 工程:不改模型,改输入,成本最低、首选。
RAG:外挂知识库,解决"模型不知道"和"幻觉",企业落地标配。
微调(Fine-tuning):改权重,适合风格/领域固化,但成本高、数据门槛高。
业界共识路线:先 Prompt → 不行加 RAG → 还不行再微调。
八、学习路径建议
入门:把 OpenAI 的 "Prompt Engineering Guide" 和 Google 的 "Prompt Design" 过一遍
实战:每天拿一个真实任务(写邮件、SQL、代码 review)写 3 版 Prompt 对比
进阶:学 CoT、ReAct(推理+工具调用)、DSPy 框架
深耕:关注 Prompt 注入攻击(security)、自动 Prompt 优化、多模态 Prompt