用 GPT 的四种能力打造属于自己的模型
OpenAI为开发者提供了友好的开发环境,简单的开发步骤、清晰的文档、以及在线Playground,开发者可以轻松打造属于自己的模型,本文梳理GPT提供的四种能力,恰当地使用这四种能力会让GPT有更精准的回答,四种能力分别是1. Prompt Engineering 提示工程、2. Fine-tuning 微调、3. Embedding 嵌入、4. Plugin 插件
OpenAI为开发者提供了友好的开发环境,简单的开发步骤、清晰的文档、以及在线Playground,开发者可以轻松打造属于自己的模型,本文梳理GPT提供的四种能力,恰当地使用这四种能力会让GPT有更精准的回答,四种能力分别是1. Prompt Engineering 提示工程、2. Fine-tuning 微调、3. Embedding 嵌入、4. Plugin 插件,在做GPT相关的应用开发过程中的各自位置,如上图所示。
1,Prompt Engineering 提示工程
原理:GPT模型的设计是基于Prompt数据集的预训练,把数据和答案标记出来,然后用GPT模型微调,生成一个监督微调模型「SFT」,Instruction Tuned LLM 更注重对用户指令的准确执行和结果的精确生成,它们通过使用更多与指令相关的训练数据和调整训练方法来实现这一目标,从而提高了模型的可靠性和效果,掌握这些指令的使用并且作为Prompt的一部分,就会得到更理想的输出效果,也可以理解为是对机器的「投其所好」,从这里也能看出,GPT的设计像极了人类学习过程。
提示工程一般在调用API时加入到Prompt中,作为整个Prompt的一部分送给GPT,吴恩达老师最近联合OpenAI做了一期《ChatGPT Prompt Engineering for Developers》的视频,对提示工程归纳得非常清晰,还有人为这个课程做了思维导图,这里就不再详细讨论这方面的内容了。
2,Fine-tuning 微调
原理:是在不改动预训练模型的基础上,增加分类器或一些特征映射,在原模型基础上生成新的模型「存在官方服务器上」,使微调后的模型能够更贴合实际使用场景,针对 prompt 和 completion 的进行训练,对「句式」、「情感」等特征进行优化。

作用:通过训练生成新的模型,比写在 Prompt 里写示例有更好的效果,模型被微调后,就不用在 prompt 里再写一些示例了,这样做还可以节省成本和耗时。
场景:1.想让 GPT 按照某种格式来识别 Prompt ,或按照某种格式来回答;2.想让 GPT 按照某种语气、性格来回答;3.想让 completion 具有某种倾向。
这里拿「情感倾向分类」举例,上传这样一组数据集,如下图,让机器学习情感分类,再调用微调后的模型,就可以判断输入的内容是否含有情感,并给出情感分类结果,试想,在你的特定行业领域中,某些常用的语句能判断情感倾向,那么只要整理好这组数据集就可以了;再试想,未来的家庭机器人,当你下班回家后,通过你说话内容就能判断你一天的心情,如果判断结果是「negative」,然后机器人安慰你几句贴心的话或者主动端来一杯咖啡,这个场景一点不夸张。

3,Embedding 嵌入
原理:将一个内容实体映射为低维向量,从而可以获得内容之间的相似度,Embedding 是计算文本与维度的相关性,用户可以通过文本之间的 Embedding 计算相似度。
作用:可以根据用户提供的语料片段与 Prompt 内容计算相关度,然后将最相关的语料片段作为上下文放到 prompt 中,以提高 completion 的准确率。
场景:1.获取文本特征向量;2.提供「相关」上下文,让 GPT 依据上下文回答。
比如,行业的培训手册,可以通过Embedding写入到向量数据库,当通过GPT提问,会先检索向量数据库,通过相关性计算得到对应的语料,再将搜索内容联合这些语料作为Prompt发给GPT,这样,回答的精准度就会提高很多。
4,Plugin 插件

原理:开发人员通过标准的 manifest 文件和 OpenAPI 规范格式 的 API 文档文件,指定一个或多个开放的 API Endpoint「指具体的某个 API」,这些文件定义了插件的功能,允许 GPT 读取这些文件,并调用开发人员定义的 API,与客户的 APP 打通。
举个例子,你的企业有10应用,针对不同三个领域的用户提供GPT服务,那么需要在这10个应用中都需要接入GPT的API,当有需要能力扩展时,需要在这10个APP中都增加同样的扩展能力代码处理;当有了Plugin设计之后,可能只需要设计3个领域的Plugin,打通这10个APP,在这10个APP中调用对应领域的Plugin就可以了。
这四种能力很大程度上可以帮助企业打造属于自己的语言模型,当需要圈定知识领域范围时,用Embedding,当需要按照某种语调回答时,用Fine-tuning,当不想让机器胡乱回答时,用Prompt Engineering,当想打通其他应用时,用Plugin,很大程度会满足企业需要,而并不一定要建设自己的大语言模型。