Chapter 01

提示词工程基础

理解 LLM 的工作原理,掌握 token、temperature 等核心参数,构建有效提示词的底层逻辑

大语言模型的本质

LLM 是什么?

大语言模型(Large Language Model,LLM)是一种基于 Transformer 架构的深度学习模型,通过在海量文本数据上进行预训练,学习了人类语言的统计规律。从本质上说,LLM 在做一件事:预测下一个 token 的概率分布

当你输入"巴黎是法国的"时,模型根据训练数据中的统计模式,预测下一个词最可能是"首都"(概率 0.92),其次是"城市"(0.05),再次是"首席"(0.02)……然后根据这个概率分布采样出一个词,再预测下一个,如此循环,直到生成完整的回复。

核心认知:概率机器,不是知识库

LLM 不是在"查找"正确答案,而是在"生成"最可能的文本序列。这解释了为什么它会"幻觉"(生成听起来合理但实际错误的内容)——因为统计上合理不等于事实上正确。理解这一点,是学好提示词工程的第一步。

核心术语词典

Token(词元)
LLM 处理文本的最小单位,不等于单词。英文中平均 1 个单词约等于 1.3 个 token,中文中 1 个汉字约等于 1–2 个 token。"ChatGPT" 被分割为 ["Chat", "G", "PT"] 三个 token。GPT-4 的上下文窗口上限为 128K tokens,约等于 9 万个英文单词。
Context Window(上下文窗口)
模型在生成回复时能"看到"的最大 token 数量,包含对话历史、系统提示词和当前输入。超出上下文窗口的内容会被截断,模型将"忘记"早期对话。Claude 3.5 的上下文窗口为 200K tokens,Gemini 1.5 Pro 达到 100 万 tokens。
Temperature(温度)
控制输出随机性的参数,范围通常为 0–2。Temperature=0 时每次生成相同结果(确定性最高),适合代码生成、数学计算;Temperature=1 是默认值,平衡创造性与准确性;Temperature=2 时输出极度随机,适合头脑风暴。
Top-P(核采样)
另一种控制随机性的参数。Top-P=0.9 表示每次只从概率之和达到 90% 的候选 token 中采样,排除长尾低概率选项。与 Temperature 共同使用时,建议只调整其中一个,避免相互干扰。
Prompt(提示词)
发送给模型的输入文本,是与 LLM 交互的主要接口。广义的 prompt 包含:系统提示词(System Prompt)、对话历史(Conversation History)和用户当前输入(User Input)三部分。
Completion(补全)
模型生成的输出文本。OpenAI API 早期采用"Completion"范式,现代 API 主要采用"Chat"范式(包含 system/user/assistant 角色),但底层仍是文本补全。
Hallucination(幻觉)
模型生成听起来合理但实际错误的信息,如虚构的引用文献、错误的历史日期、不存在的 API。这是概率采样机制的副作用,通过提示词设计可以显著减少(但无法完全消除)。
Tokenizer(分词器)
将原始文本切分为 token 的工具。不同模型使用不同的分词器,同一段文字在不同模型中的 token 数量可能不同。可使用 OpenAI 的 tiktoken 库或 Hugging Face 的 tokenizers 库统计 token 数量。

Temperature 与 Top-P 的实用指南

按任务类型选择参数

任务类型 推荐 Temperature 推荐 Top-P 说明
代码生成、Bug 修复 0 – 0.2 0.1 需要确定性和准确性,低随机性
数据提取、格式转换 0 0.1 结构化输出,要求完全可重复
问答、摘要生成 0.3 – 0.7 0.9 准确性优先,允许轻微变化
文案写作、内容创作 0.7 – 1.0 0.9 平衡创造性与连贯性
头脑风暴、创意生成 1.0 – 1.5 0.95 高创造性,允许意外发现
实践建议

对于生产环境的应用,建议将 temperature 固定为确定值(如 0 或 0.3),而不是使用默认值,这样输出更稳定可预期。在调试阶段可以尝试不同值找到最优设置。

提示词的基本结构

四要素框架

一个完整的提示词通常由四个要素组成,并不是所有要素都必须包含,但理解每个要素的作用有助于构建更有效的提示词:

① 指令(Instruction)
明确告诉模型需要执行什么任务。这是最核心的要素,必须清晰、具体、无歧义。例如:"将以下英文段落翻译成中文,保持原文的正式语气。"
② 上下文(Context)
提供背景信息,帮助模型理解任务所处的情境。例如:目标受众是谁、内容将用于何处、有什么限制条件。上下文越丰富,输出通常越精准。
③ 输入数据(Input Data)
需要模型处理的具体内容,如待翻译的文本、待分析的代码、待总结的文章。通常用分隔符(如 ```、---、XML 标签)与指令部分隔开,避免混淆。
④ 输出格式(Output Format)
指定期望的输出结构,如"以 JSON 格式返回"、"用三个要点总结"、"回复不超过 100 字"。明确格式要求能大幅减少后处理工作量。

结构化提示词示例

下面是一个将四要素结合的完整示例:

# 指令
你是一位资深产品经理,请分析以下用户反馈,提取主要问题和改进建议。

# 上下文
这是我们 App 在应用商店的用户评论,产品是一款待办事项管理应用,
目标用户是职场人士,我们下个月有版本迭代计划。

# 输入数据
---
"同步经常出问题,手机和电脑的数据不一致,很烦躁"
"界面还不错,但是没有日历视图,不知道本周有哪些任务"
"标签功能很好用,希望能支持子标签"
"提醒通知太频繁了,能不能自定义提醒时间间隔"
---

# 输出格式
以 JSON 格式返回,包含三个字段:
- issues: 主要问题列表(按严重程度排序)
- suggestions: 改进建议列表
- priority_feature: 下个版本最应该优先做的功能(1个)
为什么要用分隔符?

当提示词中同时包含指令和输入数据时,使用 ---``` 或 XML 标签(<text>...</text>)明确分隔两者,可以防止"Prompt Injection"——恶意输入通过模拟指令格式劫持模型行为。这是生产环境中的重要安全实践。

不同模型的特性对比

主流 LLM 对比

模型 上下文窗口 擅长领域 提示词特点
GPT-4o 128K tokens 代码、推理、多模态 遵循指令能力强,对格式要求敏感
Claude 3.5 Sonnet 200K tokens 长文档分析、写作、安全 偏好 XML 标签结构,拒绝有害请求更严格
Gemini 1.5 Pro 100 万 tokens 超长文档、视频理解 超大上下文优势明显,适合全文档分析
Llama 3.1 405B 128K tokens 开源、可本地部署 遵循标准聊天模板,可微调

模型无关的提示词原则

尽管不同模型有各自的特点,以下原则在所有主流 LLM 上均有效:

为什么提示词质量直接影响输出?

信息压缩与解压的视角

可以把 LLM 理解为一个巨大的压缩文件——训练数据中的所有知识和模式都被压缩进了模型参数中。而提示词就是"解压密码":不同的提示词会激活模型参数空间的不同区域,解压出不同的知识和能力。

一个精心设计的提示词,能激活模型中最相关的"知识区域",引导其沿着最有价值的推理路径前进。一个模糊的提示词,则会导致模型在概率最高的"平均路径"上行进,输出的是最"普通"的内容,而非最有价值的内容。

常见误区:更长不等于更好

提示词长度和质量不成正比。超长的提示词可能导致模型"注意力分散",尤其是关键指令被淹没在大量背景信息中。研究表明,最重要的指令应该放在提示词的开头或结尾,而不是中间(模型对首尾位置的注意力更强)。

实验:相同问题,不同提示词

差的提示词:

帮我写一封邮件

结果:模型不知道收件人、主题、语气、长度,只能生成通用模板。

好的提示词:

写一封给客户 A 公司
CTO 的合作邀请邮件。
背景:我们是 B 公司(SaaS 工具),
希望探讨在他们的开发流程中
集成我们产品的可能性。
语气:专业但不刻板,
长度:200-250 字,
在第二段提及我们的核心价值点:
节省 40% 的代码审查时间。