什么是 函数调用?
函数调用是大语言模型生成结构化工具调用提议的能力,给出工具名称和参数;可信应用代码仍须负责校验、鉴权、执行并返回结果。
快速了解
| 全称 | 大语言模型函数调用 |
|---|---|
| 创建时间 | 2023 年由 OpenAI 推出 |
| 规范文档 | 官方规范 |
工作原理
函数调用把自然语言请求连接到边界清晰的软件能力,但模型不会自行执行函数。它只提出工具名称和结构化参数;确定性执行器负责解析工具、从可信上下文推导身份和租户、校验业务状态、授权精确影响、施加超时与幂等约束,并返回规范化结果。Schema 校验只能让参数更易解析,不能证明所有权、价格有效性、用户同意或写操作应当发生。MCP 可以标准化外部工具的发现和传输,函数调用则是面向模型的接口;二者都仍需要 Host 侧的策略、审批、结果处理和审计。
主要特点
- 模型提议与确定性执行相分离
- Schema 约束参数形状,但不授予权限
- 可信运行时提供身份、租户和权限上下文
- 以时间、成本和重复调用限制多轮执行
- 写操作具备幂等语义、预览和审批机制
- 对工具结果进行不可信输入处理、追踪和轨迹评测
常见用途
- 调用最小权限外部服务的 AI Agent
- 先预览动作、后提交的客服系统
- 具备审计工具边界的自然语言自动化流程
- 将 MCP 工具转为受批准运行时注册表的 Host
- 对写操作要求明确确认的语音或聊天助手
示例
Loading code...常见问题
函数调用与常规文本生成有什么不同?
常规文本生成返回自由形式内容;函数调用返回带有工具名称和参数的结构化提议,供应用代码解释。结构化有助于解析,但不会执行操作,也无法证明操作正确、已授权或安全,这些属性必须由执行器强制保证。
模型可以在单次响应中调用多个函数吗?
很多供应商允许模型一次提出多个调用。只有当调用真正独立、只读或已安全幂等时才可以并发;共享状态、消耗配额、依赖前序结果或会产生副作用的调用,需要确定性的顺序和失败策略。模型将它们放在同一响应中,并不代表并行安全。
当模型错误调用函数时如何处理错误?
先校验参数形状,再解析目标资源、认证并授权调用者、核验当前业务状态,最后返回有界且规范化的错误结果。只重试可以安全重试的故障,绝不能盲目重复结果未知的写操作;不要把堆栈、密钥或内部拓扑返回给模型,所有工具结果都是不可信输入。
函数调用和 AI 智能体有什么关系?
函数调用是 AI 智能体的基本构建块。智能体使用函数调用与环境交互——读取数据、执行操作和响应结果。智能体循环通常包括:接收用户输入、决定调用哪些函数、执行它们、观察结果,然后重复直到任务完成。函数调用实现了这种工具使用能力。
如何设计函数 Schema 以获得最佳模型性能?
优先暴露边界清晰的业务意图操作,并提供明确名称、说明、必填字段、取值边界,避免语义重叠。不要让模型提供用户 ID、租户、角色、价格或批准状态等可信字段,应由执行器推导。不存在普适的工具数量安全阈值,应使用真实任务评测工具选择正确率和延迟。