什么是 Function Calling - 让 ChatGPT 拥有了结构化数据的外界交互能力
function calling 是 OpenAI 在其 Chat Completions API 中提供的一项新功能,它可以让开发者使用 JSON Schema 来描述函数,并且让模型根据用户的输入(Prompt)来判断是否需要调用这些函数以及调用哪个函数,并且返回一个符合函数签名的 JSON 对象。
function calling 的流程可以分为三个主要步骤:
-
调用 OpenAI API 时,提供函数列表和用户输入(Prompt)模型会解析用户输入(Prompt)来决定最终调用哪个函数,并且确定调用提供的函数所需的正确参数。
-
使用 OpenAi 模型返回的 JSON 对象来调用相应的函数。
-
将函数返回的结果再次发送给模型,让模型对结果进行总结或格式化,以便人类理解。
Function Calling 的优点和场景
○ function calling 可以让开发者更可靠地从模型中获取结构化的数据,而不是仅仅获取一段文本。这样可以方便地将模型的输出与外部的工具或 API 连接起来,实现更复杂的功能。
○ function calling 可以让开发者更灵活地控制模型的行为,通过提供不同的函数来实现不同的功能。例如,可以提供一个 send_email (to: string, body: string) 的函数来让模型发送邮件,或者提供一个 sql_query (query: string) 的函数来让模型执行数据库查询。
○ function calling 可以让开发者更简单地编写提示(prompts),通过提供一些指令或示例来让模型完成一个任务,而不需要编写复杂的逻辑或规则。例如,可以提供一个 extract_people_data (people: [ {name: string, birthday: string, location: string}]) 的函数来让模型从一篇维基百科文章中提取所有人物的信息。