Function Call大模型的理解(大白話版本)

由來---場景設計

你雇了一位?超級聰明的百科全書管家(就是大模型,比如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”) # …