提示词工程实战:从普通提问到AI高手Prompt的五大核心技巧

提示词工程实战:从普通提问到AI高手Prompt的五大核心技巧 同样是用 ChatGPT、Claude、DeepSeek 这些大模型为什么有的人写出来的分析报告逻辑清晰、数据准确、代码可用而自己得到的回答总像是“正确的废话”很多时候问题真的不在模型本身而在于你发给模型的 prompt提示词。Prompt 就是你和 AI 之间的沟通语言。你描述得越模糊AI 只能靠“猜”来给你结果你描述得越精准、越结构化AI 给出的答案就越接近你真正想要的东西。很多人在网上看过各种“高手 Prompt 模板”但拿过来自己用还是效果一般原因并不是模板不好而是没理解模板背后的设计逻辑。这篇文章会从实际对比出发拆解普通用户和 AI 高手在 prompt 使用上的核心差距并给出完整的示例代码、结构化模板、常见报错排查和工程化建议。不管你是刚开始接触 AI 大模型还是已经在做 AI 应用开发都可以从中找到可以直接落地的思路。1. 为什么同一款 AI不同人用效果完全不同1.1 先看一个直观对比假设你要让 AI 帮你写一个 Python 函数普通用户可能会这样提问帮我写一个Python函数计算两个日期之间的天数。AI 给出的结果往往也能用但你会发现它可能没处理日期格式异常、没考虑开始日期晚于结束日期等情况。而一个 AI 高手的 prompt 可能是这样的# 角色 你是一名精通Python标准库的资深后端开发工程师。 # 任务 编写一个Python函数用于计算两个日期之间的天数差。 # 输入参数 - start_date: str格式 YYYY-MM-DD - end_date: str格式 YYYY-MM-DD # 要求 1. 只使用Python标准库datetime不使用第三方库 2. 如果 start_date end_date返回负数 3. 如果日期格式不合法抛出ValueError并给出清晰的中文错误提示 4. 输出完整可运行代码包含函数定义、类型注解和docstring # 示例 输入: start_date2025-01-01, end_date2025-01-10 输出: 9 请直接输出代码。同样一个需求两种 prompt 得到的代码质量差别非常大。高手的 prompt 其实只是在四个维度上做了提升角色、目标、约束、示例。1.2 大模型是怎么“理解”Prompt 的要理解 prompt 为什么重要先要理解大模型的运行机制。以 GPT、ChatGLM、DeepSeek 这类大型语言模型为例它的核心能力是给定一段文本预测下一个最可能出现的 token词元。你输入的 prompt本质上是在指定一个条件概率分布。prompt 里提供的上下文越具体模型在生成时可供“推理”的约束就越多输出就越稳定。这也能解释为什么同一个问题你追问一句“请用 Markdown 表格输出”和“请详细解释”得到的结果会完全不同。因为模型不是真的“看懂”了你的意图而是根据你给的文本在高维空间中往最可能的方向生成。所以 Prompt Engineering提示词工程本质上不是玄学而是一种“如何用更高质量的上下文引导模型在期望范围内生成”的工程方法。1.3 Prompt、Skill 和 Agent 的关系最近 AI 圈经常出现几个概念prompt、skill、agent很多初学者容易混淆。Prompt你发给模型的指令文本是一切交互的基础。Skill可以理解为一个封装好的“技能模板”里面可能包含多组 prompt、参数配置和使用说明。例如在 Coze、Dify 这类平台上你可以把一套写文案的流程封装成 skill复用到不同场景。Agent在 prompt 的基础上增加工具调用、记忆、任务规划、循环执行等能力让模型能自主完成一个多步骤任务。Prompt 往往是 Agent 的“大脑系统提示词”负责定义 Agent 的行为边界和任务目标。可以简单理解成Prompt 是“说一句话”Skill 是“一套话术模板”Agent 是“一个会调用工具来完成任务的数字员工”。2. 环境准备搭建一个可复现的 Prompt 调试环境在继续讲技巧之前建议你先准备好一个本地调试环境。后面很多示例代码你需要实际跑一遍才能感受到 prompt 差异带来的输出变化。2.1 准备模型服务本文示例使用 OpenAI 兼容接口风格调用适合 ChatGPT、DeepSeek、通义千问、Moonshot 等大多数国内可访问的大模型服务。以 DeepSeek 为例你需要先到官网注册账号创建一个 API Key。需要说明的是各家的模型版本、接口地址和计费规则变化较快下面代码中的 base_url、model 名称需要根据你所用的服务商进行调整。2.2 安装 Python 依赖建议使用 Python 3.9 以上版本然后安装 openai 库pip install openai如果你使用的是国内网络环境直接安装即可不需要额外配置代理。2.3 基础调用示例创建一个 Python 文件test_prompt.py写入以下内容from openai import OpenAI client OpenAI( api_keysk-你的APIKey, base_urlhttps://api.deepseek.com ) response client.chat.completions.create( modeldeepseek-chat, messages[ {role: system, content: 你是一名资深的Python后端工程师。}, {role: user, content: 请写一个函数判断一个字符串是否为合法的邮箱地址。} ], temperature0.3 ) print(response.choices[0].message.content)运行python test_prompt.py这里有两个参数需要注意temperature控制随机性。值越低输出越稳定保守值越高输出越发散。调试 prompt 阶段建议设为 0.1~0.3方便对比不同 prompt 的真实效果。messages包含 system系统角色和 user用户输入。高手通常会把角色设定放在 system 中把具体任务放在 user 中让模型更容易遵循指令。3. AI 高手写 Prompt 的五个核心技巧3.1 先给角色再给任务很多人习惯直接写“帮我写一段文案”“帮我写一段代码”但高手通常会先给模型设定一个角色。原因在于角色设定会激活模型在训练阶段学习到的特定领域表达模式。bad_prompt 帮我写一份产品需求文档。 good_prompt # 角色 你是一名拥有5年经验的B端产品经理擅长撰写逻辑严谨、可落地执行的产品需求文档。 # 任务 请针对一个「企业内部员工请假审批系统」撰写一份产品需求文档。 在 API 调用中角色信息可以放到 system 消息里messages [ {role: system, content: 你是一名资深后端工程师代码风格简洁注重边界条件处理。}, {role: user, content: 实现一个函数给定一个整数列表返回列表中的最大值。请考虑空列表的异常情况。} ]需要注意的是角色设定不能太宽泛。比如“你是一名专家”这种说法效果有限不如“你是一名精通 Python 的量化交易系统开发工程师”来得具体因为后者提供了更明确的领域上下文。3.2 给足上下文但别给噪声模型在回答时主要依据 prompt 中提供的上下文进行推理。如果上下文缺少关键信息模型只能靠猜或者用“正确的废话”来填充。例如你想让 AI 帮你分析用户流失原因只写“帮我分析用户流失”肯定不够。高手会先描述业务背景、数据字段、分析目标和输出形式。同时也不要给太多无关信息。把和任务无关的背景、历史对话、冗余描述堆在一起反而会干扰模型。一个经验法则是prompt 中每句话都应该为“让模型更准确地完成目标”服务多余的话要么删掉要么折叠到 system 中。3.3 少讲抽象要求多给 Few-shot 示例这是新手和高手之间最明显的差距之一。新手喜欢用形容词来约束模型比如“写得好一点”“写得专业一点”“结构清晰一点”。但模型对“好”“专业”“清晰”的理解和你可能不一致。高手更倾向于用 Few-shot少样本示例来告诉模型“什么样算好”。示例比形容词更直接。few_shot_prompt 请判断以下用户反馈属于哪个问题分类性能问题、稳定性问题、功能建议、其他。 示例1: 用户反馈: 登录页面一直转圈卡了五分钟才打开。 分类: 性能问题 示例2: 用户反馈: 点击支付按钮没有反应App直接闪退了。 分类: 稳定性问题 示例3: 用户反馈: 设置里找不到夜间模式建议增加这个功能。 分类: 功能建议 用户反馈: 下单成功之后没有收到确认短信订单超时被取消了。 分类: 这里不需要长篇大论解释分类规则几个示例就能让模型学会你的分类标准。3.4 拆解复杂任务引导模型分步思考对于复杂任务直接让模型一次性输出完整答案往往会出现遗漏或逻辑跳跃。这时候可以采用“分步引导”的方式让模型先拆解步骤再逐步推导。典型方式有两种第一种是显式分步提问请计算 ((2 3) * 4 - 1) / 1.5 的结果。 请你按以下步骤执行并输出每一步的计算结果 1. 先计算括号内的加法 2 3 2. 再计算乘法 3. 然后计算减法 4. 最后计算除法第二种是让模型在内部“先想后答”在给出最终方案之前请先列出 1. 用户的核心诉求 2. 可能存在的边界场景 3. 技术选型理由 然后再给出完整方案。这种“先拆解再回答”的方式能明显提高长文本生成的逻辑一致性在编写代码、撰写方案、数据分析和内容创作场景中都非常有效。3.5 用输出格式约束生成结果如果你只是把 AI 当成聊天工具输出格式不重要。但如果你在做 AI 应用开发或者希望批量处理结果就必须在 prompt 中明确输出格式。最常见的是 JSON 格式约束请提取合同中的关键信息并严格按照JSON格式输出不要输出其他内容。 输出格式 { contract_no: 合同编号, sign_date: 签署日期, party_a: 甲方名称, party_b: 乙方名称, total_amount: 合同总金额, currency: 币种, payment_terms: 支付条款摘要 }如果你想得到表格请将以下数据整理成Markdown表格包含三列字段名、说明、数据类型。需要注意的是虽然 prompt 可以要求模型输出 JSON但模型偶尔还是会输出一些额外文字。在工程实践中通常还要在后端代码中做一次格式校验和异常兜底不能完全依赖 prompt。4. 实战案例把普通 Prompt 一步步改写成高手 Prompt下面我们通过一个完整的实战案例演示如何把一个模糊的 prompt逐步优化成高质量、可稳定复现的 prompt。4.1 原始业务需求假设我们是电商平台的数据分析师需要让 AI 生成一份“用户流失预警分析”的代码和结论。原始需求很简单帮我写一份用户流失分析的代码。这个 prompt 的问题在于数据源不明确、字段不明确、流失定义不明确、输出形式不明确AI 只能给一个泛泛而谈的通用模板。4.2 第一版补充任务背景我是一家电商平台的数据分析师运营团队想了解用户流失的原因。 请帮我分析订单数据找出可能流失的用户并给出建议。这一版补充了业务场景但依然缺少数据结构、流失定义、分析深度等关键信息。4.3 第二版描述字段与处理逻辑我有一份用户订单表字段包括 user_id, order_date, order_amount, order_status, last_login_date 用户如果超过30天没有登录且近90天没有下单视为流失用户。 请帮我 1. 统计每个月的流失用户数 2. 分析流失用户最后一次订单金额的分布情况 3. 给出完整的Python代码使用pandas处理结果输出为Markdown表格 请编写代码并解释每个步骤的用途。这一版已经能跑出一个完整结果了。它给出了数据结构、流失定义、分析目标、技术栈和输出形式。4.4 第三版加入 Few-shot 和边界条件# 角色 你是一名电商行业的数据分析师擅长使用pandas进行用户行为分析。 # 任务 基于用户订单数据表完成以下分析需求 - 按月统计流失用户数 - 分析流失用户的最后一次订单金额分布 # 数据表字段 - user_id: 用户ID - order_date: 下单日期格式 YYYY-MM-DD - order_amount: 订单金额 - order_status: 订单状态completed/cancelled/pending - last_login_date: 最后登录日期 # 流失定义 用户超过30天未登录且近90天无下单记录则标记为流失。 # 输出要求 1. 使用pandas处理不依赖数据库 2. 代码需要包含必要的注释 3. 结果输出为Markdown表格 4. 如果数据中有缺失值请先说明处理方式 # 边界条件 - 如果某个月没有流失用户也请显示0不要跳过该月份 - 订单状态为cancelled的记录不计入下单金额统计 请先给出完整代码再给出执行结果示例。对比两个版本可以发现第三版 prompt 在角色、任务、数据结构、流失定义、输出要求、边界条件六个维度上全部做了明确。尤其是“某个月没有流失用户也显示 0”的约束能避免模型在生成代码时直接把空月份过滤掉。4.5 用 Python 脚本自动测试不同 Prompt 的效果为了实际感受 prompt 差异你可以把这几个版本的 prompt 保存成不同的变量通过 API 调用对比输出from openai import OpenAI client OpenAI( api_keysk-你的APIKey, base_urlhttps://api.deepseek.com ) def run_prompt(prompt_text): response client.chat.completions.create( modeldeepseek-chat, messages[ {role: system, content: 你是一名资深数据分析师。}, {role: user, content: prompt_text} ], temperature0.2 ) return response.choices[0].message.content # 第一版 v1 帮我写一份用户流失分析的代码。 result_v1 run_prompt(v1) print( V1 输出 ) print(result_v1) # 第三版 v3 ...这里粘贴上文中第三版prompt... result_v3 run_prompt(v3) print( V3 输出 ) print(result_v3)你在本地运行后会发现V1 的结果更像一个“模板”V3 的结果则更接近可以直接用于数据处理的脚本。这种对比比看任何教程都更直观。4.6 结果评价思路对于 prompt 调优不要只看“能不能跑”。建议从以下角度评价代码是否可以直接运行是否覆盖了边界条件输出是否符合预期格式是否节省了人工修改的时间如果发现输出不稳定可以降低 temperature或者在 prompt 中追加一句“请严格按照上述要求输出不要画蛇添足”。5. 常见问题与排查思路在实际使用和开发中围绕 prompt 会出现很多报错或异常。这里整理几个高频问题。5.1 Prompt 被安全机制拦截一些用户在调用大模型接口时会遇到类似报错invalid prompt: your prompt was flagged as potentially violating our usage policy这种提示说明你发送的 prompt 触发了服务商的内容安全机制。可能的原因包括输入内容包含暴力、歧视、色情、违法违规暗示或者被模型判定为高风险文本。遇到这种情况正确做法是检查 prompt 中是否有敏感词汇或容易被误判的表述。删除与任务无关的极端案例描述。明确说明你的合法使用目的例如“用于教学场景”“用于企业内部分析”。如果业务确实需要处理某些高风险文本务必通过合法渠道在合规前提下使用专门的内容审核服务而不是尝试绕过安全限制。这里要特别提醒一点不要试图通过所谓的“无违禁词”“越狱”手段绕过平台的安全策略。这不是技术问题而是合规问题。使用 AI 服务时应该遵守服务条款和当地法律法规。5.2 输出内容不符合预期这是最常见的问题现象是模型没有报错但输出内容和你想要的不一致。常见原因和解决思路如下问题现象常见原因解决思路回答太泛泛角色设定缺失、上下文不足补充角色、业务背景和任务目标代码不可用缺少运行约束和数据格式说明说明技术栈、输入输出格式、边界条件格式混乱没有指定输出格式明确要求 Markdown/JSON/表格结果不稳定temperature 过高或示例不足降低 temperature增加 Few-shot长篇内容跑题任务目标不清晰把任务拆分成多个子任务逐个提问5.3 Prompt 过长导致 Token 超限如果你使用的是 API 方式当输入内容过长时会看到类似报错The number of tokens to keep from the initial prompt is greater than the context length意思是初始 prompt 的 token 数超过了模型上下文窗口大小。解决方法精简 prompt删除冗余描述。如果历史对话过长只保留最近的几轮或者把历史对话先做摘要。把大段参考文档拆分多个片段分别发送再汇总结果。使用支持更长上下文的模型例如 128K 上下文版本。在长文档分析场景中更推荐配合 RAG检索增强生成来使用而不是把所有内容都塞进 prompt。5.4 AI Agent 运行中 Prompt 相关错误如果你在使用 LangChain、Dify、Coze 等框架开发 AI Agent可能会遇到类似错误Agent terminated due to error you can prompt the model to try again or start这通常意味着 Agent 在执行过程中大模型返回了无法被框架解析的内容或者子任务的 prompt 不符合预期。排查思路检查 Agent 的 system prompt 是否把工具使用的格式说明清楚。检查模型输出是否是合法的 JSON 或函数调用格式。增加重试机制当解析失败时让模型重新生成。在 prompt 末尾加一句“只输出 JSON不要输出解释”。Agent 开发中的 prompt 设计比普通对话 prompt 更强调格式稳定性因为这直接关系到下游代码能否解析成功。5.5 AI 幻觉AI 幻觉指模型生成了看似合理但事实错误的内容。降低幻觉的经验方法1. 在 prompt 中明确要求模型“如果信息不在给定上下文中请直接回答‘无法从给定资料中确认’不要编造”。 2. 输入参考材料要求模型只基于材料回答。 3. 降低 temperature。 4. 对于事实性强的任务增加后置校验流程。例如请基于下面提供的公司公告回答问题。如果公告中没有提到请回答“公告未提及”。 公司公告... 问题公司今年第一季度净利润是多少6. 工程化 Prompt 的最佳实践与进阶建议如果你只是偶尔用 AI 写点东西掌握上面这些技巧就够了。但如果你想在团队或产品中深度使用 AI 能力就需要考虑把 prompt 工程化。6.1 把 Prompt 纳入版本管理Prompt 本质上是项目的一份“可迭代资产”。建议把每个场景的 prompt 保存成独立的.md或.py文件放到项目的prompts/目录下用 Git 管理。一个推荐的项目结构project/ ├── prompts/ │ ├── system/ │ │ ├── data_analyst.md │ │ ├── content_writer.md │ │ └── code_reviewer.md │ ├── tasks/ │ │ ├── user_loss_analysis.md │ │ └── contract_info_extract.md │ └── few_shot/ │ ├── classification_examples.json │ └── extract_examples.json ├── src/ │ ├── llm_client.py │ └── prompt_loader.py └── tests/ └── test_prompt_output.py这样做的价值在于你可以清晰地看到每次 prompt 改动带来的效果变化也能方便团队成员复用。6.2 建立 Prompt 评测集不要凭感觉判断 prompt 好坏。建议做一套小而精的评测集挑选 10~30 个典型输入场景。每个场景记录期望输出类型和行为。每次调整 prompt 后批量跑一遍评测集对比输出质量。在 Python 中可以用简单的脚本实现test_cases [ {input: 登录页面一直转圈, expected_category: 性能问题}, {input: 点击支付闪退, expected_category: 稳定性问题}, # ... ] for case in test_cases: result run_prompt(case[input]) print(case[input], , result)有了评测集后你的 prompt 优化不再是“感觉变好了”而是有对比依据。6.3 注意成本和安全边界Prompt 越长消耗的 token 越多成本越高。在工程中要注意控制 system prompt 的长度避免每次请求都携带大量重复文本。把固定不变的内容缓存到服务端而不是重复发送。对敏感业务数据做脱敏处理。记录每次调用的 token 消耗方便核算成本。另外API Key 必须保存在服务端环境变量中不能写在前端代码里也不能提交到 Git 仓库。6.4 从 Prompt 走向 RAG 和 AgentPrompt 是基础但在复杂业务中单靠 prompt 很难覆盖所有场景。比如知识库问答需要 RAG 技术先检索相关文档片段再把片段拼进 prompt。多步骤任务需要 Agent 框架让模型调用搜索、计算、数据库等外部工具。规范化输出需要函数调用Function Calling或 JSON Schema让输出结果可被程序直接处理。这也是为什么现在像 LangChain、Spring AI、MCP 这类工具越来越受关注。它们做的事情本质上就是把“prompt 工具 记忆 循环”组装起来形成一个更稳定的 AI 应用系统。如果你已经在 prompt 层面做得比较熟练下一步可以重点学习这些方向结构化输出JSON Schema、函数调用。检索增强生成RAG向量数据库、Embedding、重排。Agent 开发LangChain、Dify、Coze或者直接用代码编排多轮任务。AI 编程工具Cursor、PyCharm AI 插件等让 prompt 技巧直接服务于开发提效。7. 总结与学习路线回头再看标题的问题你跟 AI 高手的 prompt 水平差距有多大其实差距并不在于天赋而在于是否理解了一个核心原则prompt 是你在为模型创造上下文上下文质量决定了答案质量。高手的 prompt往往具备以下几个特征有明确角色和任务目标有完整的背景信息和输入参数说明有清晰的技术栈或领域限制有输出格式和边界条件的约束通过示例而不是形容词传达预期经过评测和迭代而不是写完一次就完事如果你希望快速提高 prompt 水平可以按这条路线练习先把本文的版本对比案例在本地跑一遍感受不同 prompt 带来的输出差异。选一个你日常工作中经常重复的任务比如周报生成、代码审查、SQL 编写花一个下午把它改写成结构化 prompt。建立一个小型评测集持续迭代你的模板。再进一步学习怎么在代码中调用模型 API把 prompt 集成到真实程序里。下次和 AI 对话之前不妨先花 30 秒把需求写清楚把角色、目标、约束、示例补全。你会发现AI 的表现会明显上一个大台阶。