1. 什么是 prompt

英文本意是 “提示词”, 它是用户输入的一段文字,用来 引导大模型 生成想要的回答或完成特定任务.
prompt 的构成如下:

role 角色设定

  • system. 设定LLM的身份职责, 开发者注入, 对用户不可见.
  • user . 用户真正自己输入的部分.
  • assistant. 用于存储 多轮对话中模型先前的回答记录. 因为模型自身是无记忆的, 得靠 assistant 机制让模型知道 当前对话已经进行到哪一步,避免重复或断层. 示例见下个段落.

LLM 调用的无状态性

大语言模型(如 GPT、Llama、Qwen)每次推理都是独立的。它无法记住你上一次问了什么 —— 除非你主动把历史对话作为输入传给它.
这就需要 server 工程, 将历史会话记录下来(如记录至 内存、Redis、DB). 用户第二次提问 msg2 时, Server 取出历史,构造如下的信息:

[
  {"role": "user", "content": msg1},
  {"role": "assistant", "content": resp1},
  {"role": "user", "content": msg2}
]

2. prompt 工程

Prompt Engineer(提示工程师) 是一种新兴的技术岗位, 职责是 设计、优化和管理大语言模型(LLM)的输入提示(prompt),以引导模型生成高质量、可靠、符合业务需求的输出。
区别: 普通用户闲聊, 对LLM输出无格式要求, 人能看懂即可. 而 LLM 用于工作流时, 输出得可靠合规.

数据驱动(Data-Driven)

数据驱动的提示工程, Data-Driven Prompt Engineering.
一句话理解: 小明整理 用户数据/线上日志 给到 LLM, 让它总结规律后写成 prompt 给LLM自己, 用于后续对新样本点预测. (类比于 LLM 自己给自己布置工作).

举例: 客服对话意图识别
收集 10,000+ 条历史客服对话记录 -> LLM 总结规律(模式挖掘) -> 生成意图分类 Prompt (提示生成)
-> 部署服务, 对新记录作分类

生成的 Intent Prompt 示例:
┌─────────────────────────────────────────────────────────────┐
│ 根据历史数据分析,用户咨询主要分为以下 8 类:                  │
│ 1. 订单查询(32%)2. 退款申请(18%)3. 物流问题(15%)...    │
│ 请根据用户输入判断意图类别,并提取关键信息(订单号、时间等)  │
└─────────────────────────────────────────────────────────────┘

few-shot 示例构造

  • zero-shot 零样本
    定义:模型从未见过该任务的训练样本,仅靠 Prompt 中的指令完成任务。
    核心:模型靠预训练中学到的通用语言能力“猜”出任务意图
  • few-shot 少样本
    定义:在 Prompt 中提供几个输入-输出示例,模型通过“模仿”完成新任务。
    核心:不是微调,而是上下文学习(In-Context Learning)
# few-shot 示例
句子:我爱这部电影! 情感:正面
句子:这太无聊了。 情感:负面
# input
句子:还不错,但一般。 情感:\_\_中性\_\_

链式推理(Chain-of-Thought)设计

引导模型分步思考,提升复杂任务准确率.

自我反思(Self-Reflective)

自我反思式提示.
模型先生成一个初步答案或排序结果, 然后通过一个反思型提示(self-reflective prompt),引导它:

  1. 审视自己之前的判断是否有遗漏或错误;
  2. 给出更准确、更一致的最终结果。
    这类似于人类“做完题再检查一遍”的过程。

领域知识注入

将行业术语、规则、黑话库动态嵌入 prompt

评测与部署

  • 评估与迭代. 设计评测集,用指标(准确率、合规率、token 成本)驱动优化.
  • 工程化落地, 将 prompt 模板化、参数化,集成到生产系统(如 RAG、Agent)

3. prompt template 用于预训练

预训练的兴起, 让 NLP 模型有了 “pre-train, fine-tune, and predict” 三阶段范式. 这里的 fine-tune 需要:1) 增加新的模型参数 (无论lora 还是 最后加一层全连接); 2) 根据下游任务来构造不同的 loss.
prompt template 思路与此相反, 它将下游任务重新组织成完形填空 或 文本续写的形式, 使其更接近于原始预训练任务, 不需引入新的参数和 loss. 视角由 模型适配下游任务 -> 下游任务适配模型.

T5: Text-to-Text Transfer Transformer (Google, 2019) 这项工作, 首次系统性地将 Prompt Template 用于训练阶段.

Template 设计

通过 prompt 函数将原始输入作转换 x ′ = f p r o m p t ( x ) x' = f_{prompt}(x) x=fprompt(x). 而函数中会用到模板, 上例中的 template 就是:
[X] Overall, it was a [Z] movie.

  • [X]: 表示原始输入 x 的占位符.
  • [Z]: 模板中的一个 slot (槽位), 用于放入答案.

当 [Z] 被填充后, 就称为 filled prompt, 填充函数描述为 f fill ( x ′ , z ) f_{\text{fill}}(x',z) ffill(x,z) .
在这里插入图片描述
图. 适用不同任务的多种 prompt 方法

参考

  1. 知乎, NLP新宠——浅谈Prompt的前世今生
  2. 知乎, NLP新范式:Prompt(提示学习)【综述】
  3. github,PromptPapers
  4. PET, Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference. EACL 2021.
  5. survey,Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐