给智能盒子连上网会怎样?由 Microsoft Designer 生成的
现在,我们知道ChatGPT基本上就是一个神奇的弹珠游戏板:把你的词(你的提示)放在顶部,看着它们在模型的障碍物上弹来弹去,直到你得到一个整洁的答案。但是障碍物是固定的:同样的提示通常会得到差不多的答案,无论它什么时候被输入。因此,我们无法直接从语言模型那里得到最新的新闻或天气信息:它无法连接到互联网。
但当你访问必应聊天、微软副驾助手、谷歌巴德或 Grok 时,你可以清楚地看到一些时效性的回应:当前比赛的比分、你附近的待售房产或任何领域的最新消息。这很酷,但这背后的细节又是如何运作的呢?简单的回答是,工程师们只是给模型提供搜索结果,然后让它进行总结。但这背后的细节是如何运作的呢?我们能从这些副驾助手中学到什么,这些经验又能如何应用到微软所说的“副驾时代”中的任何应用程序呢?让我们深入探讨一下吧!
和往常一样,我以个人身份发言,不代表微软的官方立场:所有观点仅代表我个人。
我已经揭露了最大的秘密:副驾只是在语言模型之外收集信息,然后像常规提示一样输入进去。对于我们来说,副驾只是一个使用LLM来决定采取什么行动并为用户总结回复的应用。我们来拆解一下它是怎么运作的:
与一个副驾驶或聊天助手,例如Bing聊天、谷歌的Bard或Grok进行简单的互动。完整文本请参见天气样本gist链接:https://gist.github.com/mark-wiemer/19ba25dd393fff82efc3db79d27f7f91
这是用户和助手之间的一轮对话。用户询问天气,助手利用语言模型和插件来提供一个详细且包含更多信息链接的回答。我将这个助手的模型命名为“Gurbo”,例如这是我个人对ChatGPT背后原模型GPT-3.5-Turbo的简称。
这里有很多地方可以分析,但我想要特别强调三点:
- 语言模型不知道它的输入来自哪里,也不知道它的输出会如何被使用
- 天气插件不知道语言模型的存在
- 一个使用LLM和多个插件的应用程序可以帮助完成任何数字任务
回顾第一个调用,我们发现语言模型无需任何改动就能提供这些回应。事实上,这些回应并非凭空捏造:ChatGPT 对这些提示给出了完全一样的回答,你可以自己试试!从语言模型的视角来看,这和用户在线聊天时的情况完全一样。
所有对话截图的完整链接在这里:https://chat.openai.com/share/60446728-162e-43d2-a20a-d640a8d04308。我知道这并不是一个完美的模板,但ChatGPT对此并不在意。
传统的应用程序通常处理结构化的数据——ChatGPT则将其转换成自然语言
我们已经开始看到使用大型语言模型来理解用户请求的一个主要好处:它不需要重新编程来处理不同的问题!这个相同的提示模板适用于许多请求。
你问:马克,如果用户输入的内容与列表中的插件不匹配时会怎么样?
原来ChatGPT背后的语言模型还挺聪明的!幕后,还有一个助手会检查ChatGPT的回答是否是一个合适的回答。如果不是,它可能会直接回复“抱歉,好像出了点问题”。(我们以后再讲讲更复杂的错误处理方法。)
通过向这些语言模型自动发送请求,工程师们正在充分利用这些通用大型语言模型(LLM)的所有优势:它可以处理我们交给它的几乎任何自然语言,让我们能够用同一个LLM核心构建各种复杂的助手程序。在像ChatGPT那样的LLM出现之前,工程师们每次想要处理不同的问题类型时,都必须编写自定义代码。现在我们可以为一切复用同一个巨型模型,从而更快地构建出各种令人惊叹的东西。而且,借助LLM令人难以置信的灵活性,我们甚至可以构建以前从未想过的东西,比如一个万事通应用——每个功能都可以连接到这个LLM,而LLM则会根据用户的需求很好地利用其功能,如前所述。
分解,第二部分:天气插件不知道语言模型的存在。实际上,插件并不需要了解语言模型。你知道这有多好嘛?因为天气应用程序原本是设计来处理邮政编码和城市名称,而不是回答问题的!那么,工程师们是怎么把大语言模型的灵活性和传统天气或体育应用程序的针对性结合起来的呢?
答案就在清单里!清单只是描述插件的文件。清单中的信息会通过一个示例提示直接提供给模型。正如我们在前面提到的那样。这里有一个参考清单,改编自OpenAI的插件教程:
{
"schema_version": "v1",
"name_for_human": "全球天气查询",
"name_for_model": "weather",
"description_for_human":
"查询地球上任何地点的实时天气信息!",
"description_for_model":
"查询某个地区的当前天气状况。
提供基于邮政编码或城市名称的结果。",
"auth": {
"type": "none"
},
"api": {
"type": "openapi",
"url": "https://example.com/openapi.yaml"
},
"logo_url": "https://example.com/logo.png",
"contact_email": "请发送邮件至support@example.com",
"legal_info_url": "请参阅法律信息 http://www.example.com/legal"
}
虽然有些噪音,但你可以看到最关键的部分:那就是我们普通人也能看懂的部分!你可能也注意到了,“获取该地区的当前天气信息”正是之前你发送给ChatGPT的文本。没错,这些相关的manifest信息就是通过提示增强的方式添加到你的提示中的。(为了简化,我只用了描述的一部分作为示例,但实际上整个描述都会被包含进来。)
提示增强其实非常简单:取用户的输入然后添加一些内容,让模型执行更具体的任务!在本文中,我们通过提示增强来识别用户的意图:用户想要什么样的信息?我们应该用哪个插件来获取这些信息?这个流程很简单:
- 首先,给出一些指令:“从以下列表中选择一个插件用于此提示。”
- 当然,要包含用户的提示!用引号将其包裹起来,并明确指出开始和结束:“提示:‘今天的天气如何?’”
- 对于提供的每个清单文件(manifest文件),将名称和模型描述添加到一个整洁的列表中:“1. 体育:获取体育赛事的信息,2. 天气:获取该地区的当前天气……”(我保留了之前的提示中的拼写错误以保持一致性,你可以看到大语言模型对此处理得很好。)
- 如果不确定,提供更多指令!ChatGPT 很健谈,通常会给出我们所需的内容超出部分。这在聊天时没问题,但在发送ChatGPT的回复到应用程序时,处理单个单词比处理整个句子更容易。为此示例,我加入了“只需说出插件名称,不要说其他任何内容。”
关于提示扩展还有很多可说的——说到底,这其实只是提示工程的自动化形式!工程师们经常会提供很多例子来利用所谓的少量样本学习,他们会提醒语言模型可以回答“我不知道”以避免虚假信息,他们会鼓励语言模型引用其来源或拒绝回答不相关的问题,这样的例子还有很多。目前,我们可以看到将所有这些工作交给助手而不是用户的价值。用户不再需要详细说明每一点细节——助手也会处理这些问题!
有了 manifest,我们可以非常简单地将任何传统应用程序连接到大型语言模型。只需提供一个简单的描述,基本上就可以开始使用了!我们无需从头开始,因为大多数应用程序已经有了描述,新工程师通过这些描述可以了解它们的工作原理——现在我们只需要把这些描述传递给一个 LLM,它就会处理剩下的部分!
虽然副驾没有脸,但我喜欢这样想象他们。这个图像是用Microsoft Designer制作的。
这就带我们到了最后一个重点:一个使用大语言模型和多个插件的应用程序可以帮助完成任何数字任务。
让我们想想我们是如何在网上搜索的。说到底,我们都默默地学会了如何用关键词搜索。大多数经常上网的人不会打开浏览器输入“嗨,谷歌,请告诉我现在的天气。非常感谢你。”这样做没问题,但我们都知道,传统搜索引擎只关注几个关键词。我们大多数人搜“天气”就能找到想要的信息。
但当我们看到必应或谷歌或其他搜索引擎开始与我们关于我们的搜索进行对话时,我们更愿意用完整的句子与这些新的助手对话。之前,如果我们对太平洋西北地区的气候趋势以及这对野火烟雾的影响感到好奇,我们可能会搜索“气候记录 太平洋西北部野火”并获得一些相当不错的结果。我们会浏览,阅读一些内容,记一些笔记,然后再次搜索。但是这个过程,就像大多数多站点的网络体验一样,充满了麻烦。页面加载慢,cookie通知烦人,自动播放视频最难接受,整体而言,要找到相关信息很困难,因为文章往往有很多无关内容。
像 Google Bard 这样的搜索副驾可以帮助我们跳过网络上那些烦人的部分。我们现在可以不离开页面就与互联网聊天。我们可以提出跟进问题,获取详细摘要信息,并深入来源以确保信息准确无误。这是一套简单流畅的操作,我确信我们很快就会看到更多高级功能。
但我们还可以走得更远!想象一个亚马逊插件,允许你在同一页面上查看、添加和结账你的亚马逊购物车。我们已经在必应聊天中拥有了一个AI图像生成插件——想象一下,你可以根据你想象中的完美鞋子绘制一幅图像,然后根据这幅图片进行购物搜索!对于更技术性的应用场景,微软在Excel中的Copilot已经可以生成图表、总结表格,以及创建动态列,以更好地进行数据可视化——这一切都是因为它连接到了当前文件。
除了创建和可视化之外,连接的LLM还可以帮助导航。你是不是对你的保险只支付了部分医疗费用感到困惑?我相信保险公司很快就会有自己的助手了。无论是银行、IT还是零售行业——他们都将有类似的助手!如果一切顺利,我们将不再需要忍受那些令人沮丧的电话自动语音系统,也不必再与那些无能的聊天机器人打交道了。
我们已经走过了很长一段路,但才刚开始起步。现在,ChatGPT和其他大型语言模型可以直接集成到任何应用程序中,我们会看到越来越多的应用程序开始使用这些大型语言模型。让我们来回顾一下原因以及这样做的好处:
- Copilots 是连接 LLM 与传统功能的应用程序,只要启用了正确的插件,它们就能帮助完成任何数字任务。
- 我们可以把 Copilot 想象成一个像我们一样使用 ChatGPT 的应用程序。
- 连接现有应用到 LLM 很简单,因此我们可以期待许多复杂的应用很快也会这样做(如果还没有的话)!
- 同一个 LLM 可以作为任意数量 Copilots 的核心,工程师可以更多地专注于用户帮助,而不是应用基础设施的维护。
你觉得副驾驶接下来会做什么?像往常一样,我很想听听大家的看法!谢谢大家的阅读。🤓
共同学习,写下你的评论
评论加载中...
作者其他优质文章