目录
Function calling behavior (函数调用行为)
Parallel function calling (并行函数调用)
Example invoking multiple function calls in one response (多函数调用示例)
前言
此篇文章基于OpenAI 官方文档,用中文的方式为大家讲解 Function calling(函数调用),有需要的朋友可以收藏方便后续的学习和使用,此篇文章涵盖基础概念和实际用例,所以我打算分成2-3部分来讲解
Function calling 基本介绍
在一次API调用中,你可以描述函数,并让模型智能地选择输出包含调用一个或多个函数参数的JSON对象。Chat Completions API并不会调用函数,而是由模型生成JSON,你可以在代码中使用这些JSON来调用函数。
最新的模型(gpt-4o、gpt-4-turbo和gpt-3.5-turbo)已经被训练成可以根据输入来检测何时应该调用函数,并且能够生成更加符合函数签名的JSON。具备这一能力的同时也带来了潜在的风险,例如发送电子邮件、在线发布内容、进行购买等动作,所以在执行之前,最好得到用户相应授权。
注:本篇文章主使用Chat Completions API来进行函数调用。关于 Assistants API 中函数调用教程会在以后的播客中为大家更新。
Common use cases (常见用例)
函数调用可以让你更可靠地从模型中获取结构化数据。例如,你可以:
-
创建通过调用外部API回答问题的助手:
- 定义一些函数,例如
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)
。
- 定义一个名为
这些用例还有更多可能性!
函数调用的基本步骤如下:
- 使用用户的查询和在
functions
参数中定义的一组函数调用模型。 - 模型可以选择调用一个或多个函数;如果是这样,内容将是一个符合你自定义模式的字符串化JSON对象(注意:模型可能会生成虚构的参数)。
- 在代码中将字符串解析为JSON,并使用提供的参数(如果存在)调用你的函数。
- 通过将函数响应作为新消息附加,再次调用模型,让模型将结果总结返回给用户。