1基本概念
当你第一次看到Function Call这个名字,直译就是“函数调用”。没错,它说的就是“调用函数”。但你可能会好奇:LLM 怎么会去调用函数呢?
在理解这个之前,先想一想什么是“函数”。其实你每天都在无意识地使用函数:比如你在百度或 Google 搜索一个内容,搜索结果出来后,你点击其中一条链接。这个“点击”背后,其实就是一次函数调用——系统把你选择的内容,从数据库里取出来,再展示到网页上。
这些过程你看不到,但它们都在后台自动完成。Function Call 在大模型里也是类似的:模型并不自己“知道”所有答案,而是通过调用外部的函数(工具),把结果取回来,然后再回答你。
如果让你来设计Function Call,你会先想到什么? 大多数有编程经验的同学,第一反应可能是:
- 这个函数要完成什么功能?
- 需要哪些参数?
- 参数怎么传递?
- 最后返回什么结果?
没错,这就是函数的基本要素。那接下来问题来了:LLM 怎么知道你写的这些函数呢?
答案是:你需要把它们“注册”到 LLM 中。所谓注册,其实就是把函数的定义(功能说明、参数格式、返回结果类型)描述一遍,交给 LLM 记住。这样,当模型遇到相关问题时,它就能主动选择调用哪个函数,并生成对应的参数。
接下来,模型会把生成的参数传给你定义的函数,函数运行得到结果。然后这个结果会被当作“新的上下文”再交给 LLM,模型结合结果和你原来的问题,生成最终的答案。
上述描述就是function call的完整过程。
2 为什么需要 Function Call?
最初的大模型(GPT-2、GPT-3)只能靠自己“记忆”生成答案。
但一旦用户问到实时信息(如“今天上海的天气”)或外部操作(如“帮我订张票”),模型就无能为力,只能“胡编”一个结果。
这时研究者就意识到:模型必须要能和外部世界互动。
2023年6月 OpenAI正式推出Function Calling,其发展历程如下:
大模型很强,但它的“脑子”来自训练时刻的快照:知识是静态的、通用的、不可验证的。一旦问题落到真实业务里,就会立即遇到三类鸿沟:
- 第一,时效性——“明天杭州的天气”“这班机有没有延误”“库存还剩多少”都需要实时系统给答案;
- 第二,个性化与权限——“我这个账号的账单”“我司本月的销售额”“我工单的处理进度”属于企业或个人的私域数据,模型本体既看不到也不该看到;
- 第三,行动与闭环——不仅要回答,还要去做事:下单、发邮件、建工单、拉取报表、写回数据库,单靠语言生成办不到。
Function Call 的价值就在于把“会说话”的模型,接上“会做事”的工具:开发者先以函数/工具的声明定义可用能力(名称、参数、返回值和安全边界),模型在理解用户意图后自动选择并生成结构化参数,由应用去调用真实世界的 API 或服务,拿到可验证的结果再让模型组织成自然语言回复。
这样一来,答案可追溯、可审计、可复现,降低幻觉,还能把企业现有系统(数据库、搜索、ERP、工单、物联网设备)无缝纳入 AI 工作流。
换句话说,Function Call 让大模型从“静态记忆 + 概率式输出”,进化为“按需取数 + 安全执行 + 可控反馈”的执行中枢:既补齐时效与专有知识的短板,又把回答变成可落地的动作闭环,这就是它在任何严肃场景中不可或缺的原因。
3Function Call 的核心机制(工作原理)
应用向大语言模型发起请求:应用端将用户的自然语言输入(Prompt)以及可用函数的定义信息(Function Declarations / Tool Specifications)一并传递给大语言模型。这样模型在理解问题时,就知道有哪些外部工具可供调用。
大语言模型进行决策:模型内部经过推理,判断是直接生成自然语言回复,还是需要调用一个或多个外部工具。如果需要调用工具,模型会生成对应的函数名及参数(Function Call Arguments)。
模型返回调用指令或直接回复, 模型将处理结果返回给应用端。这个结果可能是:
一条包含函数名与参数的函数调用指令。
一条可直接展示的自然语言消息,或
应用解析并执行函数:当应用收到函数调用指令时,会解析出函数名与参数,并实际执行对应的函数(通常是调用外部 API 或服务)。
应用将函数执行结果反馈给模型:应用把函数执行的原始输出结果(如 API 返回的 JSON 数据)与上下文提示词一并传入模型,使其能够基于数据生成用户可理解的回答。
大语言模型生成最终响应或继续调用,模型接收到函数执行结果后,会决定:
如果问题尚未解决,继续触发后续的工具调用,直到获得足够信息。
直接基于结果生成最终自然语言答案,或
4 实际案例展示
我用一个简单的例子来解释Function Call的工作原理:
如果我现在问ChatGPT:杭州今天天气如何?内部是怎么运作的呢?
第 1 步:用户提问
- 用户:输入提示词(Prompt) → “杭州今天天气如何?”
第 2 步:应用 (ChatGPT)
ChatGPT 接收到用户问题。
ChatGPT 需要判断:这个问题能直接回答吗?还是要调用外部数据?
ChatGPT 发现:天气是实时数据,自己“不会算”,于是决定调用外部函数。
函数声明(Function Declaration),应用层(比如 ChatGPT 产品)会提前写好一组函数的定义(声明),比如:
每个函数都会有名字(name)、描述(description)、参数(parameters schema)。
定义的格式必须符合OpenAI 规范(目前是 JSON Schema),这样模型才能正确理解。
get_weather(location, date)get_stock_price(symbol, date)get_inventory(item_id)
第 3 步:模型生成调用参数模型收到“用户问题 + 函数声明”后,先理解用户需求,再在可用函数里选择合适的一个,并生成调用所需的函数名和参数,例如:
函数名:get_weather 参数:{location=杭州,date=2025-09-21}第 4 步:函数调用 API
- ChatGPT 向天气 API发送请求。
- API 返回结果:
{ "temperature": "28°C", "condition": "多云" }第 5 步:应用返回答案
- Function Call调用的结果给到模型;
- 模型生成答案给到应用ChatGPT;
- ChatGPT最终响应给用户;
5 什么是“把函数注册到模型中”
在 Function Call 的机制里,有一个常见的问题是:模型本身并不知道你有哪些函数。那么,如何让模型“知道”并正确调用呢?这就涉及到函数注册的过程。
通过 Prompt 告诉模型
- 在调用模型时,除了用户的自然语言问题,还需要在 Prompt 中一并写入函数的定义。
- 定义包括:函数名、参数类型、参数说明、返回值格式,甚至权限或使用场景。
- 这样,模型在推理时会把这些函数当作“候选工具”,并选择合适的一个生成参数。
- 在前面章节的示例里,我展示过一个较复杂的 Prompt,它把所有函数的描述一次性写清楚,每次调用模型时,函数定义会和用户问题一起传入。
通过 API 调用参数传递(tools 字段)
- 在程序层面,调用大模型时通常会有一个
tools字段(或类似参数)。 - 你可以把需要的函数用 JSON Schema 的格式列出来:包括函数名、参数、说明等。
- 当请求发给大模型时,这些函数就相当于被“注册”进了模型当前的上下文。
- 模型在生成响应时,会根据工具的定义返回结构化的函数调用请求。
所谓“函数注册到模型中”,并不是把函数永久写进模型,而是在每次会话或调用时,通过 Prompt + tools 参数,把函数的定义临时交给模型。模型就能在推理时“记住”这些函数,并在需要时调用。
prompt 和 tools 参数都需要在调用模型 API 时一并传入。
05 Function Call与MCP(Model Context Protocol )、Agent关系
有了 Function Call,模型能“调一次工具”。但真实业务往往不是一次就完,还牵涉到先调谁、怎么排顺序、失败如何重试,以及工具如何被统一接入与复用。于是就有了两条演进线:Agent负责把多步流程编排成闭环,MCP负责把工具接入标准化、可发现、可治理。接下来我们就讲它们与 Function Call 的关系。
Function Call与MCP关系:
MCP 把“工具/函数”的定义与托管从应用层挪到独立的 MCP Server。你按统一 Schema(名字、参数、返回值、权限等)在各台服务器上暴露工具;应用侧只要作为MCP Client连接这些服务器,就能自动发现并调用工具,不再为每个客户端/每个模型重复接入一次。像Cursor、Dify、ChatGPT(自定义连接器/Responses API)都已经能作为 MCP 客户端对接远程 MCP 服务器,用的就是这一套标准。
更严谨地说:MCP ≠ 只是“函数换了个放置位置”:
- Function Call:描述“如何调用一个工具”的模型行为(选择工具 → 产出结构化参数 → 执行 → 回传结果)。
- MCP:描述“工具如何被发现与接入”的协议层(服务发现、能力声明、会话与鉴权、可观测、跨应用复用)。
- 典型链路是:MCP 负责发现/接入→ 模型在客户端内用Function Call产出参数 → 客户端调用该 MCP 工具并回传结果给模型。换言之,MCP 是“接线标准”,Function Call 是“用电方式”。
所以说,MCP未来可以形成规模商业化模式:
- 商业模式:既然 MCP 解决了“工具可复用、跨应用接入”的问题,那在 Server 端确实可以设计为按调用次数、按 QPS、按并发量收费,就像现在的 API(OpenAI、Stable Diffusion、各类 SaaS API)一样。
与Agent关系:
- MCP Server 里暴露了若干工具(搜索、数据库、RAG、第三方 API 等),MCP 把工具摆到桌面上。
- MCP Client(如 ChatGPT、Cursor、Dify)连上去,把这些工具“挂载”到模型可见的环境。
- Agent 决定怎么用这些工具完成目标,形成执行逻辑,决定先调哪个工具、后调哪个工具,利用 Function Call机制来一步步调用 MCP 工具,直到达成目标。
因此未来可能会出现:Agent-as-a-Service + MCP 工具市场。
普通人如何抓住AI大模型的风口?
领取方式在文末
为什么要学习大模型?
目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。
目前,开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景,其中,应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过30%。
随着AI大模型技术的迅速发展,相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业:
人工智能大潮已来,不加入就可能被淘汰。如果你是技术人,尤其是互联网从业者,现在就开始学习AI大模型技术,真的是给你的人生一个重要建议!
最后
只要你真心想学习AI大模型技术,这份精心整理的学习资料我愿意无偿分享给你,但是想学技术去乱搞的人别来找我!
在当前这个人工智能高速发展的时代,AI大模型正在深刻改变各行各业。我国对高水平AI人才的需求也日益增长,真正懂技术、能落地的人才依旧紧缺。我也希望通过这份资料,能够帮助更多有志于AI领域的朋友入门并深入学习。
真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发
大模型全套学习资料展示
自我们与MoPaaS魔泊云合作以来,我们不断打磨课程体系与技术内容,在细节上精益求精,同时在技术层面也新增了许多前沿且实用的内容,力求为大家带来更系统、更实战、更落地的大模型学习体验。
希望这份系统、实用的大模型学习路径,能够帮助你从零入门,进阶到实战,真正掌握AI时代的核心技能!
01教学内容
从零到精通完整闭环:【基础理论 →RAG开发 → Agent设计 → 模型微调与私有化部署调→热门技术】5大模块,内容比传统教材更贴近企业实战!
大量真实项目案例:带你亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事!
02适学人群
应届毕业生:无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。
零基础转型:非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界。
业务赋能突破瓶颈:传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型。
vx扫描下方二维码即可
本教程比较珍贵,仅限大家自行学习,不要传播!更严禁商用!
03入门到进阶学习路线图
大模型学习路线图,整体分为5个大的阶段:
04视频和书籍PDF合集
从0到掌握主流大模型技术视频教程(涵盖模型训练、微调、RAG、LangChain、Agent开发等实战方向)
新手必备的大模型学习PDF书单来了!全是硬核知识,帮你少走弯路(不吹牛,真有用)
05行业报告+白皮书合集
收集70+报告与白皮书,了解行业最新动态!
0690+份面试题/经验
AI大模型岗位面试经验总结(谁学技术不是为了赚$呢,找个好的岗位很重要)
07 deepseek部署包+技巧大全
由于篇幅有限
只展示部分资料
并且还在持续更新中…
真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发