Wolfram插件
要启用此处描述的功能,请从ChatGPT中选择并安装Wolfram插件。
请注意,到目前为止,此功能仅适用于一些ChatGPT Plus用户;有关更多信息,请参阅OpenAI的公告。
在短短两个半月内…
1月初,我写了关于将ChatGPT连接到Wolfram|Alpha的可能性。今天——仅仅两个半月后——我很高兴地宣布它发生了!多亏了我们团队和OpenAI的一些英雄软件工程,ChatGPT现在可以调用Wolfram|Alpha——以及Wolfram语言——给它我们可能认为的“计算超能力”。对于这一切来说,现在还很早,但它已经非常令人印象深刻——人们可以开始看到我们可以称之为“ChatGPT Wolfram”的强大(甚至可能是革命性的)是多么惊人。
早在1月份,我就指出,作为一个LLM神经网络,ChatGPT——由于其在文本生成材料“如”从网络上读取的内容等方面的非凡能力——本身不能被期望进行实际的非平凡计算,或系统地生成正确的(而不仅仅是“看起来大致正确”)数据等。但当它连接到Wolfram插件时,它可以做这些事情。因此,这是我1月份(非常简单)的第一个示例,但现在由ChatGPT完成,并安装了“Wolfram超能力”:
这是一个正确的结果(在1月份不是)——通过实际计算找到。这里有一个好处:即时可视化:
这是如何运作的?在引擎盖下,ChatGPT正在制定Wolfram|Alpha的查询——然后将其发送到Wolfram|Alpha进行计算,然后根据阅读它得到的结果“决定说什么”。您可以通过单击“Used Wolfram”框来回查看此内容(通过查看此内容,您可以检查ChatGPT没有“编造任何东西”):
在ChatGPT和Wolfram|Alpha方面,这里有很多不平凡的事情发生。但结果是一个好的、正确的结果,编织成一个漂亮、流畅的文字。
让我们试试另一个例子,也是我在一月份写的:
一个很好的结果,配得上我们的技术。同样,我们可以获得奖励:
1月,我注意到,当给出此提示时,ChatGPT最终只是“编造”了合理的(但错误的)数据:
但现在它调用Wolfram插件,并得到了一个好的、权威的答案。而且,作为奖励,我们还可以进行可视化:
早在一月份,另一个现在正确出现的例子是:
如果你真的尝试了这些例子,如果它们的工作方式与我在这里展示的有所不同(有时更好,有时更差),请不要感到惊讶。由于ChatGPT在生成响应时使用随机性,即使您问它完全相同的问题(即使在新的会话中),也会发生不同的事情。感觉“非常人性化”。但与人们在Wolfram|Alpha和Wolfram语言中获得的坚实的“正确答案和它不会改变”体验不同。
这里有一个例子,在最初发现ChatGPT得到了“错误的Mercury”后,我们看到ChatGPT(相当令人印象深刻)与Wolfram插件“进行对话”:
这里特别重要的一点是,ChatGPT不仅仅是利用我们进行“死胡同”操作,例如显示网页的内容。相反,我们的行为更像是ChatGPT的真正“大脑植入物”——它在需要的时候向我们询问事情,我们给出的回应是,它可以编织到它正在做的任何事情中。在行动中看到相当令人印象深刻。而且,尽管肯定还有更多的润色工作要做,但已经存在的东西(除其他外)在很大程度上可以使ChatGPT能够提供准确、精心策划的知识和数据,以及正确、非平凡的计算。
但还有更多。我们已经看到了一些例子,我们能够向ChatGPT提供自定义创建的可视化。凭借我们的计算能力,我们通常能够制作“真正原创”的内容——这些计算以前从未做过。还有一件事:虽然“纯ChatGPT”仅限于它“在培训期间学到的东西”,但通过给我们打电话,它可以获得最新的数据。
这可以基于我们的实时数据源(在这里,我们被调用两次;每个地方一次):
或者它可以基于“科学风格”的预测计算:
或者两者都有:
你可以做的一些事情
Wolfram|Alpha和Wolfram语言涵盖了很多东西:
现在(几乎)所有这些都可供ChatGPT访问——开辟了巨大的广度和深度的新可能性。为了说明这些,这里有一些(简单的)例子:
现代人类 人工智能工作流程
ChatGPT旨在能够与人类进行来回对话。但是,当对话中有实际的计算和计算知识时,人们能做什么?这里有一个例子。首先问一个“世界知识”问题:
是的,通过“打开盒子”,人们可以检查是否向我们提出了正确的问题,以及我们给出的原始回应是什么。但现在我们可以继续要求一张地图:
但我们本可以使用“更漂亮”的地图投影。借助ChatGPT基于阅读网络等的“一般知识”,我们可以要求它使用一个:
但也许我们想要一张热图。同样,我们可以要求它使用我们的技术来生产这个:
让我们再次更改投影,现在再次要求它使用其“一般知识”来选择它:
而且,是的,它的投影“正确”。但不是中心。因此,让我们要求它解决这个问题:
好的,那么我们这里有什么?我们有一些我们“合作”的东西要建造。我们逐渐说出了我们想要的东西;人工智能(即ChatGPT Wolfram)逐步构建它。但我们到底得到了什么?好吧,这是Wolfram语言的一部分——我们可以通过“打开盒子”或只是要求ChatGPT看到:
如果我们将代码复制到Wolfram笔记本中,我们可以立即运行它,我们发现它有一个很好的“豪华功能”——正如ChatGPT在其描述中声称的那样,有动态工具提示给出了每个国家的名称:
(而且,是的,有点遗憾的是,这个代码中只有明确的数字,而不是关于牛肉生产的原始符号查询。发生这种情况是因为ChatGPT向Wolfram|Alpha询问了原始问题,然后将结果提供给了Wolfram语言。但我认为,整个序列的工作原理都令人印象深刻。)
它是如何工作的——和人工智能争论
ChatGPT和Wolfram插件的“引擎盖下”发生了什么?请记住,ChatGPT的核心是一个“大型语言模型”(LLM),该模型从网络等进行训练,以从它给出的任何文本中生成“合理的延续”。但作为其培训的最后一部分,ChatGPT还被教导如何“保持对话”,以及何时“向别人询问某事”——其中“某人”可能是人类,或者就此而言,是一个插件。特别是,有人教导何时联系Wolfram插件。
Wolfram插件实际上有两个切入点:Wolfram|Alpha一个和Wolfram Language一个。从某种意义上说,Wolfram|Alpha一个是ChatGPT处理的“更容易”;Wolfram语言一个最终更强大。Wolfram|Alpha更容易的原因是,它作为输入的只是自然语言——这正是ChatGPT经常处理的。不仅如此,Wolfram|Alpha旨在宽恕,实际上是为了处理“典型的类似人类的输入”,或多或少,无论它可能很混乱。
另一方面,Wolfram语言的设置是精确和明确的,并且能够用于构建任意复杂的计算塔。在Wolfram|Alpha内部,它所做的是将自然语言翻译成精确的Wolfram语言。实际上,它正在捕捉“不精确的自然语言”并“将其”引入精确的Wolfram语言。
当ChatGPT调用Wolfram插件时,它通常只是将自然语言提供给Wolfram|Alpha。但到目前为止,ChatGPT已经学到了一些关于编写Wolfram语言本身的知识。最后,正如我们稍后将讨论的那样,这是一种更灵活、更强大的沟通方式。但除非Wolfram语言代码完全正确,否则它不起作用。把它弄到那个地步,部分是一个培训问题。但还有另一件事:给定一些候选代码,Wolfram插件可以运行它,如果结果明显错误(就像它们产生了很多错误一样),ChatGPT可以尝试修复它,并再次尝试运行它。(更详细地说,ChatGPT可以尝试生成要运行的测试,如果失败,可以更改代码。)
这里还有更多要开发的东西,但人们有时会多次看到ChatGPT来回走动。它可能正在重写其Wolfram|Alpha查询(例如通过取出无关的部分来简化它),或者它可能决定在Wolfram|Alpha和Wolfram语言之间切换,或者它可能正在重写其Wolfram语言代码。告诉它如何做这些事情是初始“插件提示”的问题。
写这个提示是一项奇怪的活动——也许是我们第一次尝试“与外星智能沟通”的严肃经历。当然,用大量的人工文本来训练“外星智能”是有帮助的。因此,例如,它懂英语(有点像所有那些老套的科幻外星人……)。我们可以告诉它,例如“如果用户输入是英语以外的语言,请翻译成英语并向Wolfram|Alpha发送适当的查询,然后以原始输入的语言提供您的回复。”
有时我们发现我们必须非常坚持(注意所有大写字母):“在编写Wolfram语言代码时,切勿对变量名使用蛇形大小写;始终对变量名使用骆驼大小写。”即使有这种坚持,ChatGPT有时仍然会做错事。“快速工程”的整个过程感觉有点像动物的争吵:你试图让ChatGPT做你想做的事,但很难知道需要什么才能做到这一点。
最终,这可能会在培训或提示中处理,但到目前为止,ChatGPT有时不知道Wolfram插件何时可以提供帮助。例如,ChatGPT猜测这应该是一个DNA序列,但(至少在本次会议中)不会立即认为Wolfram插件可以用它做任何事情:
不过,说“使用Wolfram”,它会将其发送到Wolfram插件,该插件确实可以很好地处理它:
(有时您可能还想具体说“使用Wolfram|Alpha”或“使用Wolfram语言”。特别是在Wolfram语言的情况下,您可能想看看它发送的实际代码,并告诉它不要使用它的名字,但实际上不存在的函数。)
当Wolfram插件被赋予Wolfram语言代码时,它所做的基本上只是评估该代码,并返回结果——也许作为图形或数学公式,或者只是文本。但是,当它被赋予Wolfram|Alpha输入时,这被发送到一个特殊的Wolfram|Alpha“用于LLM”API端点,结果作为旨在由ChatGPT“读取”的文本返回,并有效地用作进一步文本ChatGPT正在编写的额外提示。看看这个例子:
结果是一个很好的文本,其中包含所提问题的答案,以及ChatGPT决定包含的一些其他信息。但“内部”我们可以看到Wolfram插件(和Wolfram|Alpha“LLM端点”)实际上做了什么:
那里有很多额外的信息(包括一些漂亮的图片!)。但ChatGPT“决定”只是为了挑选一些内容包含在其回复中。
顺便说一下,需要强调的是,如果你想确定你得到了你认为你得到的东西,请始终检查ChatGPT实际发送到Wolfram插件的内容,以及插件返回的内容。我们用Wolfram插件添加的重要内容之一是“确定”ChatGPT输出的方法,并了解ChatGPT何时“使用其想象力”,以及何时提供确凿的事实。
有时,在试图了解发生了什么时,只需将Wolfram插件发送的内容输入为Wolfram|Alpha网站或Wolfram语言系统(如Wolfram云)的直接输入也很有用。
Wolfram语言作为人类-人工智能协作的语言
ChatGPT的伟大(坦率地说,出乎意料)的事情之一是它能够从粗略的描述开始,并从中产生精美的成品——如论文、信件、法律文件等。过去,人们可能会试图通过“手工”实现这一点,从“样板”件开始,然后修改它们,将它们“粘合”在一起等。但ChatGPT几乎使这个过程过时了。实际上,它“吸收”了大量样板,从它在网络上“阅读”的内容等——现在它通常在无缝地“适应”到您需要的东西方面做得很好。
那么代码呢?在传统的编程语言中,编写代码往往涉及大量的“样板工作”——在实践中,许多使用此类语言的程序员花大量时间通过从网络上复制大量代码来构建程序。但现在,突然间,ChatGPT似乎可以让很多事情变得过时。因为它基本上可以有效地自动组合任何类型的样板代码——只需一点“人工输入”。
当然,必须有一些人工输入——否则ChatGPT将不知道它应该编写什么程序。但是,人们可能会想知道,为什么代码中必须有“样板”?一个人不应该拥有一种语言——只是在语言本身的层面上——只需要少量的人类输入,而不需要任何“样板敷料”吗?
嗯,问题就在这里。传统编程语言的中心是告诉计算机用计算机的术语做什么:设置此变量,测试该条件等。但不一定是这样。相反,人们可以从另一端开始:用人们自然思考的东西,然后尝试以计算方式表示这些,并有效地自动化在计算机上实际实现它们的过程。
嗯,这就是我现在花了四十多年的时间。这是现在Wolfram语言的基础——我现在觉得称其为“全尺度计算语言”是合理的。这是什么意思?这意味着,在语言中,我们有我们在世界上谈论的抽象和真实事物的计算表示,无论是图形、图像或微分方程,还是城市、化学品、公司或电影。
为什么不从自然语言开始呢?好吧,正如Wolfram|Alpha的成功所证明的那样,这很有效。但是,一旦一个人试图指定一些更复杂的东西,自然语言(像“合法语言”)充其量就会变得笨重——一个人真的需要一种更结构化的方式来表达自己。
在数学中,历史上有一个很大的例子。早在大约500年前,几乎“表达数学”的唯一方法就是使用自然语言。但随后数学符号被发明,数学起飞了——随着代数、微积分以及最终所有各种数学科学的发展而起飞。
我对Wolfram语言的大目标是创建一个计算语言,可以对任何可以“计算表达”的东西做同样的事情。为了实现这一目标,我们需要构建一种既自动做很多事情,又本质上知道很多事情的语言。但结果是设置了一种语言,使人们可以方便地“以计算方式表达自己”,就像传统的数学符号让他们“以数学方式表达自己”一样。一个关键点是,与传统编程语言不同,Wolfram语言不仅供计算机阅读,也供人类阅读。换句话说,它旨在作为一种“传达计算想法”的结构化方式,不仅与计算机,而且与人类。
但现在,有了ChatGPT,这突然变得比以往任何时候都更加重要。因为——正如我们上面开始看到的——ChatGPT可以与Wolfram语言一起工作,从某种意义上说,只是使用自然语言来构建计算想法。至关重要的部分是,Wolfram语言可以直接代表我们想谈论的事情。但同样重要的是,它为我们提供了一种“知道我们拥有什么”的方法——因为我们可以现实地、经济地阅读ChatGPT生成的Wolfram语言代码。
整个事情开始与ChatGPT中的Wolfram插件很好地配合使用。这里有一个简单的例子,ChatGPT可以很容易地生成它所问到的Wolfram语言版本:
关键点是,“代码”是人们可以现实地期望阅读的东西(如果我写它,我会使用稍微紧凑的RomanNumeral函数):
这是另一个例子:
我可能写代码的方式有点不同,但这又是非常可读的东西:
此处省略一部分。。。。。。
如何参与其中
ChatGPT Wolfram是非常新的东西——确实是一种全新的技术。每当一种新技术到来时,它就会打开巨大的新机会。其中一些我们已经可以开始看到——但许多其他产品将在未来几周、几个月和几年内出现。
那么,你如何参与一个充满期待的快速技术和概念增长的时期呢?第一件事就是探索ChatGPT Wolfram。ChatGPT和Wolfram各自拥有自己的庞大系统;它们的组合需要数年时间才能完全垂直。但第一步只是了解什么是可能的。
查找示例。分享它们。尝试识别成功的使用模式。而且,最重要的是,尝试找到提供最高价值的工作流程。这些工作流程可能相当复杂。但它们也可能非常简单——一旦看到可以做什么,就会立即出现“啊哈”。
您如何最好地实现工作流程?好吧,我们正在努力为此制定最好的工作流程。在Wolfram语言中,我们正在设置灵活的方式来调用ChatGPT等内容,无论是纯粹的编程方式,还是在笔记本界面的上下文中。
但ChatGPT方面呢?Wolfram语言有一个非常开放的架构,用户可以添加或修改他们想要的任何东西。但你如何从ChatGPT使用这个?一件事就是告诉ChatGPT包含一些特定的“初始”Wolfram语言代码(可能与文档一起)——然后使用上述pidgin与ChatGPT讨论您在初始代码中定义的功能或其他内容。
我们计划构建越来越简化的工具,用于处理和共享Wolfram语言代码,以便通过ChatGPT使用。但已经有效的一种方法是提交函数以在Wolfram函数存储库中发布,然后在它们发布后,在与ChatGPT的对话中参考这些函数。
好的,但ChatGPT本身呢?您应该做什么样的及时工程才能最好地与Wolfram插件交互?嗯,我们还不知道。这是必须探索的东西——实际上是人工智能教育或人工智能心理学的练习。一个典型的方法是在ChatGPT会话的早期给出一些“预提示”,然后希望它以后“仍然关注”这些提示。(而且,是的,它的“注意力跨度”有限,所以有时事情必须重复。)
我们试图给出一个整体提示,告诉ChatGPT基本上如何使用Wolfram插件——随着我们了解更多以及ChatGPT LLM的更新,我们完全期望这个提示会迅速发展。但您可以添加自己的一般预提示,例如“使用Wolfram时,请始终尝试包含图片”或“使用SI单位”或“如果可能,请避免使用复数”。
您还可以尝试在ChatGPT中设置一个本质上“定义函数”的预提示——例如:“如果我给你一个由数字组成的输入,您将使用Wolfram绘制具有该边数的多边形”。或者,更直接地,“如果我给你一个由数字组成的输入,你要将以下Wolfram函数应用于该输入……”,然后给出一些明确的Wolfram语言代码。
但这些还很早,毫无疑问,会发现其他用于“编程”ChatGPT Wolfram的强大机制。我认为我们可以自信地期待,接下来的一段时间将是一个令人兴奋的高增长时期,那里有很多有价值的“低垂果实”供那些选择参与的人采摘。
一些背景和展望
即使在一周前,也不清楚ChatGPT Wolfram会是什么样子,或者它的工作效果如何。但这些现在发展如此之快的东西是建立在几十年早期发展的基础上的。在某些方面,ChatGPT Wolfram的到来最终将历史上对人工智能采取的两种主要方法结合起来——长期以来,这两种方法一直被视为不相干和不相容。
ChatGPT基本上是一个非常大的神经网络,经过训练以遵循在网络上看到的文本的“统计”模式等。神经网络的概念——其形式令人惊讶地接近ChatGPT中使用的概念——可以追溯到20世纪40年代。但在20世纪50年代的一些热情之后,兴趣减弱了。20世纪80年代初出现了复苏(事实上,我自己当时第一次看到了神经网络)。但直到2012年,人们才开始对神经网络可能发生的事情产生严重兴奋。现在,十年后——在一个成功甚至让相关人员大吃一的开发中——我们有了ChatGPT。
独立于神经网络的“统计”传统是人工智能的“象征性”传统。从某种意义上说,这个传统是数学(和数学逻辑)形式化过程的延伸,特别是在二十世纪初。但关键的是,它不仅与抽象的计算概念非常一致,而且与20世纪50年代开始出现的实际数字计算机非常一致。
在很长一段时间内,真正可以被认为是“人工智能”的成功充其量是参差不齐的。但与此同时,计算的一般概念显示出巨大且日益增长的成功。但是,“计算”与人们思考事物的方式有什么关系呢?对我来说,一个关键的发展是我在20世纪80年代初的想法(基于早期形式主义的数学逻辑),即符号表达式的变换规则可能是在相当于“人类”层面上表示计算的好方法。
当时,我的主要重点是数学和技术计算,但我很快就开始怀疑类似的想法是否适用于“通用人工智能”。我怀疑像神经网络这样的东西可能会发挥作用,但当时我只弄清楚了需要什么,而不是如何实现它。与此同时,符号表达式转换规则的核心思想成为现在Wolfram语言的基础,并使我们今天拥有的全面计算语言开发长达几十年的过程成为可能。
从20世纪60年代开始,人工智能研究人员一直在努力开发能够“理解自然语言”、“代表知识”并回答其问题的系统。所做的一些事情变成了不那么雄心勃勃但实际的应用。但总的来说,成功是难以捉摸的。与此同时,由于我在20世纪90年代所做的基础科学的哲学结论,我决定在2005年左右尝试建立一个通用的“计算知识引擎”,可以广泛回答自然语言中提出的事实和计算问题。这样的系统可以构建并不明显,但我们发现,通过我们的基础计算语言和大量工作,它可以。在2009年,我们能够发布Wolfram|Alpha。
从某种意义上说,使Wolfram|Alpha成为可能的是,它在内部有一种清晰、正式的方式来表示世界上的事物,并计算它们。对我们来说,“理解自然语言”不是抽象的东西;它是将自然语言翻译成结构化计算语言的具体过程。
另一部分是收集“了解”和“计算”世界所需的所有数据、方法、模型和算法。虽然我们已经大大自动化了这一点,但我们仍然总是发现,为了最终“把事情做好”,别无选择,只能让真正的人类专家参与进来。虽然在Wolfram|Alpha的自然语言理解系统中,人们可能认为有一点“统计人工智能”,但绝大多数Wolfram|Alpha和Wolfram语言以一种硬、象征性的方式运作,至少让人想起象征性人工智能的传统。(这并不是说Wolfram语言中的单个函数不使用机器学习和统计技术;近年来越来越多地使用,Wolfram语言还有一个用于进行机器学习的内置框架。)
正如我在其他地方所讨论的,似乎出现的是,“统计人工智能”,特别是神经网络,非常适合我们人类“快速完成”的任务,包括——正如我们从ChatGPT中学到的那样——自然语言和作为其背后的“思维”。但是,在构建更大的“概念”或计算“塔”时,需要符号和某种意义上的“更严格的计算”方法——这是在数学、精确科学以及现在所有“计算X”领域中发生的事情。
现在,ChatGPT Wolfram可以被认为是第一个真正的大规模统计 符号“AI”系统。在Wolfram|Alpha(成为Siri智能助理等事物的原始核心部分)中,首次有广泛的自然语言理解——“理解”与实际计算表示和计算直接相关。现在,13年后,我们在ChatGPT中看到,当从几乎整个网络等进行训练时,纯粹的“统计”神经网络技术可以在“统计上”生成“类似人类”的“有意义的语言”方面做得非常好。在ChatGPT Wolfram中,我们现在能够利用整个堆栈:从ChatGPT的纯“统计神经网络”,到Wolfram|Alpha的“计算锚定”自然语言理解,再到Wolfram语言的整个计算语言和计算知识。
当我们第一次构建Wolfram|Alpha时,我们认为也许为了获得有用的结果,我们别无选择,只能与用户进行对话。但我们发现,如果我们立即产生丰富的、“可视觉扫描”的结果,我们只需要一个简单的“假设”或“参数”交互——至少对于我们期望的用户寻求的信息和计算。(在Wolfram|Alpha笔记本版中,我们有一个强有力的例子,说明如何使用自然语言进行多步计算。)
早在2010年,我们不仅在尝试从自然语言生成典型Wolfram|Alpha查询的Wolfram语言代码,而且还在尝试生成“整个程序”。然而,在当时,如果没有现代法学硕士技术,这并没有走那么远。但我们发现,在Wolfram语言的符号结构背景下,即使有自然语言生成的代码的小片段也非常有用。事实上,例如,我使用Ctrl= Wolfram笔记本中的机制几乎每天无数次,例如从自然语言构建符号实体或数量。我们还不知道现代“支持LLM”的版本是什么,但它可能涉及我们上面讨论的丰富的人-AI“协作”,我们可以在ChatGPT Wolfram中首次开始行动。
我认为现在正在发生的事情是一个历史性的时刻。半个多世纪以来,我们可能称之为“AI”的统计和符号方法在很大程度上是分开发展的。但现在,在ChatGPT Wolfram中,他们正在聚集在一起。虽然我们才刚刚开始,但我认为我们可以合理地期待这种组合中的巨大力量——从某种意义上说, “类似AI的计算”的新范式,由于ChatGPT的到来,以及现在它与ChatGPT Wolfram中的Wolfram|Alpha和Wolfram语言的结合而成为可能。
上面为Stephen Wolfram原文的简单翻译,英文好的可以查看原文:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。