View a markdown version of this page

Invocar um agente AgentCore Runtime - Amazon Bedrock AgentCore

Invocar um agente AgentCore Runtime

A InvokeAgentRuntimeoperação permite que você envie solicitações para endpoints específicos do AgentCore Runtime identificados pelo Amazon Resource Name (ARN) e receba respostas de streaming contendo a saída do agente. A API oferece suporte ao gerenciamento de sessões por meio de identificadores de sessão, permitindo que você mantenha o contexto da conversa em várias interações. Você pode segmentar endpoints de agentes específicos usando qualificadores opcionais.

Para ligarInvokeAgentRuntime, você precisa de bedrock-agentcore:InvokeAgentRuntime permissões. Na chamada, você também pode passar um token de portador que o agente pode usar para autenticação do usuário.

A InvokeAgentRuntime operação aceita a carga útil da solicitação como dados binários de até 100 MB e retorna uma resposta de streaming que fornece pedaços de dados em tempo real à medida que o agente processa sua solicitação. Essa abordagem de streaming permite que você receba resultados parciais imediatamente, em vez de esperar pela resposta completa, tornando-a ideal para aplicativos interativos.

Para executar comandos shell (como executar testes, operações git ou configuração do ambiente) na mesma sessão, use a operação Executar comandos shell em sessões AgentCore de tempo de execução. Ambas as operações funcionam no mesmo tempo de execução e sessão do agente.

Se você planeja integrar seu agente ao OAuth, não pode usar o AWS SDK para fazer chamadas. InvokeAgentRuntime Em vez disso, faça uma solicitação HTTPS para InvokeAgentRuntime. Para obter mais informações, consulte Autenticar e autorizar com Autenticação de Entrada e Autenticação de Saída.

Invoque agentes de streaming

O exemplo a seguir mostra como usar o boto3 para invocar o tempo de execução de um agente:

import boto3 import json # Initialize the Bedrock AgentCore client agent_core_client = boto3.client('bedrock-agentcore') # Prepare the payload payload = json.dumps({"prompt": prompt}).encode() # Invoke the agent response = agent_core_client.invoke_agent_runtime( agentRuntimeArn=agent_arn, runtimeSessionId=session_id, payload=payload ) # Process and print the response if "text/event-stream" in response.get("contentType", ""): # Handle streaming response content = [] for line in response["response"].iter_lines(chunk_size=10): if line: line = line.decode("utf-8") if line.startswith("data: "): line = line[6:] print(line) content.append(line) print("\nComplete response:", "\n".join(content)) elif response.get("contentType") == "application/json": # Handle standard JSON response content = [] for chunk in response.get("response", []): content.append(chunk.decode('utf-8')) print(json.loads(''.join(content))) else: # Print raw response for other content types print(response)

Invoque agentes multimodais

Você pode usar a InvokeAgentRuntime operação para enviar solicitações multimodais que incluam texto e imagens. O exemplo a seguir mostra como invocar um agente multimodal:

import boto3 import json import base64 # Read and encode image with open("image.jpg", "rb") as image_file: image_data = base64.b64encode(image_file.read()).decode('utf-8') # Prepare multi-modal payload payload = json.dumps({ "prompt": "Describe what you see in this image", "media": { "type": "image", "format": "jpeg", "data": image_data } }).encode() # Invoke the agent response = agent_core_client.invoke_agent_runtime( agentRuntimeArn=agent_arn, runtimeSessionId=session_id, payload=payload )

Gerenciamento de sessões

A InvokeAgentRuntime operação oferece suporte ao gerenciamento de sessões por meio do runtimeSessionId parâmetro. Ao fornecer o mesmo identificador de sessão em várias solicitações, você pode manter o contexto da conversa, permitindo que o agente faça referência a interações anteriores.

Para iniciar uma nova conversa, gere um identificador de sessão exclusivo. Para continuar uma conversa existente, use o mesmo identificador de sessão das solicitações anteriores. Essa abordagem permite criar aplicativos interativos que mantêm o contexto ao longo do tempo.

dica

Para obter melhores resultados, use um UUID ou outro identificador exclusivo para seus IDs de sessão para evitar colisões entre usuários ou conversas diferentes.

Tratamento de erros

Ao usar a InvokeAgentRuntime operação, você pode encontrar vários erros. Aqui estão alguns erros comuns e como lidar com eles:

ValidationException

Ocorre quando os parâmetros da solicitação são inválidos. Verifique se o ARN, o ID da sessão e a carga do agente estão formatados corretamente.

ResourceNotFoundException

Ocorre quando o tempo de execução do agente especificado não pode ser encontrado. Verifique se o ARN do agente está correto e se o agente existe na sua AWS conta.

AccessDeniedException

Ocorre quando você não tem as permissões necessárias. Certifique-se de que sua política do IAM inclua a bedrock-agentcore:InvokeAgentRuntime permissão.

ThrottlingException

Ocorre quando você excede os limites da taxa de solicitação. Implemente a lógica de recuo exponencial e tente novamente em seu aplicativo.

Implemente o tratamento adequado de erros em seu aplicativo para proporcionar uma melhor experiência ao usuário e solucionar problemas de forma eficaz.

Práticas recomendadas

Siga estas melhores práticas ao usar a InvokeAgentRuntime operação:

  • Use o gerenciamento de sessões para manter o contexto da conversa para uma melhor experiência do usuário.

  • Processe respostas de streaming de forma incremental para fornecer feedback em tempo real aos usuários.

  • Implemente o tratamento adequado de erros e a lógica de repetição para um aplicativo robusto.

  • Considere as limitações de tamanho da carga útil (100 MB) ao enviar solicitações, especialmente para conteúdo multimodal.

  • Use qualificadores apropriados para atingir versões ou endpoints específicos do agente.

  • Implemente mecanismos de autenticação quando necessário usando tokens de portador.

  • Use InvokeAgentRuntimeCommand para operações determinísticas (testes, git, compilações) em vez de roteá-las pelo LLM do agente. Consulte Executar comandos shell em sessões AgentCore de tempo de execução.