View a markdown version of this page

Gunakan dengan kerangka kerja agen - OpenSearch Layanan Amazon

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

Gunakan dengan kerangka kerja agen

Anda dapat mengintegrasikan server OpenSearch MCP langsung ke kerangka kerja agen Python, memberikan agen otonom Anda akses terprogram sebagai bagian dari alur kerja yang OpenSearch lebih besar.

Agen Helai

Strands Agents adalah SDK agen AWS-native dengan dukungan MCP bawaan dan Amazon Bedrock sebagai penyedia model default. Contoh berikut menghubungkan agen Strands ke domain OpenSearch Service atau koleksi OpenSearch Tanpa Server dengan menetapkan variabel lingkungan yang sesuai. Setel AWS_OPENSEARCH_SERVERLESS ke true saat menghubungkan ke koleksi OpenSearch Tanpa Server; hilangkan untuk domain terkelola.

import os from strands import Agent from strands.tools.mcp import MCPClient from mcp import stdio_client, StdioServerParameters # For a managed domain: # OPENSEARCH_URL = https://<domain-endpoint>.<region>.es.amazonaws.com # # For an OpenSearch Serverless collection, also set: # AWS_OPENSEARCH_SERVERLESS = true # OPENSEARCH_URL = https://<collection-id>.<region>.aoss.amazonaws.com opensearch_client = MCPClient( lambda: stdio_client( StdioServerParameters( command="uvx", args=["opensearch-mcp-server-py"], env={ "OPENSEARCH_URL": os.environ["OPENSEARCH_URL"], "AWS_REGION": os.environ["AWS_REGION"], "AWS_IAM_ARN": os.environ["AWS_IAM_ARN"], # Set to "true" for OpenSearch Serverless, omit for managed domains "AWS_OPENSEARCH_SERVERLESS": os.environ.get("AWS_OPENSEARCH_SERVERLESS", "false"), }, ) ) ) with opensearch_client: agent = Agent(tools=opensearch_client.list_tools_sync()) response = agent("List all indexes and show the document count for each") print(response)

Strands menggunakan Amazon Bedrock sebagai penyedia model defaultnya. Pastikan Anda memiliki AWS kredensil yang dikonfigurasi dan akses model diaktifkan untuk Claude di wilayah Anda. Untuk detailnya, lihat dokumentasi penyedia Strands Bedrock.

LangGraph

LangGraphadalah kerangka kerja orkestrasi tingkat rendah untuk membangun agen stateful. Contoh berikut digunakan langchain-mcp-adapters untuk memuat alat OpenSearch MCP ke LangGraph ReAct agen yang didukung oleh Amazon Bedrock. Seperti halnya Strands, atur AWS_OPENSEARCH_SERVERLESS ke true saat menghubungkan ke koleksi OpenSearch Tanpa Server.

import asyncio import os from langchain_aws import ChatBedrock from langchain_mcp_adapters.client import MultiServerMCPClient from langgraph.prebuilt import create_react_agent async def main(): async with MultiServerMCPClient( { "opensearch": { "command": "uvx", "args": ["opensearch-mcp-server-py"], "env": { # Managed domain: https://<domain-endpoint>.<region>.es.amazonaws.com # Serverless: https://<collection-id>.<region>.aoss.amazonaws.com "OPENSEARCH_URL": os.environ["OPENSEARCH_URL"], "AWS_REGION": os.environ["AWS_REGION"], "AWS_IAM_ARN": os.environ["AWS_IAM_ARN"], # Set to "true" for OpenSearch Serverless, omit for managed domains "AWS_OPENSEARCH_SERVERLESS": os.environ.get("AWS_OPENSEARCH_SERVERLESS", "false"), }, "transport": "stdio", } } ) as mcp_client: tools = mcp_client.get_tools() model = ChatBedrock( model_id="anthropic.claude-3-5-sonnet-20241022-v2:0", region_name=os.environ["AWS_REGION"], ) agent = create_react_agent(model, tools) result = await agent.ainvoke( {"messages": [{"role": "user", "content": "Check cluster health and list all indexes"}]} ) print(result["messages"][-1].content) asyncio.run(main())

Instal paket yang diperlukan:

pip install langchain-aws langchain-mcp-adapters langgraph