View a markdown version of this page

Use com estruturas de agentes - OpenSearch Serviço Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Use com estruturas de agentes

Você pode integrar o servidor OpenSearch MCP diretamente às estruturas de agentes do Python, dando aos seus agentes autônomos acesso programático como parte de um fluxo OpenSearch de trabalho maior.

Strands Agents

O Strands Agents é um SDK AWS de agente nativo com suporte MCP integrado e o Amazon Bedrock como provedor de modelos padrão. O exemplo a seguir conecta um agente Strands a um domínio OpenSearch de serviço ou a uma coleção OpenSearch sem servidor definindo as variáveis de ambiente apropriadas. AWS_OPENSEARCH_SERVERLESSDefina como true ao se conectar a uma coleção OpenSearch sem servidor; omita-a para um domínio gerenciado.

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 usa o Amazon Bedrock como seu fornecedor de modelos padrão. Certifique-se de ter AWS as credenciais configuradas e o acesso ao modelo habilitado para Claude em sua região. Para obter detalhes, consulte a documentação do fornecedor Strands Bedrock.

LangGraph

LangGraphé uma estrutura de orquestração de baixo nível para criar agentes com estado. O exemplo a seguir usa langchain-mcp-adapters para carregar as ferramentas OpenSearch MCP em um LangGraph ReAct agente apoiado pelo Amazon Bedrock. Assim como no Strands, AWS_OPENSEARCH_SERVERLESS defina como true ao se conectar a uma OpenSearch coleção sem servidor.

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

Instale os pacotes obrigatórios:

pip install langchain-aws langchain-mcp-adapters langgraph