Function Calling(材料)
按 2023-06-13 公告转述:函数描述、JSON 参数与 16k 窗口。
本页转述 2023-06-13 公告当时公开说了什么,不以后来的 tools 参数改名、并行工具调用回填。
主要出处:OpenAI,2023-06-13,Function calling and other API updates。本页不复制公告全文。
接口主张
开发者可以把函数描述交给 gpt-4-0613 和 gpt-3.5-turbo-0613,由模型决定是否输出一个含参数的 JSON 对象。公告把这写成更可靠地把 GPT 接到外部工具和 API 的方式。这两只快照被微调成两件事:根据用户输入判断要不要调用;以及输出符合函数签名的 JSON。
Chat Completions(/v1/chat/completions)新增参数:
functions: 用 JSON Schema 描述一组函数(名称、参数形状)。function_call: 可选;让模型自动决定,或强制调用某一个。
模型并不在 OpenAI 一侧执行函数。开发者在自己的代码里跑完,把结果作为后续消息送回去,再生成给人看的回复。公告举例包括:用外部工具回答问题、把自然语言转成 API 或数据库查询、从文本抽出结构化数据。
同日还发布 gpt-3.5-turbo-16k:上下文从约 4k 拉到 16k。公告同时下调部分价格,并给出旧快照(gpt-3.5-turbo-0301、gpt-4-0314)的弃用时间表。
安全(公告自己写的)
工具返回的内容可能诱导模型做非预期动作。公告要求:只消费可信工具的信息;对有真实世界后果的动作(发邮件、上网发帖、下单等)加人确认。这与三个月前插件公告是同一类问题。
当时不是什么
这是模型层与 API 层能力。一次请求里「选不选函数、参数是什么」可以被可靠解析,不等于系统已经在环境里多步循环。循环、重试、停机策略仍由调用方自己写。