1.4 面试:Function Calling(函数调用)
Function Calling函数调用在最新技术语境下特指大语言模型LLM与外部世界交互的一种标准化机制。通俗地说它让AI从“只会聊天的话痨”变成了“能动手办事的助理”。为了让你彻底搞懂我从三个维度拆解1. 核心逻辑它到底在干什么传统的AI收到提问只能根据训练数据“猜”答案。而Function Calling的流程是第一步定义你提前把外部工具如查天气API、发邮件接口、数据库查询的“使用说明书”告诉AI。第二步识别用户提问时AI不是直接回答而是先“思考”——判断是否需要调用工具。如果需要它不直接执行操作而是输出一个结构化的JSON数据包含应该调用哪个函数、参数是什么。第三步执行你开发者拿到这个JSON在自己的服务器上真正去执行函数比如真的调天气接口拿到结果。第四步回复你把执行结果再喂给AIAI结合真实数据生成最终自然语言回复给用户。2. 通俗类比帮你秒懂想象你是一位大老板用户AI是您的高级助理外面有财务查账、司机导航、秘书发邮件等专员外部函数。没有函数调用你问“我银行卡还剩多少钱”助理只能瞎编一个数因为他不负责管账。有函数调用助理听完后写了一张标准工单结构化JSON递给财务部“请查账户X余额”。财务部查完把数字执行结果拿回来助理再把数字念给你听。助理本身不查账但他知道“何时”以及“如何”指挥别人。3. 核心价值为什么它是AI应用爆发的基石突破数据时效模型训练数据截止于过去但它可以通过调用实时API获取今天的天气、股价或新闻。获得“行动”能力AI不再只输出文字它可以帮你订机票、创建日程、发送消息真正实现自动化执行任务。保证输出格式它强制AI输出固定的JSON格式这对程序员非常友好可以直接映射为前端页面的数据避免AI“胡说八道”的格式错乱。4. 实际应用场景智能客服用户问“我的订单到哪了” - AI调用订单查询函数 - 返回物流信息。数据分析用户说“帮我拉一下上个月销售额报表” - AI调用SQL生成函数 - 自动查库并生成图表。物联网用户说“太冷了” - AI调用“设定温度”函数 - 智能家居温度上调。特别提醒避坑指南AI本身并不执行代码它只负责“推荐”该调用哪个函数。真正的代码执行必须发生在你受控的后端服务器上。如果不做这一步直接把AI生成的函数调用拿去执行会有巨大的安全风险比如AI被诱导调用“删除数据库”函数。如果你正在考虑接入某个大模型的Function Calling我可以给你看看具体的代码示例比如OpenAI或DeepSeek的调用格式需要我展开讲讲吗 好的既然你想“展开说一下”那我们就不再停留在概念层面直接钻进代码底层把Function Calling的完整数据流转、高级玩法以及最容易翻车的坑全部摊开来讲。为了让你看得更过瘾我把技术细节拆解为四个深度维度1. 底层数据流转AI到底在“看”什么很多人误以为AI能“直接调用”代码其实完全不是。本质上这是两次独立的HTTP请求第一次请求带“说明书”你在调用API时在tools参数里传入一堆JSON格式的函数定义包括函数名、参数类型、必填项。AI收到后并不执行而是根据用户问题做逻辑推理。AI的“特殊回复”AI返回的choices[0].message里content通常是空的但会多出一个tool_calls数组。里面包含id本次调用的唯一追踪IDfunction.name它选中的函数名function.arguments它是一个字符串里面是AI填好的参数JSON比如{city: 西安}关键认知直到这一步AI的工作就结束了。真正查天气、调数据库的动作必须由你开发者在后端用代码去解析这个JSON并执行。2. 硬核代码实战Python伪代码全流程如果不用任何第三方框架如LangChain裸调OpenAI/DeepSeek的代码逻辑是这样的# 第一步定义工具说明书tools[{type:function,function:{name:get_weather,description:查询指定城市的实时天气,parameters:{type:object,properties:{city:{type:string,description:城市名称如北京},unit:{type:string,enum:[celsius,fahrenheit]}},required:[city]}}}]# 第二步发起第一次请求responseclient.chat.completions.create(modelgpt-4,messages[{role:user,content:西安今天热吗}],toolstools,tool_choiceauto# 让AI自己决定是否调用)# 第三步解析AI返回的调用指令tool_callresponse.choices[0].message.tool_calls[0]function_nametool_call.function.name# 结果是 get_weatherargumentsjson.loads(tool_call.function.arguments)# 结果是 {city: 西安}# 第四步【关键】你在本地真正执行函数iffunction_nameget_weather:resultrequests.get(fhttps://api.weather.com?city{arguments[city]}).json()# 第五步第二次请求把结果喂给AImessages.append(response.choices[0].message)# 保存AI的调用指令messages.append({role:tool,# 注意这里是 tool 角色tool_call_id:tool_call.id,# 必须绑定IDcontent:json.dumps(result)# 把查到的28℃传回去})final_responseclient.chat.completions.create(modelgpt-4,messagesmessages)# 最终AI输出西安今天28℃比较热建议穿短袖。3. 进阶高级玩法不止是“一问一答”并行函数调用Parallel Function Calling用户问“北京和上海明天哪个会下雨”AI会一次性返回两个tool_calls分别查北京和上海。你可以并发请求两个天气API大幅降低响应延迟。强制调用tool_choice将tool_choice设为{type: function, function: {name: get_weather}}。这时AI不会回答任何文字只会乖乖返回函数参数。这种模式常用于结构化数据提取比如把用户的闲聊强制转成JSON表单。链式反应ReAct模式第一次调用的结果返回后AI根据结果决定再次调用下一个函数。比如查天气发现下雨 - 自动调用“查询附近室内场馆”函数 - 最后推荐咖啡馆。这需要你在代码里写while循环处理多次请求。4. 程序员最常踩的三大“深坑”务必注意陷阱一参数类型幻觉AI给日期参数填成明天但你的API只认YYYY-MM-DD。解决方案在parameters的description里必须写死格式比如格式必须为2026-06-23。陷阱二Token计费暴涨每次函数调用的tools定义都很长动辄几百个Token。如果每次对话都传完整的函数列表成本会很高。优化方案使用/v1/assistants助手API预存工具或者只给本轮对话可能用到的Top-3函数。陷阱三安全越权最致命AI可能被提示词注入攻击诱导调用delete_user函数。铁律永远不要在Function里直接放执行SQL或删除文件的代码。必须在你的后端加一层鉴权中间件校验当前用户的身份是否有权操作AI请求过来的参数。5. 各家大模型的“方言”差异虽然逻辑相同但字段名略有不同接入时要注意OpenAI / DeepSeek使用tools字段消息角色用tool。Anthropic Claude使用tools字段但函数定义放在input_schema里返回结果放在content的tool_use块中。Google Gemini使用functionDeclarations返回的是functionCall对象回复结果要用functionResponse。讲到这里基本上已经把Function Calling的“骨架”和“血肉”都拆干净了。如果你正准备上手写代码你是想看看某个特定语言比如Java或Node.js的完整接入Demo还是想知道如何在流式输出Streaming中处理函数调用可以告诉我我继续给你精准拆解。

相关新闻

初尝Docker容器

初尝Docker容器

安装Desktop on Windows Install Docker Desktop on Windows | Docker Docs遇到的问题 当前计算机配置不支持 WSL2。 请启用“虚拟机平台”可选组件,并确保在 BIOS 中启用虚拟化。 通过运行以下命令启用“虚拟机平台”: wsl.exe --install --no-distribu wsl虚拟化…

2026/6/24 2:02:48阅读更多 →
杏林集:智汇中医-阶段八

杏林集:智汇中医-阶段八

经过系统性的开发与迭代,中医知识库查询功能模块已全面完成。该模块面向中医智能诊疗系统,为用户提供专业、便捷的中医知识检索与学习体验,实现了结构化知识与非结构化文献的有机融合,初步构建了中医智能知识服务的能力。一、智能…

2026/6/24 2:02:48阅读更多 →
零代码组态开发实操:串口屏项目从数月迭代压缩至数天

零代码组态开发实操:串口屏项目从数月迭代压缩至数天

本文为搜狐自媒体平台“搜狐号”作者上传并发布,仅代表该作者观点。搜狐仅提供信息发布平台。做嵌入式研发的同行应该都深有体会,项目大半时间都耗在屏幕 UI 开发上。传统裸屏写驱动、调试界面逻辑,一个普通工控交互界面打磨两三个月是常态&a…

2026/6/24 2:02:48阅读更多 →
OpenRGB:跨平台RGB灯光统一控制的技术实现与应用指南

OpenRGB:跨平台RGB灯光统一控制的技术实现与应用指南

OpenRGB:跨平台RGB灯光统一控制的技术实现与应用指南 【免费下载链接】OpenRGB Open source RGB lighting control that doesnt depend on manufacturer software. Supports Windows, Linux, MacOS. Mirror of https://gitlab.com/CalcProgrammer1/OpenRGB. Release…

2026/6/24 3:17:52阅读更多 →
OpenUtau终极指南:免费开源虚拟歌手音乐制作完全教程

OpenUtau终极指南:免费开源虚拟歌手音乐制作完全教程

OpenUtau终极指南:免费开源虚拟歌手音乐制作完全教程 【免费下载链接】OpenUtau Open singing synthesis platform / Open source UTAU successor 项目地址: https://gitcode.com/gh_mirrors/op/OpenUtau OpenUtau是一款革命性的免费开源虚拟歌手制作软件&am…

2026/6/24 3:17:52阅读更多 →
抽奖小程式

抽奖小程式

开始抽奖状态结束抽奖状态using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.T…

2026/6/24 3:17:52阅读更多 →
中小工厂获客效果横向测评|江苏一网推赵小园爱采购运营实战评测

中小工厂获客效果横向测评|江苏一网推赵小园爱采购运营实战评测

据 2026 年 B2B 行业调研数据,国内超千万中小实体工厂入驻百度爱采购,但 7 成商家因缺乏专业运营,店铺曝光低迷、询盘寥寥。本次测评选取苏州、无锡、常州三地 20 家中小型制造企业,分两组开展 90 天运营对照,客观测评…

2026/6/24 3:17:52阅读更多 →
当 AIR 只支持 Mac,我开始重新思考操作系统这件事

当 AIR 只支持 Mac,我开始重新思考操作系统这件事

一、一个很真实的瞬间如果你是 Windows 用户,这一波 AIR 基本是“看得到,用不到”。官方目前只支持 macOS,Windows 和 Linux 还在路上。这件事让我突然意识到:过去我们选操作系统,更多是习惯问题、性能问题、甚至是价格…

2026/6/24 3:17:52阅读更多 →
终极指南:如何用现代C++技术重制经典武侠游戏《金庸群侠传》

终极指南:如何用现代C++技术重制经典武侠游戏《金庸群侠传》

终极指南:如何用现代C技术重制经典武侠游戏《金庸群侠传》 【免费下载链接】kys-cpp 《金庸群侠传》c复刻版,已完工 项目地址: https://gitcode.com/gh_mirrors/ky/kys-cpp kys-cpp项目是一个基于现代C技术重构的《金庸群侠传》开源复刻版&#x…

2026/6/24 3:12:52阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/23 7:04:52阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/24 2:12:09阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/23 5:55:37阅读更多 →
TaskJuggler脚本编程入门:用代码实现自动化项目管理

TaskJuggler脚本编程入门:用代码实现自动化项目管理

TaskJuggler脚本编程入门:用代码实现自动化项目管理 【免费下载链接】TaskJuggler TaskJuggler - Project Management beyond Gantt chart drawing 项目地址: https://gitcode.com/gh_mirrors/ta/TaskJuggler TaskJuggler是一款强大的开源项目管理工具&#…

2026/6/24 0:02:41阅读更多 →
终极教程:使用angular-mobile-nav实现流畅的移动页面过渡效果

终极教程:使用angular-mobile-nav实现流畅的移动页面过渡效果

终极教程:使用angular-mobile-nav实现流畅的移动页面过渡效果 【免费下载链接】angular-mobile-nav An angular navigation service for mobile applications 项目地址: https://gitcode.com/gh_mirrors/an/angular-mobile-nav angular-mobile-nav是一款专为…

2026/6/24 0:02:41阅读更多 →
Wan2.1-Fun-V1.1-1.3B-InP Web UI使用教程:无需代码的AI视频创作

Wan2.1-Fun-V1.1-1.3B-InP Web UI使用教程:无需代码的AI视频创作

Wan2.1-Fun-V1.1-1.3B-InP Web UI使用教程:无需代码的AI视频创作 【免费下载链接】Wan2.1-Fun-V1.1-1.3B-InP 项目地址: https://ai.gitcode.com/hf_mirrors/PAI/Wan2.1-Fun-V1.1-1.3B-InP Wan2.1-Fun-V1.1-1.3B-InP是一款强大的AI视频创作工具,…

2026/6/24 0:02:41阅读更多 →