載入中

為 Claude 建構工具需要解決幾個並非顯而易見的挑戰。當您想讓 Claude 為未來日期設定提醒時,您很快就會發現,雖然 Claude 知道目前的日期,但它並不總是知道確切的時間,在複雜的日期運算方面也有困難,而且沒有內建的方式來實際設定提醒。

解決方案是建立能處理這些特定任務的自訂工具。對於提醒系統,您需要三個獨立的工具:一個用於取得目前的日期和時間,另一個用於將時長加到日期上,第三個則用於實際設定提醒。

為何這具有挑戰性

Claude 在處理與時間相關的任務時有一些限制:

  • Claude 可能知道目前的日期,但不知道確切的時間
  • Claude 並不總是能妥善處理基於時間的加法運算,尤其是在展望未來許多天時
  • Claude 不知道如何設定提醒

您需要的工具

為了解決這些問題,您將建立三個專用工具:

  • 取得目前的日期時間 - Claude 需要知道目前的日期和時間
  • 將時長加到日期時間上 - Claude 在日期時間加法運算方面並不完美
  • 設定提醒 - 需要一種設定提醒的方式

工具函式如何運作

工具系統遵循您的伺服器與 Claude 之間的特定流程。您撰寫的函式可供 Claude 在需要額外資訊時呼叫,而 Claude 會收到結果以協助形成其回應。

這個過程涉及幾個步驟:撰寫工具函式、建立 JSON schema 規格、使用該 schema 呼叫 Claude、在 Claude 請求時執行工具,以及將結果提供回給 Claude。

撰寫工具函式

工具函式是普通的 Python 函式,當 Claude 判斷它需要額外資訊來協助使用者時就會被執行。以下是如何有效地撰寫它們:

最佳實務

  • 使用命名良好、具描述性的引數(這在稍後會變得很重要)
  • 驗證輸入,若驗證失敗則引發錯誤
  • 回傳有意義的錯誤 - 如果 Claude 收到錯誤,它會嘗試再次呼叫您的函式

建立您的第一個工具

讓我們從最簡單的工具開始 - 取得目前的日期和時間。這個函式接受一個日期格式參數,並回傳目前的時間戳記:

python
from datetime import datetime, timedelta

def get_current_datetime(date_format="%Y-%m-%d %H:%M:%S"):
    return datetime.now().strftime(date_format)

這個函式很簡單,但遵循了關鍵原則:它有一個具描述性的名稱,接受一個命名良好且具有合理預設值的參數,並準確回傳它所承諾的內容。

JSON Schema 規格

一旦您有了函式,您需要撰寫一個 JSON Schema 來向 Claude 描述它。這個 schema 告訴 Claude 該函式需要哪些引數,並幫助它理解何時以及如何使用該工具。

JSON Schema 有兩個用途:它幫助 Claude 理解您的函式需要哪些引數,而且它不僅僅是一個 LLM 概念 - JSON Schema 在許多程式設計情境中都被廣泛用於資料驗證。有許多線上工具可以幫助您產生 schema。

Schema 最佳實務

  • 說明該工具的功能、何時使用,以及它回傳什麼
  • 描述內容力求 3 到 4 句話
  • 為參數提供詳細的描述

撰寫好您的工具函式並定義好 schema 後,您就準備好將其與 Claude 整合,並開始建構更複雜的 AI 互動,以處理像設定提醒這樣的實際任務。