OpenAI 函数调用示例及功能入门教程

 更新时间:2023年06月25日 09:50:05   作者:文质彬彬的煎饼  
这篇文章主要为大家介绍了OpenAI 函数调用示例及功能入门教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

我是AI小火箭的HB,我探索和写作人工智能和语言交叉点的所有事物,范围从LLM,聊天机器人,语音机器人,开发框架,以数据为中心的潜在空间等。

范例

初步体验

OpenAI新增了“函数调用”功能,这是什么呢?

我们先调用API来体验下。

下面是发送到模型的 JSON 文档。此调用的目的是生成一个 JSON 文件,该文件可用于发送到发送电子邮件的 API。
您可以看到函数名称为 send_email,并定义了三个参数, to_address , subject 和 body ,即电子邮件正文。
用户请求为:Send Cobus from humanfirst ai an email asking for the monthly report?

curl --location 'https://api.openai.com/v1/chat/completions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer sk-xxxx' \
--data '{
  "model": "gpt-3.5-turbo-0613",
  "messages": [
    {"role": "user", "content": "Send Cobus from humanfirst ai an email asking for the monthly report?"}
  ],
  "functions": [
    {
      "name": "send_email",
      "description": "Please send an email.",
      "parameters": {
        "type": "object",
        "properties": {
          "to_address": {
            "type": "string",
            "description": "To address for email"
          },          
          "subject": {
            "type": "string",
            "description": "subject of the email"
          },
          "body": {
            "type": "string",
            "description": "Body of the email"
          }
        }
      }
    }
  ]
}'

下面是返回的 JSON

{
    "id": "chatcmpl-7TQuwzJpQAY470saQM2RPfxwF6DDE",
    "object": "chat.completion",
    "created": 1687249338,
    "model": "gpt-3.5-turbo-0613",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": null,
                "function_call": {
                    "name": "send_email",
                    "arguments": "{\n  \"to_address\": \"cobus@humanfirst.ai\",\n  \"subject\": \"Request for Monthly Report\",\n  \"body\": \"Hi Cobus,\\n\\nI hope you're doing well. Could you please share the monthly report with me? It would be great to have it before the end of the week.\\n\\nThanks,\\n[Your Name]\"\n}"
                }
            },
            "finish_reason": "function_call"
        }
    ],
    "usage": {
        "prompt_tokens": 86,
        "completion_tokens": 82,
        "total_tokens": 168
    }
}

GPT模型会返回需要调用的函数名 send_email和对应的参数(放在arguments字段)。

{
  "to_address": "cobus@humanfirst.ai",
  "subject": "Request for Monthly Report",
  "body": "Hi Cobus,\n\nI hope you're doing well. Could you please share the monthly report with me? It would be great to have it before the end of the week.\n\nThanks,\n[Your Name]"
}

这就非常有用,第三方的应用可以提供多个函数/服务(类似插件),GPT模型可以根据用户的指令自动选择不同的函数/服务。

现在再来看示例,就比较清晰了。

用途

根据官网文档,函数调用允许您更可靠地从模型中获取结构化数据。例如,您可以:

创建聊天机器人,通过调用外部 API 来回答问题(例如 ChatGPT 插件)

例如,定义像 send_email(to: string, body: string) 或 get_current_weather(location: string, unit: 'celsius' | 'fahrenheit') 这样的函数

将自然语言转换为 API 调用

例如,将“谁是我的顶级客户?”转换为 get_customers(min_revenue: int, created_before: string, limit: int) 并调用您的内部 API

从文本中提取结构化数据

例如,定义一个名为 extract_data(name: string, birthday: string) 或 sql_query(query: string) 的函数

函数调用的基本步骤顺序如下:

使用用户查询和函数参数中定义的一组函数调用模型。

模型可以选择调用函数;如果是这样,内容将是符合自定义架构的字符串化 JSON 对象(注意:模型可能会生成无效的 JSON 或幻觉参数)。

在代码中将字符串解析为 JSON,并使用提供的参数调用函数(如果存在)。

通过将函数响应追加为新消息来再次调用模型,并让模型将结果汇总回给用户。

AI小火箭已经支持函数调用和gpt-3.5-turbo-16k、gpt-3.5-turbo-0613、gpt-3.5-turbo-16k-0613,大家可以去体验下。

以上就是OpenAI 函数调用示例及功能入门教程的详细内容,更多关于OpenAI 函数调用的资料请关注脚本之家其它相关文章!

相关文章

  • 解决Fiddler在win7系统下的安全证书问题

    解决Fiddler在win7系统下的安全证书问题

    今天小编就为大家分享一篇关于解决Fiddler在win7系统下的安全证书问题,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • IE 浏览器安全级别详情及区别小结

    IE 浏览器安全级别详情及区别小结

    排查问题时,定位到可能和当前浏览器的安全级别设置有关,顺便整理了下Windows 7下IE9安全级别的详情内容,及各安全级别下的默认设置差异
    2016-01-01
  • markdown简介和语法介绍

    markdown简介和语法介绍

    这篇文章主要介绍了markdown简介和语法介绍,本文重点介绍了常用的一些markdown语法,可以做为一个简明版的入门指南,另本文还提供了一个在线学习markdown的简明教程,需要的朋友可以参考下
    2014-07-07
  • 在VSCode中如何配置Python开发环境

    在VSCode中如何配置Python开发环境

    VScode是一个相当优秀的IDE,具备开源、跨平台、模块化、插件丰富、启动时间快、颜值高、可高度定制等等优秀的特质,所以用VScode来编写Python,也是相当的好用的。所以,今天我们就来讲讲,怎么在VScode上配置Python开发环境。
    2020-01-01
  • 使用cache加快编译速度的命令详解

    使用cache加快编译速度的命令详解

    这篇文章主要介绍了使用cache加快编译速度的方法,主要讲解在Ubuntu 安装ccache,使用libzmq测试ccache的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Geohash的原理、算法和具体应用探究

    Geohash的原理、算法和具体应用探究

    这篇文章主要介绍了Geohash的原理、算法和具体应用探究,Geohash可以实现当前手机应用中的查找附近的人功能,需要的朋友可以参考下
    2014-07-07
  • 一个批量编码转换及ASP/JS加解密/简繁转换的工具

    一个批量编码转换及ASP/JS加解密/简繁转换的工具

    一个批量编码转换及ASP/JS加解密/简繁转换的工具...
    2007-05-05
  • vscode怎么编译运行

    vscode怎么编译运行

    本文给大家分享的是vscode怎么一键编译运行的方法,非常的简单实用,有需要的小伙伴可以参考下
    2020-02-02
  • 五步完成unity与微信(游戏)小程序交互创建视频

    五步完成unity与微信(游戏)小程序交互创建视频

    这篇文章主要介绍了unity与微信(游戏)小程序交互创建视频的步骤,非常简单,只需要五步就可完成,有需要的朋友可以借鉴参考下,希望可以有所帮助
    2021-09-09
  • idea+git合并分支解决冲突及详解步骤

    idea+git合并分支解决冲突及详解步骤

    这篇文章主要介绍了idea+git合并分支解决冲突及详解步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07

最新评论