# Function Calling

## 什麼是 Function Calling？

Function Calling (函式呼叫) 是指大型語言模型 (LLM) 在與使用者互動或處理任務的過程中，能夠理解何時需要執行外部程式碼或 API (我們稱之為 "工具" 或 "函式")，並能以結構化的格式 (通常是 JSON) 準確輸出所需呼叫的函式名稱及其參數。

重要的是，LLM 本身並不直接執行這些函式，僅負責「決定」需要哪個函式以及用什麼參數呼叫它。實際的函式執行是由呼叫端程式來完成，然後再將執行結果回傳給 LLM，以便模型可以利用這些資訊來生成更精確、更相關的回應或接續完成更複雜的任務。

<figure><img src="https://527168072-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F38pkhhqHl1oA6yyE9R2n%2Fuploads%2Fgit-blob-174638479c334f8fa77665a8f7c7d488a7e620d3%2Ffc2.png?alt=media" alt=""><figcaption><p>RAG 流程</p></figcaption></figure>

## Function Calling 的運作原理

Function Calling 的運作流程通常包含以下幾個關鍵步驟，形成一個動態的互動循環：

### 1. 意圖識別與結構化指令生成

* 使用者透過自然語言提出請求
* LLM 解析請求並理解使用者意圖
* 判斷是否需要呼叫外部函式
* 生成包含函式名稱和參數的結構化輸出（JSON 格式）
* 模型本身不執行任何函式

### 2. 外部函式執行

* 應用程式接收 LLM 生成的結構化指令
* 根據函式名稱和參數執行對應的外部函式
* 可能涉及：
  * 資料庫查詢
  * 第三方服務呼叫
  * 計算操作

### 3. 結果回傳與整合

* 外部函式執行完成
* 結果回傳給應用程式
* 應用程式將結果傳遞給 LLM

### 4. 生成最終回應或進一步行動

* LLM 接收函式執行結果
* 將資訊整合到上下文中
* 生成最終自然語言回答
* 或決定是否需要呼叫下一個函式

這個閉環流程使得 LLM 從一個單純的文本生成器，轉變為能夠與外部世界互動、獲取即時資訊並執行實際操作的智慧代理。

## Function Calling 的核心用途與價值

Function Calling 為 LLM 應用帶來了革命性的改變，使其更加實用和強大：

### 1. 即時與動態資料的擷取與整合

#### 應用

* 自動呼叫外部 API 獲取最新數據
  * 天氣查詢
  * 股票市場
  * 即時新聞
  * 產品庫存
* 避免依賴訓練資料的知識截止問題

#### 價值

* 確保資訊的時效性和準確性
* 提升使用者信任度

### 2. 複雜業務流程的自動化

#### 應用

* 適用場景
  * 客戶服務
  * 電子商務
  * 企業內部系統
* 自動化操作
  * 訂單查詢
  * 商品推薦
  * 預約安排
  * 問題解答
  * 退貨申請
  * 建立工單

#### 價值

* 提升工作效率
* 降低人工成本
* 提供 24/7 即時服務
* 改善使用者體驗

### 3. 多步驟任務的智慧代理與協調

#### 應用

* 處理複雜任務範例：
  * 旅遊規劃
  * 機票預訂
  * 飯店推薦
  * 行程排程
* 智慧調度多個函式
  * 機票 API
  * 飯店 API
  * 地圖服務
  * 日曆 API

#### 價值

* 實現端到端任務自動化
* 處理複雜使用者需求

### 4. 賦予 LLM 結構化操作能力

#### 應用

* 自然語言轉換為結構化操作
  * Text-to-SQL 查詢

#### 價值

* 讓非技術使用者能透過自然語言與複雜系統互動

## Function Calling 的常見應用場景

| 類別           | 應用場景舉例                        | 核心特色與優勢                    |
| ------------ | ----------------------------- | -------------------------- |
| **資訊檢索與問答**  | AI 助理即時查詢公司最新政策、法律條文、產品規格     | 保證回答內容的即時性、準確性與來源可靠性       |
| **自動化工作流程**  | 電商客服自助查詢訂單狀態、發起退款、自動建立售後工單    | 透過一問一答即可觸發後端系統的標準化流程，提升效率  |
| **數據分析與視覺化** | 根據使用者指令呼叫計算機、統計函式庫、圖表生成 API   | 實現自然語言驅動的數據運算、分析與結果的視覺化呈現  |
| **外部系統整合**   | LLM 控制智能家居設備、操作企業內部軟體、發送郵件/訊息 | 將 LLM 的理解能力延伸至實際的系統操作與硬體控制 |
| **內容生成輔助**   | 呼叫 SEO 工具優化文章、檢查語法、生成圖片/代碼片段  | 結合外部工具強化 LLM 在特定領域的內容生成品質  |

## MaiAgent Function Calling 的獨特優勢

選擇 MaiAgent 平台來實現和管理 Function Calling 功能，將為您的應用帶來以下關鍵優勢：

1. **強大而靈活的工具管理**：\
   MaiAgent 提供直觀易用的界面和 API，讓您輕鬆註冊、配置和管理您的外部函式 (工具)。您可以詳細定義每個工具的名稱、描述、輸入參數 (包含類型、是否必需、描述等) 以及預期的輸出格式。
2. **可靠的結構化參數生成**：\
   MaiAgent 確保 LLM 能夠根據工具定義，可靠地生成符合 JSON Schema 或其他指定格式的參數，減少因格式錯誤導致的函式執行失敗。
3. **無縫的開發與整合體驗**：\
   MaiAgent 提供直覺且使用者友善的介面，讓使用者無需編寫程式碼即可輕鬆介接，快速設定和配置所需的函式呼叫工具，提升效率

## 總結

Function Calling 技術將 LLM 從一個被動的「知識問答機」提升為一個主動的「任務執行者」和「智慧代理」，透過標準化的介面將 LLM 的強大自然語言理解能力與外部世界的具體執行能力完美結合，為開發者開闢了無限的應用創新空間。

MaiAgent 憑藉工具管、開發整合及平台穩定性方面的優勢，提供了理想的 Function Calling 解決方案，助您輕鬆打造出更智慧、更強大、更能解決實際問題的 AI Agent 應用。
