View a markdown version of this page

工具探索 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

工具探索

有三種方法可讓您透過 MCP 伺服器在代理程式中探索和註冊工具:靜態定義、動態探索和搜尋函數。

靜態定義

首先,您可以直接在客服人員程式碼中靜態定義可用的工具。在此方法中,您會為 MCP 用戶端存取的 MCP 伺服器所提供的每個工具定義遠端工具 (Strands Agent SDK 等架構中的用戶端參考物件)。下列範例使用可串流的 HTTP 傳輸:

from mcp.client.streamable_http import streamablehttp_client from strands import Agent from strands.tools.mcp import MCPClient streamable_http_mcp_client = MCPClient( lambda: streamablehttp_client("https://mcp1:8000/mcp") ) reverse_text = RemoteTool( name="reverseText", client=streamable_http_mcp_client ) agent = Agent(tools=[reverse_text])

個別工具註冊可協助您非常選擇您提供給 LLM 的工具,這可將使用的內容時段量降至最低。權衡是,它需要知道可用工具的名稱,如果 MCP 伺服器中的可用工具變更,它可能會很脆弱。

動態探索

下一個方法是使用動態探索,並向 代理程式註冊所有可用的工具。隨著將更多工具新增至 MCP 伺服器,此方法會線性使用內容。以下是此方法的範例:

from mcp.client.streamable_http import streamablehttp_client from strands import Agent from strands.tools.mcp import MCPClient streamable_http_mcp_client = MCPClient( lambda: streamablehttp_client("https://mcp1:8000/mcp") ) with streamable_http_mcp_client: tools = streamable_http_mcp_client.list_tools_sync() agent = Agent(tools=tools)

假設典型的工具定義大約使用 250–500 個 字符 (包括名稱、描述和結構描述)。註冊 20 個 工具將消耗內容時段的 5,000–10,000 個 字符。當您有少量的 MCP 伺服器,而且您可以控制工具的數量時,此選項是最簡單的實作方式。不過,如果預期工具清單會成長,它可能會在您的客服人員中建立無提示的內容管理問題。此方法的替代變化是呼叫 時使用工具篩選條件參數list_tools,例如 Strands Agents SDK 提供的參數,以減少向客服人員註冊的工具數量。

第三個選項是使用搜尋函數在執行時間尋找相關工具。您可以從 MCP 伺服器列出所有可用的工具,然後根據使用者提示對這些工具執行語意搜尋。然後,產生的工具會向 代理程式註冊。Amazon Bedrock AgentCore Gateway 提供原生語意搜尋功能,可讓您更輕鬆地實作這類解決方案。

MCP 工具探索的最佳實務

  • 內容時段保留 – 選擇盡可能節省內容時段的工具探索和註冊方法。

  • 使用工具篩選或語意搜尋功能 – 動態提供 LLM 一組縮小範圍的工具供您選擇,從而提高選擇正確工具的準確性和有效性。工具篩選可以操作於工具名稱 (完全相符或模式)、工具描述 (語意相符) 或網域或類別標籤。語意搜尋對於比對使用者意圖與工具描述特別有效。這兩種方法都會減少內容時段的使用。