【OpenAI】ChatGPT函数调用(Function Calling)实践 | 京东云技术团队

OpenAI在6月13日为ChatCompletionsAPI添加了函数调用能力,使得开发者能通过GPT模型实现与外部工具或数据库的交互。文章通过低代码场景展示了如何使用这个新功能进行结构化数据查询和页面搭建,强调了其灵活性和扩展性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6月13日OpenAI在Chat Completions API中添加了新的函数调用(Function Calling)能力,帮助开发者通过API方式实现类似于ChatGPT插件的数据交互能力。

本文在作者上一篇文章《私有框架代码生成实践》的基础上,依旧使用自然语言低代码搭建场景作为案例,将嵌入向量搜索(Embedding)获取私有知识库的方式,替换为函数调用方式,以我们更熟悉的结构化数据结构、关系型数据库的方式进行知识库管理。同时函数调用能力的灵活性和可扩展性,也可以帮助用户使用自然语言搭建更加复杂的页面内容、进行更丰富的交互操作。

一、 什么是函数调用

函数调用(Function Calling)是OpenAI在6月13日发布的新能力。根据官方博客描述,函数调用能力可以让模型输出一个请求调用函数的消息,其中包含所需调用的函数信息、以及调用函数时所携带的参数信息。这是一种将GPT能力与外部工具/API连接起来的新方式。

支持函数调用的新模型,可以根据用户的输入自行判断何时需要调用哪些函数,并且可以根据目标函数的描述生成符合要求的请求参数。

开发人员可以使用函数调用能力,通过GPT实现:

  • 在进行自然语言交流时,通过调用外部工具回答问题(类似于ChatGPT插件);
  • 将自然语言转换为调用API时使用的参数,或者查询数据库时使用的条件;
  • 从文本中提取结构化数据。等

二、 如何使用函数调用

函数调用能力可以通过聊天API(Chat Completion)使用。为了实现函数调用能力,OpenAI对聊天API进行了修改,增加了新的请求参数、响应类型以及消息角色,应用开发者需要:

  1. 在请求参数中向聊天API传递信息,描述应用所提供的可调用函数的信息。
  2. 解析聊天API响应的消息类型,若模型决定需要调用函数,则根据模型返回的函数信息和函数传参调用函数,并获得返回结果。
  3. 将函数返回的结果添加到消息列表中,并再次调用聊天API。

1. 添加请求参数, 描述所支持的函数信息

聊天API中新增了两个请求体参数:

functions

当前应用可调用的函数的列表。函数信息中包含了函数的名称、自然语言描述、以及函数所支持传入的参数信息。

functions参数的格式如下:

openai.createChatCompletion({
  model: "gpt-3.5-turbo-0613",
  messages: [
    // ...
  ],
  functions: [
    {
      name: 'function_name',
      description: '该函数所具备能力的自然语言描述',
      parameters: {
        type: 'object',
        properties: {
          argument_name: {
            type: 'string',
            description: '该参数的自然语言描述'
          },
          // ...
        },
        required: ['argument_name']
      }
    },
    // ...
  ]
})

functions参数支持以数组形式录入多组函数信息,其中:

  • name:函数名称。后续模型会在需要调用函数时返回此名称。

  • description:函数功能描述。模型通过该描述理解函数能力,并判断是否需要调用该函数。

  • parameters.properties:函数所需的参数。以对象的形式描述函数所需的参数,其中对象的key即为参数名。

    • type:参数类型。支持JSON Schema协议。
    • description:参数描述。
  • required:必填参数的参数名列表。

function_call

控制模型应该如何响应函数调换。支持几种输入:

  1. "none":模型不调用函数,直接返回内容。没有提供可调用函数时的默认值。
  2. "auto":模型根据用户输入自行决定是否调用函数以及调用哪个函数。提供可调用函数时的默认值。
  3. {"name": "function_name"}:强制模型调用指定的函数。

2. 识别响应参数, 描述需要调用的函数信息

聊天API在响应内容的可选项(choices)中提供了两个响应参数:

finish_reason

响应内容结束的原因。

可能的原因包括:

  • stop:已返回完整消息。
  • length:已达到令牌限制或由max_tokens参数设置的上限。
  • functi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值