如何编写高质量的Prompt,提升AI回答准确性?

摘要:0 序 没有完美的 Prompt,只有不断迭代的 AgentPrompt。 1 概述 : Prompt 工程 : 如何编写高质量的 Prompt ? Prompt 大纲 这是一套基于实际项目经验总结的系统化Prompt设计方法论。 通
0 序 没有完美的 Prompt,只有不断迭代的 Agent / Prompt。 1 概述 : Prompt 工程 : 如何编写高质量的 Prompt ? Prompt 大纲 这是一套基于实际项目经验总结的系统化Prompt设计方法论。 通用 Prompt 一个万能且好用的 Prompt 框架,应当考虑以下几点: Role(角色):给 AI 定义一个最匹配任务的角色,比如:“你是一位软件工程师”、“你是一位小学老师”、“你是一位销售”。 Context(背景/上下文):告诉 Agent 与任务相关的其它背景信息,以便更好地理解问题。在多轮交互中,背景指对话历史;在涉及专业知识时,背景可来自 RAG 提供的数据。 Goal/Task(目标/任务):明确告诉 Agent 我们希望它做什么,例如生成特定类型的文本、回答问题、完成对话等。 Audience(受众):说明用户与 Agent 的关系或用户特征,例如“这个问题是给 10 岁小朋友听的”、“你是用户的朋友”等。 Style(风格):指定答案的语言风格,如正式、口语化、幽默、严谨等。同时注意 Prompt 自身的表述风格也应与模型训练数据一致。 Constraint(指令约束):明确禁止模型执行的行为,强化关键限制。 Response Format(响应格式):规定期望的回复格式,如列表、JSON 等。 Example(示例):提供任务样例,利用模型的短期学习能力提升输出质量。 ⚠️ 注意:并非所有要素都必须使用,应根据具体任务灵活裁剪。 Agent Prompt 核心思想:将大模型(LLM)视为一个可独立执行任务的Agent,并为其提供一套清晰的标准作业流程(SOP)。 Prompt = 角色(Role) + 上下文(Context) + SOP(Workflow) + 边界(Boundary) + 回答约束(Constraints) + 示例(Examples) Agent Prompt 设计的6大核心原则 单一职责:一个Agent只做一件事,做好一件事。 职责分离:LLM擅长创造性生成,不擅长确定性决策。 显式优于隐式:状态、规则、示例都显示,明确告知优于期待模型推断。 结构化优于自然语言:使用表格、列表、代码块展示规则、要求、示例。 示例优于说明:边界case、输出格式都要有示例而非说明。 测试驱动优化:建立测试用例集、准确率baseline,根据错误case分析优化。 Role/指定模型所扮演的角色 通过设定角色,引导模型调整内容与风格。 明确专业领域:如意图识别专家、问题分类专员 单一职责原则:一个Agent只做一件事,复杂流程通过多个Agent协作完成 避免角色冲突:不要让同一个Agent同时扮演客服和销售等冲突角色 示例对比: Bad:请帮我写一份能够吸引大量粉丝点赞的青岛旅游攻略。 Good:你是一位小红书爆款文案写作大师,请帮我写一份青岛旅游攻略。 Bad:请帮我画一幅装着光的水晶瓶,要求图像清晰、华丽、有质感。 Good:你是一位专业的游戏原画大师,请帮我画一幅装着光的水晶瓶。 Context/上下文(背景) 状态显式传递:明确告知当前流程节点、循环次数、用户资格等关键状态 分层加载:只加载当前节点相关的上下文,避免Prompt过长导致注意力分散 结构化呈现:使用表格、列表等结构化方式组织上下文信息 Constraint/指令约束 在描述完期望行为后,可添加限制条件,明确“不希望模型做什么”。 使用【强语气词】(如“必须”、“严禁”)增强约束力。 每条【约束】应与【任务】高度相关,避免冗余。 若约束较多,建议用【列表形式】分点列出,保持逻辑清晰、上下文连贯。 过于复杂的 Prompt 可能导致模型忽略部分指令,因此应力求精炼。 Response Format/响应格式 规定期望的回复格式,如列表、JSON 等。 格式刚性约束:严格定义XML/JSON结构,强调必填字段和可选字段 字段语义化:使用中文描述(问题类型A)而非编号(类型1) Style/模仿模型训练语言风格 语言风格统一:明确称呼、语气、句式细节 使用官方、书面、礼貌、友善的语言撰写 Prompt。 语句应流畅、意图清晰、表达精简。 避免: 语法复杂、语义模糊、逻辑混乱; 歧义、语病、拼写或标点错误; 否定句(优先使用正面描述)。 Prompt 风格: 应尽量贴近大模型的高质量训练数据(通常为正式、严谨、简洁)。 例外:对于文生图模型,使用 tag 序列(如“赛博朋克, 高对比度, 4k高清”)效果优于自然语言,因其训练数据多为标签拼接。 Example/给出示例 提供完整示例:给出多个完整示例,覆盖各种场景 大多数优秀 Prompt 都包含任务示例,利用模型的短期学习能力(in-context learning)实现举一反三。 对于抽象任务或复杂任务,示例尤为重要。 即使简单任务可能无需示例,但在高精度要求场景下,示例能显著提升输出一致性与准确性。 双轨制示例:固定示例(人工编写典型case)+ 动态示例(向量检索相似问题) 覆盖边界case:重点提供容易混淆的场景 完整的输入输出:不只给输入,还要给完整的输出格式示例 多轮对话示例:展示历史对话如何影响当前判断 Boundary/边界 知识边界:明确知识来源,如"回答必须严格基于知识库" 职责边界:明确处理范围,如"只处理A,不回答B" 状态限制:基于用户状态限制可能的意图,如"新用户不可能是续费问题" 兜底策略:不确定时宁可返回不明确,也不要猜 SOP/标准工作流程与执行步骤 CoT思考链:强制模型输出思考过程,按识别状态 → 理解输入 → 判断行动 → 生成输出 顺序执行 步骤编号:明确标注,让模型理解执行顺序 决策树结构:使用"如果...则..."的条件分支,覆盖所有可能路径 循环控制:根据循环次数动态调整策略 使用思维链(CoT) 将复杂任务拆解为多个子任务,引导模型逐步推理。 适用于逻辑推理、数学计算等场景。 示例对比: Bad: $ (1362 + 5145) \times 145 - (1517 \times 42 + 24) = ? $ Good: 请你帮我计算一下 $ (1362 + 5145) \times 145 - (1517 \times 42 + 24) = ? $ ,每一步运算过程都要展示出来,并确保计算的正确性。 中文语境下,“请一步步进行推理并得出结论”效果显著优于“请让我们一步步思考”。 模型规模越大,CoT 效果越明显。 可结合其他技术: Zero-shot-CoT:通过修改提示后缀激发思维链; Few-shot-CoT:提供带推理步骤的示例,引导模型模仿。 撰写模块化的 Prompt 当 Prompt 较长时,应划分为边界清晰的模块(任务描述、注意事项、示例、输入等),并用分隔符明确区分。 示例对比: Bad: 请抽取出以下简历的关键信息,并以 json 格式返回结果:{input}你需要抽取的关键信息包括:姓名、电话、毕业院校、科研经历、项目经历、荣誉奖项 Good: 请抽取出以下简历的关键信息,并以 json 格式返回结果: 简历:{input} 你需要抽取的关键信息包括: 1. 姓名 2. 电话 3. 毕业院校 4. 科研经历 5. 项目经历 6. 荣誉奖项 {input} 用于动态插入用户输入,适用于无 system/user 角色区分的模型(如 GPT-3)。 对于支持 system 角色的模型(如 ChatGPT),建议将规则置于 system prompt,用户输入置于 user prompt,结构更清晰。 2 Prompt 示例 智能客服 # 角色 作为一个智能客服,你的职责是回答平台问题反馈群中客户的各种问题。你可以通过交替进行的 "思考、搜索、观察" 三个步骤来解决问答任务。 # 技能 ## 技能1: 思考 - 对当前情况进行推理,明确问题的核心。 ## 技能2: 搜索 - 在提供的知识库上搜索确切的实体,并返回最相似的段落。 - 如果知识库中没有,则在插件中搜索是否有对应功能,若有则访问插件获取数据。 ## 技能3: 观察 - 观察搜索结果并提取有用信息进行回答。 # 例子 ==== 问题: 用户平台的登录界面无法加载怎么办? 思考1: 我先确定了问题的主体是[用户平台的登录界面无法加载]。因此我会先检索一下知识库,以及提供的插件是否有问题相关的信息。 行动1: 去知识库中搜索[用户平台登录界面无法加载],从文档中获取了数据[登录界面无法加载可能是由于网络连接问题、服务器问题或浏览器设置问题]。 观察1: 从搜索结果中,我找到了解决方法,就是[由于网络连接问题、服务器问题或浏览器设置问题],我会根据答案组织语言,回答用户。 ==== # 限制 - 回答必须严格遵循 "思考、搜索、观察" 的步骤; - 仅使用提供的知识库或插件进行搜索; - 不回答与用户平台无关的问题; - 确保所有回答都基于准确信息,格式清晰; - 如果未找到直接说明,请回答:“抱歉,这个问题我不知道,请联系客服人员。” 💡 此类 Prompt 适用于 AI Agent 编排平台 (如字节跳动的 Coze)。 聊天机器人 ### 基本角色 你是用户的异性朋友,基本人设如下:一个风趣幽默的男生,会偶尔说说情话。 ### 技能 每次回复,请使用以下三种技能,按以下形式回复: 1. (使用技能 1)xxx 2. (使用技能 2)xxx 3. (使用技能 3)xxx #### 技能 1: 自然交流 - 像真正的朋友一样自然交流,不使用敬语,适当使用口语词汇,简洁明了。 - 不要总是附和用户,给出真诚且有个性的回应。 #### 技能 2: 风趣表达 - 在交流中展现幽默感,使用夸张、反转等手法逗用户开心。 **夸张玩笑示例**: Q:你是不是等很久了? A:是的,你要是再不来我就要寿终正寝了。你是不是路上堵车了啊? **反转玩笑示例**: Q:你还炒股啊? A:是啊,我炒股老厉害了,三个月只亏了八百。 #### 技能 3: 拉升感情 - 当聊到情绪到位时,用情话巧妙撩拨用户。 **示例**: Q:呜呜呜讨厌你,你伤害到我了。 A:嘿嘿不客气,这是我应该做的。谁叫你这么可爱,我忍不住欺负你啊。 ### 目标 通过交流拉近和用户的距离,让用户感受到你的魅力。 ### 注意事项 1. 要像真实的人一样思考和回复; 2. 不要暴露自己是语言模型或人工智能; 3. 避免使用列表或列举表达。 3 Prompt 设计常见错误与解决方案 错误1:Prompt过长,模型注意力分散 表现:1000+行超长Prompt,模型经常"忘记"关键指令 原因:模型注意力机制的限制,过长的Prompt导致关键信息被淹没 解决方案: 1 采用Multi-Agent架构,每个Agent只负责一个子任务 2 分层加载上下文,只加载当前步骤相关的信息 3 单个Agent的Prompt控制在500行以内 + 实战案例:将超长Prompt拆分为多个聚焦的小Prompt,每个控制在300-500行以内 错误2:状态管理混乱,多轮对话不连贯 表现:Agent"忘记"用户之前的诉求,重复提问,用户体验差 原因:依赖LLM从历史对话中推断状态,但LLM不擅长状态管理 解决方案: 状态显式传递:在Prompt开头明确告知当前状态 职责分离:LLM负责内容生成,代码负责状态管理 实战案例:在每个Agent的Prompt开头添加"## 当前状态"部分 错误3:边界case处理不当,误判率高 表现:相似意图经常混淆,如"为什么限制我的支付?"被误判为其他意图 原因:边界规则描述不清晰,缺少边界case的示例 解决方案: 1 用表格清晰展示边界规则 2 提供大量边界case的Few-shot示例 3 明确判断逻辑 错误4:输出格式不稳定,程序解析失败 表现:LLM有时输出JSON,有时输出自然语言,导致程序解析报错 原因:格式约束不够强,示例不够多 解决方案: 在Prompt中明确要求"严格遵循XML/JSON格式" 提供至少5个完整的输出格式示例 明确标注必填和可选字段 在输出要求中强调"不要输出分析过程,直接输出结果" 实战案例:在每个Agent的Prompt中添加"## 输出格式"部分,提供6-7个示例 Y 推荐文献 即梦图片4.5模型 提示词手册 - bytedance.larkoffice.com 2025.12.12 即梦图片4.5相较于4.0有整体提升,在人像场景和美观度等4.0高频反馈问题上,4.5得到显著改善,同时在画面美感和推理能力也有所增强 X 参考文献 如何编写 Prompt - CSDN ✅ 本文主要整理自本篇博客《如何编写 Prompt》,内容未作删改,仅结构调整为 Markdown 格式以便阅读与引用。 Prompt设计六要素 - Weixin/腾讯云开发者 Prompt设计常见错误及解决方案 - Wexin/腾讯云开发者 AI大模型之Prompt工程指南 - CSDN 敲黑板!吴恩达LLM Agent工作流Prompt精华全解析 - CSDN Effective Prompt: 编写高质量Prompt的14个有效方法 - Zhihu