GPT 模型不仅仅能够对话:如何让它们为您煮咖啡 ☕

ChatGPT中文站

想象一下拥有一款 GPT 模型,它不仅能够生成惊人的自然语言,还能与您自己的数据源、API 或操作进行交互。这岂不是很酷?您可以要求它做任何您想做的事情,从预订航班到订购比萨到玩游戏。好了,你不用再想象了,因为在本文中,我将向你展示我是如何使用基于意图分类和规则系统的简单而强大的方法来实现这一功能的。

ChatGPT中文站

意图分类 ?

意图分类是从自然语言输入中找出用户想要实现或完成的任务的任务。例如,如果用户说“你能为我做杯咖啡吗?”,意图可能是“做咖啡”。这样,我们可以将用户的输入映射到我们想要让GPT模型执行的特定操作或功能。

为此,我使用了我在以前的文章中写过的Ada模型。Ada模型是一种返回文本嵌入的模型,它是文本含义的数值表示。嵌入捕捉了文本的语义和句法特征,例如词语、短语和上下文。

通过使用简单的公式,我们可以找到在一组预先定义的类别中,最相关的嵌入,从而表明最有可能的意图。该公式基于欧几里得距离,它衡量两个向量在多维空间中的接近程度。距离越小,向量越相似。

例如,如果我们有三个类别:“冲一杯咖啡”、“泡一杯茶”和“做一个三明治”,并且我们对每个类别进行了嵌入,我们可以将用户输入的嵌入与每个类别的嵌入进行比较,并找到距离最小的那个。如果用户说“你能帮我泡一杯咖啡吗?”,他们输入的嵌入将更接近“冲一杯咖啡”的嵌入,而不是其他两个类别,因此我们可以推断他们的意图是“冲一杯咖啡”。

一个如何找到意图的示例是通过将意图分类为动作。例如,如果您有一个“制作咖啡”的动作,您可以将其定义为一个类别,其中包括用户提供的提示和执行功能:

Make a coffee => (User Provided Prompt = “Can you make me a coffee?”) => MakeACoffee()

然而为了提高系统的准确性和灵活性,我们不只是为每个操作定义一个类别,还有更多不同的表达意图的方式。例如:

Make me a coffee => (User Provided Prompt = “Can you make me a coffee?”) => MakeACoffee()
Bring me a coffee => (User Provided Prompt = “Can you bring me a coffee?”) => MakeACoffee()
Buy me a coffee => (User Provided Prompt = “Can you buy me a coffee?”) => MakeACoffee()

正如你所看到的,所有这些类别都将触发相同的函数:MakeACoffee()。

基于规则的系统 ?

基于规则的系统与其他聊天机器人系统类似,但我们的系统将非常动态和强大,并从始至终使用人工智能。其概念是将类别列表作为键,对象作为值:


const intents = {
categories: {
‘Make a coffee’: MakeACoffee,
‘Make me a coffee’: MakeACoffee,
‘Bring me a coffee’: MakeACoffee,
‘Buy me a coffee’: MakeACoffee
},
};

每个对象都有一个动作,可以是 API 调用或其他操作,如果是 API 调用,则有一个调用的 URL,以及一个处理调用结果的响应函数。例如:


const MakeACoffee = {
action: “API_CALL”,
url: “http://localhost:3000/makeACoffee”,
response : (response) => ‘Your coffee is here!’
};

一个函数可以发起一个Fetch请求并返回响应。您可以自定义响应内容。

现在无论何时你让我做,让我来一杯咖啡,你的结果就是你的咖啡已经到了。

但是如果你有跟进问题或选项呢?你会如何处理?

例如,当您请求系统制作咖啡时,您可能想处理使用哪种咖啡的情况。为此,我们将采用递归方法。

每个对象还可以拥有一个ask函数来生成后续问题,以及一个categories对象来定义用户的可选选项。例如:


const MakeACoffee = {
action: “API_CALL”,
url: “http://localhost:3000/getCoffeeList",
ask : (coffees) => `What kind of coffee would you like ${coffees.map((coffee) => coffee.name)}?`,
categories : {
‘Mocha’ : MochaCoffee,
‘Karak’ : KarakCoffee,
‘Espresso’ : EspressoCoffee,
}
};

现在采用这种方法,我们将在响应中得到一份咖啡列表,还有一个跟进问题和另外一个对象来处理用户的选择。


const MochaCoffee = {
action: “API_CALL”,
url: “http://localhost:3000/MakeMochaCoffee”,
response : (response) => ‘Your mocha coffee is here!’
};

就是这样!您已成功将您的GPT模型与您自己的数据源和操作集成。现在您可以一边享受咖啡,一边与您的AI朋友聊天。☕

幕后花絮 ?️‍♂️

现在让我们看一下这个应用程序的幕后工作。我向您展示了配置,但让我们看一下内部机制。

本文的第二部分在这里:GPT模型不仅能说话:如何让它们为您煮咖啡☕

2023-10-20 16:52:50 AI中文站翻译自原文