1. 项目概述与核心价值如果你最近在折腾大语言模型不管是想用它来写代码、分析文档还是搞点自动化的小工具大概率都听过一个词——“提示工程”。听起来挺玄乎好像是什么高深莫测的新学科。其实说白了它就是你跟AI聊天时怎么把话说清楚、说到点子上让它能准确理解并执行你意图的一门手艺。我最初接触GPT这类模型时也踩过不少坑明明觉得自己描述得挺清楚AI给出的答案却总是差那么点意思要么跑偏要么过于笼统。后来才发现问题往往出在我给的“提示”上。这个名为“yunwei37/Prompt-Engineering-Guide-zh-CN”的项目就是一个将英文原版《Prompt Engineering Guide》系统化翻译、整理并持续维护的中文指南仓库。它不是什么商业产品而是一个由社区驱动的开源知识库目标非常纯粹降低中文开发者、研究者和爱好者学习提示工程的门槛把散落在各处的论文、技巧和最佳实践汇集成一份结构清晰、随时可查的手册。对于任何想要真正用好ChatGPT、GPT-4乃至其他大语言模型的人来说这份指南就像一份详尽的“用户说明书”和“进阶秘籍”能帮你从“碰运气式提问”升级到“精准操控式对话”。2. 指南内容架构深度解析这份中文指南并非简单的文档堆砌其内容架构经过精心设计遵循了从入门到精通、从理论到实践的学习路径。理解这个架构能帮助你更高效地利用它。2.1 核心模块划分与学习路径整个指南可以看作一棵知识树主干清晰枝叶丰满。基础与进阶核心区这是指南的基石。提示工程 - 简介模块为你建立正确的认知框架解释为什么需要提示工程以及它如何影响模型输出。紧接着的基础提示和高级提示是两个最重要的实操模块。基础部分会教你最核心的“咒语”比如零样本提示、少样本提示。简单来说零样本就是直接给任务指令考验模型的泛化能力少样本则是提供几个例子让模型“照葫芦画瓢”。高级部分则深入更强大的模式如思维链它引导模型将复杂问题分解成中间步骤再回答显著提升了逻辑推理和数学问题的准确性还有生成知识提示在回答前先让模型生成相关背景知识以此提升回答的信息量和准确性。专项应用与风险防范区掌握了核心技巧后应用模块展示了提示工程在具体场景下的威力比如代码生成、文本摘要、问答系统构建等。而对抗提示和可靠性这两个模块尤为重要它们揭示了模型的另一面。对抗提示教你如何通过精心设计的输入去“攻击”或“探测”模型的弱点例如生成偏见内容或泄露训练数据这不仅是研究前沿对于构建安全、可靠的应用也至关重要。可靠性则关注如何让模型的输出更稳定、更可信比如通过自洽性让模型多次生成答案并选取最一致的或投票机制来提升结果质量。扩展资源与工具生态区指南的剩余部分构成了强大的支持系统。论文模块链接了该领域最前沿的学术研究是深入理解其原理的钥匙。工具模块汇集了诸如LangChain、LlamaIndex等当前最流行的提示工程与AI应用开发框架以及一些专用的提示词管理、测试工具。数据集模块则提供了用于评估和训练提示的数据资源。最后的附加读物和杂项主题则涵盖了伦理、成本优化、特定模型技巧等延伸话题。2.2 内容特色与社区价值这个中文项目有几个突出的特色。首先是同步与迭代。英文原版指南更新非常活跃而这个中文仓库也尽力保持同步更新你看到的不仅是经典知识也包含较新的技术动态。其次是实践导向。很多概念都配有简单的示例代码或伪代码让你能立刻在类似OpenAI Playground或本地测试环境中尝试。最后是社区驱动。项目明确欢迎PR和Issue这意味着它凝聚了许多中文开发者的实践智慧和翻译心血你遇到的困惑可能已经被讨论过你总结的经验也可以贡献进去。注意提示工程并非“万能魔法”。它的效果严重依赖于底层模型的能力上限。一个优秀的提示可以让强大模型的潜力充分发挥但无法让一个能力孱弱的模型完成它根本做不到的任务。因此学习提示工程的同时也需要对所用模型的强项和短板有基本了解。3. 关键提示技术详解与实战演练理解了整体框架我们来深入拆解几个最常用、也最有效的核心提示技术并结合具体场景看看如何应用。3.1 思维链提示让AI“展示思考过程”这是提升模型复杂推理能力的关键技术。其核心思想是当要求模型回答一个需要多步推理的问题时在提示中明确要求它“逐步思考”或“展示推理步骤”。基础示例普通提示“如果小明有5个苹果他吃了2个又买了3个最后有几个苹果”思维链提示“如果小明有5个苹果他吃了2个又买了3个最后有几个苹果请逐步推理。”在实际测试中对于更复杂的问题普通提示可能直接给出一个错误或武断的答案。而思维链提示能显著提升准确性因为模型被强制将问题分解。实战进阶少样本思维链你可以提供几个带有完整推理步骤的例子让模型学习这种模式。示例1 问题一个书架有3层每层放40本书。移走了15本还剩多少本 推理首先计算总书数3层 * 40本/层 120本。然后减去移走的120本 - 15本 105本。 答案105本。 示例2 问题餐厅有30个座位中午来了4批客人每批8人。还有几个空位 推理计算总客人数4批 * 8人/批 32人。客人比座位多所以空位数为0。 答案0个。 请用同样的方式解答 问题一支铅笔8角钱小明买了3支付了5元钱应找回多少钱 推理这种“示例教学”法能让模型快速掌握你期望的推理格式和深度。3.2 角色扮演与系统提示设定对话边界与风格这是与ChatGPT等对话式模型交互时最实用的技巧之一。通过“系统提示”或开场白为AI设定一个明确的角色和对话规则。应用场景代码助手“你是一位经验丰富的Python开发专家擅长编写简洁、高效且符合PEP 8规范的代码。请只回答与代码相关的问题对于无法实现或存在安全风险的需求请明确拒绝并说明原因。”内容审校“你是一名严谨的文本编辑专注于检查语法错误、用词不当和逻辑不清。请直接输出修改后的文本并用批注说明修改原因。”创意写作“你是一位科幻小说家风格偏向赛博朋克。请根据我的简短构思扩展成一个包含环境描写和人物对话的片段。”实操心得 系统提示的设定需要具体、可操作。模糊的指令如“请帮我”效果很差而清晰的指令如“请用Markdown列表形式分点列出……”则能获得结构化输出。此外在长对话中模型可能会“忘记”最初的系统提示这时需要适时地重复或强化核心指令。3.3 结构化输出与格式控制让模型按照特定格式如JSON、XML、YAML输出可以极大地方便后续的程序化处理。基础示例请分析以下产品评论的情感倾向正面、负面、中性并提取关键特征。 评论“手机拍照效果很棒尤其是夜景但电池续航太短一天要充两次电。” 请以JSON格式输出 { sentiment: , positive_aspects: [], negative_aspects: [] }高级技巧嵌套结构与样例提供对于更复杂的结构可以在提示中直接给出一个输出样例。请将以下会议纪要的要点结构化。参考如下输出格式 { topic: 会议主题, date: 日期, key_decisions: [ {decision: 决定内容, owner: 负责人, deadline: 截止日期} ], action_items: [ {item: 行动项, assignee: 分配人, due_date: 到期日} ] } 会议纪要文本[此处粘贴文本]提示在要求JSON输出时明确指定键名和值的数据类型如字符串、数组能减少模型“自由发挥”导致的解析错误。对于关键任务可以结合“输出验证”步骤即让模型在输出JSON后再附加一句“我已确保上述JSON格式正确且完整”。4. 从学习到实践构建你的提示工作流掌握了单项技术如何将它们系统性地应用到实际项目中这就需要建立一个高效的提示工作流。4.1 提示词的开发与迭代流程不要指望一次就能写出完美的提示词。它应该是一个“编写-测试-分析-优化”的循环过程。定义明确目标首先想清楚你究竟想要模型完成什么是总结、翻译、分类、创作还是推理目标越具体提示越容易设计。编写初始提示根据目标组合使用角色设定、任务指令、格式要求等元素写出第一版提示。设计测试集准备一组具有代表性的输入用例最好包含一些边界案例和困难案例。不要只用一两个例子就下结论。批量测试与评估使用你的测试集运行初始提示收集输出结果。评估标准应与目标对齐如准确性、完整性、风格符合度、格式正确率。分析失败案例仔细检查输出不理想的案例。是模型理解错了指令还是忽略了部分约束或者是格式乱了这是优化提示的关键。迭代优化提示根据分析结果修改提示词。可能需要增加更明确的指令、提供更清晰的示例、调整角色设定、加入约束条件如“不超过50字”。固化与文档化当提示在测试集上表现稳定后将其版本化保存并记录其用途、输入输出示例、适用模型版本和已知限制。4.2 工具链集成以LangChain为例手动管理提示词和调用API效率低下。这时就需要用到指南中提到的工具比如LangChain。它是一个将LLM与外部数据、工具连接起来的强大框架。一个简单的LangChain提示模板应用from langchain.prompts import PromptTemplate from langchain.chat_models import ChatOpenAI # 1. 定义提示模板 template 你是一位专业的{language}翻译。请将以下英文技术文档片段翻译成{language}要求术语准确、行文流畅符合技术文档风格。 英文原文 {english_text} {language}翻译 prompt PromptTemplate.from_template(template) # 2. 填充模板 filled_prompt prompt.format(language中文, english_textThe quick brown fox jumps over the lazy dog.) # 3. 调用模型 llm ChatOpenAI(model_namegpt-4, temperature0.3) # temperature控制创造性 response llm.predict(filled_prompt) print(response)通过LangChain你可以轻松地将提示词参数化、模板化并与链式调用、记忆、工具使用等功能结合构建复杂的AI应用流水线。4.3 成本与性能优化考量提示工程也关乎实用经济学。尤其是使用GPT-4这类按Token收费的API时。精简提示在保证效果的前提下移除提示中不必要的描述和冗余信息。每一个Token都在花钱。缓存结果对于频繁出现、答案固定的问题如FAQ可以将模型的输出缓存起来避免重复调用。模型分级调用对于简单的分类、提取任务可以先使用更便宜、更快的模型如GPT-3.5 Turbo进行尝试如果置信度不高再调用更强大的模型如GPT-4进行复核或重做。设置合理的temperature和max_tokenstemperature参数控制随机性0表示确定性高1表示创造性高。对于事实性任务设为较低值如0.1-0.3对于创意任务可以调高。max_tokens限制生成长度避免生成过长无关内容导致费用激增。5. 常见陷阱、问题排查与进阶思考即使遵循了最佳实践在实际操作中仍然会遇到各种问题。这里记录一些典型的“坑”和解决思路。5.1 典型问题速查表问题现象可能原因排查与解决思路输出完全偏离主题提示指令模糊或与模型训练数据中的常见模式冲突。1. 检查并重写指令使其更具体、无歧义。2. 使用“角色扮演”强化上下文。3. 尝试“少样本提示”提供明确范例。模型忽略部分指令提示过长或结构混乱关键指令被淹没。1. 将最重要的指令放在提示的开头或结尾。2. 使用分隔符如---、清晰划分指令、上下文和输入。3. 用序号或项目符号列出要求。输出格式不稳定对输出格式的描述不够严格。1. 明确指定格式如JSON、Markdown表格并给出具体样例。2. 在指令中加入“必须严格遵循以下格式”。3. 后处理阶段增加格式校验和修正。生成内容事实错误“幻觉”模型基于不准确的内部知识生成。1. 在提示中要求模型“基于提供的上下文回答”并提供可靠来源。2. 对于关键事实要求模型注明信息出处如果上下文中有。3. 引入“检索增强生成”模式先检索后生成。处理长文本时性能下降输入超出模型上下文窗口或关键信息在中间被稀释。1. 对长文本进行分块处理摘要或分段提问。2. 使用具有更长上下文窗口的模型。3. 在提示中明确要求“关注文档中关于XX的部分”。5.2 超越基础提示系统化思维当单个提示无法解决复杂问题时需要考虑系统化的解决方案。提示链将一个大任务分解为多个子任务每个子任务由一个专门的提示完成并将上一个提示的输出作为下一个提示的输入。例如“分析报告 - 提取关键发现 - 生成执行摘要”。验证与修正循环设计一个“生成-验证-修正”的循环。例如先让模型A生成一份草案再让模型B或同一模型扮演不同角色从特定角度如逻辑、事实、格式进行评审并提出修改意见最后让模型A或C根据意见进行修正。动态提示构建根据用户输入或中间结果动态组装不同的提示模板。这需要一定的程序逻辑但能极大提升交互的灵活性和准确性。5.3 伦理与安全边界提示工程能力越强责任也越大。在构建应用时必须主动考虑偏见与公平性你提供的示例或指令是否隐含了性别、种族、文化等偏见这可能会被模型放大。信息真实性避免设计可能诱导模型生成虚假信息或进行欺诈的提示。隐私与数据安全切勿在提示中嵌入真实的个人身份信息、密码、密钥等敏感数据。滥用防范思考你的提示模板或应用是否可能被轻易用于生成垃圾邮件、虚假评论、恶意代码等。这份“yunwei37/Prompt-Engineering-Guide-zh-CN”指南正是你系统化学习、实践并最终驾驭这些技巧的绝佳起点。它提供的不是一堆死板的命令而是一套关于如何与AI有效协作的思维模式和方法论。我的体会是最好的提示工程师往往是那个最懂业务、最清楚自己想要什么同时也最愿意像调试代码一样不断调试自己与AI沟通方式的人。从今天起不妨把你下一个需要AI协助的任务当作一次提示工程的小实验从这份指南中找一个技巧用起来看看效果如何。