ChatGPT的函数调用就像C3PO和R2-D2联手

干货分享9个月前更新 Youzhizhan
1,307 0


ChatGPT6月13日发布的函数调用函数开辟了自然语言的世界和现有编程语言的世界。虽然最终我认为整个世界将是自然语言的世界,但毕竟所有的计算机系统仍然是代码和Api的世界。从库存的角度来看,这是与现有系统兼容的最佳方式。

ChatGPT的函数调用就像C3PO和R2-D2联手

这件事让我想起了《星球大战》中一对可爱的机器人。金黄色的人形有点傻C3PO,精通礼仪和礼仪,会说各种语言;还有一个R2-D2,就是短而圆的那个。 它是一个Astromesh机器人,精通计算并与计算机系统通信,发出”哔哔哔”的声音。他们两人完美地合作:R2-D2负责工作和获取信息,C3PO负责翻译成人语言。这种伙伴关系就像ChatGPT和API之间的当前关系一样。

函数调用简单地说,就是将调用扩展到原来的ChatGPT API中的completions,从原来对消息的支持(message中可以指定system、person、assistant三个角色)也提供函数。ChatGPT将根据函数中每个函数描述的”字面”含义,通过简单的逻辑来判断用户的问题是否可以用这个函数回答。如果可能的话,从中间提取用户问题中可作为参数的部分,返回结构化的函数调用数据结构。

代码世界然后通过严格JSON格式定义的函数调用方法调用函数,然后将结果返回给ChatGPT。ChatGPT继续根据功能的结果回答用户的问题。

比如我自己的机器人的功能是这样写的:

capabilities = [
    {
        "name": "get_articles",
        "description": "Get List of articles",
        "parameters": {
                "type": "object",
                "properties": {
                    "start": {
                        "type": "integer",
                        "description": "The starting point of index of articles",
                    },
                    "end": {
                        "type": "integer",
                        "description": "The ending point of index of articles",
                    },
                },
            "required": [],
        },
    },
    {
        "title": "learn",
        "description": "Get worth from database",
        "parameters": {
                "kind": "object",
                "properties": {
                    "key": {
                        "kind": "string",
                        "description": "The important thing to retailer the worth ",
                    },
                },
            "required": ["key"],
        },
    },
    {
        "title": "save",
        "description": "Save worth to the database",
        "parameters": {
                "kind": "object",
                "properties": {
                    "key": {
                        "kind": "string",
                        "description": "The important thing to retailer the worth ",
                    },
                    "worth": {
                        "kind": "string",
                        "description": "The worth to retailer the worth ",
                    },
                },
            "required": ["key", "value"],
        },
    },
    {
        "title": "run_node",
        "description": "Run node.js code",
        "parameters": {
                "kind": "object",
                "properties": {
                    "code": {
                        "kind": "string",
                        "description": "The node.js code I need to use to guage",
                    },
                },
            "required": ["code"],
        },
    }
]

这些功能包括获取以前文章的功能、保存和阅读的一般功能以及执行节点。Js代码的功能。

如果我问:

Person: 最近的5篇文章是什么?

ChatGPT会回答:

Perform: {'title': 'get_articles', 'arguments': '{n "begin": 0,n "finish": 5n}'}fda

它已准备好所有参数。这在GPT-3中是一个非常成熟的功能,但以这种方式更稳定和可控。

如果你问:

ChatGPT将使用Node进行所有操作。Js代码能回答的问题全部转化为Node。js调用:

Perform: {'title': 'run_node', 'arguments': '{n "code": "new Date().toLocaleTimeString()"n}'}

这些问题包括时间,算术等等。我们可以把节点。Js系统的世界与ChatGPT的自然语言的世界相连。(但是,必须注意的是,这个例子中的安全风险没有太平洋那么大。如果他被要求返回系统信息并删除一些文件,它会很高兴地这样做,并且它可以真正做到这一点。)

接下来,应该有很多有趣的应用程序基于这个连接器。虽然这可以通过使用LangChain或之前自己直接编写代码来实现。但很多事情都是,如果在最简单的地方更简单,效果比在最复杂的地方简化得多更大。

在函数调用的支持下,ChatGPT API中的角色参数也从三个扩展到四个。:

  • 系统
  • 助理
  • 用户
  • 功能

这四种类型恰恰对应于自然界的四种事物:系统相当于上帝或自然(机器人就是这样创造的,它们的角色就像是上帝设定的);助理是为用户服务的机器人;用户是与机器人互动的人类;功能代表世界,是用户和机器人以外的第三方。机器通过函数从中获取信息,也通过函数改变其状态。

C3po和R2-D2的这种合作,可以看做ChatGPT具有调用物理世界的能力,也可以看做所有计算机功能接口都具有人类语言的能力。

[ad]
© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...