View a markdown version of this page

Penemuan alat - AWS Panduan Preskriptif

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Penemuan alat

Ada tiga pendekatan untuk menemukan dan mendaftarkan alat di agen Anda dengan server MCP: definisi statis, penemuan dinamis, dan fungsi pencarian.

Definisi statis

Pertama, Anda dapat secara statis mendefinisikan alat yang tersedia secara langsung dalam kode agen. Dalam pendekatan ini Anda mendefinisikan alat jarak jauh (objek referensi sisi klien dalam kerangka kerja seperti Strands Agent SDK) untuk setiap alat yang disediakan oleh server MCP yang diakses oleh klien MCP. Contoh berikut menggunakan transportasi HTTP streamable:

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

Pendaftaran alat individual membantu Anda menjadi sangat selektif tentang alat yang Anda sediakan untuk LLM, yang meminimalkan jumlah jendela konteks yang digunakan. Tradeoff adalah bahwa hal itu membutuhkan mengetahui nama-nama alat yang tersedia dan bisa rapuh jika alat yang tersedia berubah di server MCP.

Penemuan dinamis

Pendekatan selanjutnya adalah menggunakan penemuan dinamis dan mendaftarkan semua alat yang tersedia dengan agen. Pendekatan ini menggunakan konteks secara linier karena lebih banyak alat ditambahkan ke server MCP. Berikut ini adalah contoh dari pendekatan ini:

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)

Pertimbangkan skenario di mana definisi alat khas mengkonsumsi sekitar 250-500 token (termasuk nama, deskripsi, dan skema). Mendaftarkan 20 alat akan menghabiskan 5.000-10.000 token dari jendela konteks Anda. Ketika Anda memiliki sejumlah kecil server MCP dan Anda memiliki kontrol atas jumlah alat, opsi ini adalah yang paling sederhana untuk diterapkan. Namun, jika daftar alat diharapkan tumbuh, itu dapat menciptakan masalah manajemen konteks diam di agen Anda. Variasi alternatif dari pendekatan ini adalah dengan menggunakan parameter filter alat saat memanggillist_tools, seperti yang disediakan oleh Strands Agents SDK, untuk mengurangi jumlah alat yang terdaftar di agen.

Opsi ketiga adalah menggunakan fungsi pencarian untuk menemukan alat yang relevan selama runtime. Anda mencantumkan semua alat yang tersedia dari server MCP Anda dan kemudian melakukan pencarian semantik atas alat tersebut berdasarkan prompt pengguna. Kemudian, alat yang dihasilkan terdaftar di agen Anda. Amazon Bedrock AgentCore Gateway menyediakan kemampuan pencarian semantik asli yang dapat membuat solusi semacam ini lebih mudah diterapkan.

Praktik terbaik untuk penemuan alat MCP

  • Pelestarian jendela konteks — Pilih pendekatan penemuan dan pendaftaran alat yang menghemat sebanyak mungkin jendela konteks Anda.

  • Gunakan pemfilteran alat atau kemampuan pencarian semantik - Secara dinamis menyediakan LLM dengan seperangkat alat yang dapat dipilih, yang meningkatkan akurasi dan efektivitasnya dalam memilih alat yang tepat. Pemfilteran alat dapat beroperasi pada nama alat (pencocokan atau pola yang tepat), deskripsi alat (pencocokan semantik), atau tag domain atau kategori. Pencarian semantik sangat efektif untuk mencocokkan maksud pengguna dengan deskripsi alat. Kedua pendekatan mengurangi penggunaan jendela konteks.