【函数调用:OpenAI新功能的实际使用示例】
OpenAI近期刚刚推出了一项功能,名为函数调用,它无疑改变了整个游戏的规则!自从OpenAI发布他们的API以来,这是最为重要且具有里程碑意义的更新。接下来,让我用一个简单的例子向你们展示一下这个新功能的强大之处。
大家可能都了解,OpenAI的模型数据是提前训练好的,并不能实时获取外部信息。举个例子,当我们试图询问GPT-3当前的时间时,它是无法提供准确答案的,就如图二所示。
然而,今天,我们将利用OpenAI最新开放的函数调用功能,实现一个获取当前用户所在地区时间的函数,然后将这个函数提供给GPT-3.5调用。这个过程将如图三所示进行。
首先,我们需要定义一个名为getCurrentTime的函数。然后,我们需要为这个函数提供名称(name)、描述(description)以及参数(parameters)。这里需要注意的一点是,函数描述需要尽可能清晰,这样GPT-3.5才能准确地理解这个函数的用途。另外一个值得一提的重点是,函数的调用并不是由我们开发者决定的,而是由GPT模型自己决定是否需要调用!
然后,我们将询问的问题和要提供给GPT使用的函数,一并通过OpenAI提供的SDK方法,传给GPT-3.5,等待它的回答。
回答结果将如图四所示。我们可以看到finish_reason这个字段,由之前(OpenAI没有开放函数功能的时候)的stop变成了function_call,这说明GPT需要调用我们提供的函数。我们可以从choices字段中的message中提取出GPT想要调用的函数名称以及参数。
接着,如图五所示,我们将GPT要调用的函数名和参数取出来,然后使用globals传入函数名进行函数执行。最后,我们将执行结果和之前的消息(包括我们向GPT-3.5提供的消息,以及GPT-3.5在需要调用函数时返回给我们的消息)一并通过OpenAI的SDK方法交给GPT-3.5。
经过这一系列的操作后,GPT-3.5成功地回答了我们的问题,告诉我们当前准确的时间。这个例子充分展示了OpenAI函数调用功能的强大之处:它不仅为模型提供了实时获取外部信息的能力,而且还大大扩展了模型的用途范围。
source