- 文档
- 教程
- 知识库
【免费下载链接】developer-roadmap
Interactive roadmaps, guides and other educational content to help developers grow in their careers.
导读
函数调用(Function Calling)是大语言模型(LLM)与外部工具、API 之间的桥梁:模型不再只输出文本,而是能够根据用户输入识别出"此时应当调用哪个函数",并输出执行该函数所需的参数。本指南围绕 developer-roadmap 仓库中 AI 工程师路线图的函数调用主题展开,帮助你理解函数调用的核心机制、主流厂商实现方式,以及它在 AI 工程师技能体系中的定位,读完即可掌握构建"能执行动作的 LLM 应用"的基本原理与工程范式。
什么是函数调用
函数调用允许大语言模型与外部工具和 API 进行交互。与单纯生成文本不同,LLM 可以被指示:当用户输入满足特定条件时,识别出应当调用哪个预定义的函数,并输出执行该函数所需的参数。这使得 LLM 能够执行超出其训练数据范围的动作,例如获取实时信息或自动化任务。
在 AI 工程师路线图中,这一主题被明确定位为工具与智能体的核心能力。配套文档 Tools & Function Calling in AI Agents 进一步说明:工具和函数调用赋予了 AI 智能体与现实世界交互、获取外部信息的能力——智能体不再只给出基于文本的回答,而是可以使用预定义的函数、工具或 API 执行特定动作,比如搜索网页、发送邮件或控制设备。
工具的范围非常宽泛,可以是从 Web 搜索 API 到计算器、数据库、语言翻译引擎等任何资源。正如 What are Tools 所描述的:智能体向工具发送请求、获得结果,然后利用该结果继续推进任务。
函数调用的核心工作流程
函数调用本质上是"模型决策 + 应用执行"的协作过程,典型流程如下:
- 定义函数:开发者在 API 请求中声明一组函数,每个函数包含名称、描述和参数结构(JSON Schema)。
- 模型决策:LLM 根据用户输入判断是否需要调用某个函数;如果需要,则返回结构化的调用请求——包含函数名和参数,而不是自由格式的文本。
- 应用执行:调用方应用程序真正执行该函数(如查询数据库、调用外部 API),并把结果返回给模型。
- 继续对话:模型拿到工具结果后,可以继续推理或生成最终回答。
这一循环正是智能体(Agent)能够自主完成多步骤任务的底层机制:决策(模型)与执行(应用)解耦,模型负责"想",应用程序负责"做"。
为什么需要函数调用
函数调用解决了 LLM 的三大天然局限:
| 局限 | 函数调用的解决方式 |
|---|---|
| 训练数据截止,缺乏实时信息 | 通过调用搜索、天气、股票等 API 获取最新数据 |
| 只能输出文本,无法产生实际动作 | 通过调用邮件、支付、设备控制等工具完成真实操作 |
| 上下文缺失,无法访问私有/企业数据 | 通过调用数据库、知识库查询接口获得企业内部数据 |
从 What are Tools 的表述看,工具可以让一个小型核心模型处理原本很难或很慢的任务,同时帮助答案保持及时、准确并锚定在真实数据上;选择合适的工具并知道何时使用它,是构建智能智能体的关键能力。
主流实现方式对比
函数调用已是大模型厂商的"原生能力",不同厂商的实现遵循同一套通用模式,但请求/响应格式各有差异。仓库的 AI 智能体路线图中记录了三种主流实现:
OpenAI Functions Calling
OpenAI Functions Calling 允许模型从 API 请求中定义的一组函数中选择,并返回结构化的调用——函数名和参数以 JSON 形式给出。调用方应用执行该函数,并将结果发回给模型供其在下一次响应中使用。它是最早被广泛采用的原生工具调用实现之一。
Anthropic Tool Use(Claude)
Anthropic Tool Use 是 Claude 对原生函数调用的实现:模型可以选择以结构化参数调用已定义的工具,作为其响应的一部分。支持并行工具调用,并能在需要时强制使用指定工具——这对于需要确定性流程的工程场景非常实用。
Gemini Function Calling
Gemini Function Calling 是 Google 的原生工具调用实现:Gemini 模型从提供的函数定义中选择并返回带参数的结构化调用。它遵循与其他厂商函数调用相同的通用模式,但拥有自己特定的请求和响应格式。
原生函数调用(LLM Native Function Calling)的意义
LLM Native Function Calling 强调了一个关键区别:原生函数调用是直接内建在模型 API 中的能力——模型输出对预定义函数的结构化调用(含函数名和参数),而非自由文本。应用程序执行真实函数并将结果返回模型以继续对话。
这一设计带来的核心价值是标准化:模型请求动作的方式被规范化,无需再从纯文本输出中解析工具调用。相比早期的"提示词模拟"方案(模型输出 JSON 文本、应用再用正则或解析器提取),原生函数调用大幅降低了解析失败率和格式漂移问题,是构建可靠 AI Agent 的工程基础。
在 AI 工程师路线图中的定位
函数调用是 AI 工程师路线图中"工具与智能体"知识板块的组成部分,与以下主题紧密关联:
- Tools & Function Calling in AI Agents:工具的宏观概念与智能体应用场景
- AI Agents:智能体的整体架构
- State & Historical Context:函数调用结果如何进入对话状态,供后续步骤引用
- Context Sources:工具返回的信息如何成为模型上下文的一部分
理解这条链路对实践很重要:函数调用不仅仅是"发一次请求",它会产生状态变化——过去工具调用的记录与结果需要被跟踪,否则智能体可能重复步骤、自相矛盾或在多步任务中迷失方向,这正是 State & Historical Context 所强调的工程要点。
进一步探索
本仓库为继续深入学习提供了完整的路线图支撑:
- AI 工程师路线图 - 函数调用主题:本文依据的原始主题页
- AI 智能体路线图 - 工具调用专题:工具概念的入门讲解
- AI 智能体路线图 - 原生函数调用:原生能力的原理对比
按路线图顺序学习,可以从"什么是函数调用"逐步深入到"如何为智能体设计并集成工具",最终构建出能够自主检索实时信息、调用业务 API 并完成多步自动化任务的 AI 应用。
- 文档
- 教程
- 知识库
【免费下载链接】developer-roadmap
Interactive roadmaps, guides and other educational content to help developers grow in their careers.
相关推荐
Generative AI for Beginners:用 Function Calling 构建可调用外部 API 的 AI 应用
Generative AI for Beginners:用 Function Calling 构建可调用外部 API 的 AI 应用 本篇文章来自《Genera
教程人工智能大模型Generative AI 入门:使用函数调用(Function Calling)构建可查询外部数据的智能聊天应用
Generative AI 入门:使用函数调用(Function Calling)构建可查询外部数据的智能聊天应用 函数调用(Function Calling)
教程人工智能大模型generative-ai-for-beginners 第11课深度解析:用 Function Calling 让 LLM 以结构化数据调用真实外部服务
generative ai for beginners 第11课深度解析:用 Function Calling 让 LLM 以结构化数据调用真实外部服务 本文基
教程人工智能大模型
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考