今天在LLM上构建产品的技术。
现代指令调整语言模型(LLM)是软件工程师工具箱中的最新工具。加入数据库、网络、超文本和异步 Web 应用程序等经典技术,我们现在有一种新的使能技术,它看起来非常强大,但其最佳应用程序尚不清楚。
ChatGPT让你发现这些可能性。您可以在 GPT-4 驱动的聊天窗口中制作一些狂野而有趣的体验原型。有时感觉就像你在与 AI 交谈的体验。
ChatGPT 还可以帮助您更好地了解 LLM 的许多弱点:他们有限的数学能力、他们忘记的倾向、他们一次遵循许多指令的挣扎,以及他们制造狗屎的倾向。
ChatGPT不是很有用的是了解如何将LLM与其他工具组合成面向用户的精美产品。你知道,你可以建立业务的东西。基于 ChatGPT 的原型最初往往令人兴奋,然后当您达到该环境的极限时会令人失望。(或者,或者,当您意识到您的概念非常简单,您的潜在客户应该直接使用 ChatGPT 时。
这可能会误导人们认为超越ChatGPT的能力需要某种科学突破。
ChatGPT是一个功能强大但很小的沙盒。
虽然目前的LLM不能完全取代人类在许多任务中的技能,但它们已经可用于大大加速和升级许多人类的努力。诀窍是将它们与其他工具组合在一起,以减轻模型的弱点,而不仅仅是简单的聊天工作流程。
幸运的是,这可以通过一些业务流程胶水代码来实现。你可以自己构建它,或者使用像LangChain或Semantic Kernel这样的新兴工具。无论哪种方式,一旦您通过编程环境与LLM进行交互,您就可以使用多种方法来打破ChatGPT的小盒子。
让我们只看其中的十个。
1. 转动旋钮
首先,语言模型具有不同的生成设置,这可能会导致完全不同的结果。虽然大多数参数只会逐步改善(或恶化)结果,但这里有一个强大的功能:近确定性。
LLM有一个温度参数,在其默认水平下,将激发更多创造性和有趣的结果。但是,温度设置为 0 将指示模型始终为给定输入生成最可能的输出。基本上,无聊。
零温度对于正确和一致比有趣和引人入胜更重要的应用非常有用。
LLM擅长语言,但在计算机通常擅长的一些任务方面很弱。幸运的是,通过提供LLM工具来缓解这种情况在概念上很简单。
例如,众所周知,LLM在数学方面并不擅长。这似乎是一个很大的限制,但你可以提示模型不使用语言推理来执行数学运算,而是通过调用过程 计算器
您提供的函数。这类似于人类做数学的方式:如果它很简单,我们可能会在脑海中做,也许是错误的。如果计算器很方便,我们会使用它。
这概括了:给LLM一个新的工具,然后砰!你的语言模型可以做语言的事情,而你的过程代码(便宜地)计算东西。它可以是天作之合。
此方法适用于您可以为其定义 API 的大多数内容。你可以给LLM提供调用Zapier的工具,调用shell脚本,搜索互联网,检查天气,从数据库中读取或写入,或者调用任何简单的函数或查询。ChatGPT 插件将这种方法产品化,LangChain 支持工具使用已经有一段时间了。几周前,GPT-3.5 和 GPT-4 进行了更新,以更好地理解自定义函数调用,因此这些 API 现在具有一流的支持,可以告诉 LLM 它可用的工具。
让我们看一下工具使用的一种野生案例。
3. 给你的法学硕士一个口译员
软件界正在进行的争论之一是:LLM会使软件开发快10%还是快10倍?倾向于10%答案的人通常还没有以下两种经历:
- 使用 GPT-4 帮助构建 GPT-4 非常了解的软件
- 使用自动解释LLM代码输出的工作流
例如,您可以让 LLM 生成一个新类,然后按程序检查该类是否通过了您的自动化测试套件。如果失败,请将错误反馈到模型中重试。这不会产生 100% 的自主编码,但它可以让您比将内容粘贴到 ChatGPT 中更快。
更一般地说,让LLM使用代码进行推理可能非常强大。众所周知,通过要求LLM“一步一步地思考”并在最终答案之前输出他们的思维链,您可以从LLM那里获得更好的答案。该技术的一个升级是让它将思想链转换为Python脚本,该脚本在执行时将确定答案。
当然,你可以让 ChatGPT 生成 Python 并将其手动粘贴到解释器中。但在类似 LangChain 的脚本环境中,代码评估可以成为工作流的一部分。反过来,这个循环可以成为我们尚未完全构想的功能和产品的构建块。
(外科医生的警告:给LLM一个代码解释器和同时访问互联网应该只在健康剂量的偏执狂的情况下完成。
4. 链接提示
链接是在LLM上构建应用程序的基本技术。虽然 GPT-4 在遵循多部分和多阶段指令方面比 GPT-3.5 好得多,但足够复杂的提示仍然会导致规则和细节被丢弃在地板上。当前的LLM在范围狭窄的任务和示例中做得更好,因此开发人员通常将其多部分提示拆分为两个或多个链式请求。
例如,在游戏中,您可以首先让模型以极大的创意热情描述玩家面前的精彩场景,然后让第二个提示在给定该场景的情况下为玩家精心生成合理的多项选择选项。或者,如果用户的问题是关于科学的,你可以先问一个便宜的模型,如果是,然后问一个昂贵的科学意识模型来考虑他们的问题。
链接的一个非常有用的应用是有一个提示来评估另一个提示的输出。虽然依靠模型来评估自己肯定会给你带来麻烦,但在许多情况下,GPT-4 可以对另一个提示的工作进行有用的评分,无论是启动重试、停止还是人工审查标志。
您还可以使用自评分来获得更多创意或有趣的输出,尤其是当质量比速度或成本更重要时。你可以问一个LLM“为这个故事生成20个潜在的标题”,将其输入到“根据这四个标准对这些标题中的每一个进行评分”,然后以编程方式选择最有希望的一个。
当然,LLM对最有前途的标题的想法可能偶尔仍然是笨拙的垃圾。稍后会详细介绍。
5. 让你的法学硕士秘密思考
ChatGPT 生成的所有内容都会显示给用户。对于某些用例来说,这很好,但它可能会破坏某些产品目标。例如,如果您希望LLM促进出色的辅导课程,游戏或任何其他活动,其中人类会在说话前记笔记或收集他们的想法,您希望尝试相同任务的模型能够在生成用户可见的东西之前生成“内部思想”。
这可以像告诉模型一样简单,首先输出其思维链或隐藏的推理。 <隐藏>
,然后跟随其面向用户的输出。呈现结果时,只需显示非隐藏文本。
由于这可能有点容易出错,因此实际应用程序通常使用提示链接来允许隐藏工作 - 中间提示产生临时“想法”,这些“想法”被输入到生成用户可见输出的提示中。
6. 动态提示模型
ChatGPT 的另一个大限制是提示是您粘贴的静态文本。为了在这项技术上构建实际产品,产品工程师通常使用某种模板系统在运行时为其模型提供提示的不同变体。
动态提示通常包括用户上下文、已知良好的输出示例、知识库文章、文档等变量 - 所有大小都适合相关的上下文窗口和生产中的成本限制。
模板化作为一种快速的工程工具是显而易见的,但它很好地说明了为什么离开 ChatGPT 并进入代码可以解锁一些非常基本的实验和迭代工具。
7. 提供事实
事实是工程师放入其提示模板中最常见的内容。众所周知,LLM倾向于虚构在不确定时似乎合理的事实信息。在模型级别上夯实这一点是一个有趣的积极研究领域,但今天我们可以通过将相关的真实事实添加到我们的输入中来提供帮助。
例如,要响应用户输入,例如“Slurm 是如何制作的?”,您可以首先查询填充了嵌入的向量数据库。这使您可以提取与用户输入语义相似的事实。输入那些经过审查的 Slurm 事实以及用户的问题可以大大减少模型对其预训练的依赖,这可能对与 Slurm 相关的见解造成了灾难性的轻视。
通过这种方式,我们通常可以使用LLM来获得良好的输出,这些主题要么晦涩难懂,比模型的数据截止日期更新,特定于您的产品,要么只是在您的模型训练的现有数据集中代表性不足。
如果我的指南对你来说还不够企业,A16Z 有这个 LLMOps 的架构图和一个方便的产品列表 他们投资了 你可以使用。
为模型提供事实的一个特例是建立“记忆”。ChatGPT 执行一种特定的操作:当您进行新查询时,它会将聊天线程中最近的几千字文本发送到模型。通过这种方式,ChatGPT有一些短期记忆。
回到古代 - 四个月前 - 我推测大型上下文窗口对于有一天创建一个LLM驱动的代理是必要的,感觉它有一个长期稳定和不断增长的内存。在Anthropic新的100k令牌上下文窗口和让模型存储和检索关键事实的程序工具之间,现在完全有可能建立一个同伴或教练,就好像它有一个长期记忆一样。
抓住你的屁股。
8. 构建类似聊天的体验
虽然聊天体验将是巨大的,并且变得越来越有用,但聊天只是我们可以用LLM构建的一件事。 产品设计师的想象力才刚刚开始触及这里可能的表面。
才华横溢的设计师玛吉·阿普尔顿(Maggie Appleton)对这些用户体验的可能性进行了很好的探索,标题为“为什么我讨厌聊天机器人”。其核心思想是,语言模型可以帮助我们分析、提醒、建议、分类、挑战、标记、自动化,以及以其他方式增强与聊天甚至撰写文本无关的生活质量功能。
如果你发现你的团队想知道,“我们可以让LLM生成文本到我们产品中的哪些文本字段?”那么挑战自己,跳出这个框框。
9. 更换模型
截至 2023 年 6 月,大多数基于 LLM 构建的产品团队都在使用 OpenAI 的 GPT API。(也就是说,如果他们的公司法律和合规霸主允许他们这样做。否则,他们可能很难从当前的开源替代方案中获得可比的东西。
一旦可用的模型和我们的LLMOps技能成熟,这种情况就会改变。有几千——几万?– 今天尝试微调开源模型以在特定任务上获得足够好的性能的团队。从理论上讲,调整的较小模型可以避免围绕OpenAI的GPT API的成本,合规性或法律问题。虽然微调曾经是一种昂贵的黑暗艺术,但 LoRA 等参数高效微调方法正在使其更具成本效益,并且入站工具将使微调更加用户友好。
目前,OpenAI的GPT API目前不支持微调。据报道,这只是因为他们还不能足够快地购买GPU来满足需求。到 2024 年,LLM 驱动的产品似乎可能会经常对其部分提示(或输入查询类别)使用不同的微调模型,这些模型今天已被原型化为一个大型通用 ChatGPT 提示。
更进一步,LLM非常适合原型设计和发现ML的用例,但“传统”ML技术能够做一些同样的事情。一旦你用LLM证明了一个概念,并希望在生产中扩大它,那么LLM是否是扩展和迭代该功能的最佳方式,以及更传统的机器学习方法是否可以更快,更便宜地获得相同的结果。
10.让一个人参与循环
虽然法学硕士将以深刻的方式改变知识工作,但它们本质上仍然是人类努力的加速器。在很多情况下,基于 ChatGPT 的产品原型会绊倒,因为它们被提示排除人为因素,并在没有帮助的情况下直接跳到最终答案。
Github Copilot和备受期待的GPT-4驱动的Copilot X是LLM的突破性杀手级应用程序的部分原因是它们基本上是人类加速器。GPT 甚至无法自行远程构建和维护大型软件应用程序,但 Copilot 是一个很好的编码伙伴——您现有技能和意图的放大器。通过提出建议并在工作中创造性较低的部分进行第一次尝试,Copilot使其人类飞行员更有效。
这样的案例很多。今天的LLM在完全自动化的工作流程中挣扎,但通常可以为人类提供引人注目的选项或起点。
在原型设计和探索LLM驱动的产品时,我鼓励您不仅探索我们如何实现自动化,而且如何加速和赋予人们权力。现代机器学习模型可以帮助我们学习、发现和取得比以前更多的成就。