為智慧體編寫有效工具:MCP工具開發完全指南

為智慧體編寫有效工具:MCP工具開發完全指南

為智慧體編寫有效工具

智慧體的效果取決於我們為它們提供的工具。本指南將分享如何編寫高品質的工具和評估,以及如何透過Claude等AI助手來優化工具性能。

Model Context Protocol (MCP) 可以為LLM智慧體提供數百種工具來解決現實世界的任務。但是,我們如何讓這些工具發揮最大效果呢?

在本指南中,我們將介紹在各種智慧體AI系統中提升性能的最有效技術。

工具的本質

在電腦科學中,確定性系統在相同輸入下總是產生相同輸出,而非確定性系統(如智慧體)即使在相同的起始條件下也可能產生不同的回應。

當我們編寫傳統軟體時,我們在確定性系統之間建立契約。例如,像 getWeather("NYC") 這樣的函數呼叫每次都會以完全相同的方式獲取紐約市的天氣。

工具是一種新型軟體,它反映了確定性系統與非確定性智慧體之間的契約。當使用者問「我今天應該帶傘嗎?」時,智慧體可能會呼叫天氣工具、從一般知識中回答,甚至首先詢問位置的澄清問題。

這意味著我們在為智慧體編寫軟體時需要從根本上重新思考我們的方法:我們不能像為其他開發者或系統編寫函數和API那樣編寫工具和MCP伺服器,而需要專門為智慧體設計它們。

編寫工具的方法

建構原型

在不親自動手的情況下,很難預測智慧體會發現哪些工具人性化,哪些不會。首先建立工具的快速原型。

如果你使用Claude Code來編寫工具,提供任何軟體庫、API或SDK(包括可能的MCP SDK)的文件會很有幫助。

將你的工具包裝在本地MCP伺服器中,這將允許你在Claude Code或Claude Desktop應用中連接和測試你的工具。

要將本地MCP伺服器連接到Claude Code,執行 claude mcp add <name> <command> [args...]

執行評估

接下來,你需要透過執行評估來衡量Claude使用你的工具的效果。首先產生大量基於現實世界用途的評估任務。我們建議與智慧體協作來幫助分析結果並確定如何改進工具。

參考工具評估cookbook查看完整的端到端流程。

工具評估性能對比 透過系統化評估可以顯著提升工具性能

產生評估任務

使用早期原型,Claude Code可以快速探索你的工具並創建數十個提示和回應對。提示應該受到現實世界用途的啟發,並基於真實的資料來源和服務。

強評估任務範例:

  • 安排下週與Jane的會議討論我們最新的Acme Corp專案。附上我們上次專案規劃會議的筆記並預訂會議室。
  • 客戶ID 9182報告他們為一次購買嘗試被收費三次。找到所有相關的記錄條目並確定是否有其他客戶受到相同問題的影響。

弱評估任務範例:

  • 安排下週與[email protected]的會議。
  • 在支付記錄中搜尋purchase_completecustomer_id=9182

與智慧體協作

你甚至可以讓智慧體為你分析結果並改進工具。只需將評估智慧體的記錄連接起來並貼到Claude Code中。

實際上,本文中的大部分建議都來自於與Claude Code反覆優化我們內部工具實作。

編寫有效工具的原則

為智慧體選擇正確的工具

更多工具並不總是導致更好的結果。我們觀察到的一個常見錯誤是工具僅僅包裝現有的軟體功能或API端點——無論工具是否適合智慧體。

我們建議建構一些針對特定高影響工作流程的周到工具,這些工具與你的評估任務相匹配,然後從那裡擴展。

更好的工具設計範例:

  • 不實作list_userslist_eventscreate_event工具,考慮實作一個schedule_event工具,它找到可用性並安排事件。
  • 不實作read_logs工具,考慮實作一個search_logs工具,它只返回相關的記錄行和一些周圍的上下文。

工具命名空間

你的AI智慧體可能會存取數十個MCP伺服器和數百個不同的工具——包括其他開發者的工具。當工具在功能上重疊或目的模糊時,智慧體可能會對使用哪些工具感到困惑。

命名空間(在公共前綴下分組相關工具)可以幫助在大量工具之間劃定邊界。

從工具返回有意義的上下文

工具實作應該注意只向智慧體返回高信號資訊。它們應該優先考慮上下文相關性而非靈活性,並避免低級技術識別符。

response_format.py
from enum import Enum

class ResponseFormat(Enum):
    DETAILED = "detailed"
    CONCISE = "concise"

工具回應格式範例 詳細和簡潔回應格式的對比效果

為token效率優化工具回應

優化上下文的品質很重要。但優化返回給智慧體的工具回應中的上下文數量也同樣重要。

工具描述的提示工程

我們現在來到改進工具的最有效方法之一:對工具描述和規範進行提示工程。因為這些被載入到智慧體的上下文中,它們可以集體引導智慧體朝向有效的工具呼叫行為。

透過評估,你可以更有信心地衡量提示工程的影響。即使對工具描述的小改進也可能產生戲劇性的改進。

實踐建議

工具開發工作流程

  1. 快速原型 → 2. 使用者測試 → 3. 創建評估 → 4. 執行測試 → 5. 智慧體分析 → 6. 迭代改進

常見陷阱避免

避免這些常見錯誤:

  • 為每個API端點創建一個工具
  • 返回過多的低級技術細節
  • 使用模糊或重疊的工具名稱
  • 忽略工具描述的重要性
  • 不測試實際的智慧體工作流程

性能優化技巧

  • 整合相關功能 - 將常用的工具鏈合併為單個工具
  • 智慧預設值 - 為參數設定合理的預設值
  • 錯誤處理 - 提供清晰、可操作的錯誤訊息
  • 回應格式 - 支援詳細和簡潔的回應模式
  • 上下文管理 - 優化返回資訊的相關性和數量

總結

建構有效的智慧體工具需要從傳統的軟體開發實踐重新定向到非確定性模式。透過我們在本文中描述的迭代、評估驅動的過程,我們已經確定了使工具成功的一致模式:

有效的工具具有以下特徵:

  • 有意圖地和清晰地定義
  • 明智地使用智慧體上下文
  • 可以在多樣化的工作流程中組合使用
  • 能夠讓智慧體直覺地解決現實世界的任務

隨著智慧體變得更加能幹,它們使用的工具也將與它們一起演進。透過系統性的、評估驅動的方法來改進智慧體工具,我們可以確保隨著技術的發展,工具和智慧體能夠協同進步。

相關資源