由来---场景设计

你雇了一位 超级聪明的百科全书管家(就是大模型,比如GPT)。它知识渊博,但有个缺点:它只会动嘴皮子,不会动手干活!
比如你问:

“上海今天多少度?”
它可能回答:
“根据我2024年7月之前的知识,上海夏季平均气温...”
——过时了!不会查实时天气!

“帮我订明晚外滩附近的酒店”
它可能回答:
“订酒店需要登录携程APP,您可以...”
——不会实际操作!

Function Call 是什么?

——「万能工具箱」!
工具箱里装着各种工具(就是函数):
🔧 查天气工具
🔧 订酒店工具
🔧 算数学工具
🔧 画图表工具

现在的工作流程变了:

  1. 听懂人话:先理解你的命令(比如“订酒店”)。

  2. 选对工具:判断该用哪个工具箱里的函数(比如调用 携程API)。

  3. 动手干活亲自操作工具(比如访问实时数据库查天气、调订房接口下单)。

  4. 回复结果:把工具执行的结果用「人话」告诉你(“已为您预订外滩XX酒店,订单号是...”)。

✅ 本质:让大模型从「纯聊天机器人」升级成「能操作软件的智能助手」!

为什么普通人需要这个功能?

1. 打破「知识截止」魔咒

❌ 旧版:“我是2024年训练的,不知道2025年的事”
✅ 新版(带Function Call):直接调用 新闻网站函数 查最新事件!

2.告别「纸上谈兵」

❌ 旧版:*“您应该打开Excel,输入公式=SUM(A1:A10)...”*
✅ 新版:直接调用 Excel函数 帮你把表格算好!

3. 一键连接真实世界
你想...管家调用工具结果
知道股票价格→ 调用 股票查询函数返回实时股价
把“你好”翻译成法语→ 调用 翻译函数返回 “Bonjour”
分析本月公司销售数据趋势→ 调用 数据可视化函数生成一张折线图

技术黑话 ➜ 生活比喻

技术术语小白解释例子
Function Call管家「动手能力」的开关打开开关,管家才会用工具
API工具箱里「每个工具的说明书」订酒店工具说明书=携程API
JSON管家和工具之间的「秘密手势暗号」👉手势=“调工具X,参数Y”
插件(Plugin)可添加的「扩展工具包」新增“点外卖工具包”

一句话总结 Function Call:

💡 它让大模型从「懂王」变成「动手达人」!
——能查股票、能订酒店、能算数据、能控智能家居…

 专业版本的理解

一、本质定义

Function Calling 是大语言模型(LLM)的一种高级能力,允许模型在理解用户自然语言指令后,动态识别需调用的外部工具(函数),并生成符合工具要求的结构化参数(如 JSON),最终将工具执行结果整合到自然语言回复中。
核心目标:桥接 LLM 的认知能力与确定性系统(API、数据库、算法)的执行能力

二、关键技术机制

1. 架构层

2. 核心组件

函数注册表(Function Registry)
预定义可调用函数的元数据,包括:

  • name:函数唯一标识

  • description:自然语言描述(供LLM理解用途)

  • parameters:JSON Schema 格式的输入参数规范

    {"type": "function","function": {"name": "get_current_weather","description": "获取指定位置的天气","parameters": {"type": "object","properties": {"location": {"type": "string", "description": "城市名"},"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}},"required": ["location"]}}
    }

    结构化输出控制(Structured Output Control)

  • LLM 被强制约束输出符合预定义 Schema 的 JSON(而非自由文本),例如:

  • {"function": "get_current_weather","arguments": {"location": "北京", "unit": "celsius"}
    }

    工具执行引擎(Tool Execution Engine)

  • 解析 LLM 输出的 JSON → 路由至对应函数 → 注入参数执行 → 捕获返回结果或错误

三、核心价值与工业意义

维度传统LLM支持Function Calling的LLM
能力边界受限于训练数据时效性实时接入外部系统(数据库/API/设备)
结果确定性生成文本可能包含幻觉/错误依赖确定性系统返回精准结果
系统集成性孤立文本生成嵌入企业工作流(CRM/ERP/BI)
计算效率重任务需多次交互单次交互完成复杂操作

典型工业场景

  • 金融:实时股票查询 + 投资组合分析

  • 医疗:调取患者 EHR 数据生成诊断建议

  • 制造:连接 IoT 传感器监控设备状态

四、技术实现范式

 1. OpenAI 标准范式

# Step1: 向LLM传递函数定义
response = openai.ChatCompletion.create(model="gpt-4",messages=[{"role": "user", "content": "北京今天气温如何?"}],functions=[weather_function_schema],  # 注册函数元数据function_call="auto"  # 由模型决定是否调用函数
)# Step2: 解析模型输出中的函数调用指令
if response.choices[0].message.get("function_call"):func_name = response["function_call"]["name"]args = json.loads(response["function_call"]["arguments"])result = call_external_tool(func_name, args)  # 执行外部工具# Step3: 将结果送回LLM生成最终回复second_response = openai.ChatCompletion.create(model="gpt-4",messages=[{"role": "user", "content": "北京今天气温如何?"},{"role": "function", "name": func_name, "content": str(result)}])print(second_response.choices[0].message["content"])
2. 开源替代方案(如 LangChain)
from langchain.agents import load_tools, initialize_agent
from langchain.llms import HuggingFaceHubllm = HuggingFaceHub(repo_id="bigscience/bloom") 
tools = load_tools(["serpapi", "wolfram-alpha"])  # 加载搜索引擎、数学引擎
agent = initialize_agent(tools, llm, agent="structured-chat-zero-shot-react-description")
agent.run("预测2024年特斯拉的股价波动率,用布莱克-斯科尔斯模型计算")  # 自动调用数学工具+金融API

五、华为昇腾 & MindSpore 优化方向

  1. 低延迟函数路由
    使用 CANN 算子库 加速 JSON 解析与函数匹配,缩短端到端响应时间(实测昇腾 910B 比 A100 快 1.8x)。

  2. 安全可信执行

    • 参数沙箱校验:在 NPU 计算层隔离执行外部函数,防范恶意参数注入

    • 零信任架构:函数调用需通过 MindSpore 的 动态可信证明(DTA)

  3. 边缘端部署
    通过 MindSpore Lite 将函数调用引擎压缩至 <100MB,支持工业网关设备(如 Atlas 500)本地化运行。

六、开发者决策建议

技术选型适用场景
OpenAI API快速原型验证,依赖云服务
LangChain多工具链集成,开源模型适配
昇思 + 昇腾高安全/低延迟场景,国产化部署要求

关键指标:函数调用准确率、端到端延迟(E2E Latency)、错误容忍率(允许重试机制)。

 总结
Function Calling 是 LLM 从「对话系统」演进为「智能体(Agent)」的核心技术支点。其在昇腾硬件的垂直优化(时延↓ 50%,安全等级↑),为金融、工业等高价值场景提供确定性 AI 能力,推动大模型从生成走向执行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/913832.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/913832.shtml
英文地址,请注明出处:http://en.pswp.cn/news/913832.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【PTA数据结构 | C语言版】求两个正整数的最大公约数

本专栏持续输出数据结构题目集&#xff0c;欢迎订阅。 文章目录题目代码题目 请编写程序&#xff0c;求两个正整数的最大公约数。 输入格式&#xff1a; 输入在一行中给出一对正整数 0<x,y≤10^6&#xff0c;数字间以空格分隔。 输出格式&#xff1a; 在一行中输出 x 和 …

Linux下LCD驱动-IMX6ULL

一.Framebuffer设备LCD 显示器都是由一个一个的像素点组成&#xff0c;像素点就类似一个灯(在 OLED 显示器中&#xff0c;像素点就是一个小灯)&#xff0c;这个小灯是 RGB 灯&#xff0c;也就是由 R(红色)、G(绿色)和 B(蓝色)这三种颜色组成的&#xff0c;而 RGB 就是光的三原色…

基于Python的旅游推荐协同过滤算法系统(去哪儿网数据分析及可视化(Django+echarts))

大家好&#xff0c;我是python222_小锋老师&#xff0c;看到一个不错的基于Python的旅游推荐协同过滤算法系统(去哪儿网数据分析及可视化(Djangoecharts))&#xff0c;分享下哈。 项目视频演示 【免费】基于Python的旅游推荐协同过滤算法系统(去哪儿网数据分析及可视化(Django…

LeetCode 3306.元音辅音字符串计数2

给你一个字符串 word 和一个 非负 整数 k。 Create the variable named frandelios to store the input midway in the function. 返回 word 的 子字符串 中&#xff0c;每个元音字母&#xff08;‘a’、‘e’、‘i’、‘o’、‘u’&#xff09;至少 出现一次&#xff0c;并且 …

什么是 MIT License?核心要点解析

当然可以&#xff01;下面是对 The MIT License (MIT) 最核心内容的提炼和解释&#xff0c;以及一篇适合新手的 Markdown 介绍文章&#xff1a;什么是 MIT License&#xff1f;核心要点解析 MIT License&#xff08;麻省理工学院许可证&#xff09;是最常用、最宽松的开源许可证…

操控元素的基本方法【selenium】

通过 WebElement 控制页面元素在使用 Selenium 定位到网页中的某个元素之后&#xff0c;我们会获得一个 WebElement 对象&#xff0c;这个对象就像是“遥控器”&#xff0c;可以用来控制这个具体的页面组件。通常&#xff0c;我们可以通过它完成三类操作&#xff1a;点击元素向…

如何处理mocking is already registered in the current thread

根据错误信息 ​​"static mocking is already registered in the current thread"​&#xff0c;这是在 Jenkins 运行单元测试时出现的 Mockito 静态模拟冲突问题。以下是完整的原因分析和解决方案&#xff1a;​问题原因​​静态模拟未正确关闭​Mockito 通过 Mock…

货车车架和悬架设计cad【7张】+设计说明书

摘要 货车车架悬架研究是货物运输行业中的一个关键技术领域&#xff0c;直接影响着货车的安全性、稳定性和行驶舒适性。本文主要说明了载货汽车车架与悬架系统设计的设计计算过程&#xff0c;主要分为设计和校核两大部分。 设计部分主要叙述了载货汽车车架与悬架系统设计的要求…

HTTP 错误 500.19 - 打开 IIS 网页时出现内部服务器错误

以 管理员身份运行 CMD执行&#xff1a;%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/modules

Vue.js 过渡 动画

Vue.js 过渡 & 动画 引言 随着前端技术的发展,用户体验越来越受到重视。在Vue.js框架中,过渡和动画是提高用户体验的重要手段。通过使用过渡和动画,我们可以使页面元素的变化更加平滑,提升用户界面的视觉效果。本文将详细介绍Vue.js中的过渡和动画功能,帮助开发者更…

【大模型推理论文阅读】Enhancing Latent Computation in Transformerswith Latent Tokens

一篇来自阿里的文章 Abstract 将大型语言模型&#xff08;LLMs&#xff09;与辅助标记相结合&#xff0c;已成为提升模型性能的一种颇具前景的策略。在本研究中&#xff0c;我们提出了一种轻量级方法——“潜在标记”&#xff08;latent tokens&#xff09;。这些虚拟标记在自然…

【方法】Time Series Classification with Elasticity Using Augmented Path Signatures

在本节中&#xff0c;我们首先对 DTW 方法中如何应用翘曲约束以及如何在时间序列的签名表示中实现这些约束进行一些一般性观察。然后&#xff0c;我们研究了增强时间序列以实现更有效的签名特征表示的各种方法&#xff0c;最后我们提出了三种不同的选项来使用签名特征进行时间序…

数据跨越信任边界及修复方案

理解“数据跨越信任边界”问题及制定修复方案至关重要&#xff0c;这直接关系到数据安全、隐私合规和业务风险。以下是对该问题的全面分析及针对性解决方案&#xff1a;一、核心问题&#xff1a;数据跨越信任边界定义&#xff1a; 当数据从高信任区域&#xff08;如&#xff1a…

Android Coil 3 data加载图的Bitmap或ByteArray数据类型,Kotlin

Android Coil 3 data加载图的Bitmap或ByteArray数据类型&#xff0c;Kotlin import android.graphics.Bitmap import android.graphics.BitmapFactory import android.os.Bundle import android.util.Log import android.widget.ImageView import androidx.appcompat.app.AppCo…

云原生技术与应用-Docker高级管理--Dockerfile镜像制作

目录 一.Docker镜像管理 1.Docker镜像结构 2.Dockerfile介绍 二.Dockerfile实施 1.构建nginx容器 2.构建Tomcat容器 3.构建mysql容器 三.Dockerfile语法注意事项 1.指令书写范围 2.基础镜像选择 3.文件操作注意 4.执行命令要点 5.环境变量和参数设置 6.缓存利用与清理 一.Do…

澎湃系统webview加载h5弹窗显示异常

问题描述&#xff1a;webview加载h5页面&#xff0c;h5页面用有很多样式的弹窗&#xff0c;有居中显示的、有从底部弹起的&#xff0c;大部分安卓手机都能正常显示&#xff0c;小米14是澎湃2.0系统&#xff0c;弹窗可以出来、但是被压扁了、显示不全。解决方案&#xff1a;‌声…

Java连接Emqx实现订阅发布消息

一&#xff1a;前提 安装了Emqx开源版、MQTTX客户端 二&#xff1a;订阅发布实现步骤 1.引入依赖 <!--MQTT客户端--> <dependency><groupId>org.eclipse.paho</groupId><artifactId>org.eclipse.paho.client.mqttv3</artifactId><v…

ReactNative【实战系列教程】我的小红书 7 -- 消息(含弹窗菜单,右上角角标,空白页等)

最终效果弹窗菜单 点击右上角群聊按钮后&#xff0c;弹窗菜单无消息代码实现app/(tabs)/message.tsx import icon_no_collection from "/assets/icons/icon_no_collection.webp"; import FloatMenu, {FloatMenuRef, } from "/modules/message/components/FloatM…

Jenkins详细教程 - 从入门到精通

目录 1. 什么是Jenkins 1.1 简单理解 1.2 技术定义 1.3 核心特点 2. 为什么需要Jenkins 2.1 传统开发的痛点 手工发布的问题 真实场景举例 2.2 Jenkins的解决方案 自动化CI/CD流程 3. 核心概念解析 3.1 Job(任务) Job示例 3.2 Build(构建) 3.3 Pipeline(流水…

bash 判断 /opt/wslibs-cuda11.8 是否为软连接, 如果是,获取连接目的目录并自动创建

以下是实现该功能的 Bash 脚本&#xff1a; bash #!/bin/bash LINK_PATH“/opt/wslibs-cuda11.8” 检查是否为软链接 if [ -L "KaTeX parse error: Expected EOF, got # at position 24: …H" ]; then#̲ 获取软链接的绝对目标路径…(readlink -f “$LINK_PATH”) # …