

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.

# Tutorial: creación de un agente sencillo de Amazon Bedrock
<a name="agent-tutorial"></a>

Este tutorial lo guía a través de la creación y configuración de un agente de Amazon Bedrock sencillo mediante la consola de administración de AWS. Aprenderá a crear un agente que pueda responder a las consultas de los usuarios sobre la fecha y la hora actuales mediante la invocación de una función de Lambda.

En este tutorial, podrá:

1. Cree una función de Lambda: cree una función de Python que devuelva la fecha y la hora actuales cuando la invoque el agente.

1. Cree un agente de Amazon Bedrock: configure un agente en la consola de Amazon Bedrock y configúrelo con instrucciones para gestionar las consultas de fecha y hora.

1. Pruebe al agente: utilice la interfaz de pruebas integrada para comprobar que el agente pueda responder correctamente a las solicitudes de fecha y hora.

1. Implemente el agente con un alias: cree un versión del agente e impleméntela con un alias para que esté disponible para su uso.

1. Llame al agente desde el código Python: aprenda a interactuar mediante programación con el agente a través del AWS SDK para Python (Boto). 

1. Limpie los recursos: elimine los recursos de AWS creados durante este tutorial para evitar incurrir en cargos innecesarios.

Al final de este tutorial, dispondrá de un agente funcional de Amazon Bedrock que podrá entender las solicitudes de información de fecha y hora en lenguaje natural y responder con datos precisos a partir de su función de Lambda.

Este tutorial se basa en el ejemplo de código de agente incluido en el [repositorio de GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/python/example_code/bedrock-agent/scenario_get_started_with_agents.py) de la documentación de AWS. 

**Topics**
+ [Requisitos previos](agent-tutorial-prereq.md)
+ [Paso 1: Crear una función de Lambda](agent-tutorial-step1.md)
+ [Paso 2: creación de un agente de Amazon Bedrock](agent-tutorial-step2.md)
+ [Paso 3: prueba del agente](agent-tutorial-step3.md)
+ [Paso 4: implementación del agente con un alias](agent-tutorial-step4.md)
+ [Paso 5: llamada al agente desde el código de Python](agent-tutorial-step5.md)
+ [Paso 6: Eliminar recursos](agent-tutorial-step6.md)
+ [Recursos adicionales](agent-tutorial-resources.md)

# Requisitos previos
<a name="agent-tutorial-prereq"></a>

Antes de comenzar este tutorial, asegúrese de tener lo siguiente:
+ Cuenta de AWS con las siguientes políticas administradas:
  + [AmazonBedrockFullAccess](https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonBedrockFullAccess)
  + [AWSLambda\$1FullAccess](https://docs.aws.amazon.com/lambda/latest/dg/security-iam-awsmanpol.html#lambda-security-iam-awsmanpol-AWSLambda_FullAccess)
  + [IAMFullAccess](aws-managed-policy/latest/reference/IAMFullAccess.html)
**importante**  
Estos permisos le permiten ejecutar este tutorial y otras tareas no relacionadas. En los entornos de producción, asegúrese de asignar solo los permisos que los usuarios necesitan para ejecutar la aplicación.
+ Descripción de los roles y permisos de IAM ([Guía del usuario de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html))
+ Descripción de las funciones de AWS Lambda ([Guía para desarrolladores de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html))

# Paso 1: Crear una función de Lambda
<a name="agent-tutorial-step1"></a>

En primer lugar, cree una función de Lambda que el agente invoque para realizar acciones. En este procedimiento, creará una función de Lambda en Python que devuelve la fecha y hora actuales cuando se invoca. Configurará la función con permisos básicos, añadirá el código necesario para gestionar las solicitudes de su agente de Amazon Bedrock e implementará la función para que esté lista para conectarse a su agente.

Para obtener más información, consulte [Creación de su primera función de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) en la *Guía para desarrolladores de AWS Lambda*.

**Creación de una función de Lambda**

1. Inicie sesión en la consola de administración de AWS y abra la consola de Lambda en [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Elija **Crear función**.

1. Seleccione **Crear desde cero**.

1. En la sección **Basic information (Información básica)**:
   + En **Nombre de función**, escriba un nombre para la función (por ejemplo, `DateTimeFunction`). Tome nota del nombre de la función, ya que la necesitará en el paso 15 de [Paso 2: creación de un agente de Amazon Bedrock](agent-tutorial-step2.md).
   + En **Tiempo de ejecución**, seleccione **Python 3.9** (o la versión que prefiera).
   + En **Arquitectura**, déjelo sin cambios.
   + En **Permisos**, seleccione **Cambiar el rol de ejecución predeterminado** y después seleccione **Crear un nuevo rol con permisos de Lambda básicos**.

1. Seleccione **Creación de función**.

1. En **Información general de la función**, en **ARN de la función**, anote el Nombre de recurso de Amazon (ARN) de la función. Lo necesitará para el paso 24 de [Paso 2: creación de un agente de Amazon Bedrock](agent-tutorial-step2.md). 

1. En la pestaña **Código**, sustituya el código existente por el siguiente:

   ```
   # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # SPDX-License-Identifier: Apache-2.0
   import datetime
   import json
   
   
   def lambda_handler(event, context):
       now = datetime.datetime.now()
   
       response = {"date": now.strftime("%Y-%m-%d"), "time": now.strftime("%H:%M:%S")}
   
       response_body = {"application/json": {"body": json.dumps(response)}}
   
       action_response = {
           "actionGroup": event["actionGroup"],
           "apiPath": event["apiPath"],
           "httpMethod": event["httpMethod"],
           "httpStatusCode": 200,
           "responseBody": response_body,
       }
   
       session_attributes = event["sessionAttributes"]
       prompt_session_attributes = event["promptSessionAttributes"]
   
       return {
           "messageVersion": "1.0",
           "response": action_response,
           "sessionAttributes": session_attributes,
           "promptSessionAttributes": prompt_session_attributes,
       }
   ```

1. Elija **Implementar** para implementar la función.

1. Elija la pestaña **Configuración**.

1. Elija **Permisos**.

1. En **Instrucciones de la política basada en recursos**, elija **Agregar permisos**.

1. En **Editar instrucción de política**, haga lo siguiente:

   1. Elija **Servicio de AWS**.

   1. En **Servicio**, seleccione **Otros**.

   1. En **ID de instrucción**, especifique un identificador único (por ejemplo, `AllowBedrockInvocation`).

   1. En **Entidad principal**, especifique `bedrock.amazonaws.com`.

   1. En **ARN de origen**, especifique `arn:aws:bedrock:region:AWS account ID:agent/*`.

      Sustituya `region` por la región de AWS que esté utilizando, como `us-east-1`. Sustituya `AWS account ID` por su ID de cuenta de AWS.

   1. En **Acción**, seleccione `lambda:InvokeFunction`.

1. Seleccione **Save**.

# Paso 2: creación de un agente de Amazon Bedrock
<a name="agent-tutorial-step2"></a>

A continuación, creará un agente de Amazon Bedrock. En este procedimiento, configurará un agente en la consola de Amazon Bedrock, lo configurará con un modelo fundacional y proporcionará instrucciones que definan su comportamiento como un chatbot dispuesto a ayudar que devuelve información de fecha y hora. También creará un grupo de acciones con un esquema de OpenAPI que define los puntos de conexión de la API a los que puede llamar el agente, específicamente el punto de conexión para obtener la fecha y la hora actuales. Además, agregará una política insertada en el rol de IAM del agente para que pueda invocar su función de Lambda. El agente servirá de interfaz entre los usuarios y su función de Lambda, interpretando las solicitudes en lenguaje natural y convirtiéndolas en llamadas a funciones estructuradas para recuperar información de fecha y hora.

Para obtener más información, consulte [Creación y configuración de agentes manualmente](agents-create.md).

**Creación de un agente de Amazon Bedrock**

1. Inicie sesión Consola de administración de AWS con una identidad de IAM que tenga permisos para usar la consola Amazon Bedrock. A continuación, abra la consola de Amazon Bedrock en [https://console.aws.amazon.com/bedrock.](https://console.aws.amazon.com/bedrock)

1. Asegúrese de que se encuentra en una AWS [región](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/select-region.html) que admite a los [agentes](agents-supported.md) de Amazon Bedrock. 

1. En el panel de navegación, en **Herramientas para creadores**, elija **Agentes**.

1. Elija **Crear agente**.

1. En **Nombre**, escriba un nombre para su agente (por ejemplo, `MyBedrockAgent`).

1. (Opcional) En **Description (Descripción)**, introduzca una descripción.

1. Seleccione **Crear**. Se abre el panel **Creador de agentes**.

1. En la sección **Detalles del agente**:
   + En **Rol de recurso del agente**, seleccione **Crear y usar un nuevo rol de servicio**.
   + En **Seleccionar modelo**, seleccione un modelo, como Claude 3 Haiku.
   + En la sección **Instrucciones para el agente**, escriba las siguientes instrucciones.

     ```
     You are a friendly chat bot. You have access to a function called that returns
     information about the current date and time. When responding with date or time,
     please make sure to add the timezone UTC.
     ```

1. Seleccione **Save**.

1. Seleccione la pestaña **Grupos de acciones**.

1. En **Grupos de acciones**, seleccione **Añadir**.

1. En **Ingrese el nombre del grupo de acciones**, introduzca un nombre para el grupo de acciones (por ejemplo, `TimeActions`).

1. (Opcional) En **Descripción**, introduzca una descripción para el grupo de acciones.

1. En **Tipo de grupo de acciones**, seleccione **Definir con esquemas de API**.

1. En **Invocación de un grupo de acciones**, elija **Seleccionar una función de Lambda existente**. 

1. En **Seleccionar función de Lambda**, seleccione la función de Lambda que ha creado en [Paso 1: Crear una función de Lambda](agent-tutorial-step1.md).

1. En **Esquema de grupos de acciones**, seleccione **Definir mediante un editor de esquemas en línea**.

1. En el cuadro de texto **Esquema de OpenAPI en línea**, sustituya el esquema existente por el siguiente esquema YAML de OpenAPI:

   ```
   openapi: 3.0.0
   info:
     title: Time API
     version: 1.0.0
     description: API to get the current date and time.
   paths:
     /get-current-date-and-time:
       get:
         summary: Gets the current date and time.
         description: Gets the current date and time.
         operationId: getDateAndTime
         responses:
           '200':
             description: Gets the current date and time.
             content:
               'application/json':
                 schema:
                   type: object
                   properties:
                     date:
                       type: string
                       description: The current date
                     time:
                       type: string
                       description: The current time
   ```

1. Revise la configuración del grupo de acciones y seleccione **Crear**.

1. Elija **Guardar** para guardar los cambios.

1. Seleccione **Preparar** para preparar el agente.

1. Seleccione **Guardar y salir** para guardar los cambios y salir del generador de agentes.

1. En la sección **Descripción general del agente**, en **Permisos**, elija el rol de servicio de IAM. Esto abre el rol en la consola de IAM. 

1. En la consola de IAM, elija la pestaña **Permisos**.

1. Elija **Agregar permisos** y, a continuación, seleccione **Crear política insertada**.

1. Elija la pestaña **JSON** y pegue la siguiente política: Asegúrese de que `Resource` es el Nombre de recurso de Amazon (ARN) de la función de Lambda. Anotó el ARN en el paso 6 de [Paso 1: Crear una función de Lambda](agent-tutorial-step1.md). 

1. Elija **Siguiente**.

1. Escriba un nombre para la política (por ejemplo, `BedrockAgentLambdaInvoke`).

1. Elija **Crear política**.

# Paso 3: prueba del agente
<a name="agent-tutorial-step3"></a>

En este procedimiento, probará el borrador de trabajo de su agente mediante la interfaz de pruebas integrada en la consola de Amazon Bedrock. Enviará consultas en lenguaje natural en las que se solicite la fecha y hora actuales y observará cómo el agente procesa estas solicitudes, invoca la función de Lambda y devuelve las respuestas formateadas. Este paso de prueba le permite comprobar que su agente entiende correctamente la intención del usuario, llama correctamente a la función de Lambda y presenta la información de una forma fácil de usar.

Para obtener más información, consulte [Prueba y solución de problemas de comportamiento del agente](agents-test.md).

**Prueba del agente**

1. Para abrir la consola de Amazon Bedrock, abra el agente que creó en [Paso 2: creación de un agente de Amazon Bedrock](agent-tutorial-step2.md).

1. Elija **Probar** para abrir el panel **Prueba**.

1. En el menú desplegable **Alias**, seleccione el alias **TestAlias: borrador de trabajo**.

1. En la interfaz de chat, introduzca una petición que desencadene una de las acciones del agente, como:
   + **What time is it?**
   + **Can you tell me today's date?**

1. El agente procesará su petición, invocará la función de Lambda si es necesario y devolverá una respuesta.

1. (Opcional) Seleccione **Mostrar rastro** para ver los pasos de [rastreo](trace-events.md) de la petición que envió al modelo. En el rastro, debería ver el razonamiento que utiliza el modelo para determinar cuándo llamar a la función de Lambda para obtener la fecha y la hora.

# Paso 4: implementación del agente con un alias
<a name="agent-tutorial-step4"></a>

Tras configurar el agente, debe implementarlo con un alias para que esté disponible para su uso. En este procedimiento, preparará al agente para la implementación mediante la creación de un alias y una versión del agente. El alias apunta a la versión, lo que le permite invocar al agente a través de un punto de conexión estable y, al mismo tiempo, mantener la capacidad de actualizar la implementación subyacente.

Para obtener más información, consulte [Implementación y uso de un agente de Amazon Bedrock en su aplicación](agents-deploy.md).

**Implementación del agente con un alias**

1. Para abrir la consola de Amazon Bedrock, abra el agente que creó en [Paso 2: creación de un agente de Amazon Bedrock](agent-tutorial-step2.md).

1. Elija **Crear alias**.

1. En **Nombre del alias**, escriba un nombre para el alias. Por ejemplo: . **DateTimeAliasAgentAlias**.

1. (Opcional) En **Description (Descripción)**, introduzca una descripción.

1. En **Asociar una versión**, seleccione **Crear una nueva versión y asociarla a este alias**.

1. Elija **Crear alias**.

1. Pruebe el alias siguiendo las instrucciones de [Paso 3: prueba del agente](agent-tutorial-step3.md). Para el paso 6, elija el alias que acaba de crear.

# Paso 5: llamada al agente desde el código de Python
<a name="agent-tutorial-step5"></a>

En este paso, aprenderá a interactuar mediante programación con el agente a través de AWS SDK para Python (Boto). El código de ejemplo muestra cómo utilizar la [InvokeAgent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html)operación, que requiere tanto el ID de AGENTE como el ID de ALIAS como parámetros para llamar al agente. El código muestra cómo enviar una petición al agente, procesar la respuesta y gestionar los modos de respuesta con transmisión y sin transmisión. Esto le permite integrar el agente de Bedrock en sus propias aplicaciones de Python.

Para obtener más información, consulte [Invocación de un agente desde su aplicación](agents-invoke-agent.md).

**Cómo llamar al agente desde el código de Python**

1. Obtenga el ID del agente. Para obtener más información, consulte [Visualización de la información de un agente](agents-view.md).

1. Obtenga el ID del alias de agente. Para obtener más información, consulte [Ver información sobre los alias de los agentes en Amazon Bedrock](agents-alias-view.md).

1. Ejecute el siguiente código. Actualice lo siguiente:
   + **AGENT\$1ID**: al ID de su agente.
   + **ALIAS\$1ID**: al ID de alias de su agente.
   + **REGIÓN**: a la AWS región en la que creó a su agente, por ejemplo`us-east-1`. 

   Para transmitir la respuesta del agente, cambie el valor de `streamFinalResponse` a `True`.

   ```
   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",
               region_name="REGION") 
       
       agent_id = "AGENT_ID"
       alias_id = "ALIAS_ID"
       session_id = "123456"
       prompt = "What's the current time?"
   
       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)})
   ```

# Paso 6: Eliminar recursos
<a name="agent-tutorial-step6"></a>

Cuando haya terminado de trabajar con su agente de Amazon Bedrock, debería limpiar los recursos que creó para evitar incurrir en gastos innecesarios. En este último procedimiento, eliminará sistemáticamente todos los AWS recursos creados durante este tutorial, incluidos el agente Bedrock, la función Lambda y las funciones \$1IAM asociadas. Este proceso de limpieza es importante para la administración de costos, ya que evita que se le apliquen cargos continuos por recursos que ya no utiliza. El procedimiento se organiza en tres partes: eliminar el agente, eliminar la función de Lambda y limpiar los roles de IAM que se crearon para permitir estos servicios.

**Topics**
+ [Eliminación del agente](#agent-tutorial-step6-console-agent)
+ [Para eliminar la función de Lambda](#agent-tutorial-step6-console-lambda)
+ [Eliminación de los roles de IAM](#agent-tutorial-step6-console-iam)

## Eliminación del agente
<a name="agent-tutorial-step6-console-agent"></a>

**Eliminación del agente**

1. Para abrir la consola de Amazon Bedrock, abra el agente que creó en [Paso 2: creación de un agente de Amazon Bedrock](agent-tutorial-step2.md).

1. Seleccione el agente que creó.

1. Elija **Eliminar**.

1. Confirme la eliminación.

## Para eliminar la función de Lambda
<a name="agent-tutorial-step6-console-lambda"></a>

**Para eliminar la función de Lambda**

1. Abra la consola en. AWS Lambda [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)

1. Seleccione la función de Lambda que creó.

1. Elija **Acciones** y, a continuación, elija **Eliminar**.

1. Confirme la eliminación.

## Eliminación de los roles de IAM
<a name="agent-tutorial-step6-console-iam"></a>

**Eliminación de los roles de IAM**

1. Abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Seleccione **Roles** en el panel de navegación.

1. Seleccione el rol de servicio del agente que creó.

1. Elija **Eliminar**.

1. Confirme la eliminación.

1. Repita el procedimiento para el rol de ejecución de Lambda.

# Recursos adicionales
<a name="agent-tutorial-resources"></a>
+ [Guía del usuario de Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html)
+ [Referencia de la API de Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html)
+ [Guía para desarrolladores de AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)
+ [Guía del usuario de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)
+ [Documentación de Agentes para Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/agents.html)
+ [OpenAPI-Specification](https://swagger.io/specification/)