AI 文摘

一文探秘LLM应用开发(23)-Prompt(相关工具)


  • By AiBard123
  • November 16, 2023 - 2 min read



作者: AINLP 来源: AINLP

本文旨在让无大模型开发背景的工程师或者技术爱好者无痛理解大语言模型应用开发的理论和主流工具,因此会先从与LLM应用开发相关的基础概念谈起,并不刻意追求极致的严谨和完备,而是从直觉和本质入手,结合笔者调研整理及消化理解,帮助大家能够更容易的理解LLM技术全貌,大家可以基于本文衍生展开,结合自己感兴趣的领域深入研究。若有不准确或者错误的地方也希望大家能够留言指正。

本文体系完整,内容丰富,由于内容比较多,分多次连载**。**

第一部分 基础概念

1.机器学习场景类别

2.机器学习类型(LLM相关)

3.深度学习的兴起

4.基础模型

第二部分 应用挑战****

1.问题定义与基本思路

2.基本流程与相关技术

1)Tokenization与Embbeding

2)向量数据库

3)finetune(微调)

4)模型部署与推理

5)prompt

6)编排与集成

7)预训练

第三部分 场景案例

常用参考

第二部分 应用挑战

2.基本流程与相关技术

4)Prompt

在前面的内容里,我们提到过要使用模型完成下游任务,有两种方式,一种是通过收集标记样本针对不同的任务进行指令微调,另一种方式便是大模型特有的,可以通过将指令以对话的方式提供给模型,期待模型能够给我们返回预期的结果。相较于前者,后者具有更高的灵活性,使用成本也更低,因此,这一方式成了如今大语言模型区别于传统NLP模型的重要标志。

在本章你将学习到:

1)Prompt,In-Context-Learning,Prompt engineering等相关概念

2)如何写好一个Prompt及相关Prompt调试工具

3)基于Prompt催生的一些新的编程范式

Prompt开发调试工具

对于大模型应用来讲,prompt至关重要,前面介绍了prompt的相关技术理论和编写技巧,然而,prompt是一个强实验性的技术,需要多次迭代比对,评估从而找出最适合的提示词。“工欲善其事,必先利其器”,要想更高效的迭代提示词,那么优秀的提示词管理和开发工具就成了关键。

从功能角度讲,一个prompt调试工具最基本的能力就是能够根据通过界面选择不同的模型和参数,能够观察prompt的输出。在此基础上,能够支持多个模型的比较,并且由于prompt的修改频繁,需要有类似代码变更那样的prompt库,包含prompt版本、历史、收藏、分享等常规功能。进一步的,提供不同prompt技术的编写模版,如few-shot及参数化方法,可以根据前面提到的prompt结构分块迭代优化,进行专业性赋能。对于一些复杂的场景,还涉及到精心构造prompt调起工具或者函数执行等能力的集成调试。结合最佳实践,能够自动地对prompt进行优化,如字符长度,完整性。为了评估prompt在场景中普遍效果,需要能够有单条及批量的评估能力。最后,支持将prompt封装为服务或脚本,以便进一步地编排集成形成LLM场景应用。其整个过程可以简单理解为是一个手动或自动不断优化的过程,并逐步固化为LLM应用的核心构件的过程。

####OpenAI Playground

OpenAI Playground是除了普通chatgpt各种客户端外的另一个面向开发者的调试器。

目前playground包含三种模式:Chat,Complete,Edit。Chat是目前唯一一个正在更新的,可以访问最新版本的模型GPT-3.5 Turbo和GPT-4。Complete和Edit都在2023年7月被弃用。

在Chat模式下,非openai 接口付费用户开发者可以选择5个模型选择:

  • GPT-3.5-turbo.GPT-3.5 的最新版本。

  • GPT-3.5-turbo-16k.最新版本的 GPT-3.5,上下文是原来的四倍。

  • GPT-3.5-turbo-0613。2023 年 6 月 13 日的 GPT-3.5 快照。

  • GPT-3.5-turbo-16k-0613.2023 年 6 月 13 日的 GPT-3.5 快照,上下文是原来的四倍。

  • GPT-3.5-turbo-0301.2023 年 3 月 1 日的 GPT-3.5 快照。

要使用GPT-4系列模型,需要成为openai 接口付费开发者才可以使用。

相对于chatgpt作为面向普通用户的产品,不用特别区分prompt的结构和作用,并且默认已经支持了多轮会话,而对于面向开发者的playground来说,openAI对prompt进行了分解,以便于编程,将提交给服务器的信息分为System Message,User Message和Assistant Message。通常,System Message为与用户输入无关的模型角色定义及上下文信息,User Message为用户的输入,包含问题或者对话信息。Assistant Message为模型的回复。

其他参数含义:

####Temperature :温度,控制生成的随机性或创造性,取值在0-2之间,默认值为1,越接近0,回答的结果越确定,越集中,简短,自信,temperature越高,创造性越强,更多样,更话痨,设置该值可根据其应用场合来设置。

####Maximum length :输出的最大token数量,在 GPT-3.5 中,允许的最大长度为 2048 或大约 1,500 个单词。

####Stop sequences :停止序列用于告诉模型何时停止生成输出。通过它们,您可以隐式地控制生成内容的长度。例如,如果您只想要一个单句的问题答案,可以使用 .作为停止序列。或者,如果想要一个段落的答案,可以使用新行作为停止序列。

####Top P :另一种随机因子,温度采样的替代方案,对应机器学习中的核采样,其思路是,将生成的词案概率高低排序,然后选择阈值P以内的候选词,然后再根据temperature进行采样。

Presence penaltyFrequency penalty :这两个参数都是通过影响模型的预测输出的概率分布来控制下一个生成的词,进而控制生成的多样性和质量。这两个参数的范围都在 [-2,2] 之间。值大于 0 表示文本生成将尽量减少出现重复的 token。

  • Frequency_penalty (频率惩罚)是通过token 训练时出现的频率来控制高频词输出。值越大,训练过程中看到的高频次词汇被生成出来的概率就越低,从而降低模型逐字重复同一行的可能性。

  • Presence penalty(存在惩罚) 是通过前文 token 是否出现了来控制重复 token 的出现,值越大,在 预测生成的token中出现的词被生成出来的概率就越低,从而增加模型谈论新主题的可能性。

OpenAI Playground是基于GPT 3.5或4.0模型开发的最基础prompt调试工具,里面的功能和参数概念是当前LLM开发的事实标准,值得大家学习掌握。

Dify

dify是国内开源的一个无代码LLMOPS平台,早期从prompt enginering切入,赢得了不少用户,在此基础上进而发展成为一个覆盖LLMOPS全生命周期的LLM应用开发平台。

上图是dify在Prompt Engineering的 核心页面,包含前面提到很多基础功能,如prompt模版,参数化,上下文定义,开篇引导语,模型选择和参数配置等。

在此基础上,具备基于提示词封装到应用发布和托管能力,以及与其相关的上下文数据集管理和插件库功能,支持简单的团队协作开发的能力。但更高阶的prompt仓库,自动评估优化等功能尚未提供。

dify的最大特点是能够提供快速的原型开发能力,能够基于它简单验证基于大模型的场景可行性,能够方便的进行场景demo演示。但从笔者的试用来看,受限于其无代码特性,虽然降低了门槛,但无法直接支持复杂的业务逻辑实现和效果优化。另外,作为产品最大的立足点prompt enginering来讲,功能上还有很多提升和完善之处。

PromptPerfect

PromptPerfect是由jina.ai开发的提示词开发工具,覆盖设计、优化、部署全过程。jina是一家在mlops及llmops领域起步很早的公司,其工具链覆盖了AI应用开发的全过程。

从功能上看,PromptPerfect支持前面提到的prompt工具的大部分功能,提供了覆盖prompt开发、优化、评估到外部工具集成及函数调用能力,并能够一键将prompt打包成为服务,供上层服务调用。它提供了一个特色的Prompt优化功能,让普通开发者也能享受到prompt最佳实践的赋能。

可以说,该产品是Prompt Engineering工具开发的一个很好的研究案例,不过,遗憾的是,该工具目前尚未开源。

小结

除此之外,市场上还有很多prompt相关的工具,如PromptDrive,Promptify,Fusion,以及在热门的Prompt Engineering学习网站(https://www.promptingguide.ai/tools)中整理了很多Prompt 相关的工具,感兴趣的读者可以深入了解。

但prompt开发并非LLM应用的全部,因此,在这类工具上都存在一个问题,就是无法完成整个LLM应用的业务流程,这也为后面的编排框架提供了生存的土壤。因此,实际的LLMOPS平台设计中,将prompt作为一个模块嵌入到整个LLMOPS平台中是最佳的方案。

进技术交流群请添加AINLP小助手微信(id: ainlp2)

请备注具体方向+所用到的相关技术点

![](https://api.allorigins.win/raw?url=https://mmbiz.qpic.cn/mmbiz_jpg/nW2ZPfuYqSJADkmZ2IX6Z23znAibuEevotDMq9iaMxiapK7jfMibiauGFkycicAJEs6x5U9SGyDJZ0S1tRed9TPNUUDQ/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1)

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括LLM、预训练模型、自动生成、文本摘要、智能问答、聊天机器人、机器翻译、知识图谱、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP小助手微信(id:ainlp2),备注工作/研究方向+加群目的。

  


  


![](https://api.allorigins.win/raw?url=https://mmbiz.qpic.cn/mmbiz_jpg/nW2ZPfuYqSKABHCqVVQkVYPrM4XY1vsd0iaeuXzyJnoFc8cibd5mYb4wdA3WMQtiaPVmr0XLZHMuVibqWncibpnTSnQ/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1)

阅读至此了,分享、点赞、在看三选一吧🙏

更多AI工具,参考Github-AiBard123国内AiBard123

可关注我们的公众号:每天AI新工具