OpenAI发布了函数调用-又一个突破!
免责声明:个人必须熟悉其公司的数据保护和共享政策。此外,个人不应将任何与公司相关的数据上传到 ChatGPT 和 OpenAI API 的公开可访问版本中。
介绍
OpenAI的ChatGPT继续吸引着全世界的人,该公司刚刚推出了一系列令人印象深刻的更新。最新更新于昨天(6月13日)发布,带来了几个值得注意的增强功能,如可控的API模型、扩展的上下文能力、更实惠的API调用以及最令人激动人心的新功能——函数调用。这个令人兴奋的新功能为我们提供了一个强有力的工具,以进一步增强ChatGPT的潜力并塑造未来。
函数调用将使得系统可以利用ChatGPT的文本生成能力,同时也容易实现动作执行。
尽管函数调用API文档提供了坚实的基础,仍然有一些需要改进的地方。尽管如此,我昨晚开始了一次探索性的旅程,结果非常惊人,促使我在这篇博客文章中分享我的发现。
背景
ChatGPT/ ChatGPT API在生成文本和对话互动方面非常出色。然而,它不能提供实时信息。例如,如果您要查询费城的天气情况,ChatGPT将无法提供答案。此外,它缺乏执行任何操作或获取实时信息的能力。
为了构建这样的系统,以前你需要使用 ChatGPT API,以及一些自定义的解析器或使用 Langchain 或 Semantic Kernel 等框架。
随着函数调用API的引入,现在可通过ChatGPT API提供的功能轻松获得。
介绍函数调用
功能调用过程涉及提供一组可用的操作,供您的系统可能支持的ChatGPT API根据给定的提示来识别需要调用的操作。例如,如果您正在开发具有NLP功能的家庭自动化系统,支持类似于TurnOnLight(param:room)和TurnOffLight(param:room)的功能,用户可以输入像“关闭主卧室灯光”之类的命令到ChatGPT API。作为响应,ChatGPT API将返回一个完全可调用的函数调用,具有正确的签名和您的系统可以理解的所需参数,例如对上述提示的响应可能会导致以下结果:TurnOffLights(“MasterBedroom”)。
特别令人印象深刻的是,此功能包括类型检查、强制字段验证等,可以让您利用所获得的结果调用适当的函数或API调用。本质上,它将非结构化数据转换为结构化数据,真正具有划时代意义!
通过链接这些调用和函数调用,您可以快速构建一个高度复杂和智能的系统。
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo-0613",
messages=[{"role": "user", "content": prompt}],
functions=[
{
"name": "TurnOnLights",
"description": "Turn On the lights",
"parameters": {
"type": "object",
"properties": {
"room": {
"type": "string",
"description": "The room",
},
},
"required": ["room"],
},
},
{
"name": "TurnOffLights",
"description": "Turn Off the lights",
"parameters": {
"type": "object",
"properties": {
"room": {
"type": "string",
"description": "The room",
},
},
"required": ["room"],
},
}
],
function_call="auto",
)
请务必查看我的简单/示例应用程序,展示其功能。这个特点的美在于它能够轻松地创建一系列这样的调用,使您能够构建各种相互连接的操作和功能。
结论
OpenAI 的函数调用能力的整合标志着又一个显着的进步,允许将智能融入现有和新应用程序中。它还促使我们重新定义与数字领域的交互。以结构化形式捕捉数据的传统方法将经历重大转变,向我们展示了一个值得我们负责任地拥抱和利用的有前途的变化。