我们可以用 GPT 这种大语言模型做很多事情。
可以让它分析问题、写文章、写代码、等等。它有强大的理解能力和推理能力,能节省我们很多脑力。
但是,不管是让它分析问题还是提供内容,它输出的总是文本。除非我们想做的事情也只是输出文本,它没法直接代替我们完成具体的工作步骤。
我们不能让它直接处理数据然后保存结果 到数据库,不能让它自动下载产品文档发给客户,不能让它启动一个业务流程。即使马上推出的 GPT-4 支持文字、语音、图片、视频,似乎也不能改变这个现状。
但我们希望能让它干点什么,希望它能对接我们的各种业务应用软件、各种专业工具,给这些软件加入这种颠覆性的智能,提高生产力,降低成本。
我去年年底刚接触 ChatGPT 时,就对这个问题很感兴趣。因为我需要让我们的低代码开发平台(也是一个专业工具)和这种强大而且发展速度惊人的 AI 结合,降低软件开发的门槛。
因此,是积累了一些思路的。
接下来,我想举两个简单的小例子,解释其中一个思路。相信它们能激发你关于“如何将 GPT 融入你的专业工具或者行业应用”的灵感。
这个思路大体是这样的:在特定场景中,我们的应用软件能做的动作通常只有有限的几个或者十几个。我们可以把这些可选动作的用途告诉 GPT,让它在解决用户问题时,用这几个动作来完成。在它输出答案时,我们自己的软件对答案进行简单的文本处理,提取出其中的动作,相应地执行,再把结果反馈给 GPT 或者返回给用户。
必须说明的是,这个思路也是来自一个开源工具 LangChain 的启发。
假设我们有一个非常简单的画图工具,在一个画布上可以画圆也可以画矩形。我们要实现一个能力:用户直接用自然语言告诉它画什么,它就画什么。
我们可以构建出这样的提示词,给 GPT:
假设你能做下面这些动作,每个动作都有参数
画圆:画一个圆形,它有两个参数,分别是用坐标(x, y) 表示的位置,以及半径
画矩形:画一个矩形,它有三个参数,一个代表左上角的位置,用(x, y)表示,另外两个分别代表长和高
你用这些动作回答我的问题。格式如下:
1. 动作名称 参数1 参数2 参数3
2. 动作名称 参数1 参数2
3. 以此类推
例子如下:
1. 画圆 (0, 0) 3
2. 画矩形 (5, 2) 8 6
然后我们可以叫它“画一个半径为 2 的圆”,或者“先画一个半径为 3 的圆,再在它右边距离为 5 的地方画一个长为 10、宽为 5 的矩形”。
让我们看看会发生什么。
下图的对话框,是我们接入 OpenAI 的 gpt-3.5-turbo 模型得到的对话结果:
几乎完美。
在画图工具中,我们只要提供一个输入框,让用户输入问题。
用户输入问题后,画图工具把问题整合成上面这种完整提示语,发给 GPT。 GPT 返回具体的动作指令。
然后,通过简单的文本解析,画图工具就能提取出这些指令,直接把图画出来,呈现给用户。
在用户看来:我用自然语言告诉这个画图工具画什么,它就真的画出什么来。
所以,我们并不需要做任何的模型训练,不需要 fine-tuning,只要在提示词上面做文章,就可以把 GPT 这种“通用”的人工智能,用在我们的专业工具上。
我们知道 ChatGPT 使用的是截止到 2021 年底的数据,它回答我们问题时,不能使用最新的数据。
即便我们使用其他预训练好的大语言模型,情况也大体会是类似的。
如果我们希望它能够结合最新的新闻内容、或者我们企业的一些相关信息来回答问题,我们可以用跟上面的例子类似的方式来集成它。
假设我们有两个 API 可用,一个用来查询企业的信息,另一个是通用的搜索引擎。当用户问起企业信息时,我们希望 GPT 在回答问题前,能先去我们提供的内容里查一下;当问到它不知道的信息时,能先去搜索引擎里搜一下。
我们这样组织提示语(企业是以群蜂社为例):
假设你有下面这些工具。
群蜂社API:用来查询关于群蜂社的信息和事件,输入是问题里的中心词、关键词
搜索API:用来查询任何事件,输入是一个搜索引擎常用的关键字
已知信息:无
当我问你问题时,你可以使用上面的某个工具,优先级从上到下,也可以使用已知信息。
如果你知道答案,就直接告诉我,回答的格式是这样:
答案:说出你的答案(不要指出答案是来自已知信息)
如果你觉得可以使用上面的某个工具,就告诉我工具名称和输入内容,回答格式是这样的:
动作:工具名称
输入:参数1 参数2...
我们可以问它“群蜂社最近推出了几个项目”,这个信息肯定不在它自己的数据里。
看他会怎么回答。
我们也可以问他 2022 年卡塔尔世界杯冠军是谁。因为它没有 2022 年底的新闻数据,它是不知道的。
作为整合程序,当我们从 GPT 中得到这些回答后,通过简单文本分析,就可以知道接下来的动作是什么。执行对应的动作,再把结果返回给用户,或者作为已知信息传回给 GPT,让它再回答一次。
流程大概这样:
假设我们搜索“2022年世界杯+冠军”得到的结果是:2022年 12 月 17 日,梅西率领阿根廷队击败法国队,获得了卡塔尔世界杯的冠军....
那么我们传回给 GPT 的提示词,跟原来的版本就有两处不同:1. 移除了之前已经使用过了的可选动作;2. 加入前面的结果作为已知信息。
的确可行。
虽然这两个例子并没有使用具体哪个行业应用或 者专业工具,但显而易见的是,我们可以使用类似的框架,把 GPT 这种“通用”的人工智能融入到我们的业务流程中,大幅提升自动化的程度。
这意味着,我们要把业务系统的各种功能,拆分打包成 API:有些是用于查询信息反馈给 GPT,有些是则是直接执行动作、触发后面的流程。通过上面这种框架把这些 API 与GPT 整合在一起,客户在使用业务系统时,就可以用自然语言触发相应的服务。
对于大部分企业来说,这也进一步加剧了数字化转型的紧迫性。因为只有经过了数字化转型,企业才能最大限度地利用接下来我们不知道会发展到什么惊人程度的人工智能。
话说回来,把 GPT 融入业务应用,可以说是大材小用。因为我们这样做,是把“通用”的人工智能弱化成了“专用”的人工智能。
但颠覆性在于:有了这种“通用”的人工智能,我们要得到一个专用人工智能的成本就变得非常非常低了。
不得不说,这真的是人工智能的普惠时代。
如果上面这两个例子启发了你对 GPT 应用的思考,欢迎与我交流(关注公众号后点击联系我们)。
我们公众号封装了 gpt-3.5-turbo 模型的 API,也欢迎你前来体验。