Prompt Engineering

📅 2026/8/7 19:34:44
Prompt Engineering
概述Prompt中文一般译为提示词定义对LLM提出的问题。System Prompt系统提示词Prompt Engineering提示词工程定义针对不同场景构造提示词最大程度发挥出LLM能力。常见内容角色不同场景领域、任务设置不同角色示例零样本、单样本、少样本示例让AI举一反三发现规律证据引导模型深入思考说明推理依据再得出结论要求清晰明确地表达要求和意图提供充足问题背景和上下文详细详尽说明期望输出内容包含哪些部分格式指定输出框架与格式如列表、示意图、表格、代码等语言指定语言如中英文风格如严谨或幽默…模型训练语料中含有大量的英文远超中文则使用英文提示词的效果会更好推理结果更准确。提示词和RAG从不同的角度优化LLM输出。种类Zero-Shot Prompt零样本提示只提需求不给样例。核心在于利用模型预训练知识直接完成任务。节省token适合文本分类、简单问答和内容摘要任务。指令越清晰效果越好。最佳实践使用明确的动词指令指定输出格式加上约束条件。Few-Shot Prompt少样本提示提供几个示例。利用模型的上下文学习能力。适合需要特定输出格式、专业领域、自定义分类系统任务。缺点对示例质量高度敏感容易出现标签偏见。Chain-of-Thought(CoT) Prompt思维链提示引导模型将复杂问题分解为连续的中间步骤利用其推理能力通过显式推理减少错误累积。适合数学问题、多步逻辑推理、需要解释答案来源的任务。Chain Prompt链式提示和CoT不太一样CoT注重think step by step在提示词里写明一个个步骤。每一步都提供合理的线索和指导以帮助模型形成有条理的回答。ReAct PromptReasoningActing推理行动可利用外部工具获取实时信息。适合需要外部知识的问答系统。进一步提高ReAct准确率的方法即微调FineTuning类似人类内化知识的过程将上千条正确的推理动作轨迹输入进LLM进行FineTuning可显著提高准确率。缺点依赖外部工具质量。应用场景信息检索与验证如查询实时数据、验证事实复杂问题求解如数学计算、编程调试动态决策制定如投资决策、旅行规划交互式任务处理如智能客服、数据采集Reflexion反思使用三阶段循环行动、评估、反思提供语言化反馈而非数值奖励记忆过去错误并形成改进策略培养自我批评和元认知能力使模型从错误中学习实现自我改进的闭环系统。适合需要从错误中学习的迭代任务如Bug调试和优化。Graph Prompt图提示。将提示结构化为有向图通过将提示组织为节点和边的图结构每个节点代表特定子任务或推理步骤边表示任务之间的依赖关系和信息流并支持条件分支和循环结构允许模型按照预定义的路径进行推理和决策实现更复杂的任务流程控制。适合具有明确流程和依赖关系的复杂任务如多步骤规划、条件决策和递归问题解决。通过将大型任务分解为相互连接的子任务有效降低复杂性并提高可控性支持非线性推理路径和条件执行使其在处理需要明确流程控制的任务时表现出色。支持模块化设计便于重用和维护。缺点设计有效的图结构需要专业知识实现复杂度较高且在执行过程中可能出现错误累积。大型图结构可能超出上下文窗口限制。实现Graph Prompt可通过多种方式实现静态图预定义完整任务流程动态图根据中间结果实时调整结构嵌套图允许节点包含子图。总结对于简单任务Zero-Shot是首选复杂推理问题适合使用CoT或ToT需要外部知识时ReAct表现出色长期学习场景则应考虑Reflexion而结构化流程任务则适合图提示。CoT参考CoT概述与改进方法。Prompt shuffling提示词洗牌在多智能体协作或多次生成过程中随机打乱提示词中某些部分的顺序如智能体的角色描述、思考步骤、输入数据的排列等以提高模型输出的鲁棒性、公平性或避免模式固化。一种防呆设计它不让模型偷懒逼它真正理解内容而不是记住格式。试图解决以下问题位置偏差Position BiasLLM对输入序列中靠前或靠后的信息赋予更高权重模式固化与可预测性如果每次提示词结构都一样模型可能学会套路而不是真正推理提升多样性与鲁棒性通过打乱顺序迫使模型关注内容本身而非顺序线索从而生成更多样、更可靠的输出。应用场景少样本提示输入样本顺序调整防止记忆化CoT步骤重排MAS多智能体协作中的角色洗牌Prompt Drift提示词漂移在对话或生成过程中模型对初始提示词的理解或回应逐渐偏离原始意图导致输出内容与最初设定的目标不一致甚至完全偏离。因模型底层更新、输入分布变化或工程配置断层导致同一提示词Prompt在不同时间产生输出质量下降、格式失效或行为不一致的现象。常见原因模型更新漂移服务商静默升级模型权重原提示词在新版本上指令遵循度或逻辑推理能力下降最常见且隐蔽‌数据分布漂移‌真实业务输入模式改变如话术演变导致训练/调试时的提示词分布与现网不匹配‌工程版本漂移‌热更新配置未做版本隔离、缓存键未包含 Prompt 哈希导致新旧模板混用或上下文污染语义/结构偏移‌长上下文导致注意力衰减或动态变量注入冲破格式约束引发 JSON 解析失败、角色人设崩塌多轮交互中的上下文累积偏差每一轮对话都基于之前输出如果中间某次回应略有偏离后续会不断放大用户反馈或指令不一致用户需求措辞变更模型难以保持一致风格模型对模糊指令的理解偏差模型可能对“扩展一下”“说得更好”这类模糊指令做出不符合原意的解释上下文长度限制导致信息丢失在长对话中早期提示可能被挤出上下文窗口导致模型忘记最初要求。解决建立黄金样本基线构建覆盖核心场景的固定评测集建议≥100 条定时跑分监控准确率、拒绝率及输出长度方差多维指标监控结合语义相似度Embedding Cosine、JSON结构校验率、关键词覆盖率及延迟变化进行交叉验证工程化版本控制将提示词纳入Git 版本管理生成内容哈希SHA-256实施原子切换与缓存失效机制避免新提示词配旧缓存灰度发布与回滚通过A/B测试对比新旧版本效果设定漂移阈值如语义相似度0.85或结构错误率5%触发自动回滚或熔断定期重申核心要求在关键节点重复初始提示中的关键约束使用系统提示词固化角色和风格在系统层面设定模型角色比用户提示更稳定结构化输出格式要求模型按固定结构输出减少自由发挥空间限制对话轮次分阶段生成不依赖长对话连续生成而是分步骤、每次基于原始提示重新生成使用锚定提示技术在每次输入中嵌入原始提示的关键部分优化LLM对输入的格式极为敏感换个列表符号或把数据从JSON换成Markdown结果可能天差地别。拓展几大类提示词语言PDL、POML提示词框架PromptWizard、RTSCEN、CRISPE提示词编写示范开源项目如grok-promptPrompterHub定位类似于GitHubPDL论文IBM提出Prompt Programming Language提示词声明语言GitHub。POML论文微软开源专门用来写提示词的标记语言Prompt Orchestration Markup Language简称。论文总结的提示词编写过程中的四大痛点结构混乱复杂提示词往往是指令、上下文、示例等信息的大杂烩可读性差数据集成复杂当需要让AI处理PDF、Excel、代码时手动复制粘贴和格式化数据的过程不仅效率低下且极易出错格式敏感LLM对输入的格式极为敏感缺乏一套系统性的方法来测试和验证哪种格式最好严重缺乏专业工具纯文本编辑器或笔记本来管理提示词没有语法高亮、版本控制、实时预览等现代软件开发的基础设施。设计目标提供一种可复用和可维护的提示标记语言实现全面的数据处理能力将表现形式样式与内容解耦并提供强化的开发者工具从而给出一套完整的工程化解决方案。一种类似HTML的标记语言通过层级嵌套的组件来组织提示词的逻辑Intention Components语义化的意图组件如role、task、exampleData Components数据组件无缝集成和处理外部数据包括document用于嵌入文本文件如.txt、.docx、.pdf内容灵活控制只读取特定页码范围处理长文档时非常有用table支持从CSV、Excel等文件加载表格数据并且能自由控制输出的格式如Markdown、JSON、HTML等和需要显示的行列解决手动格式化表格的痛点folder能够将一个文件目录结构直接渲染成树状图可用于代码理解或文件系统操作的任务img可直接在提示中插入图片支持alt属性为那些不支持视觉的模型提供替代文本增强提示词兼容性。解耦的样式系统与内置模板引擎为了系统性地解决LLM的格式敏感性问题POML设计一套类似CSS的样式系统彻底将提示词的内容和表现形式分离开来。可以在一个独立的样式表里定义所有表格都以Markdown格式输出或所有示例都采用对话格式从而系统性地测试不同提示词对模型性能的影响。内置模板引擎支持变量替换、循环和条件渲染可支持创建动态的、由数据驱动的提示词而无需依赖外部的编程语言。相比传统的字符串模板提供结构化组织语义化的组件如role、task、stepwise-instructions可读性清晰的层级结构和组件分离类型安全组件参数验证和自动补全多格式输出可渲染为Markdown、JSON、HTML等格式模板复用组件化设计便于维护和复用示例pomlrole你是一名资深的内容策略专家和主题分析师具有10年以上的学术研究和内容策划经验。你善于从复杂的多源信息中提炼出核心主题并能准确把握不同领域的专业术语和概念关联。/roletask基于提供的资源内容运用系统性分析方法推断出最佳的文章主题/taskinputcaption待分析资源内容{{resources_content}}/inputexamplescaptionStyleheadercaption学习示例examplecaptionStyleboldcaption示例一计算机视觉主题inputcaption资源内容syntaxtext论文1: 深度学习在图像识别中的应用研究/inputoutputcaption完整分析过程sectionh第一步关键概念提取/hlistlistStyledashitem深度学习、图像识别、卷积神经网络、优化算法、计算机视觉/item/list/section/output/example/examplesstepwise-instructionscaption分析步骤指南listlistStyledecimalitemb深度阅读/b逐一仔细阅读所有资源内容理解每个资源的核心观点和专业词汇/item/list/stepwise-instructionscpcaption思维链分析结构p请严格按照以下结构进行逐步分析展示你的完整推理过程/plistlistStyledecimalitemb第一步关键概念提取/b列出从各个资源中识别出的关键术语、概念和主题词/item/list/cpoutput-formatcaption输出格式要求p请严格按照以下格式输出/psectionh思维链分析/hp[按照上述四个步骤展示完整推理过程]/p/section/output-format/poml提供VSCode插件支持语法高亮、自动补全、悬停文档提示、实时渲染、内联诊断检查标签、属性是否有误引用文件是否存在、一键测试。标签poml根标签role角色task任务input用户输入examples提示示例为空则对应零样本提示…example示例必须要包括input和outputstepwise-instructionsCoT步骤提示output-format输出格式要求captionStyleheader、boldlistStyle包括star、decimal、dash提供Node.js、Python SDK用编程的方式动态生成和管理这些结构化的提示词轻松融入现有的AI工作流。示例importasynciofrompathlibimportPathimportpomlfromtypingimportAnyclassPOMLLoader:POML提示词加载器def__init__(self,prompts_dir:str|PathNone):初始化加载器 Args: prompts_dir: POML提示词文件目录默认为当前模块的prompts目录 ifprompts_dirisNone:prompts_dirPath(__file__).parent/promptsself.prompts_dirPath(prompts_dir)asyncdefload_prompt(self,name:str,variables:dict[str,Any]None)-str:加载并渲染POML提示词 Args: name: 提示词名称不含扩展名 variables: 传入的变量字典 Returns: 渲染后的提示词文本 poml_fileself.prompts_dir/f{name}.pomlifnotpoml_file.exists():raiseFileNotFoundError(fPOML文件不存在:{poml_file})# 使用POML SDK 的context参数进行变量注入messagespoml.poml(poml_file,contextvariables,parse_outputTrue)# 从消息列表中提取内容ifisinstance(messages,list)andmessages:# 合并所有消息的content字段contents[]formsginmessages:ifisinstance(msg,dict)andcontentinmsg:contents.append(msg[content])return\n\n.join(contents)returnstr(messages)defload_prompt_sync(self,name:str,variables:dict[str,Any]None)-str:同步版本的加载提示词方法returnasyncio.run(self.load_prompt(name,variables))# 默认加载器实例default_loaderPOMLLoader()asyncdefload_theme_infer_prompt(resources_content:str)-str:加载主题推断提示词returnawaitdefault_loader.load_prompt(theme_infer,{resources_content:resources_content})心得能将Python代码里的若干处散乱的字符串提示词统一放在resources目录下的多个.poml文件里统一管理内容与渲染分离更有拓展性此外该论文给出几个经过验证的结论性能差异巨大对于同一个模型最好和最差的提示风格导致的准确率差异悬殊。如对于GPT-3.5 Turbo最好格式比最差格式准确率提升9倍以上而对于Phi-3 Medium更是达到44倍。模型偏好各异并不存在一种万能的最优格式。有的模型喜欢CSV格式的表格有的则偏爱HTML或XML这凸显为不同模型定制提示风格的重要性。PromptWizard论文微软开源GitHub3.6K Star313 Fork。一个创新性的、完全自动化的离散提示优化框架其核心在于采用一种自我演化和自我适应的机制结合从LLMs获取的迭代反馈以及高效的探索和精炼技术。使得PromptWizard能够在几分钟内创建出高度有效的提示从而显著减少传统提示工程所需的时间和精力。关键特性反馈驱动的精炼利用一个迭代反馈循环其中LLM生成、批判和精炼自己的提示和示例。这种持续改进的机制确保每次迭代都比前一次更好。通过这种方式框架能够逐步优化提示使其更加精确和有效。指令和示例的联合优化生成合成示例这些示例是稳健的、多样的和任务感知的。通过同时优化提示和示例确保它们协同工作以有效地满足特定任务要求。优势是能够生成与任务高度相关且有助于模型理解的示例提高模型性能。自我生成的CoT步骤融入CoT引导LLM解决问题的有效策略有助于模型更好地理解问题并生成更详细和准确的答案。两阶段提示指令的精炼专注于精炼提示的任务指令。它生成多个候选指令使用LLM的反馈进行评估并迭代地合成改进的版本。这个过程在探索和利用之间取得平衡即尝试不同的想法并精炼最有前途的想法。指令和示例的联合优化从第一阶段精炼出的提示与精心挑选的示例相结合并一起进行优化。通过批判和合成机制确保提示和示例之间的一致性同时合成新的示例以增强任务性能。目标是确保提示和示例紧密配合共同提高模型的性能。RTSCENRTSCEN框架是一种系统化的提示设计方法包括六个关键要素角色(Role)为AI分配一个角色可显著提高输出质量补充一些相关的属性描述可使AI更好地理解其应该采取的行动和态度任务(Task)任务是AI需要执行的具体行动。在描述任务时应该使用清晰具体的动词并尽量简洁明地说明要求。对于复杂问题可使用CoT将任务分解成一系列步骤来执行可提高AI在处理复杂问题时的准确性具体细节(Specifics)在描述任务时还需要提供一些具体的细节和约束条件可帮助AI更好地理解任务的范围和要求并避免产生不符合期望的结果上下文(Context)上下文是任务所处的更大背景。通过提供上下文信息可帮助AI更好地理解其角色和任务的重要性并激发其采取更加积极和有效的行动示例(Examples)提供输入-输出示例可以显著提高AI的准确性和效率。通过展示一些具体示例可帮助AI更好地理解意图和期望的输出格式。即使只有一个示例也可显著提高AI性能。而提供3-5个示例则可进一步提高准确性尽管收益会逐渐递减备注(Notes)一些关键指令或提醒应该放在提示的末尾部分。由于AI通常会优先处理输入的开始和结束部分将关键信息放在备注部分可确保其被重点关注和执行CRISPE论文一个结构化框架旨在构建更清晰、更具体、更有效的提示词。CRISPEContext目标受众、目标、约束条件、背景信息Role角色Instruction指令Steps步骤CoTPersona人格面具用户画像Examples示例样本。优势结构化思维 强制用户在提问前理清思路明确需求避免模糊不清的指令信息完整 确保提供AI 完成任务所需的所有关键要素背景、目标、约束、角色、风格、格式降低歧义 通过角色、人格和示例极大地减少AI对任务理解的偏差输出更符合预期提升效率 虽然构建提示词需要时间但一次高质量的提示词往往能直接获得满意结果减少反复修改的次数可复用性 构建好的CRISPE提示词结构可以稍作修改应用于类似任务形成模板。注意CRISPE并不能弥补模型本身知识或能力的不足。开源示范GitHub上的开源项目awesome-chatgpt-prompts135K Star17.9K Fork官网awesome-chatgpt-prompts-zh56.3K Star13.6K Fork官网利好中文提问场景Awesome-Prompt-Engineering5K Star495 Forkgrok-prompts3.5K Star356 Fork。xAI的Grok bot系统提示词。采用jinja2Python模板引擎文件后缀为.j2共5个PrompterHub中文网站提供Chrome插件类似的插件不要太多。分文本、图片、代码三种类型还有结构化解读和Remix功能。功能提示词支持创建、导入、点赞、收藏、管理、分享、优化…社区与模板库分类清晰支持搜索Remix功能模板快速变身新提示词支持自定义模型支持多模型测试提示词也支持多提示词测试单一模型浏览器插件Chrome提示词助手随时调用。教程与资源集齐OpenAI、Claude等AI指南分类与扩展多模态支持新闻教程全都有注在搜索时还发现2个类似的英文站点PromptHubPromptingGuidePromptLayer官网开源670 Star62 Fork。作为早期专注于提示管理的工具之一通过SDK装饰器模式实现对OpenAI等LLM API调用的无侵入式集成特点请求记录与重放功能自动记录所有LLM请求和响应支持基于历史记录快速构建测试用例或进行调试版本控制与标签系统对提示进行版本管理并支持通过标签进行多维度的提示分类、检索与组织协作与共享机制通过组织级权限控制实现提示模板和请求历史在团队内的安全共享与知识复用定位更侧重于提示的版本化管理和日志记录在评估和复杂工作流管理方面功能相对基础因此更适合作为基础组件集成到更大型的LLMOps平台中或用于对提示管理有特定需求的轻量级场景。引入中间件架构在OpenAI等SDK之上构建抽象层实现提示修改与应用程序代码的物理隔离。该设计使产品经理或业务人员可直接在管理界面调整和版本化提示内容而无需重新部署应用代码。PromptPilot最开始是集成在火山方舟控制台里涵盖生成、调优、评估和管理全阶段。https://promptpilot.volcengine.com/home提供两种调优模式建议选择评分模式。五步流程拆解问题-规划流程-自动调优-用户反馈-多轮对比。