为了提高团队提示词技巧,我让 ChatGPT 基于《Google 提示词工程白皮书》生成了一组知识卡片,见下方。
同时,人工补充了《Gemini 提示词指南入门》的有效提示词框架。
在整个生成过程中还有些小插曲,将其附于文末,方便回顾和参考。
高效提示词框架
- 角色(Persona)
- 任务(Task)
- 上下文(Context)
- 格式(Format)
例子如下:
You are a program manager in [industry]. Draft an executive summary email to [persona] based on [details
about relevant program docs]. Limit to bullet points.
🛠️ 有效提示词工程最佳实践
原则 | 核心思想 | 示例 / 技巧 |
---|---|---|
提供示例(Provide Examples) | 使用单样本(one-shot)或少样本(few-shot)示例,向模型展示优质输出的样貌。 | ✅ 在分类提示词中包含 3-5 个不同类型的示例。 |
简洁设计(Design with Simplicity) | 清晰、简洁、结构化的提示词比模糊或冗长的更有效。 | ❌ “我们在纽约应该做什么?” -> ✅ “列出曼哈顿的 3 个家庭景点。“ |
明确输出要求(Be Specific About Output) | 明确定义输出的长度、格式、语调或限制。 | “写一份 3 段的总结,格式为 JSON。“ |
指令优于约束(Instructions > Constraints) | 告诉模型要做什么,而不是不要做什么。 | ✅ “列出顶级的游戏机及其制造商。” 对比 ❌ “不要提及视频游戏名称。“ |
控制 Token 长度(Control Token Length) | 使用模型配置或提示词表述来限制响应长度。 | “用一句话解释” 或设置 Token 限制。 |
使用变量(Use Variables) | 通过插入动态值来模板化提示词,以便重复使用。 | 告诉我一个关于 {城市} 的事实。 |
尝试输入风格(Experiment with Input Style) | 尝试不同的格式:问题、陈述、指令。 | 🔄 比较:“X 是什么?”, “解释 X。”, “写一篇关于 X 的博客。“ |
打乱类别顺序(Few-Shot)(Shuffle Classes (Few-Shot)) | 打乱响应类别的顺序,以避免模型对提示词模式过拟合。 | ✅ 在少样本任务中随机化类别标签的顺序。 |
适应模型更新(Adapt to Model Updates) | 大语言模型不断发展;定期测试并调整提示词。 | 🔄 针对新的 Gemini / GPT / Claude 版本重新调优。 |
尝试输出格式(Experiment with Output Format) | 对于结构化任务,要求以 JSON/XML 格式输出以减少歧义。 | “以有效的 JSON 格式返回响应。“ |
记录提示词迭代(Document Prompt Iterations) | 记录每个提示词的更改和测试。 | 📝 使用表格或版本控制系统。 |
🎯 核心提示词工程技术
技术 | 描述 | 示例总结 |
---|---|---|
零样本(Zero-Shot) | 不提供任何示例,直接向模型提问。 | 🧠 “将此评论分类为正面/中性/负面。“ |
单样本(One-Shot) | 提供一个示例来展示预期的格式/输出。 | 🖋️ 输入 + 示例 -> 新输入 |
少样本(Few-Shot) | 提供多个示例来展示一个模式。 | 🎓 使用 3-5 个不同类型的示例。有助于解析、分类等。 |
系统提示(System Prompting) | 设置高层次的任务目标和输出指令。 | 🛠️ “以 JSON 格式返回答案。标签只使用大写字母。“ |
角色扮演提示(Role Prompting) | 为模型分配一个角色或身份。 | 🎭 “扮演一位旅行向导。我在东京。“ |
上下文提示(Contextual Prompting) | 提供相关的背景信息以指导输出。 | 📜 “你正在为一家复古游戏博客撰稿。“ |
回溯提示(Step-Back Prompting) | 首先提出一个普遍性问题,然后解决具体问题。 | 🔄 提取相关主题 -> 用作上下文 -> 提出最终问题 |
思维链(Chain of Thought, CoT) | 要求模型逐步思考。提高推理能力。 | 🤔 “让我们一步一步地思考。“ |
自洽性(Self-Consistency) | 生成多个思维链,并选择最常见的答案。 | 🗳️ 多次运行相同的 CoT 提示词,采用多数投票。 |
思维树(Tree of Thoughts, ToT) | 对于更复杂的问题,并行探索多个推理路径。 | 🌳 大语言模型像决策树一样探索不同的路径。 |
ReAct(Reason & Act) | 结合推理与行动。模型进行决策、执行行动(例如通过工具/API)、观察结果并迭代。 | 🤖 思考 -> 行动 -> 观察 -> 思考 |
自动化提示(Automatic Prompting) | 使用大语言模型自动生成提示词变体,然后评估最佳变体。 | 💡 “生成 10 种表达‘订购一件小号 Metallica T 恤’的方式。“ |
⚙️ 大语言模型输出配置要点
配置选项 | 作用 | 最佳使用场景 |
---|---|---|
最大 Token 长度(Max Token Length) | 限制响应的 Token 数量。 | 📦 防止失控生成,控制成本/速度。 |
温度(Temperature) | 控制 Token 选择的随机性(0 = 确定性)。 | 🎯 0 适用于精确答案(例如,数学/代码),0.7+ 适用于创意生成。 |
Top-K 采样(Top-K Sampling) | 从 Top K 个最可能的 Token 中选择下一个 Token。 | 🎨 K 值越高 = 输出越多样。K=1 = 贪婪解码。 |
Top-P 采样(Top-P Sampling) | 从累积概率大于等于 P 的最小 Token 集合中选择。 | 💡 Top-P ~0.9-0.95 能提供质量与多样性的平衡。 |
🔁 这些设置如何相互作用
如果你设置… | 那么… |
---|---|
temperature = 0 | Top-K/Top-P 被忽略。总是选择最可能的 Token。 |
top-k = 1 | 类似于贪婪解码。温度/Top-P 变得无关紧要。 |
top-p = 0 | 只考虑最可能的 Token。 |
high temperature (e.g. >1) | 使 Top-K/Top-P 占据主导地位。Token 采样变得更随机。 |
✅ 初始配置速查表
目标 | 温度 | Top-P | Top-K | 备注 |
---|---|---|---|---|
🧠 精确回答 | 0 | 任意 | 任意 | 适用于逻辑/数学问题,确定性输出 |
🛠️ 半创作性 | 0.2 | 0.95 | 30 | 平衡、信息丰富的输出 |
🎨 高度创作性 | 0.9 | 0.99 | 40 | 适用于故事、想法、写作 |
Vibe 创作过程回顾
为何使用 ChatGPT 生成知识卡片?
在日常使用过程中,发现 ChatGPT 的文笔明显比 Gemini 强很多,表现力也更丰富,因此这个选择也就不难理解了。
由此外推,凡事有文笔要求的地方,ChatGPT 都是更好的选择。包括但不限于:市场营销、产品文案、创意写作等。
甚至于,在你灵感枯竭之时,或者是只有一个大致想法时,你都可以把它当作产品经理或者创意总监来使用。
比如在做老胡茶室时,当时灵感来自于千利休的待庵。但首页的 Slogan 始终没有想好,只是隐约想结合两点跟“茶”相关的典故:石田三成的三献茶和赵州禅师的“且吃茶去”。
于是,将这个想法输入 ChatGPT,虽然未最终照搬其文案,但基于它的初始文案修改成了最终的版本:
"三盏茶意,洞见 AI、区块链、研发与人生真味。个中滋味,且吃茶去!"
借助 vibe-coding 完成最终格式生成
最早版本的 ChatGPT 中,复制的生成结果时是复制的其内部 Markdown 格式,无需特别设定。
基于这个记忆,我将首次复制结果粘贴到编辑器中时,发现其格式已经改变。于是,回到 ChatGPT,让其将结果导出到 Markdown 文件。However,这次虽然格式对了,但内容却已不是第一次的结果。
很明显,它重新生成了一个新版本,然后再将其导出。
此时,我也没有耐心去在这么个小任务上去展示我的提示词功力,于是打算采用简单而暴力的做法:截屏并将其递给 vscode copilot agent,让其生成匹配图片的 Markdown 文件。
成功!
最终,让 Gemini 将其翻译成:中文和日文两个版本。
提示:当需要多语言版本时,尤其涉及技术类内容时,先生成英文版本,再让 LLM 翻译成其他语言,这样会更准确。