載入中

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

上圖展示了我們將要實作的三個基本工具:取得目前日期/時間、為日期加上時間長度,以及設定提醒。讓我們從第一個開始。

什麼是工具函式?

工具函式是一個普通的 Python 函式,當 Claude 判斷需要額外資訊來協助使用者時,會自動執行該函式。例如,如果有人問「現在幾點?」,Claude 會呼叫您的日期/時間工具來取得目前時間。

這是一個天氣工具函式的範例。請注意它如何驗證輸入並提供清楚的錯誤訊息——這些都是重要的最佳實務。

工具函式的最佳實務

撰寫工具函式時,請遵循以下準則:

  • 使用具描述性的名稱: 您的函式名稱和參數名稱都應清楚表明其用途
  • 驗證輸入: 檢查必要參數是否為空或無效,若是則引發錯誤
  • 提供有意義的錯誤訊息: Claude 可以看到錯誤訊息,並可能以修正後的參數重試函式呼叫

驗證特別重要,因為 Claude 會從錯誤中學習。如果您引發一個清楚的錯誤,例如「Location cannot be empty」(位置不能為空),Claude 可能會嘗試以正確的位置值再次呼叫該函式。

建構您的第一個工具函式

讓我們建立一個取得目前日期和時間的函式。這個函式將接受一個日期格式參數,讓 Claude 可以要求以不同格式取得時間:

python
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)

這個函式使用 Python 的 datetime 模組來取得目前時間,並依照提供的格式字串進行格式化。預設格式會給我們年-月-日 時:分:秒。

您可以用不同的格式來測試它:

python
# 預設格式:「2024-01-15 14:30:25」
get_current_datetime()

# 僅小時與分鐘:「14:30」
get_current_datetime("%H:%M")

這個驗證檢查確保 Claude 無法傳入空字串作為日期格式。雖然這個特定錯誤不太可能發生,但它展示了驗證輸入並提供有用錯誤訊息的模式,讓 Claude 能從中學習。

後續步驟

建立函式只是第一步。接下來,您需要撰寫一個 JSON schema 來向 Claude 描述該函式,然後將其整合到您的聊天系統中。這種工具函式的做法讓 Claude 擁有強大的能力,同時讓您的程式碼保持組織性和可維護性。