Invocación de un agente desde su aplicación - Amazon Bedrock

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Invocación de un agente desde su aplicación

Utilice su agente en una aplicación realizando una solicitud InvokeAgent a un punto de conexión en tiempo de ejecución de Agentes para Amazon Bedrock.

De forma predeterminada, la respuesta de InvokeAgent incluye un fragmento que contiene la respuesta completa del agente, que puede tardar un tiempo en completarse. También puede configurar InvokeAgent para que transmita la respuesta en varios fragmentos más pequeños. Esto reduce la latencia de la respuesta inicial del agente.

Respuestas de transmisión

Si lo desea, puede habilitar la transmisión de la respuesta estableciendo streamFinalResponse en true en las configuraciones de transmisión (StreamingConfigurations). El flujo de respuesta contiene varios eventos con fragmentos para cada parte de la respuesta en orden.

Para transmitir las respuestas, asegúrese de que el rol de ejecución del agente incluya el permiso bedrock:InvokeModelWithResponseStream para el modelo de agente configurado. Para obtener más información, consulte Permisos basados en identidades para el rol de servicio de los agentes.

Si su agente está configurado con una barrera de protección, también puede especificar applyGuardrailInterval en StreamingConfigurations, para controlar la frecuencia con la que se realiza una llamada a ApplyGuardrail en el número de caracteres de respuesta de salida (por ejemplo, cada 50 caracteres).

De forma predeterminada, el intervalo de la barrera de protección está establecido en 50 caracteres. Si se especifica un intervalo mayor, la respuesta se generará en fragmentos más grandes con menos llamadas a ApplyGuardrail. Los siguientes ejemplos muestran la respuesta generada para la cadena de entrada Hello, I am an agent.

Ejemplo de respuesta en fragmentos: intervalo establecido en tres caracteres

'Hel', 'lo, ', 'I am', ' an', ' Age', 'nt'

Cada fragmento tiene al menos tres caracteres, excepto el último fragmento.

Ejemplo de respuesta en fragmentos: intervalo establecido en veinte o más caracteres

'Hello, I am an Agent'

Invocación de un agente

El siguiente ejemplo de Python muestra cómo llamar a la operación InvokeAgent y mostrar la salida del agente, así como cualquier información de seguimiento que genere la llamada.

Cómo invocar un agente
  1. Cree un agente siguiendo las instrucciones de Creación y configuración de agentes manualmente. Anote el ID del agente. Si es necesario, puede obtener el ID más adelante. Para obtener más información, consulte Visualización de la información de un agente.

  2. Cree un alias para el agente siguiendo las instrucciones de Creación de un alias de agente. Anote el ID del alias. Si es necesario, puede obtener el ID más adelante. Para obtener más información, consulte Ver información sobre los alias de los agentes en Amazon Bedrock.

  3. Ejecute el siguiente código. Cambie el valor de agent_id al ID del agente y el valor de alias_id al ID de alias del agente. Para transmitir la respuesta del agente, cambie el valor de streamFinalResponse a True. También puede cambiar el intervalo de la barrera de protección cambiando el valor de applyGuardrailInterval.

    import boto3 import logging from botocore.exceptions import ClientError logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) def invoke_agent(client, agent_id, alias_id, prompt, session_id): response = client.invoke_agent( agentId=agent_id, agentAliasId=alias_id, enableTrace=True, sessionId = session_id, inputText=prompt, streamingConfigurations = { "applyGuardrailInterval" : 20, "streamFinalResponse" : False } ) completion = "" for event in response.get("completion"): #Collect agent output. if 'chunk' in event: chunk = event["chunk"] completion += chunk["bytes"].decode() # Log trace output. if 'trace' in event: trace_event = event.get("trace") trace = trace_event['trace'] for key, value in trace.items(): logging.info("%s: %s",key,value) print(f"Agent response: {completion}") if __name__ == "__main__": client=boto3.client( service_name="bedrock-agent-runtime" ) agent_id = "AGENT_ID" alias_id = "ALIAS_ID" session_id = "MY_SESSION_ID" prompt = "Prompt to send to agent" try: invoke_agent(client, agent_id, alias_id, prompt, session_id) except ClientError as e: print(f"Client error: {str(e)}") logger.error("Client error: %s", {str(e)})