# Function Calling

## 什麼是 Function Calling？

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

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

<figure><img src="/files/92xjvgViFVAaRhQTfMuF" 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 應用。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.maiagent.ai/tech/advanced-genai-tech/function-calling.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
