菜单

基本函数调用模式

相关源文件

本文档涵盖了使用 OpenAI 的函数调用功能与聊天补全 API 的基本模式。函数调用使语言模型能够为外部工具和 API 生成结构化参数,将其功能扩展到文本生成之外。

涵盖的模式包括函数规范定义、工具选择控制、并行函数调用以及完整的执行工作流。有关包括知识检索和外部系统集成在内的进阶函数调用模式,请参阅 用于知识检索的函数调用GPT 操作和外部系统集成

核心函数调用架构

函数调用系统通过结构化的请求-响应周期运行,模型分析用户输入与可用工具规范,并生成相应的函数调用。

函数调用请求流程

来源:examples/How_to_call_functions_with_chat_models.ipynb96-109

工具规范结构

函数规范遵循标准化的 JSON schema 格式,定义了模型的函数接口。

来源:examples/How_to_call_functions_with_chat_models.ipynb168-217

基本函数示例

天气 API 函数

Cookbook 演示了使用两个天气相关函数进行函数调用,这些函数展示了不同的参数模式和要求。

函数名称参数目的
get_current_weatherlocation, format检索当前天气状况
get_n_day_weather_forecastlocation, format, num_days获取多日天气预报

天气函数定义

来源:examples/How_to_call_functions_with_chat_models.ipynb168-217

数据库查询函数

数据库示例演示了针对 SQLite 数据库的 SQL 查询生成和执行的函数调用。

来源:examples/How_to_call_functions_with_chat_models.ipynb696-719 examples/How_to_call_functions_with_chat_models.ipynb745-752

工具选择控制模式

tool_choice 参数提供了对函数选择行为的精确控制。

工具选择选项

工具选择值行为用例
"auto" (默认)模型决定何时使用函数自然对话流程
"none"强制不使用函数禁用所有函数调用
{"type": "function", "function": {"name": "func_name"}}强制指定函数保证函数执行

强制函数选择

来源:examples/How_to_call_functions_with_chat_models.ipynb427-435 examples/How_to_call_functions_with_chat_models.ipynb502-509

并行函数调用

gpt-4o 这样的现代模型支持在单个响应中同时调用多个函数。

并行执行模式

来源:examples/How_to_call_functions_with_chat_models.ipynb544-554

完整函数执行工作流

四步执行过程

完整的函数调用工作流涉及四个独立的步骤,以确保正确执行和响应处理。

来源:examples/How_to_call_functions_with_chat_models.ipynb759-766 examples/How_to_call_functions_with_chat_models.ipynb788-859

工具结果的消息结构

工具执行结果必须在对话历史中正确格式化

字段目的
role"tool"标识消息为工具结果
tool_call_id来自原始 tool_calls将结果链接到特定调用
名称函数名称标识哪个函数被执行
content函数返回值实际执行结果

来源:examples/How_to_call_functions_with_chat_models.ipynb840-845

实用函数和错误处理

核心实用函数

Cookbook 为函数调用工作流提供了必要的实用函数。

来源:examples/How_to_call_functions_with_chat_models.ipynb96-109 examples/How_to_call_functions_with_chat_models.ipynb124-142 examples/How_to_call_functions_with_chat_models.ipynb618-643

错误处理模式

chat_completion_request 函数实现了带有指数退避的重试逻辑,用于处理 API 故障。

  • 重试策略@retry(wait=wait_random_exponential(multiplier=1, max=40), stop=stop_after_attempt(3))
  • 异常处理:优雅的错误日志记录和响应
  • 数据库错误处理:捕获 SQL 执行错误并将其作为错误消息返回

来源:examples/How_to_call_functions_with_chat_models.ipynb96-109 examples/How_to_call_functions_with_chat_models.ipynb747-751

常见函数调用模式

Schema 集成模式

对于数据库和 API 集成,函数描述应包含相关的 schema 信息。

参数验证模式

函数规范应包含全面的验证规则。

  • 必需参数:在 required 数组中指定
  • 类型约束:字符串、整数、枚举类型
  • 格式规范:详细描述和示例
  • 枚举值:分类参数的受限选项

来源:examples/How_to_call_functions_with_chat_models.ipynb707-712 examples/How_to_call_functions_with_chat_models.ipynb183-184