PILLAR 02 · Google AI Studio & Gemini

Gemini Function Calling 完整教學:讓 AI 接你公司系統

從 Hello World 到並行多 Tool 呼叫的完整實作,含 ERP/CRM 整合範例。

PUBLISHED
2026-05-20
READ TIME
12 min
CATEGORY
PILLAR 02
UPDATED
2026-09-27
KEY TAKEAWAY · 一句話結論

Function Calling 是讓 AI 在回答前呼叫你的程式(如查訂單、查庫存)的技術,是 LLM 從聊天機器人升級為能執行任務的 Agent 的關鍵;流程是你定義工具清單、AI 判斷並回傳要呼叫的函式與參數、你執行後把結果交回 AI 生成回答。Gemini 2.5 只要把 Python 函式放進 tools 即可使用,且支援並行呼叫多個工具,比序列快 50%。

發布 2026-05-20 · 最後更新 2026-09-27 · 作者 賴家榮 Andy Lai

Function Calling 是 LLM 從「聊天機器人」升級到「能執行任務的 Agent」的關鍵技術。這篇從 Hello World 到並行多 Tool 呼叫,完整教學。

Function Calling 是什麼?

讓 AI 在回答前可以「呼叫你的程式」。例如用戶問「我的訂單到哪了?」,AI 不能猜,但可以呼叫您的 查訂單(訂單號) 函式,拿到結果後再回答。

流程

  1. 你定義「工具清單」(函式名、參數、回傳格式)
  2. AI 看用戶提問,判斷該不該呼叫工具
  3. 如果該呼叫,AI 回傳「我要呼叫 OO,參數 OO」
  4. 你的程式執行這個函式,把結果回傳給 AI
  5. AI 用結果產生自然語言回答

Hello World

from google import genai
from google.genai import types

client = genai.Client(api_key="YOUR_KEY")

# 1. 定義工具
def get_weather(city: str) -> str:
    # 實際應該呼叫氣象 API
    return f"{city}今天 28°C,多雲"

# 2. 把工具給 Gemini
config = types.GenerateContentConfig(
    tools=[get_weather]
)

response = client.models.generate_content(
    model='gemini-2.5-flash',
    contents='高雄今天天氣?',
    config=config
)
print(response.text)

實戰:AI 接 ERP 查庫存

def query_inventory(sku: str) -> dict:
    """查詢產品庫存
    Args:
        sku: 產品料號
    Returns:
        含庫存數量、預計補貨日期
    """
    # 呼叫公司 ERP API
    result = requests.get(f'https://erp.company.com/api/sku/{sku}').json()
    return {
        'stock': result['quantity'],
        'restock_date': result['next_restock']
    }

def query_price(sku: str, customer_tier: str) -> dict:
    """查詢報價(含客戶分級折扣)"""
    # ...
    return {'price': 1200, 'discount': '8 折'}

config = types.GenerateContentConfig(
    tools=[query_inventory, query_price],
    system_instruction="你是專業業務助理,必要時呼叫工具查資料,回答務必準確。"
)

response = client.models.generate_content(
    model='gemini-2.5-flash',
    contents='SKU-A123 還有貨嗎?金級客戶報價多少?',
    config=config
)

並行多 Tool 呼叫

Gemini 2.5 支援同時呼叫多個 Tool。上例的「SKU-A123 還有貨嗎?金級客戶報價多少?」會同時呼叫 query_inventory 和 query_price,比序列呼叫快 50%。

進階:強制 / 禁止呼叫工具

config = types.GenerateContentConfig(
    tools=[query_inventory],
    tool_config=types.ToolConfig(
        function_calling_config=types.FunctionCallingConfig(
            mode='ANY'  # 強制呼叫工具
            # mode='NONE' 禁止呼叫
            # mode='AUTO' 預設,AI 自己決定
        )
    )
)

實戰建議

  1. 工具名稱與描述要清楚:AI 看不到實作,只看名稱與 docstring
  2. 參數明確:用 type hint 與 docstring 寫清楚
  3. 回傳結構化:用 dict 比 string 容易處理
  4. 錯誤處理:工具出錯要回傳 {'error': '...'},AI 會嘗試處理
  5. 權限驗證:每個 Tool 都要驗證呼叫者權限

常見錯誤

  • 工具描述太模糊 → AI 不會用 / 用錯時機
  • 沒做權限檢查 → AI 可能洩漏跨用戶資料
  • 工具回傳太大 → AI 處理慢且貴
  • 多次 round-trip 沒設上限 → 可能無限迴圈

場景:什麼時候該用 Function Calling?

  • 需要查即時資料(庫存、訂單、價格)
  • 需要寫入資料(建單、修改、寄信)
  • 需要呼叫外部服務(地圖、翻譯、計算)
  • 需要複雜邏輯(AI 不擅長算數時呼叫計算器)

常見問題

Function Calling 是什麼?跟一般聊天機器人有什麼不同?

Function Calling 是讓 AI 在回答前可以呼叫你的程式的技術。例如用戶問「我的訂單到哪了」,AI 不能用猜的,但可以呼叫你的查訂單函式,拿到結果後再回答。這正是 LLM 從只能聊天的機器人升級到能執行任務的 Agent 的關鍵。

Function Calling 的運作流程是怎樣?

分五步:一、你定義工具清單,包含函式名、參數與回傳格式;二、AI 看用戶提問判斷該不該呼叫工具;三、如果該呼叫,AI 回傳「我要呼叫哪個函式、參數是什麼」;四、你的程式執行該函式並把結果回傳給 AI;五、AI 用結果產生自然語言回答。在 Gemini 中只要把 Python 函式放進 GenerateContentConfig 的 tools 參數即可。

Gemini 可以同時呼叫多個工具嗎?

可以。Gemini 2.5 支援並行多 Tool 呼叫,例如用戶問「SKU-A123 還有貨嗎?金級客戶報價多少?」,AI 會同時呼叫 query_inventory 與 query_price 兩個函式,文章指出這比序列呼叫快 50%。另外可透過 tool_config 的 mode 設定 ANY 強制呼叫、NONE 禁止呼叫或 AUTO 由 AI 自行決定。

什麼情境適合用 Function Calling?

文章列出四類:需要查即時資料(庫存、訂單、價格)、需要寫入資料(建單、修改、寄信)、需要呼叫外部服務(地圖、翻譯、計算),以及需要複雜邏輯時(例如 AI 不擅長算數就呼叫計算器)。文章的實戰範例是讓 AI 接公司 ERP 查庫存與報價。

實作 Function Calling 常見的錯誤有哪些?

四個常見錯誤:工具描述太模糊導致 AI 不會用或用錯時機;沒做權限檢查導致 AI 可能洩漏跨用戶資料;工具回傳內容太大讓 AI 處理慢且貴;多次 round-trip 沒設上限可能形成無限迴圈。作者建議工具名稱與 docstring 要清楚、參數用 type hint 明確定義、回傳用 dict 結構化、出錯時回傳 error 欄位,且每個 Tool 都要驗證呼叫者權限。


RELATED ARTICLES

延伸閱讀。

延伸工具

LAST STEP

給我 30 分鐘,
告訴我你的業務。

我直接告訴你:你公司最該先用 AI 的 3 個地方、大概花多少預算、能不能用政府補助降低成本。

SOUTH TAIWAN AI WEEKLY

每週一封,南台灣中小企業
AI 應用週報。

賴家榮親自整理:本週最值得看的 AI 應用案例、補助公告、課程開班資訊。免費、可隨時退訂。

我們不分享您的 Email · 可隨時退訂

📞 立即撥打 預約免費診斷