在使用 Claude 建構 AI 應用程式時,您經常需要讓它能夠存取即時資訊或執行動作的能力。這正是工具函式發揮作用的地方——它們是 Python 函式,當 Claude 需要額外資料來協助使用者時,可以呼叫這些函式。

上圖顯示了我們將要實作的三個基本工具:取得目前日期/時間、為日期增加時長,以及設定提醒。讓我們從第一個開始。
什麼是工具函式?
工具函式是一個普通的 Python 函式,當 Claude 判斷需要額外資訊來完成任務時,會自動執行該函式。例如,如果使用者詢問「現在幾點?」,Claude 會呼叫您的日期/時間工具來取得目前時間。

這是一個天氣工具函式的範例。請注意它如何驗證輸入並提供清晰的錯誤訊息——這些都是我們將遵循的關鍵最佳實踐。
工具函式的最佳實踐
撰寫工具函式時,請記住以下準則:
- 使用具描述性的名稱: 您的函式名稱和參數名稱都應清楚表明其用途
- 驗證輸入: 始終檢查必要參數是否存在且有效
- 提供有意義的錯誤訊息: 如果 Claude 遇到錯誤,它可能會嘗試使用修正後的參數再次呼叫您的函式
錯誤處理特別重要,因為 Claude 可以從失敗中學習。如果您回傳像「Location cannot be empty」這樣清晰的錯誤訊息,Claude 可能會使用正確的位置值重試該函式呼叫。
建構您的第一個工具函式
讓我們建立一個取得目前日期和時間的函式。此函式將接受一個格式字串來控制日期的顯示方式:
def get_current_datetime(date_format="%Y-%m-%d %H:%M:%S"):
if not date_format:
raise ValueError("date_format cannot be empty")
return datetime.now().strftime(date_format)預設格式字串 "%Y-%m-%d %H:%M:%S" 會產生類似「2024-03-15 14:30:45」的輸出。您可以透過傳入不同的格式字串來自訂此輸出:
# 僅取得時間
get_current_datetime("%H:%M") # Returns "14:30"
# 取得不同的日期格式
get_current_datetime("%B %d, %Y") # Returns "March 15, 2024"輸入驗證
驗證檢查 if not date_format: 確保我們不會嘗試使用空字串來格式化日期。雖然 Claude 很少犯這種錯誤,但提供清晰的錯誤訊息有助於 AI 理解出了什麼問題以及如何修正。
當 Claude 遇到錯誤時,它會看到確切的錯誤訊息。這個回饋循環讓 Claude 能夠調整其方法,並使用修正後的參數再次嘗試。
後續步驟
這個工具函式只是第一步。接下來,您需要建立一個 JSON schema 來向 Claude 描述此函式,然後將其整合到您的聊天系統中。函式本身是直接了當的 Python 程式碼——複雜之處在於如何正確地將其連接到 Claude 的工具呼叫系統。