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 完整覆盖,想学透提示工程技术的开发者从这个仓库入手不会错。