GLM 4.5 作為一款具備 Agent 能力的高階大型語言模型(LLM),透過函數呼叫功能將自動化與智慧決策提升到全新層級。透過函數呼叫,GLM 4.5 能與外部工具和 API 互動、執行操作、檢索資料,並自動化複雜工作流程——遠不止是一款純對話模型。
然而,整合與排查函數呼叫相關問題可能颇具挑戰。本文提供實用指南與解決方案,針對使用 GLM 4.5 函數呼叫時可能遇到的常見問題(例如解析器錯誤、不正確的輸出格式、或 Schema 設計陷阱)給出對策。透過清晰的範例、排查提示與最佳實踐,本文能幫助你快速識別並解決問題,讓你在實際應用中充分釋放 GLM 4.5 的 Agent 潛力。
函數呼叫能幫助 GLM 4.5 實現哪些更好的結果?
函數呼叫是 GLM 4.5 等大型語言模型引入的強大功能,它能讓模型以可控、可靠的方式與外部工具、API 或結構化程式碼互動。以下是函數呼叫為 GLM 4.5 帶來的主要優勢與改進效果:
https://www.youtube.com/watch?v=KUEmEb71vzQ
1. 更準確可靠的輸出
- 提升事實準確性: 透過將計算、資料查詢、資料庫查詢等任務委派給外部函數,GLM 4.5 能避免純文字回答中常見的錯誤。
- 減少幻覺: 模型依賴 API 或函數返回的驗證結果,降低產生不正確或虛構資訊的機率。
2. 複雜任務自動化
- 任務鏈接: GLM 4.5 能將使用者請求拆解為多個步驟,為每個步驟呼叫對應的函數,並合併結果。
- 工作流程自動化: 它能透過協調一系列函數呼叫,自動化多步驟業務流程、資料處理或報告生成任務。
3. 強化與真實系統的整合
- 存取即時資料: 透過函數呼叫,模型能從資料庫、網路服務或物聯網設備獲取即時資訊,讓回覆更符合時效且具備情境感知能力。
- 自訂操作: 企業可定義自訂函數(例如發送郵件、下單),讓模型能安全執行領域特定的操作。
4. 提升使用者體驗
- 互動式應用: 使用者能像使用應用程式一樣與模型互動,模型會透明地觸發後端函數。
- 個人化: 函數能獲取使用者特定的資料或設定,實現個人化回覆。
5. 更好的錯誤處理與可解釋性
- 透明推理: 函數呼叫能追蹤使用了哪些外部資源或工具,讓模型的推理過程更易於審計。
- 可控執行: 開發人員能監控並限制模型可呼叫的函數,提升安全性和可預測性。
GLM-4.5 函數呼叫的限制有哪些?
1. 過度呼叫
GLM-4.5 有時可能會對外部工具或 API 進行過度或無必要的呼叫。這會增加 Token 消耗與運營成本,因為會消耗更多運算資源,卻不一定能提升最終結果的品質。
2. 串流邊緣情況
在串流模式下,如果完整回覆完成前就發送了部分 JSON 資料,下游應用程式可能會收到不完整的資訊。若沒有正確的緩衝處理,可能導致輸出處理時出現錯誤或失敗。
3. 資源佔用
對於函數呼叫而言,有限的硬體資源會影響模型高效處理大量請求、處理複雜資料或執行複雜工具呼叫鏈的能力。在資源受限的環境中,函數呼叫的性能與準確性可能會明顯下降。
使用 GLM-4.5 函數呼叫的優勢
針對 GLM-4.5 的 Agent 編碼能力進行了一項獨立評估,使用 Claude Code 完成 52 個多元編碼任務,包括前端開發、工具建立、資料分析、測試和算法實現。GLM-4.5 達到了領先的 90.6% 工具呼叫成功率,優於 Claude-4-Sonnet(89.5%)、Kimi K2(86.2%)和 Qwen3-Coder(77.1%)。

新手教程:如何在 GLM-4.5 中使用函數呼叫
本指南將演示如何使用函數呼叫獲取使用者指定位置的當前天氣資訊。我們將透過完整的 Python 程式碼範例逐步講解。
函數呼叫的具體 API 格式請參考官方文件!

- 初始化客戶端
首先,你需要使用你的 Novita API 金鑰初始化客戶端。
from openai import OpenAI
import json
client = OpenAI(
base_url="https://api.novita.ai/v3/openai",
# 從此處獲取 Novita AI API 金鑰:https://novita.ai/settings/key-management。
api_key="<YOUR Novita AI API Key>",
)
model = "zai-org/glm-4.5"
- 定義要呼叫的函數
接下來,定義模型可以呼叫的 Python 函數。本範例中是一個獲取天氣資訊的函數。
# 範例函數:模擬獲取天氣資料。
def get_weather(location):
"""獲取指定位置的當前天氣。"""
print("呼叫 get_weather 函數,位置參數:", location)
# 在實際應用中,你會在這裡呼叫外部天氣 API。
# 這是簡化範例,返回硬編碼的資料。
return json.dumps({"location": location, "temperature": "60 華氏度"})
- 構建包含工具和使用者訊息的 API 請求
現在,建立發送到 Novita 端點的 API 請求。這個請求包含 tools 參數,用於定義模型可以使用的函數,以及使用者的訊息。
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "獲取指定位置的天氣,使用者需要先提供位置",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "城市與州,例如 San Francisco, CA",
}
},
"required": ["location"]
},
}
},
]
messages = [
{
"role": "user",
"content": "舊金山的天氣怎麼樣?"
}
]
# 發送請求並列印回覆。
response = client.chat.completions.create(
model=model,
messages=messages,
tools=tools,
)
# 正式環境中請檢查回覆是否包含工具呼叫。
tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.model_dump())
- 輸出
{'id': '0', 'function': {'arguments': '{"location": "San Francisco, CA"}', 'name': 'get_weather'}, 'type': 'function'}
- 回傳函數呼叫結果並取得最終回覆
下一步是處理函數呼叫、執行 get_weather 函數,並將結果回傳給模型以生成給使用者的最終回覆。
# 確保 tool_call 已在上一步中定義
if tool_call:
# 將助理的工具呼叫訊息加入對話歷史
messages.append(response.choices[0].message)
function_name = tool_call.function.name
if function_name == "get_weather":
function_args = json.loads(tool_call.function.arguments)
# 執行函數並獲取回覆
function_response = get_weather(
location=function_args.get("location"))
# 將函數回覆加入訊息列表
messages.append(
{
"tool_call_id": tool_call.id,
"role": "tool",
"content": function_response,
}
)
# 取得模型的最終回覆,此時已包含函數執行結果
answer_response = client.chat.completions.create(
model=model,
messages=messages,
# 注意:此處不要包含 tools 參數。
)
print(answer_response.choices[0].message)
- 輸出
{'id': '0', 'function': {'arguments': '{"location": "San Francisco, CA"}', 'name': 'get_weather'}, 'type': 'function'}
Novita AI 現已支援 Anthropic SDK 相容性
GLM-4.5 與 Claude Code 的結合在 AI 社群中迅速獲得關注,為實際應用提供先進的 Agent 能力。為進一步簡化整合流程,Novita AI 現已支援 Anthropic SDK 相容性,讓你可以透過熟悉的 Claude Code 介面輕鬆使用 GLM-4.5 的強大功能。
你可以查看此文件獲取更多詳細資訊!
1. 安裝 Anthropic SDK
pip install anthropic
2. 初始化客戶端
Anthropic SDK 設計為從環境變數 ANTHROPIC_API_KEY 和 ANTHROPIC_BASE_URL 中讀取 API 金鑰和基礎 URL,你也可以在初始化 Anthropic 客戶端時直接傳入這些參數。
你可以在設定頁面查看和管理你的 API 金鑰。
- 使用環境變數
export ANTHROPIC_BASE_URL="https://api.novita.ai/anthropic"
export ANTHROPIC_API_KEY="<YOUR_NOVITA_API_KEY>"
- 在初始化 Anthropic 客戶端時設定參數
import anthropic
client = anthropic.Anthropic(
base_url="https://api.novita.ai/anthropic",
api_key="<YOUR_NOVITA_API_KEY>"
)
3. 呼叫 API
import anthropic
# 初始化客戶端,如果你已經在環境變數中設定 `ANTHROPIC_BASE_URL` 和 `ANTHROPIC_API_KEY`,可以省略 `api_key` 和 `base_url` 參數。
client = anthropic.Anthropic(
base_url="https://api.novita.ai/anthropic",
api_key="<YOUR_NOVITA_API_KEY>"
)
message = client.messages.create(
model="zai-org/glm-4.5",
max_tokens=1000,
temperature=1,
system="你是一位世界級詩人,只回覆短詩。",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "為什麼海水是鹹的?"
}
]
}
]
)
print(message.content)
如何提升 GLM-4.5 函數呼叫的準確性
1. Schema 清晰度
- 含義: 使用簡短、唯一的參數名稱,在解析器更穩健前避免嵌套
anyOf。 - 解決的問題:
- 避免參數混淆與命名衝突,讓模型更容易正確填入參數。
- 減少因過於複雜的 Schema 導致的解析錯誤和函數呼叫失敗。
2. 系統提示詞
- 含義: 指示模型「先判斷是否需要使用工具,不需要則直接回答」。
- 解決的問題:
- 減少不必要或過度的工具/函數呼叫(過度呼叫)。
- 幫助節省運算資源與運營成本。
3. 溫度 ≤ 0.2
- 含義: 將溫度參數設定為 0.2 或更低。
- 解決的問題:
- 降低輸出隨機性,確保行為更可預測、一致。
- 避免 Schema 漂移,讓模型遵循預設的參數結構,減少錯誤。
4. 使用 tool_choice="required"
- 含義: 當使用者明確請求函數呼叫時設定此選項。
- 解決的問題:
- 確保模型一定會執行要求的函數呼叫,提升可靠性和使用者滿意度。
5. 謹慎使用並行呼叫
- 含義: 僅對真正獨立的函數進行並行處理,否則依序生成呼叫。
- 解決的問題:
- 避免呼叫間的參數混合或邏輯不一致。
- 確保每個呼叫都能獲得正確的上下文和輸入,得到更準確的結果。
排查 GLM-4.5 函數呼叫錯誤
| 症狀 | 可能原因 | 修復/解決方案 |
|---|---|---|
| IndexError: list index out of range in parser | 使用預設解析器;GLM ID 格式不同。 | 啟動服務時加上 --tool-call-parser glm4_moe 參數。 |
| 隨機文字混雜在 JSON 中 | 溫度過高或缺少 tool_choice。 |
降低溫度;將 tool_choice 設定為 "auto" 或 "required"。 |
| 無窮工具遞歸 | 模型幻覺重複呼叫。 | 在宿主邏輯中追蹤已執行的呼叫,終止重複呼叫。 |
| OOM / 資源不足 | FP8 版本仍超出 Triton 核心的共享記憶體。 | 降低 num_stages 或切換為 Int4-Int8-Mix 量化。 |
| 未發出呼叫 | 工具 Schema 過於模糊。 | 新增嚴格的 required 列表和明確的列舉值。 |
函數呼叫能將 GLM 4.5 從純對話模型轉型為能即時執行任務、自動化流程的智慧 Agent。透過了解常見問題及其解決方案(例如解析器錯誤、JSON 格式問題、或 Schema 設計問題),你可以確保整合順暢,充分發揮 GLM 4.5 的 Agent 能力。希望本文能釐清你的常見疑問,讓你能有信心部署 GLM 4.5 函數呼叫。
常見問題
為什麼函數呼叫對 GLM 4.5 作為 Agent 型 LLM 如此重要? 函數呼叫能讓 GLM 4.5 以程式化方式與外部服務、資料庫和工具互動,實現自動化、多步驟推理、資訊檢索,以及超越文字生成的真實世界操作。
如何避免無窮遞歸或重複工具呼叫? 實現宿主端邏輯來追蹤並終止重複的函數呼叫,防止無限迴圈。
確保能發出函數呼叫的 Schema 設計最佳實踐有哪些? 使用簡潔、唯一的參數名稱,提供明確的列舉值,並定義必要參數,讓 Schema 對模型來說清晰易懂。
Novita AI 是全方位雲端平台,助力你實現 AI 抱負。整合 API、無伺服器、GPU 實例——你需要的成本效益工具。免除基礎設施煩惱,免費開始,讓你的 AI 願景成為現實。
