你是不是也遇到过这样的问题花了几十块钱买的 API 调用额度结果大模型给你的回答要么是“正确的废话”要么干脆答非所问或者你看着别人用同样的模型轻松实现了文本总结、代码生成、智能客服而自己写的提示词却像在“抽奖”效果时好时坏这背后差的可能不是模型能力而是Prompt Engineering提示词工程的认知和实践。很多人以为提示词工程就是“把话说清楚”但实际上它是一门融合了心理学、语言学和软件工程学的系统性技术。一个精心设计的提示词能让模型从“听话的复读机”变成“懂你的智能助手”。最近吴恩达教授联合 OpenAI 推出的《ChatGPT Prompt Engineering for Developers》课程被很多人誉为“2026年公认最好的提示词工程教程”。这个评价并非空穴来风。它之所以备受推崇是因为它彻底跳出了“零散技巧分享”的层面从工程化和可复现的角度为开发者构建了一套从入门到进阶的完整知识体系。课程不仅告诉你“怎么写”更深入解释了“为什么这么写有效”以及如何将提示词作为可靠组件集成到你的应用中。本文将以这门课程的核心思想为纲结合 OpenAI 官方的最佳实践和大量实战案例为你拆解大模型提示词工程的完整方法论。无论你是想快速上手 API 调用还是希望构建稳定的 AI 应用这篇文章都将为你提供一条清晰、可落地的学习路径。我们将从最核心的“思维转变”开始逐步深入到复杂场景的提示设计并最终探讨如何将提示词工程融入真实的开发流程。1. 提示词工程从“玄学”到“工程学”的思维转变在深入技术细节之前我们必须先纠正一个常见的认知误区提示词工程不是“魔法咒语”的收集而是“精确指令”的设计。许多初学者容易陷入两个极端一是认为提示词越复杂、越详细越好结果写成了小作文模型反而抓不住重点二是认为模型“智能”到能理解一切潜台词只用只言片语然后抱怨模型输出质量差。吴恩达课程开篇就强调有效的提示词工程建立在两个基本原则之上清晰与具体给模型明确无歧义的指令。给予模型思考时间通过步骤化、结构化引导模型进行推理。这听起来简单但做起来需要思维模式的彻底转变。我们来看一个对比传统模糊交互低效用户“帮我分析一下数据。” 模型“好的我分析了数据发现了一些趋势。”输出一堆笼统、无法使用的描述工程化指令高效用户“请分析附件中的销售数据CSV文件。首先计算2023年Q1至Q4每个季度的总销售额和环比增长率。然后找出销售额最高的三个产品类别。最后将结果以Markdown表格形式呈现并附上一段不超过100字的总结指出最关键的增长点和潜在风险。” 模型输出结构清晰的表格和精准的总结第二种方式之所以高效是因为它模拟了给人类优秀助手布置工作的方式背景清晰、任务分解、输出格式明确。这就是工程化思维的核心——将模糊的需求转化为可被稳定、重复执行的明确指令。对于开发者而言掌握提示词工程意味着降低成本更少的无效Token消耗更精准的结果直接降低API调用成本。提升可靠性让AI输出的质量变得可控、可预测便于集成到生产流程。扩展能力边界通过巧妙的提示设计让基础模型完成更复杂的任务如逻辑推理、多步骤规划等。接下来我们将从最基础的准则开始逐步搭建你的提示词工程知识体系。2. 两大核心原则编写有效提示词的基石根据 OpenAI 官方指南和吴恩达课程的精髓所有高效的提示词都遵循两大核心原则。理解并应用它们是告别“提示词玄学”的第一步。2.1 原则一编写清晰、具体的指令“清晰具体”不等于“冗长”而是要求指令无歧义为模型划定清晰的思考边界。使用分隔符明确指示输入部分这能防止用户输入中的内容“污染”你的指令。常用分隔符包括 ---,,tag/tag等。# 不佳的示例指令和文本混在一起 prompt “总结以下文本人工智能是未来它将改变许多行业。我们需要学习它。总结” # 更佳的示例使用分隔符 text_to_summarize “”” 人工智能作为一项颠覆性技术正在驱动全球范围内的产业变革。在医疗领域AI辅助诊断系统能提升阅片效率与准确率在金融领域智能风控模型可以实时监测异常交易。对于个人而言理解AI的基本原理与应用场景已成为适应未来社会的关键技能之一。 “”” prompt f“”” 请将用三个反引号括起来的文本总结为一句话。 {text_to_summarize} “””这样做可以确保模型准确识别哪里是需要处理的文本哪里是处理指令。要求结构化输出为了便于后续程序处理直接要求模型输出 JSON、HTML 或特定格式的列表。prompt “”” 从以下产品评论中提取信息。 请以 JSON 格式提供输出包含以下键 - sentiment: (positive, neutral, negative) - product_name: (产品名称) - key_features: (用户提到的主要功能列表) - issue_reported: (用户报告的问题如果没有则为空列表) 评论这款智能手机的摄像头表现令人惊艳夜景模式尤其出色。但是电池续航有点短一天需要两充。 “””预期的输出将是结构化的 JSON 对象可以直接用json.loads()解析无缝接入你的业务逻辑。指定完成任务所需的步骤对于复杂任务将指令分解为明确的步骤。prompt “”” 请按以下步骤处理用户查询 步骤1判断查询意图是属于“产品咨询”、“故障投诉”还是“订单查询”。 步骤2根据意图从知识库中提取关键信息点。 步骤3用友好、专业的口吻组织回复。 用户查询我上周买的耳机今天右耳突然没声音了怎么办 “””这种“思维链”Chain-of-Thought式的提示能显著提升模型在复杂推理任务上的表现。提供示例少样本学习在要求模型完成特定格式的任务时提供一两个示例效果极佳。prompt “”” 你的任务是将中文口语化句子转换为正式的商务邮件用语。 请保持原意不变。 示例1 输入哥们儿那个合同你看了没没啥问题就赶紧签了发回来。 输出尊敬的同事请问您是否已审阅完毕合同如无异议烦请尽快签署并返还。 示例2 输入老板说这个报价太高了让你再降点。 输出管理层反馈当前报价超出预算建议您重新评估并提供更具竞争力的方案。 现在请转换以下句子 输入这批货到底啥时候能到客户那边催死了。 输出 “””2.2 原则二给模型时间“思考”如果让人类瞬间解答复杂数学题也容易出错。模型同理我们需要通过提示设计引导其一步步推理而不是直接索要答案。指定完成任务所需的步骤同上本身就是一种给予思考时间的策略。指导模型先自行得出结论在模型做出最终判断前让它先输出其推理过程。# 不佳的示例直接询问判断 prompt “学生解决方案...一个物理题解法。这个解法对吗” # 更佳的示例要求先推理 prompt “”” 请按步骤评估学生的物理题解法。 首先逐步检查学生的计算过程和公式应用是否正确。 然后基于你的检查判断最终答案是否正确。 最后给出你的结论。 学生解决方案... “””这样能极大减少模型因“跳跃”思考而导致的“幻觉”或错误。使用内心独白Inner Monologue模式这是一种高级技巧要求模型将推理过程以特定格式如“思考...”输出而只将最终答案呈现给用户。这在构建对话系统时非常有用便于调试和监控模型的“思考”路径。prompt “”” 你是一个客户服务助手。请按以下格式响应用户 思考[在这里进行你的内部推理分析用户问题查找知识库] 回答[给用户的最终、简洁的回答] 用户我的订单 #12345 显示已发货但一周了还没收到物流更新。 “””掌握了这两大原则你就已经超越了80%的随意使用者。接下来我们需要将这些原则应用到具体的开发任务中。3. 环境准备从零开始搭建提示词开发环境理论需要实践来验证。为了高效地进行提示词开发和测试一个顺手的开发环境至关重要。这里我们推荐使用Jupyter Notebook或Python 脚本配合OpenAI Python SDK。3.1 基础环境配置安装 Python确保你的系统安装了 Python 3.7 或更高版本。可以从 Python官网 下载。创建虚拟环境推荐隔离项目依赖避免包冲突。# 在项目目录下 python -m venv venv # 激活虚拟环境 # Windows: venv\Scripts\activate # macOS/Linux: source venv/bin/activate安装必要的库核心是openai库同时可以安装python-dotenv来管理密钥。pip install openai python-dotenv3.2 获取并安全配置 API 密钥获取 OpenAI API Key访问 OpenAI Platform 。登录后点击右上角个人头像选择 “View API keys”。点击 “Create new secret key” 生成一个新的密钥。请立即复制并妥善保存关闭页面后将无法再次查看完整密钥。安全地使用密钥切勿硬编码在代码中在项目根目录创建一个名为.env的文件。将你的 API 密钥写入该文件OPENAI_API_KEY你的-api-key-在这里重要将.env添加到你的.gitignore文件中确保它不会被提交到版本控制系统如Git中以免密钥泄露。在代码中通过环境变量加载密钥import os from openai import OpenAI from dotenv import load_dotenv # 加载 .env 文件中的环境变量 load_dotenv() # 初始化客户端它会自动从环境变量 OPENAI_API_KEY 中读取密钥 client OpenAI() # 现在你可以使用 client 进行调用了3.3 构建一个可复用的提示词测试函数为了高效迭代提示词我们可以编写一个辅助函数它接收提示词和模型参数并返回模型的响应。import openai from openai import OpenAI import os from dotenv import load_dotenv load_dotenv() client OpenAI() # 默认使用环境变量中的 OPENAI_API_KEY def get_completion(prompt, modelgpt-3.5-turbo, temperature0): 一个简单的函数用于调用ChatCompletion API。 参数: prompt: 输入的提示词字符串。 model: 使用的模型默认为 gpt-3.5-turbo。 temperature: 控制输出的随机性范围0-2。0表示确定性最高。 返回: 模型生成的文本内容。 messages [{role: user, content: prompt}] try: response client.chat.completions.create( modelmodel, messagesmessages, temperaturetemperature, ) return response.choices[0].message.content except Exception as e: return f发生错误: {e} # 测试函数 if __name__ __main__: test_prompt “请用一句话介绍人工智能。” result get_completion(test_prompt) print(result)这个get_completion函数将成为我们后续所有实验的基础工具。环境搭建完毕让我们进入实战环节。4. 核心任务实战四大应用场景的提示词设计掌握了原则和工具我们通过四个最常见的开发场景来具体看如何设计高效的提示词。4.1 场景一文本总结与提取这是最基础也最实用的功能。关键在于控制总结的焦点、长度和格式。任务总结一篇长技术文章面向不同受众。article “”” 这里是一篇关于“微服务架构与单体架构对比”的长文章约1500字 “”” prompt_for_executive f“”” 请用一段话不超过200字总结以下用括起来的文章。 总结需突出技术决策对业务的影响如开发速度、系统稳定性、成本避免使用技术行话。 目标读者是公司管理层。 {article} “”” prompt_for_developer f“”” 请用三个要点总结以下用括起来的文章。 每个要点应涉及一个核心的技术权衡如数据一致性、部署复杂度、团队协作。 目标读者是有经验的软件工程师。 {article} “”” summary_exec get_completion(prompt_for_executive) summary_dev get_completion(prompt_for_developer) print(“给管理层的总结\n”, summary_exec) print(“\n给开发者的总结\n”, summary_dev)通过指定“目标读者”我们引导模型调整总结的语言和侧重点实现了信息的定制化输出。4.2 场景二推理与判断让模型进行逻辑推理例如情感分析、主题推断、内容审核等。任务判断客户评论的情感并提取具体原因。review “”” 这款笔记本电脑的设计非常轻薄携带方便屏幕色彩也很棒。但是电池续航远低于宣传的10小时实际使用不到5小时就没电了。键盘手感也比较一般。 “”” prompt f“”” 针对以下用括起来的商品评论执行以下任务 1. 识别评论的整体情感倾向[积极 消极 混合]。 2. 如果情感是混合或消极的列出用户提到的具体问题。 3. 如果情感是积极的列出用户称赞的具体优点。 4. 以JSON格式输出包含 sentiment, issues列表, praises列表 三个字段。 评论{review} “”” result get_completion(prompt, temperature0) # temperature0 使输出更确定 print(result) # 期望输出类似 # { # sentiment: 混合, # issues: [电池续航远低于宣传, 键盘手感一般], # praises: [设计轻薄便携, 屏幕色彩好] # }结构化输出JSON使得分析结果可以被程序直接解析和处理极大提升了自动化程度。4.3 场景三内容转换与翻译不仅仅是语言翻译还包括语气转换、格式转换如JSON转表格、风格仿写等。任务将一段技术文档转换为社交媒体风格的推广文案。tech_description “”” 我们的新产品“DataFlow X”是一个实时数据流处理平台。它采用分布式架构支持每秒处理百万级事件提供端到端的Exactly-Once语义保证并内置了强大的监控和告警功能。适用于金融风控、物联网数据分析、实时推荐等场景。 “”” prompt f“”” 你是一位资深社交媒体运营。请将以下用括起来的技术产品描述改写成一篇吸引人的、适合在LinkedIn上发布的推广短文。 要求 - 语言生动、有感染力使用emoji。 - 突出产品能解决的核心痛点。 - 以“你是否也为...而烦恼”这样的问句开头。 - 长度在150字左右。 - 在文末添加3个相关的话题标签。 技术描述{tech_description} “”” social_post get_completion(prompt, temperature0.7) # 适当提高temperature增加创造性 print(social_post)4.4 场景四代码生成与解释这是开发者最关心的场景。关键在于提供清晰的规格说明和上下文。任务生成一个Python函数并解释其工作原理。prompt_for_code “”” 请编写一个Python函数名为 find_common_elements。 功能接受两个列表作为输入参数返回一个包含这两个列表共有元素的新列表。 要求 - 忽略重复元素即在结果列表中每个元素只出现一次。 - 保持结果列表中元素的原始顺序以第一个列表中的出现顺序为准。 - 包含详细的文档字符串docstring。 - 编写两个简单的测试用例来验证函数。 请直接输出代码无需额外解释。 “”” code get_completion(prompt_for_code, temperature0) print(code) # 然后可以要求模型解释代码 prompt_for_explanation f“”” 请用通俗易懂的语言向一位编程初学者解释以下Python函数是如何工作的 python {code}请分步骤说明函数的输入、处理逻辑和输出。 “””explanation get_completion(prompt_for_explanation) print(“\n代码解释\n”, explanation)通过分步提示我们不仅能得到可运行的代码还能获得一份高质量的学习材料。对于更复杂的代码生成提供更多的上下文如使用的库、函数签名示例至关重要。 ## 5. 迭代与优化像调试代码一样调试提示词 很少有提示词能一次写就完美。提示词开发是一个典型的 **“编写-测试-评估-优化”** 的迭代过程。 ### 5.1 构建测试集Test Set 不要只用一个例子测试。为你的任务创建一个小型测试集包含多个具有代表性的输入和期望的输出或输出标准。 * **示例**如果你在做一个“邮件分类”提示词你的测试集应该包含“咨询”、“投诉”、“感谢”、“订阅取消”等各类邮件样本。 ### 5.2 系统化评估输出 评估不应是模糊的“看起来不错”。建立清晰的评估标准 * **完整性**输出是否包含了所有要求的信息 * **准确性**信息是否准确无误对于事实性任务 * **相关性**输出是否紧扣主题没有跑偏或添加无关信息 * **格式符合度**是否严格遵守了指定的输出格式JSON、XML、Markdown等 ### 5.3 常见的优化策略 当输出不理想时可以按以下顺序尝试优化 1. **更清晰的指令**你的指令是否有二义性能否用更精确的词语参考原则一。 2. **更具体的约束**增加对输出长度、风格、排除内容的限制。 python # 优化前 prompt “写一个关于春天的故事。” # 优化后 prompt “以一个在城市中感到孤独的年轻人的视角写一个关于春天来临的300字短篇故事。故事基调应是温暖中带有一丝感伤结局留有希望。请避免使用陈词滥调如‘万物复苏’。” 3. **提供更好的示例Few-shot**如果任务需要特定格式或风格提供1-2个高质量的输入输出示例效果立竿见影。 4. **分解任务Chain-of-Thought**如果任务很复杂要求模型先执行步骤A再基于结果A执行步骤B。 5. **调整参数**主要是 temperature 和 top_p。 * temperature默认0.7值越高接近1输出越随机、有创意值越低接近0输出越确定、保守。**对于需要事实准确、格式固定的任务如数据提取、代码生成建议设为0。对于创意写作、头脑风暴可以设为0.7-0.9。** * max_tokens设置生成内容的最大长度防止生成过长内容消耗过多Token。 ### 5.4 使用“系统提示词”System Message设定角色 在Chat Completion API中messages 参数可以包含一个 system 角色的消息用于设定模型的整体行为和角色。这比在用户消息中反复说明更有效。 python def get_completion_with_system(system_prompt, user_prompt, modelgpt-3.5-turbo): messages [ {role: system, content: system_prompt}, {role: user, content: user_prompt} ] response client.chat.completions.create( modelmodel, messagesmessages, temperature0, ) return response.choices[0].message.content # 示例让模型扮演一个严谨的代码审查助手 system_prompt “你是一个经验丰富的Python代码审查助手。你的回答必须专业、精准。指出代码问题时要引用PEP 8等规范并提供修改建议。对于不确定的问题明确表示不确定。” user_prompt “请审查以下Python函数def add(x,y): return xy” result get_completion_with_system(system_prompt, user_prompt) print(result)6. 超越基础高级模式与框架对于更复杂的应用简单的单次提示可能不够。我们需要引入更高级的模式和框架。6.1 思维链Chain-of-Thought, CoT通过要求模型“逐步推理”显著提升其在数学、逻辑推理等复杂问题上的准确性。这通常通过在提示词中明确要求模型展示推理步骤或提供包含推理步骤的少样本示例来实现。prompt “”” Q: 咖啡馆里有23个苹果。如果用了20个做苹果派又买了30个新苹果现在有多少个苹果 A: 我们一步一步想。 最初有23个苹果。 用掉了20个所以剩下 23 - 20 3个苹果。 然后又买了30个新苹果所以现在有 3 30 33个苹果。 答案是33。 Q: 一个房间有10个人。每个人和其他每个人都握手一次。一共会发生多少次握手 A: “””6.2 智能体Agent模式在这种模式下模型被赋予使用工具如计算器、搜索引擎API、代码执行器、访问外部知识、以及进行多轮规划和决策的能力。这通常需要框架如 LangChain, LlamaIndex的支持其核心思想是模型接收用户目标。模型决定是否需要使用工具以及使用哪个工具。系统执行工具调用并将结果返回给模型。模型分析结果决定下一步是继续使用工具还是给出最终答案。虽然用纯提示词实现完整Agent较复杂但我们可以模拟其决策逻辑prompt “”” 你是一个智能助手可以调用以下工具 - 计算器用于数学计算。 - 搜索引擎用于查询实时信息。 - 知识库用于查询内部文档。 请根据用户问题决定是否需要调用工具以及调用哪个工具。请按以下格式回答 思考[分析问题决定行动方案] 行动[调用工具的名称如果需要的话。如果不需要写“直接回答”] 行动输入[调用工具所需的输入例如计算式或查询词] 用户问题请计算截至2023年特斯拉Model 3的全球总销量大约是多少并告诉我它比2022年增长了多少百分比 “”” # 在实际框架中系统会解析“行动”和“行动输入”调用真实工具再将结果注入后续对话。6.3 检索增强生成Retrieval-Augmented Generation, RAG当模型需要处理其训练数据之外的最新或专有知识时RAG是关键技术。其工作流程是检索根据用户问题从一个外部知识库如向量数据库中检索出最相关的文档片段。增强将这些片段作为上下文与原始问题一起构成提示词。生成模型基于增强后的提示词生成答案。这解决了大模型的“知识截止”和“幻觉”问题。一个简化的提示词模板如下context “””从知识库中检索出的相关文档文本”“” question “用户的具体问题” prompt f“”” 请仅根据以下提供的上下文信息来回答问题。如果上下文信息不足以回答问题请直接说“根据提供的信息无法回答此问题”。不要利用你已有的知识进行补充。 上下文信息{context}问题{question} “””7. 常见问题与排查指南在实际开发中你一定会遇到各种问题。下表总结了一些典型问题及其解决方法问题现象可能原因排查与解决思路输出内容完全无关或胡言乱语1. 提示词指令极度模糊或矛盾。2.temperature参数设置过高导致随机性太强。3. 模型上下文被之前的对话污染在长对话中。1. 检查并重写提示词确保指令清晰、具体、无歧义。2. 对于事实性任务将temperature设为 0 或接近 0。3. 在对话应用中定期清理或总结历史上下文。输出格式不符合要求1. 指令中对格式的描述不够明确。2. 模型“理解”了格式但生成时出现偏差。1. 在提示词中明确指定格式如“请输出一个JSON对象包含以下字段...”并提供示例Few-shot。2. 在程序后端添加一层输出格式校验和清洗逻辑。模型忽略部分指令指令过于冗长模型未能捕捉到全部要点。1. 简化指令将核心要求放在最前面。2. 使用分隔符如### 指令 ###将指令与上下文分开。3. 将复杂指令分解为多个步骤通过多次API调用完成。输出存在“幻觉”编造事实1. 模型在训练数据中缺乏相关知识。2. 提示词诱导了猜测。1. 对于需要事实准确性的任务使用RAG模式提供可靠的参考上下文。2. 在提示词中要求模型“仅根据提供的信息回答”并说明“如果不知道请明确说明”。3. 对关键事实进行二次验证通过其他来源或规则。API调用超时或返回错误1. 提示词过长超过了模型上下文窗口。2. 网络问题或API服务暂时不可用。3. 账户额度用尽或密钥无效。1. 检查并压缩提示词长度。对于超长文本考虑先进行摘要再处理。2. 实现重试机制如 exponential backoff。3. 检查OpenAI平台上的账户状态和用量。处理速度慢成本高1. 使用了更大、更慢的模型如 GPT-4。2. 提示词设计低效生成了过多无用内容。1. 评估任务复杂度许多任务用gpt-3.5-turbo足以胜任性价比更高。2. 优化提示词明确限制输出长度max_tokens。3. 对批量任务进行异步处理或使用流式响应。8. 工程化最佳实践将提示词融入开发流程当提示词从实验走向生产环境时我们需要用工程化的思维来管理它。版本控制像管理代码一样管理你的提示词。使用 Git 等工具为提示词的每次迭代创建提交并写好变更说明。这有助于回溯和协作。参数化与模板化不要将提示词硬编码在业务逻辑中。将其提取为模板使用变量如{user_input},{context}进行动态填充。可以使用 Python 的string.Template或 Jinja2 等模板引擎。from string import Template summary_template Template(“”” 请将以下关于 $topic 的文本总结为面向 $audience 的 $length 字摘要。 文本$content “””) prompt summary_template.substitute( topic“微服务架构” audience“技术经理” length“300” contentlong_article_text )测试与评估自动化为你的提示词建立自动化测试套件。使用你的测试集定期运行评估输出质量可以通过规则匹配、模型评分等方式确保提示词的修改不会导致性能回退。监控与日志在生产环境中记录关键的提示词输入和模型输出注意脱敏隐私数据。这有助于分析问题、优化效果和理解用户真实需求。成本与性能监控监控 API 调用的 Token 消耗、延迟和错误率。设置告警防止因意外流量或低效提示词导致成本激增。安全与合规输入过滤对用户输入进行清洗防止提示词注入攻击用户输入可能包含破坏你预设指令的内容。输出过滤对模型输出进行安全检查过滤不当、偏见或有害内容。隐私保护确保发送给 API 的数据不包含个人身份信息PII、商业秘密等敏感内容。9. 总结从入门到精通的路径提示词工程不是一蹴而就的魔法而是一项可以通过系统学习和持续练习掌握的工程技能。回顾吴恩达课程的精髓和本文的梳理你可以遵循以下路径精进掌握基础深刻理解“清晰具体”和“给予思考时间”两大原则并能在简单任务中熟练应用。场景化练习针对文本总结、推理、转换、代码生成等具体场景设计并优化提示词积累模式和经验。学会迭代建立“编写-测试-评估”的循环像调试代码一样调试你的提示词学会使用系统提示词、Few-shot示例等高级技巧。理解高级模式了解思维链CoT、智能体Agent、检索增强生成RAG等高级模式的应用场景和基本原理知道在什么情况下该用什么工具。走向工程化当你的应用变得复杂开始关注提示词的版本管理、模板化、自动化测试、成本监控和安全合规将其作为软件系统的一部分来严肃对待。最终最强大的提示词来源于你对业务需求的深刻理解和对模型能力的准确把握。不要追求“万能提示词”而应致力于为每一个具体任务找到“最合适”的提示词。现在就从搭建你的测试环境优化手头的第一个提示词开始吧。