Prompt_Engineering
22种主流提示工程技术实战教程,LangChain + Jupyter Notebook 从零到进阶
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
22种主流提示工程技术实战教程,LangChain + Jupyter Notebook 从零到进阶
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你对 ChatGPT 说"帮我写一段代码",它给你回了一段看起来对、但运行就报错的东西。你心里大概率会想:"这AI不太行啊"。但真相可能是——你只是没有用对它的方式。
Prompt Engineering(提示工程),就是那座桥。它研究的是如何用最精准的语言,引导大语言模型(LLM)输出你想要的结果。这件事听起来简单,做起来却让无数开发者头疼:为什么我写的提示总是得不到好结果?为什么别人的提示能激发 GPT-4 的全部潜力?
NirDiamant/Prompt_Engineering 正是为了解决这个痛点而生。这个 GitHub 仓库收录了 22 种主流提示工程技术,每种技术都配有完整的 Jupyter Notebook 实战教程,从最基础的零样本提示,到进阶的思维链(Chain of Thought)推理,再到前沿的自我一致性(Self-Consistency)策略——可以说,这是目前互联网上最系统、最全面的提示工程学习资源之一。截至目前,该项目已获得 7,683 Stars 和 986 Forks,在 AI 学习类仓库中名列前茅。
该项目作者 Nir Diamant 是一位专注于 LLM 应用开发的工程师,长期活跃于 LinkedIn 和 Twitter,分享 AI 领域的实战心得。他创建这个仓库的初衷非常朴素:在日常工作中,他发现自己在调试提示词时反复踩坑、积累的经验没有系统性归档,于是决定把所有经过验证的提示工程技术整理成册、开源共享。
这个动机本身就很值得玩味——它说明提示工程在很长一段时间里都是"隐性知识",靠的是个人经验和口耳相传,缺乏系统性的文档和教程。Prompt_Engineering 仓库的出现,正是要打破这个信息壁垒。
从时间线上看,该仓库的 22 个 Notebook 覆盖了提示工程从入门到进阶的完整学习路径,既有基础概念类(如 Introduction to Prompt Engineering、Basic Prompt Structures),也有高级策略类(如 Self-Consistency、Tree-of-Thought Prompting),还有垂直场景类(如 Ethical Prompt Engineering、Evaluating Prompt Effectiveness)。这种分类方式让不同水平的学习者都能找到适合自己的起点。
该仓库的 22 个 Jupyter Notebook 可以分为以下几个大类,每类都对应着提示工程中的一个核心问题:
零样本提示(Zero-Shot Prompting) 是最基础的用法——不给模型任何示例,直接下达指令。项目中的 zero-shot-prompting.ipynb 详细讲解了这种方式的适用场景和局限性,指出它在处理简单、明确的任务时效果尚可,但面对需要专业领域知识或复杂推理的问题时往往力不从心。
少样本提示(Few-Shot Learning) 则更进一步,通过在提示中加入 1-3 个示例,帮助模型理解任务的格式和意图。few-shot-learning.ipynb 不仅演示了如何构造示例,还深入探讨了示例选择、排序以及"标签污染"等高级话题。
思维链提示(Chain of Thought, CoT) 是近年最受关注的技术之一。核心思想是:让模型在给出最终答案之前,先展示推理过程。cot-prompting.ipynb 详细介绍了两种实现方式:
项目还涵盖了 自我一致性(Self-Consistency) 技术——让模型生成多条推理路径,选择出现频率最高的答案,从而提升结果的可靠性。
角色提示(Role Prompting) 通过为AI分配特定身份(如"你是一名资深数据科学家")来激活模型的相关知识储备。role-prompting.ipynb 探讨了角色设定的边界条件——过于夸张的角色反而可能导致输出不稳定。
Jinja2 模板与变量(Prompt Templates with Jinja2) 教你如何将提示词参数化,方便在不同场景下复用。prompt-templates-variables-jinja2.ipynb 展示了如何用 Jinja2 语法构建灵活的提示模板。
受限引导生成(Constrained Guided Generation) 则关注如何在提示中设置输出格式约束,例如要求模型必须以 JSON 格式返回结果,或强制其遵循特定的分类标签。
仓库专门开辟了两个 Notebook 讨论提示工程的"阴暗面":
评估提示有效性(Evaluating Prompt Effectiveness) 提供了系统化的评估框架,帮助开发者在迭代优化时有一个客观的衡量标准。
项目还包含了一些较为前沿的技术:
该项目虽然以 Jupyter Notebook 为载体,但其代码实现的技术选型颇具参考价值:
| 依赖 | 版本 | 作用 |
|---|---|---|
| langchain | 0.3.2 | 构建 LLM 应用的主流框架,提供统一的提示词管理接口 |
| langchain-openai | 0.2.2 | OpenAI GPT 系列接入适配器 |
| langchain-community | 0.3.1 | 第三方集成(Claude、HuggingFace 等) |
| langsmith | 0.1.131 | LLM 应用的可观测性平台,支持提示词版本管理与效果追踪 |
| openai | 1.51.1 | OpenAI API 官方 Python SDK |
| huggingface-hub | 0.25.2 | HuggingFace 模型生态接入 |
| transformers | 4.45.2 | HuggingFace 核心模型库,支持 GPT、LLaMA 等 |
| sentence-transformers | 3.1.1 | 语义嵌入模型,用于提示词相似度匹配 |
| jinja2 | 3.1.4 | 提示模板引擎 |
这套技术栈清晰地表明:Prompt_Engineering 不仅教授概念,更是在教如何用 LangChain 这样的生产级框架落地提示工程。这对于有实际项目需求的开发者来说是巨大的附加价值。
架构上,每个 Notebook 都是一个独立的学习单元,遵循 "Overview → Theory → Hands-on Demo → Exercises" 的四段式结构,理论与实践紧密结合。

环境要求(非常友好):
安装步骤:
git clone https://github.com/NirDiamant/Prompt_Engineering.git
cd Prompt_Engineering
pip install -r requirements.txt
使用方式:
jupyter notebookall_prompt_engineering_techniques/ 目录下的任意 .ipynb 文件OPENAI_API_KEY 环境变量(部分 Notebook 需要)注意:该仓库不支持容器化部署(无 Dockerfile),也没有 Web UI。它是一个本地学习工具包,所有 Notebook 都设计为在本地 Jupyter 环境中运行。对于想要快速体验的用户,可以在 Google Colab 中直接打开任意 Notebook。

优势:
局限:
过去两年间,提示工程经历了从"玄学"到"科学"的认知转变。早期,很多人认为提示工程就是"多说几句好话",但随着 GPT-4、Claude、Gemini 等模型能力的不断提升,研究者发现提示方式对输出质量的影响可以达到 30-50%——这个幅度足以决定一个 AI 应用的可用性。
Prompt_Engineering 项目的价值在于,它把这种"隐性经验"显性化、体系化。对于:
从增长曲线看,该项目自发布以来持续稳定增长,Stars 数在 2024 年突破 5000 大关,2025 年继续攀升至 7683,反映了市场对系统性提示工程知识的强烈需求。可以预见,随着 Agent(智能体)技术的兴起,提示工程将从"聊天技巧"升级为"Agent 行为编排的核心能力",这类学习资源的重要性将进一步凸显。
NirDiamant/Prompt_Engineering 是目前最值得推荐的提示工程学习资源之一。它用 22 个实战 Jupyter Notebook,构建了一条从"会用 AI"到"用好 AI"的完整路径。无论你是 AI 小白还是资深开发者,都能从中获得实质性的提升。唯一的门槛是:你需要愿意动手写代码——毕竟,提示工程从来不是看出来的,是练出来的。