分享AI实践与思考
入门
上手
教程
基础
概念解释
Microsoft Foundry
开发工具
操作指南
参考
治理与网络
工具与知识
概念解释
操作指南
Agent Service
总览
概念解释
Azure OpenAI
API 与开发
总览
Azure AI Search
权限与安全
参考
检索概念
概念解释
快速上手
教程
Foundry Tools
其他与已退役
总览
概念解释
RAG 与知识工程
智能体与工具
MCP 与 Skills
操作指南
基础
评测、观测与安全
安全
评测
概念解释
参考
企业架构与成本
解决方案场景
样例与学习资源
附录
函数调用
让模型根据提示决定是否调用你定义的函数,并返回结构化参数;函数由应用自己执行,结果再回传给模型生成最终回答。适用于查询数据、调用业务接口等场景。
适用场景
- 模型需要读取实时信息(如当前时间、天气、订单状态)。
- 模型需要触发业务动作(如查询数据库、发送通知),且应用要保留最终执行权。
- 一次回答需要并行调用多个函数(需模型支持 Parallel tool calling)。
前提
项目 | 要求 |
部署 | 支持 Chat Completions 或 Responses 函数调用的模型部署;支持情况随模型、API、部署类型与版本而变(待核实) |
端点 | https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/ |
认证 | API Key,或 Microsoft Entra ID(需自定义子域名;Python 依赖 openai 与 azure-identity) |
三步流程
- 调用 Chat Completions,附上
tools定义与用户输入。
- 检查响应中的
tool_calls,解析参数并在应用内执行对应函数。
- 把函数结果以
role为tool的消息(带相同的tool_call_id)追加到 messages,再次调用模型获得最终回答。
工具定义(参数表)
字段 | 说明 |
type | 固定为 function |
function.name | 函数名,模型据此选择函数 |
function.description | 函数用途,影响模型是否调用;应写清楚 |
function.parameters | JSON Schema 对象,列出 properties 与 required |
tool_choice | 默认 auto(模型自行决定);none 为不调用;指定函数名则强制调用该函数 |
strict(结构化输出场景) | 设为 true 时启用严格模式,见“结构化输出”页面 |
步骤示例要点
- 官方示例定义了一个
get_current_time(location)函数,并在本地用映射表返回时间。
- 并行调用:提示中包含多个地点时,模型可在一次响应中返回多个
tool_calls,每个都有唯一 id;应用需对每个 id 回传一条 tool 消息。
- 多函数示例:同一请求中可同时定义天气与时间两个函数。
验证
检查项 | 预期结果 |
首次响应 | tool_calls 非空,函数名与参数符合 schema |
参数解析 | json.loads 可解析 arguments |
第二次调用 | 模型的最终回答引用了函数返回的数据 |
排错表
现象 | 处理方式 |
模型没有调用函数 | 在函数 description 与参数 description 中写清用途与格式;在 system 消息中说明何时应调用函数 |
模型调用了未提供的函数 | 在 system 消息中加入“只使用已提供的函数” |
参数缺失或格式不符 | 对参数写更具体的说明与示例;应用端做校验;必要时考虑微调(官方提示) |
arguments 不是合法 JSON | 官方提示 JSON 可能不总是有效,需加错误处理 |
使用了 functions 或 function_call 参数 | 已弃用,改用 tools 与 tool_choice |
限制
- 单次请求的 functions 或 tools 上限为 128(官方配额表)。
- 工具与函数的描述(description)长度上限为 1,024 个字符。
- Chat Completions 与 Responses API 的函数调用请求与响应格式不同,不能直接互换。
tool_choice在 o3-mini 与 o1 上受支持(官方提示)。
安全注意
- 校验模型生成的函数名、参数与调用意图,不要直接执行未经校验的调用。
- 只使用可信数据源;函数返回的不可信内容可能诱导模型写出非预期的调用。
- 遵循最小权限:数据库等只给只读账号;不要只依赖函数定义来限制能力。
- 对有副作用的操作(写库、发消息、付款)增加用户确认步骤。
来源与核对
- 核对范围:正文已读(三步流程、单工具与并行示例、tool_choice、提示工程与安全建议、函数调用支持与限制已核对;示例代码未逐行复制)。
- 获取日期:2026-11-05。模型支持范围与版本待核实。
上一篇
结构化输出
下一篇
Responses API
Loading...