目录 介绍聊天笔记本:将LLM整合到笔记本范式中

介绍聊天笔记本:将LLM整合到笔记本范式中

这是关于我们LLM相关技术的持续系列的一部分:ChatGPT获得“Wolfram超级力量”!ChatGPT的即时插件:Wolfram ChatGPT插件套件简介LLM函数的新世界:将LLM技术集成到Wolfram语言中工作和游戏提示:启动Wolfram提示库介绍聊天笔记本:将LLM整合到笔记本范式中

介绍聊天笔记本:将LLM整合到笔记本范式中

一种新型笔记本

我们最初发明的这个“笔记本”的概念早在1987年Mathematica 1.0版在过去的36年里,笔记本电脑被证明是一种非常方便的工具出版-工作(实际上,我,例如,已创建成千上万)。是的,最终笔记本的基本概念得到了广泛的复制,尽管我们在1987年拥有的东西还没有全部复制!

现在,笔记本面临着一个新的挑战和机遇:将LLM功能集成到笔记本中。这是一个有趣的设计问题,我对我们所提出的非常满意。今天,我们将介绍聊天笔记本,它是一种支持基于LLM的聊天功能的新型笔记本。

此处描述的功能将内置于即将发布的Wolfram语言(版本13.3)。要在当前版本(13.2版)中安装它,请使用

PacletInstall[“Wolfram/Chatbook”]

PacletInstall[“Wolfram/LLMFunctions”].

还需要API密钥开放人工智能LLM或其他LLM。

就像普通笔记本一样,有很多方法可以使用聊天笔记本。我特别兴奋的一点,尤其是因为它有潜力向这么多人开放计算语言,那就是提供交互式Wolfram语言援助。但我将单独讨论。相反,我将集中讨论聊天笔记本(已经非常丰富)的一般概念。

基本思想很简单:有一种新型的cell——聊天室,它与LLM通信。(在我们所称的“Chat-Driven Notebook”中,聊天室是默认的;在“Chat-Enabled Notebooks”中,按可获得聊天室'-即,当您第一次创建单元格时。)


在标准笔记本中,我们习惯于使用包含Wolfram Language的输入单元格,以及通过评估Wolfram语言输入得出结果的输出单元格:

基本上,聊天单元只是一种使用LLM而不是Wolfram语言内核来“评估”其输出的单元类型。实际上,在聊天笔记本中,您将输入发送到LLM的方式是按转移进入,就像Wolfram语言输入一样。

与标准输入和输出单元格一样,聊天输入和输出单元也是分组的,因此您可以一起选择它们,或者双击其中一个来打开或关闭它们:

打开和关闭单元格

与聊天室的一个直接区别是,虽然普通输出单元是一次性生成的,但聊天室输出单元的内容在LLM生成时一次逐渐“流入”一个单词(或左右)。

还有另一个重要的区别。在普通笔记本中,有一个“时间评估线程”,其中输入和输出按时间生成的顺序出现(如下所示在[n个]输出[n个],与它们在笔记本中的位置无关。因此,例如,如果您评估x=5在输入单元格中,然后询问x个,无论您在笔记本中的哪个位置,结果都是5,即使它位于“x=5“单元格:

x=5次计算

但对于聊天室,情况就不同了。现在笔记本中单元格的顺序很重要。“聊天线程”不是由计算聊天单元格的时间决定的,而是由它们在笔记本中的显示顺序决定的。

线程中聊天单元格的顺序

沿着笔记本往下走,连续的聊天室“知道”上面的单元格中有什么。但即使我们稍后添加它,位于顶部的单元格也不会“知道”它下面的单元格中的任何内容。

所有这些都反映了普通Wolfram语言评估和“LLM评估”之间的重要区别。在Wolfram语言评估中,Wolfram语言内核总是有一个内部状态,从某种意义上说,无论你在笔记本上做什么,都只是进入该状态的一个窗口。但对于LLM评估,整个状态是由笔记本的实际内容决定的。

每次进行LLM评估时,笔记本系统都会将进行评估的单元格上方的所有内容打包,并将其发送给LLM。从某种意义上说,法学硕士对时间历史一无所知;当LLM评估完成时,它只知道笔记本里有什么。

这有很多后果。一个是你可以编辑聊天历史并“用新历史重新评估”。当重新评估“覆盖”单元格时,聊天笔记本将保留旧版本,您可以按箭头(为了进行LLM评估,聊天历史始终被视为进行评估时显示的内容):

LLM评估会选取笔记本中显示在其上方的内容。但有一种重要的方法可以限制这种情况,并将聊天分开或“模块化”:聊天块的概念。

您可以按开始聊天块~(波浪号)在笔记本中创建单元格时,将得到:

Chatblock分隔符

关键是这意味着一个新聊天的开始。当您评估此分隔符下的聊天单元格时,它将只使用分隔符之前的内容,这意味着在单个聊天笔记本中,您可以有任意数量的独立“聊天会话”,由聊天块分隔符分隔:

姓名聊天

从某种意义上说,LLM评估是一种以笔记本为中心的评估形式,始终基于笔记本中出现的内容顺序。正如我们将在下面讨论的那样,LLM求值有不同的详细形式,但在大多数情况下,求值不仅对聊天室进行操作,还对给定聊天块中出现在其上方的所有单元格进行操作。

与普通评估的另一个不同之处是,LLM评估通常不可重复。是的,如果有随机数或外部输入,普通的Wolfram语言评估可能不可重复。但Wolfram语言的核心评估过程是完全可重复的。然而,在LLM中,情况可能并非如此。例如,特别是如果LLM的“温度”参数(通常为默认值)的值为非零值,则几乎可以保证每次进行评估时都会给出不同的结果。

在使用聊天笔记本时,有时只需多次尝试评估聊天室,直到获得所需内容,这会很方便。(您可以使用这个箭头。)聊天笔记本中另一个有用的“技巧”是不仅编辑您的输入,还编辑LLM评估生成的输出。当您进行LLM评估时,LLM只是给出笔记本中上面显示的任何内容,而不管“来自哪里”。因此,如果LLM“犯了错误”,您可以自己修复它,然后LLM通常会在以后进行评估时“修复”。

聊天笔记本中的默认设置总是使用前面的单元格作为您提供的任何聊天输入的“上下文”。但也有一种机制可以让“边聊”不使用(或影响)上下文。不只是通过键入来获取聊天室(在chat-Driven笔记本中),而是使用以下命令启动聊天室'(“quote”)获取“side chat”单元格(在支持聊天的笔记本中,它是'获取聊天室,以及''以获得侧边聊天单元):

侧边聊天室

你要和谁说话?

当你评估一个聊天室时,你会得到一个LLM的响应。但是,是什么决定了将用于LLM的“角色”,或者通常是如何配置LLM的?可以从总体上指定多个级别偏爱设置到聊天笔记本设置到聊天块到单个聊天单元格。

例如,对于聊天块,单击左侧的小聊天图标,您将看到一个可能的角色菜单:

人物角色菜单

选择一个特定的角色,它的图标将“停留”在聊天块分隔符上,然后在接下来的每个聊天单元中,它将是默认响应您的角色:

Birdnardo查询

您可以告诉它是角色响应,因为它的图标将显示为响应的“标签”。(如果您将鼠标悬停在聊天室图标上,它也会出现在您的输入旁边)。

我们在上面顺便提到,当您可以创建两种类型的聊天笔记本时(例如,使用文件>新建菜单):支持聊天的笔记本和聊天驱动的笔记本。在Wolfram笔记本系统的未来版本中,Chat-Enabled笔记本可能会成为所有新笔记本的标准默认设置,但现在必须明确选择。

那么什么是支持聊天的笔记本,它与聊天驱动笔记本有何不同?基本点是,支持聊天的笔记本旨在像Wolfram笔记本一样使用35年,但添加了额外的聊天功能。在支持聊天的笔记本中,默认的新单元格类型(假设您使用的是默认的样式表)需要Wolfram Language输入。要获取聊天室,您显式键入'(“引号”)。当您创建聊天室时,默认情况下它将与代码助理角色对话,准备帮助您生成Wolfram语言代码。

Chat-Driven笔记本有点不同:它是一个笔记本,其中聊天是主要内容,默认情况下,新的单元格始终是聊天单元格,并且没有特别的期望,你会谈论与Wolfram语言有关的事情。默认情况下,Chat-Driven笔记本中没有特殊的人物角色,相反,人们几乎只会与通用的LLM对话(尽管有一些关于在笔记本中使用的额外提示,等等)

但是,如果您想与另一个角色对话,可以在角色菜单中指定。默认情况下会列出一些角色。但是有Wolfram Prompt Repository中还有更多。和来自添加和管理人物角色您可以打开Prompt Repository的personas部分:

Wolfram Prompt Repository角色

然后您可以转到角色页面,并按安装按钮在会话中安装该角色:

GenZSpeak角色

现在,您可以从任何聊天块、聊天室等角色菜单中选择此角色:

GenZSpeak聊天

Wolfram Prompt Repository包含越来越多的精选贡献人物角色。但是从URL安装菜单项还允许您安装独立部署的角色(例如,在Wolfram云)、和可公开使用,也可供特定用户使用。(如其他地方所述,您可以使用提示资源定义笔记本创建角色。)

给定一个命名的人物角色——可以在Wolfram Prompt Repository中定义,也可以显式安装——您始终可以使用@人物角色:

羽毛聊天查询

当你在一个特定的聊天室中直接聊天一个人物角色时,该人物角色会被发送到你当前聊天块中之前的全部历史记录。但在该角色响应后,随后的聊天室恢复使用当前默认角色。然而,您直接聊天的任何角色都会自动安装在您可以使用的角色列表中。顺便说一句,直接聊天是一个独立于边聊的想法。默认情况下,侧聊不会影响您正在与哪个角色对话,但会给您提供一个“本地化”的上下文,而直接聊天会影响您正在交谈的角色,但会“流入”当前聊天块的全球历史。

人物角色可以让您定义您希望LLM如何表现的所有方面。但最终您还必须定义底层LLM本身。它应该使用什么模型?“温度”是多少?等。在列出人物角色的相同菜单的底部,有一个高级设置项目:

高级设置菜单

像人物角色一样,可以在聊天室级别、聊天块级别、笔记本级别或全球范围内通过偏好设置。通常在偏好级别。最后,关于LLM配置的所有内容都由符号指定LLM配置对象。

正如我们将在其他地方讨论的,full的一个非常重要的附加功能LLM配置对象是它们可以指定LLM(本质上是Wolfram Language API)可以使用的“工具”,LLM应该能够向其发送请求,以便获得计算结果或计算操作。

在特定的Wolfram语言会话中,可以通过设置以下值来指定默认LLM配置$LLM评估师。您还可以使用以下命令以编程方式创建具有指定LLM配置的聊天笔记本:

(这将制作一个聊天驱动笔记本;您可以使用“聊天已启用”制作一个支持聊天的笔记本。)

在聊天笔记本中应用功能

正如我们在其他地方讨论的那样,人物角色最终只是提示。例如,当我们说@尤达我们实际上只是添加了“Yoda提示符”(即。LLM提示[“尤达”])进入聊天评估。

但有各种各样的提示与我们通常认为的人物角色不对应。例如,有“修改器提示”,如表情化的SE优化推文转换,它描述了我们想要获得的特定输出。在聊天笔记本中,我们可以使用#促使:

HaikuStyled聊天修改器

这样做的原因是“在引擎盖下”,聊天评估是有效的LLM综合[“输入”],添加角色或修改器提示符可以通过以下方式实现LLM综合[LLM提示[]].

只需输入多个修改器提示即可添加多个#项目。但是,如果修改器提示符有一个“参数”,比如"LLM提示[“翻译”,“法语”]“聊天笔记本提供了一种语法,每个参数之间用|,如中所示#促使|参数:

HaikuStyled和Translated聊天修饰语

人物角色和修饰符都旨在影响LLM在聊天中生成的输出。但Wolfram Prompt Repository也包含“功能提示”,旨在对您提供的特定输入进行操作。功能提示特别适合编程使用,如:

但也可以在聊天笔记本中使用功能提示。!促使指定函数提示:

正式重新表述聊天功能提示

默认情况下,聊天室中的函数提示符会将您在聊天室中显式给出的文本作为其输入(尽管它仍然“看到”当前聊天块中的以前历史)。但是,将输入放在自己的单元格中也是常见的。您可以使用以下命令使函数提示符从笔记本中的前一个单元格获取输入!促使^:

正式改写示例

但是,如果您想将完整的历史记录(在当前聊天块中)提供给功能提示,该怎么办?您可以使用^^而不是^:

其他形式重述示例

是的,聊天笔记本中有很多小的符号。一个人很快就习惯了,但为了方便起见,他们都放在一张桌子上:

聊天笔记本标记菜单

聊天笔记本的设计

Wolfram语言的一大长期优势是其设计的连贯性设计连贯性不仅延伸到语言本身,还延伸到语言周围的整个系统,包括Wolfram笔记本。那么聊天笔记本呢?正如我们前面所说,聊天笔记本代表了一种新型笔记本,它具有新的需求,并带来了新的设计挑战。但正如之前多次发生的那样,整个Wolfram语言和笔记本范例非常强大和通用,我们能够设计聊天笔记本,使其与系统的其余部分协调一致。特别是对于那些了解现有系统的人(人类和人工智能!),讨论系统中其他地方存在的聊天笔记本的一些先例和类比可能会有所帮助。

聊天笔记本的一个关键功能是为特定笔记本内容使用不同的评估器,即聊天单元的LLM评估器。但事实证明,自从36年前我们发明笔记本电脑以来,就一直存在着使用不同评估工具的想法。在那些日子里,一个常见的设置是笔记本“前端”,它可以将评估发送到本地计算机上运行的内核,或者到远程内核在其他(可能更强大的)机器上运行。(是的,我们现在称之为““尽管在那些日子里,远程计算机经常有电话连接等。)

从一开始,我们就讨论了使用不直接基于现在的Wolfram语言的评估器(实际上,在编程级别,我们提供了大量访问外部程序等)。但只有当我们2009年发布Wolfram | Alpha我们终于有了一个令人信服的理由考虑将Wolfram语言评估以外的东西集成到笔记本的核心用户界面中。因为从那时起Wolfram|Alpha公司的自然语言理解能力—我们有一种方法可以使用Wolfram语言以外的其他语言(普通自然语言)来指定Wolfram language计算。

因此,我们引入了Wolfram | Alpha单元,其中求值首先解释您键入的自然语言,然后执行它指定的Wolfram语言计算。你得到一个Wolfram|Alpha电池,按下=当您创建单元格时(我们还引入了内联控制=机制); 然后转移进入评估是否:

Wolfram|Alpha细胞

2017年(与版本11.2)通过引入外部评估单元,从笔记本电脑访问“其他评估人员”的概念又迈出了一步:

外部评估单元

随之而来的还有“可能的评估者”菜单的概念——聊天笔记本人物角色菜单的前身:

外部软件菜单

然后在2019年推出了Wolfram | Alpha笔记本版,其整个框架围绕自然语言“Wolfram | Alpha-style”输入单元格:

Wolfram|Alpha笔记本版输入单元格

从某种意义上说,这是聊天笔记本最直接的前身。但现在,我们没有将“自由形式输入”单元格发送到Wolfram|Alpha,而是将聊天单元格发送到LLM。

在方案层面,聊天评估(和LLM综合)在许多方面与云评估(CloudEvaluate),远程评估并行评估。但新的是笔记本界面方面,这是我们发明聊天笔记本的目的。在诸如外部评估并行评估评估器中有一个状态。但例如,Wolfram|Alpha通常是无国籍的。所以在Wolfram|Alpha笔记本版“状态”是由笔记本中以前的单元格确定的,这与聊天笔记本中使用的机制基本相同。

但聊天笔记本中的一个新功能是,不仅以前的单元格以某种方式标识为“输入”,用于确定“状态”,而且还使用了其他单元格(如文本单元格)。是的,从那以后版本31996年,出现了能够处理任意笔记本内容的笔记本编程结构。但聊天笔记本是第一次在“评估”中使用“非输入”。

从1988年开始,笔记本的大多数定义功能(如单元格、单元格组、评估行为等)就已经存在。但多年来,我们逐渐完善了笔记本的概念,引入了反向闭合单元格、模板框、输入连字等概念。现在值得注意的是,聊天笔记本是如何建立在所有这些概念之上的。

你可以像其他任何类型的单元格一样剪切、复制、粘贴聊天单元格。您可以关闭聊天输出,或反向关闭聊天输入。这与我们长期使用的笔记本范例完全相同。但也有一些新的想法,比如替代输出、聊天块等。毫无疑问,在未来的几个月和几年里,随着我们了解聊天笔记本的使用方式,我们将发明各种方法来扩展和完善聊天笔记本体验。但到目前为止,看到我们如何能够采用35多年前发明的范式,并使用它为那些最现代的东西提供如此丰富和强大的接口,这是令人兴奋的:LLM。

Stephen Wolfram(2023),“介绍聊天笔记本:将LLM整合到笔记本范式”,Stephen Wolfram Writings。writings.stephenwolfram.com/2023/06/introduction-chat-notebooks-integrating-llms-into-the-notebook-paradigm。
文本
Stephen Wolfram(2023),“介绍聊天笔记本:将LLM整合到笔记本范式”,Stephen Wolfram Writings。writings.stephenwolfram.com/2023/06/introduction-chat-notebooks-integrating-llms-into-the-notebook-paradigm。
CMS公司
斯蒂芬·沃尔夫拉姆。斯蒂芬·沃尔夫拉姆(Stephen Wolfram)《聊天笔记本简介:将LLM整合到笔记本范式》(Introducing Chat Notebooks:Integrating LLM into the Notebook Paradigm)。2023年6月8日。writings.stephenwolfram.com/2023/06/introduction-chat-notebooks-integrating-llms-into-the-notebook-paradigm。
亚太地区
Wolfram,S.(2023年6月8日)。介绍聊天笔记本:将LLM集成到笔记本范例中。史蒂芬·沃尔夫拉姆著作。writings.stephenwolfram.com/2023/06/introduction-chat-notebooks-integrating-llms-into-the-notebook-paradigm。

发布时间:人工智能,教育类,数学软件,新技术,软件设计,Wolfram语言