載入中

代理(Agents)代表了與我們先前探討的結構化工作流程的轉變。工作流程在您知道完成任務所需的確切步驟時表現出色,而代理則在前進的路徑不明確時大放異彩。您不需要定義一個僵化的序列,而是給 Claude 一個目標和一組工具,然後讓它自行找出如何組合這些工具來達成目標。

這種靈活性使代理對開發者具有吸引力。您可以建立一次代理,確保它運作得相當不錯,然後部署它來處理各種各樣的任務。然而,這種方法在可靠性和成本方面存在重大缺點,我們將在後面探討。

工具如何造就代理

代理的真正力量在於它們能夠以意想不到的方式組合簡單的工具。請考慮我們在課程前面介紹過的一組基本日期時間工具:

  • get_current_datetime - 返回目前的日期和時間
  • add_duration_to_datetime - 為給定日期增加時間
  • set_reminder - 為特定時間建立提醒

每個工具本身都很簡單,但 Claude 可以組合它們來處理各種不同的請求:

對於「現在幾點?」,Claude 只需呼叫 get_current_datetime。對於「11 天後是星期幾?」,它會串接 get_current_datetime 和 add_duration_to_datetime。更複雜的請求,例如「設定一個下週三去健身房的提醒」,則需要依序使用全部三個工具。

Claude 甚至能夠識別何時需要額外的資訊。當被問到「我的 90 天保固何時到期?」時,它會先詢問使用者何時取得保固,然後使用該資訊搭配 add_duration_to_datetime 來計算到期日期。

工具應該是抽象的

建立有效代理的關鍵洞見是提供相當抽象的工具,而不是高度專門化的工具。Claude Code 完美地展示了這一原則。

Claude Code 可以存取通用、靈活的工具:

  • bash - 執行命令
  • glob - 尋找檔案
  • grep - 搜尋檔案內容
  • read - 讀取檔案
  • write - 建立檔案
  • edit - 編輯檔案
  • webfetch - 擷取 URL

請注意 Claude Code 沒有的東西——像「重構」、「執行測試」或「安裝依賴項」這樣的專門工具。相反地,它透過組合可用的基本工具來找出如何完成這些任務。要安裝依賴項,它會讀取專案檔案以了解配置,然後使用 bash 執行適當的安裝命令。

最佳實踐:提供相當抽象的工具

在建立代理時,應專注於 Claude 可以創造性地組合的工具,而不是只解決一個特定問題的工具。請考慮一個社群媒體影片創作代理:

對這個代理有效的工具可能包括:

  • bash - 提供對 FFMPEG 的存取以進行影片處理
  • generate_image - 從文字提示建立圖像
  • text_to_speech - 將文字轉換為音訊
  • post_media - 將內容發布到社群媒體

這組工具能夠實現簡單和複雜的互動。使用者可能會請求「建立並發布一部關於 Python 程式設計的影片」,代理會自動處理所有事情。或者,互動也可以更具協作性:

使用者可能會說「我想讓你製作一部關於 Python 的影片,但我想先為影片挑選一張初始圖像」。代理可以生成一個範例圖像,展示給使用者以供核准,一旦確認後再繼續進行影片創作。

這種靈活性自然地源於在您的工具中提供適當的抽象層級。每個工具都應該足夠通用,以便在多種情境中都有用,但也要足夠具體,以便在與其他工具組合時能完成有意義的工作。