⚠️ Alpha内测版本警告:此为早期内部构建版本,尚不完整且可能存在错误,欢迎大家提Issue反馈问题或建议。
Skip to content

一、定义:Prompt Engineering 是什么?

Prompt Engineering(提示工程),是指通过设计、组织和优化输入给大语言模型(LLM)的提示(Prompt),从而引导模型产生更准确、更稳定、更符合预期输出的一种方法论与工程实践。

二、Prompt 的组成结构

一个高质量 Prompt,不应该是一段散文,而应该像一个结构良好的 JSON 对象。通常包含以下四个核心组件:

  • 1. 指令(Instruction):系统的核心任务。告诉模型它的终极目标是什么。
    • 示例:“请提取以下文本中的核心观点并翻译为英文。”
  • 2. 上下文(Context):提供执行任务所需的背景知识或外部检索到的数据。
    • 示例:“背景:这是一篇关于 2024 年 AI 芯片市场格局的行业研报内部摘要...”
  • 3. 示例(Examples / Few-shot):消除歧义的最有效手段。不要只告诉它怎么做,演示给它看。
    • 示例
      text
      输入: "这件衣服不仅丑,而且掉色!" -> 输出: 极度负面
      输入: "发货挺快的,包装也还行。" -> 输出: 中立偏正面
  • 4. 输出格式(Output Format):约束输出的结构,这对于后续的工程化代码解析至关重要。
    • 示例:“请严格遵守 JSON 格式输出,包含 summary (字符串) 和 keywords (数组) 两个字段。”

👉 万能总结公式: Prompt = Instruction + Context + Examples + Output Constraint


三、常见 Prompt Engineering 的技术方法

掌握了基础结构后,我们需要引入学术界和工业界验证过的 specific 技术来提升模型表现:

1. Zero-shot Prompting(零样本提示)

不给任何示例,直接提问。依赖于模型在预训练阶段积累的庞大知识库。

  • 适用场景:简单分类、翻译、常识问答。
  • 局限:非常依赖模型本身的参数规模(GPT-4 表现极好,但小模型容易翻车),输出格式极不稳定。

2. Few-shot Prompting(少样本提示)

通过给模型提供少量的“输入-输出”对,激发模型的上下文学习(In-context Learning)能力。

  • 核心优势:极大提高输出格式的稳定性和语气的连贯性。
  • 注意事项:示例的质量远比数量重要,示例的选择需要覆盖边缘 case。

3. Chain-of-Thought, CoT(思维链)

向模型中注入“思考过程”。不要让模型直接给出答案,而是强制它展示推理路径。

  • 示例:“请一步一步地进行推理(Let's think step by step)”。
  • 原理解析:这相当于给模型分配了更多的计算资源(Token),让它在输出最终答案前,有一个“草稿本”进行逻辑推演,大幅降低复杂数学和逻辑题的幻觉率。

4. Role Prompting(角色扮演)

给模型设定一个具象化的 Persona(人设)。

  • 示例:“你现在是一位有着 20 年经验的华尔街宏观经济分析师,你的语言风格需要严谨、数据驱动、带有批判性思维...”
  • 原理解析:这种技术会在高维向量空间中迅速激活与该职业/领域相关的专属知识网络,改变模型的语言“风格”和预设立场。

5. Instruction Decomposition(任务拆解 / Least-to-Most)

面对极其复杂的需求,大模型容易“顾此失彼”(比如忘了格式,或者跳过了某一步骤)。

  • 解法:将巨型 Prompt 拆解为流水线式的步骤。
    • Step 1: 仔细阅读给定的财报数据,提取所有涉及营收的数字。
    • Step 2: 对提取的数据计算同比增长率。
    • Step 3: 根据计算结果,写一段不超过 100 字的总结报告。

6. Output Structuring(结构化输出)

这是将大模型集成到现有软件系统中的生命线。强制模型使用 JSON、XML 或 Markdown 表格输出,避免模型乱加废话(比如“好的,这是您的 JSON:”这种会导致代码解析崩溃的废话)。


四、Prompt Engineering 的痛点

在实验室里调出一个惊艳的 Prompt 很容易,但在生产环境中大规模应用,你会面临一系列工程化噩梦:

1. 不稳定性(Non-determinism)

  • 时间维度:同样的 Prompt,今天跑和明天跑,甚至两次连续调用,给出的结果可能不一样。
  • 模型维度:为 GPT-3.5 深度优化的 Prompt,迁移到 Claude 3 或 Llama 3 时,表现可能一塌糊涂。提示词极度依赖具体模型的底层特性。

2. 提示词脆弱性(Brittleness)

稍微改变一两个词的顺序,加一个标点符号,或者替换一个同义词,模型可能突然从“智商 140”降级为“人工智障”。结果完全不可预期。

3. 上下文限制与注意力丢失(Context Window Limits)

虽然现在的模型宣称有 128k 甚至 1M 的 Context,但这并不意味着你可以无限堆砌信息。

  • 迷失在中间(Lost in the Middle)现象:大模型往往能记住开头和结尾的信息,但对于塞在长文本中间的约束条件,它极大概率会选择性忽略。因此需要对信息进行精准裁剪和压缩。

4. 不可组合性与难维护(Lack of modularity)

传统的代码可以通过函数进行封装、抽象和继承。但 Prompt 是一坨自然语言文本,很难像代码一样进行版本控制(Versioning)、单元测试和模块化复用。当业务逻辑变得复杂时,Prompt 会变得越来越臃肿,最终变成“谁也不敢动”的祖传代码。