Function Calling 是一种让 AI 模型能够访问特定功能的技术。在 OpenAI 的 ChatGPT 中,通过描述函数并让模型生成符合要求的 JSON 格式参数,实现与外部工具和 API 的连接。这种方法具有以下优点:
具体流程如下:
此外,OpenAI 官方提示工程指南中也提到了使用外部工具的策略,包括在请求中传递函数描述列表,使模型根据预定义函数生成参数,并通过 API 返回。函数调用的结果可再次输入模型,形成闭环。
想了解更多关于 Function Calling 的信息,可参考 OpenAI 官网的相关文档和示例。
可以发现为了让ChatGPT返回符合要求的JSON格式,prompt的定制就尤为重要和复杂。好消息是,在当地时间6月13日,OpenAI发布函数调用及其他API更新。现在开发人员可以向gpt-4-0613和gpt-3.5-turbo-0613描述函数,并让模型智能地选择输出一个包含调用这些函数所需参数的JSON对象。这是一种更可靠地将GPT的能力与外部工具和API连接起来的新方法。传送门:[Function calling and other API updates](https://openai.com/blog/function-calling-and-other-api-updates)官网有很详细的例子,这里就不再描述代码了。我用本文案例总结大致流程:有个好处是不需要让ChatGPT生成SQL了,减少SQL注入的风险。本地写一个函数执行this.app.mysql.select(table,condition),根据GPT返回的函数名、参数(字段和where)来查询数据,更为安全。但这个方法又有局限性,事先定义函数查询不如SQL查询来的灵活,所以这里也可以让函数改为SQL查询this.app.mysql.query(sql),GPT的函数调用改为:getSqlQuery(sql:string),函数名getSqlQuery,参数:sql,更为灵活。总结:让GPT与函数调用结合,本地控制返回JSON格式,prompt的定制更为简单,AI的输出更为可控。根据实际业务需求采用函数查询或SQL查询,值得一试!
Chat Completions API允许在请求中传递函数的描述。这样,模型就可以生成符合这些描述的函数参数。这些参数以JSON格式由API返回,并可以用于执行函数调用。函数调用的结果可以再次输入到模型中,形成一个闭环。这是利用OpenAI模型来执行外部函数调用的推荐方法。想了解更多信息,请参阅我们的入门文本生成指南中的[函数调用部分](https://platform.openai.com/docs/guides/function-calling)和OpenAI Cookbook中的更多[函数调用示例](https://cookbook.openai.com/examples/how_to_call_functions_with_chat_models)。
Chat Completions API允许在请求中传递函数描述列表。这使模型可以根据预定义的函数来生成参数。由API返回的生成的函数参数可以用来执行函数调用。由函数调用提供的输出随后可以在下一个请求中反馈给模型,以完成整个流程。这是使用OpenAI模型调用外部函数的推荐方式。要了解更多信息,请参阅我们的介绍性文本生成指南中的“[函数调用部分](https://www.iaiuse.com/docs/guides/function-calling)”以及OpenAI Cookbook中的更多“[函数调用示例](https://cookbook.openai.com/examples/how_to_call_functions_with_chat_models)”。