View a markdown version of this page

에이전트 프레임워크와 함께 사용 - Amazon OpenSearch Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

에이전트 프레임워크와 함께 사용

OpenSearch MCP 서버를 Python 에이전트 프레임워크에 직접 통합하여 자율 에이전트가 더 큰 워크플로의 일부로 OpenSearch에 프로그래밍 방식으로 액세스할 수 있도록 할 수 있습니다.

Strands Agents

Strands Agents는 기본 MCP 지원 및 Amazon Bedrock을 기본 모델 공급자로 사용하는 AWS네이티브 에이전트 SDK입니다. 다음 예시에서는 적절한 환경 변수를 설정하여 Strands 에이전트를 OpenSearch Service 도메인 또는 OpenSearch Serverless 컬렉션에 연결합니다. OpenSearch Serverless 컬렉션에 연결할 trueAWS_OPENSEARCH_SERVERLESS로 설정하고 관리형 도메인의 경우 생략합니다.

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는 Amazon Bedrock을 기본 모델 공급자로 사용합니다. 리전에서 Claude에 대해 AWS 자격 증명을 구성하고 모델 액세스를 활성화했는지 확인합니다. 자세한 내용은 Strands Bedrock 공급자 설명서를 참조하세요.

LangGraph

LangGraph는 상태 저장 에이전트를 빌드하기 위한 하위 수준 오케스트레이션 프레임워크입니다. 다음 예제에서는 langchain-mcp-adapters를 사용하여 Amazon Bedrock에서 지원하는 LangGraph ReAct 에이전트에 OpenSearch MCP 도구를 로드합니다. Strands와 마찬가지로 OpenSearch Serverless 컬렉션에 연결할 true 때를 AWS_OPENSEARCH_SERVERLESS로 설정합니다.

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

필수 패키지를 설치합니다.

pip install langchain-aws langchain-mcp-adapters langgraph