Prompt工程:如何提升大语言模型的表现力 ——致问 目录 CONTENTPAGETITLE 1封面标题最多不2得超过十五个3字符4 副标介题字绍符可控制在10-20个字符框内架 研究和技巧案例 介绍 背景 为什么有这次分享? 1、出于兴趣和一些使用需要,怎么才能写Prompt才能让大模型返回想要的内容。 2、学习和研究Prompt这块的内容,分享文章后,不少同学对Prompt也是有兴趣的。 3、希望能和大家交流和探讨下,有没有什么有趣的内容一起学习下。 为什么要学? https://twitter.com/sama/status/1627796054040285184 介绍 预期受众 1、偏向于开发⼈员的⼤语⾔模型⼊⻔ 2、对⼤语⾔的局限性和能⼒边界不太清楚。 3、⼤语⾔模型提示上最近的⼀些研究发现 山姆的另外一个观点,未来Prompt将会集成在任何地方,用户不需要设计复杂的Prompt,但是作为技术人员需要把它集成到Everywhere https://greylock.com/greymatter/sam-altman-ai-for-the-next-era/ 介绍 什么是Prompt Prompt是是给AI模型的指令,一个简短的文本输入,用于引导AI模型生成特定的回答或执行特定任务。 Prompt是你与语言模型沟通的方式。一个好的Prompt可以让AI更准确地理解你的需求,从而给出更有用的回答。 介绍 Prompt的原理 GPT在处理Prompt时,GPT模型将输入的文本(也就是Prompt)转换为一系列的词向量。然后,模型通过自回归生成过程逐个生成回答中的词汇。在生成每个词时,模型会基于输入的Prompt以及前面生成的所有词来进行预测。这个过程不断重复,直到模型生成完整的回答或达到设定的最大长度。 一个有效的Prompt可以: -提升AI模型给出的答案的质量 -缩短与AI模型的交互时间,提高效率 -减少误解,提高沟通的顺畅度 关于提示工程 提示工程(PromptEngineering)是新兴起的概念:关注提示词开发和优化,帮助用户将大语言模型(LargeLanguageModel,LLM)用于各场景和研究领域,通过问题、指令、示例文本或其他方式,用于引导模型生成适当的响应或输出。 •掌握提示工程相关技能将有助于用户更好地了解大型语言模型的能力和局限性。提高模型的可用性和用户体验,并减少不符合预期的输出。 •利用提示工程来提升大语言模型处理复杂任务场景的能力,如对话系统、文本生成、机器翻译、算术推理能力。 •开发人员可通过提示工程设计、研发强大的工程技术,实现和大语言模型或其他生态工具的高效接轨。 提示工程不仅仅是关于设计和研发提示词。它包含了与大语言模型交互和研发的各种技能和技术。Prompt工程师需要深入理解语言模型的特性和行为,分析和理解数据集,并设计合适的提示来引导模型生成准确、有用和符合上下文的文本。 环境准备-OpenAI 地址:https://platform.openai.com/playground 用途:可以与直接与OpenAI的各种模型进行交互,用于实验、调试和理解这些模型的功能和限制。用户可以输入文本,并看到模型如何响应。 •Mode:补全、聊天 •Model:切换模型,Ada:这是最便宜,但运算速度最快的模型。Davinci:这是GPT-3系列模型中能力最强的模型。可以输出更高的质量、更长的回答。 •Temperature:控制模型生成结果的随机性。简而言之,温度越低,结果越确定 •Maximumlength:设置单次生成内容的最大长度。 •StopSequence:该选项设置停止生成文本的特定字符串序列。如果生成文本中包含此序列,则模型将停止生成更多文本。 环境准备-通义千问 地址:https://qianwen.aliyun.com/ 功能:这个其实是直接使用通义千问的功能,并不是让我们针对模型进行学习和调试的。内部员工可以使用AIStudio里面内置了一些模型可以用来调试。 二、Prompt框架 Prompt-编写的一些原则 几个关键要素: •明确目标:清晰定义任务,以便模型理解。 •具体指导:给予模型明确的指导和约束。 •简洁明了:使用简练、清晰的语言表达Prompt。 •适当引导:通过示例或问题边界引导模型。 •迭代优化:根据输出结果,持续调整和优化Prompt。 一些有效做法: •强调,可以适当的重复命令和操作 •给模型一个出路,如果模型可能无法完成,告诉它说“不知道”,别让它乱“联想” •尽量具体,它还是孩子,少留解读空间 Prompt-结构化框架重要性排序 Prompt的组成拆解: 1.任务(Task):始终以动词开始任务句子(如“生成”,“给予”,“写作”等),明确表达你的最终目标。可以有多个。 2.上下文(Context):提供用户背景、成功标准和所处环境等信息。 3.示例(Exemplars):提供具体的例子或框架,以改善输出质量。使用示例或框架可以大大提高输出质量。当然有时候我们可能没有示例,这个时候可以考虑让GPT帮忙生成示例。当然也有很多时候我们不用给示例。 4.角色(Persona):指定你希望ChatGPT和Bard扮演的角色。可以是具体的人,也可以是虚构的角色。 5.格式(Format):可视化你希望输出看起来的样子,表格、列表、段落等。 6.语气(Tone):指定输出的语气,如正式、非正式、幽默等。 任务>上下文>示例>角色>格式>语气。如果模型回答不满意,依次Check自己的Prompt内容进行调整 Prompt-框架结构化方式 JSON或者Markdown形式提示词: •https://structuredprompt.com/ •https://github.com/yzfly/LangGPT 三、Prompt技术研究 Prompt研究和技巧–简单案例 一个简单案例,说明模型的输出是可以通过一些词来进行控制的,通过提示词能让模型输出更多内容,或者是你想要的内容。 Prompt研究和技巧 Prompt研究和技巧–Zero-shot 直接向模型提�问题,不需要任何案例,模型就能回答你的问题,基于模型训练的时候提供的 ⼤量数据,能做初步的判断。 1.Zero-ShotPrompting技术依赖于预训练的语⾔模型 2.为了获得最佳性能,它需要⼤量的样本数据进⾏微调。像ChatGPT就是⼀个例⼦,它的样本数量是过千亿。 3.由于Zero-ShotPrompting技术的灵活性和通⽤性,它的输�有时可能不够准确,或不符合 预期。这可能需要对模型进⾏进⼀步的微调或添加更多的提示⽂本来纠正。 Prompt研究和技巧–Few-shot少样本技术 向模型提�问题,同时给�⼀个案例,模型就会学习到这个案例; 缺点:依赖于案例的格式,案例如果给的有问题,也会学到有问题的描述。 Prompt研究和技巧–ChainofThought(COT)思维链 ⼤模型每次都会把之前⽣成的⽂本当成上下⽂重新作为输⼊,因此如果说在之前⽣成的⽂本中 ⽐较详细和有逻辑性的话,就会表现�推理能⼒。 根据Wei等⼈在2022年的论⽂表明,它仅在⼤于等于100B参数的模型中使⽤才会有效。如果你使⽤的是⼩样本模型,这个⽅法不会⽣效。 Prompt研究和技巧–Self-Consistency自洽 有时候⼀般叫COT-ST,让模型⽣成多个思维链,然后取最多数答案的作为最终结果。其实重复运算多次,取概率最⾼的那⼀个,需要借助脚本辅助完成这个功能。 1、从语⾔模型中⽣成多个不同的“推理路径(reasoningpaths)”,这些路径可能因模型的随机性或不同的参数设置(如温度、top_p等)⽽有所不同。有助于模型更全⾯地考虑问题,并可能导致更准确或更可靠的最终答案。 2、对上⼀步⽣成的多个推理路径进⾏“边缘化(marginalizeout)”以得到⼀个最终的、⼀致的答案。边缘化在这⾥意味着从多个可能的推理路径中找�最常⻅或最⼀致的答案。 Prompt研究和技巧–Program-aidedLanguageModels(PAL)程序辅助编程 LLM在将⾃然语⾔问题分解为步骤⽅⾯表现良好,但在解决阶段往往会�现逻辑和算术错误。利⽤LLM来阅读⾃然语⾔问题,并⽣成程序作为中间推理步骤。 然后将实际的解决步骤交给Python解释器处理。这使得LLM能够专注于将问题分解为可运⾏的步骤上。 Prompt研究和技巧–生成知识提示 从语⾔模型中⽣成知识,并在回答问题时将这些知识作为额外的输⼊。这种⽅法不需要特定任务的监督或访问结构化知识库。 该⽅法包括两个步骤: 1、⽣成知识:语⾔模型根据问题⽣成知识陈述。 2、知识整合:使⽤⽣成的知识陈述进⾏预测,回答问题。 本质上是帮助⼤语⾔模型做了⼀步推理的过程。相当于⼈⼯的把问题拆解了,所以会表现好⼀点。 Prompt研究和技巧–TreeofThoughts(TOT)思维树 TreeofThoughts(ToT)框架,⽤于改进语⾔模型(LMs)的推理能⼒。该框架是对流⾏的“ChainofThought”⽅法的⼀种 泛化,允许模型在解决问题的过程中进⾏更多的探索和策略性前瞻。 ToT允许模型⾃我评估不同的选择,以决定下⼀步的⾏动,并在必要时进⾏前瞻或回溯,以做�全局性的选择。 >在24点游戏中,使⽤链式思考提示的GPT-4仅解决了4%的任务,⽽使⽤ToT⽅法的成功率达到了74%。 Imaginethreedifferentexpertsareansweringthisquestion. Allexpertswillwritedown1stepoftheirthinking, thenshareitwiththegroup. Thenallexpertswillgoontothenextstep,etc. Ifanyexpertrealisesthey'rewrongatanypointthentheyleave. Thequestionis... Prompt研究和技巧–ReAct COT是LLM最常⻅的推理⽅式,该⽅法揭示了LLMs在解决问题时能够形成⾃⼰的“思考过程”。 WebGPT使⽤LLM与⽹⻚浏览器进⾏交互,浏览⽹⻚,并从中推断�复杂问题的答案,但是没有思考过程。 ReAct(ReasoningandActing)是⼀个新颖的计算范式,旨在模拟⼈类智能中“⾏动”与“推理”的紧密结合。通过使⽤⼤型语 ⾔模型(LLMs),ReAct能够⽣成与特定任务相关的推理轨迹和⾏动,从⽽实现动态推理和⾼级计划的创建、维护和调整。ReAct不仅执⾏孤⽴、固定的推理,**还将模型动作和相应的观察结果整合成⼀个连贯的输⼊流,以便模型更准确地进⾏推理和处理超�推理范围的任务(例如,交互式决策)。** ReAct还增强了模型的可解释性、可信度和可诊断性。这⼀创新范式有潜⼒进⼀步解锁⼤型语⾔模型的能⼒。 ReACT实现核⼼逻辑: 1、使⽤Prompt引导LLM的输�格式。只进⾏⼀次推理,Action和ActionInput。 2、使⽤正则解析LLM输�的Action和ActionInput。调⽤⼯具拿到结果。 3、将⼯具结果作为Observation,以及前⼏步的Action和输�⼀同放在Prompt中。 4、继续让LLM进⾏下⼀步推理,直到FinalAnswser。 Prompt研究和技巧–ReAct 四、Prompt场景案例 Prompt的操作类型 GPT主要操作类型: 参考:https://medium.com/@dave-shap/become-a-gpt-prompt-maestro-943986a93b81 •起草