NirDiamant/Prompt_Engineering · 上手攻略
- 仓库:NirDiamant/Prompt_Engineering
- 链接:https://github.com/NirDiamant/Prompt_Engineering
- 分类:ai
- 作者:Jay
- 更新:2026-07-15
这是什么
NirDiamant/Prompt_Engineering 是由 AI 教育博主 Nir Diamant 维护的提示工程(Prompt Engineering)教程仓库,汇集了 22 种提示工程技术的 Jupyter Notebook 实战教程,从最基础的单轮/多轮提示模板到 Chain-of-Thought、Self-Consistency、Tree-of-Thought 等进阶策略,覆盖入门到高级完整学习路径。
作者同步出版了 Prompt Engineering from Zero to Hero(Kindle $9.99)电子书,仓库本身是该书所有技术的代码实现。GitHub Stars 数超过 7600,属于提示工程领域被最广泛参考的开源教程之一。
解决什么问题
提示工程长期缺乏系统化学习资源:网上资料碎片化、论文中的技术(如 CoT、Self-Consistency)缺少可运行代码、不同的提示技术(Few-Shot、Role Prompting、Constrained Generation 等)没有统一的学习入口。
本仓库将 22 种提示技术逐一封装成可直接运行的 .ipynb Notebook,每个 Notebook 包含:技术原理解释 + 背景论文引用 + 可运行代码示例 + 预期输出,让学习者"拿来就跑"。
快速安装
方式一:直接在线浏览(无需安装)
每个技术的 Jupyter Notebook 可直接在 GitHub 界面点击打开,利用 GitHub Codespaces 或 Google Colab 在线运行,无需本地配置任何环境。
点击任一技术链接,例如: - Chain-of-Thought Notebook
右上角选择 "Open in Colab" 即可在浏览器中运行。
方式二:本地 Clone
git clone https://github.com/NirDiamant/Prompt_Engineering.git
cd Prompt_Engineering
# 创建虚拟环境(推荐)
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt # 若存在
# 或手动安装核心依赖
pip install jupyterlab openai anthropic google-generativeai
方式三:仅浏览 README 索引
整个仓库的 22 种技术目录结构在 README 中完整列出,无需安装任何东西,直接在 GitHub 页面上阅读技术说明和代码片段即可作为速查手册。
核心用法
技术全景地图
仓库将 22 种技术按难度分五大类:
| 编号 | 分类 | 技术名称 |
|---|---|---|
| 1-3 | 🎓 基础概念 | 提示工程入门 / 基本提示结构 / 提示模板与变量(Jinja2) |
| 4-6 | 🔧 核心技巧 | Zero-Shot / Few-Shot Learning / Chain-of-Thought (CoT) |
| 7-9 | 🎯 进阶策略 | Self-Consistency / Constrained Generation / Role Prompting |
| 10-12 | 🚀 进阶实现 | 任务分解 / 提示链(Prompt Chaining)/ 指令工程 |
| 13-15 | ⚡ 优化 | 提示优化(A/B测试)/ 处理歧义 / 长度与复杂度管理 |
| 16-17 | 🛠️ 专项应用 | 负向提示(Negative Prompting)/ 提示格式化 |
Chain-of-Thought(CoT)示例
CoT 是目前最广泛使用的提示技术,让 LLM 输出推理步骤而非直接给答案:
# 基础 CoT
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{
"role": "user",
"content": (
"A man bought a watch, a pen, and a guitar for a total of $310. "
"The watch costs $50 more than the pen. The guitar costs $150 more than the watch. "
"How much does each item cost? Let's think step by step."
)
}]
)
print(response["choices"][0]["message"]["content"])
Few-Shot Learning 示例
提供少量示例让模型理解任务模式:
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{
"role": "user",
"content": (
"Translate English to French:\n"
"Hello -> Bonjour\n"
"Goodbye -> Au revoir\n"
"Thank you -> "
)
}]
)
Self-Consistency(自洽性)
对同一问题用 CoT 生成多条推理路径,取最一致的答案:
import openai
answers = []
for _ in range(5): # 生成 5 条推理路径
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt + " Let's think step by step."}]
)
answers.append(response["choices"][0]["message"]["content"])
# 取多数票答案(简化示例)
final_answer = max(set(answers), key=answers.count)
Prompt Chaining(提示链)
将复杂任务拆解为多个提示串联执行:
# 第一步:提取关键信息
step1 = openai.ChatCompletion.create(
messages=[{"role": "user", "content": f"从以下文本提取地点和时间:{text}"}]
)
# 第二步:基于提取结果生成摘要
step2 = openai.ChatCompletion.create(
messages=[{"role": "user", "content": f"基于以下信息写摘要:{step1}"}]
)
典型适用场景
| 场景 | 推荐技术 |
|---|---|
| 通用问答(无示例) | Zero-Shot |
| 需要精确格式输出 | Constrained Generation |
| 数学/逻辑推理题 | Chain-of-Thought |
| 翻译、分类等结构化任务 | Few-Shot |
| 复杂多步骤任务 | Prompt Chaining / 任务分解 |
| 减少模型幻觉 | Self-Consistency |
| 生成测试用例(避免某类输出) | Negative Prompting |
| 统一输出格式 | Prompt Formatting |
坑与注意
1. API Key 需要自行配置
仓库代码本身是纯示例,需要自己提供 OpenAI / Anthropic / Google API Key。建议使用 .env 文件管理,不把密钥写进 Notebook:
from dotenv import load_dotenv
import os
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
2. 部分 Notebook 依赖较新版本的 SDK
运行前建议检查 openai 版本(≥1.0),旧版 API 调用方式(如 openai.Completion.create)在新版已废弃:
pip install --upgrade openai anthropic
3. 模型选择影响效果
Few-Shot、CoT 等技术对小型模型(GPT-3.5-turbo)效果明显弱于 GPT-4o / Claude-3.5-Sonnet。使用旧模型时部分技术效果可能与文档截图不符,建议用较新的大模型验证。
4. Google Colab 运行时长限制
在 Colab 上运行含多次 API 调用的 Notebook(如 Self-Consistency 循环 20 次)可能导致超时,建议本地运行或减少循环次数。
5. 提示技术非万能
这些技术能提升效果,但不是对所有任务都有显著帮助。建议先用基准测试(Zero-Shot)建立对照,再用某技术看是否有提升,避免盲目叠加。
与同类对比
| 仓库 | 定位 | 优点 | 缺点 |
|---|---|---|---|
| NirDiamant/Prompt_Engineering | 22 种技术 Notebook 教程 | 体系完整、代码可运行、配套书籍 | 主要面向开发者,理论深度有限 |
| OpenAI Prompt Engineering Guide | OpenAI 官方指南 | 权威、免费 | 仅有文字说明,无代码 |
| microsoft/prompt-engineering | 微软官方 PE 资源 | 企业级视角 | 较分散,不够系统 |
| Brex's Prompt Engineering Guide | 实战技巧汇总 | 偏商业应用 | 技术数量少 |
| Prompt Engineering Guide (DAIR.AI) | 论文+资源汇总 | 覆盖最新研究论文 | 以文本为主,缺少可运行代码 |
一句话推荐结论
NirDiamant/Prompt_Engineering 是目前学习提示工程最值得推荐的"代码优先"仓库——22 个可直接运行的 Notebook 从 Zero-Shot 到 Self-Consistency 完整覆盖,想学透提示工程技术的开发者从这个仓库入手不会错。