

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.

# IA y machine learning
<a name="machinelearning-pattern-list"></a>

**Topics**
+ [Asociar un AWS CodeCommit repositorio de una cuenta Cuenta de AWS a Amazon SageMaker AI Studio Classic de otra cuenta](associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.md)
+ [Extraer contenido de archivos PDF automáticamente con Amazon Textract](automatically-extract-content-from-pdf-files-using-amazon-textract.md)
+ [Cree un modelo de previsión de arranque en frío utilizando DeepAR para series temporales en SageMaker Amazon AI Studio Lab](build-a-cold-start-forecasting-model-by-using-deepar.md)
+ [Cree un MLOps flujo de trabajo con Amazon SageMaker AI y Azure DevOps](build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops.md)
+ [Configure el registro de invocación de modelos en Amazon Bedrock mediante AWS CloudFormation](configure-bedrock-invocation-logging-cloudformation.md)
+ [Cree una imagen de contenedor Docker personalizada SageMaker y úsela para el entrenamiento de modelos en AWS Step Functions](create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions.md)
+ [Uso de agentes de Amazon Bedrock para automatizar la creación de controles de entrada de acceso en Amazon EKS mediante peticiones basadas en texto](using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.md)
+ [Implemente un caso de uso de RAG AWS mediante Terraform y Amazon Bedrock](deploy-rag-use-case-on-aws.md)
+ [Implemente la lógica de preprocesamiento en un modelo de aprendizaje automático en un único punto final mediante una canalización de inferencias en Amazon SageMaker](deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker.md)
+ [Implemente la validación de seguridad de la codificación en tiempo real mediante un servidor MCP con Kiro y otros asistentes de codificación](deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.md)
+ [Desarrolle asistentes avanzados de IA generativa basados en chat mediante RAG y solicitudes ReAct](develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.md)
+ [Desarrollo de un asistente basado en el chat totalmente automatizado con los agentes y las bases de conocimiento de Amazon Bedrock](develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases.md)
+ [Documentación del conocimiento institucional a partir de las entradas de voz mediante Amazon Bedrock y Amazon Transcribe](document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.md)
+ [Genere recomendaciones personalizadas y reclasificadas con Amazon Personalize](generate-personalized-and-re-ranked-recommendations-using-amazon-personalize.md)
+ [Optimice los flujos de trabajo de aprendizaje automático desde el desarrollo local hasta los experimentos escalables mediante el uso de SageMaker IA e Hydra](streamline-machine-learning-workflows-by-using-amazon-sagemaker.md)
+ [Traduce el lenguaje natural a consultas (DSL) para consultas de Elasticsearch OpenSearch y consultas de Elasticsearch](translate-natural-language-query-dsl-opensearch-elasticsearch.md)
+ [Uso de Amazon Q Developer como asistente de codificación para aumentar la productividad](use-q-developer-as-coding-assistant-to-increase-productivity.md)
+ [Utilice el SageMaker procesamiento para la ingeniería de características distribuidas de conjuntos de datos de aprendizaje automático a escala de terabytes](use-sagemaker-processing-for-distributed-feature-engineering-of-terabyte-scale-ml-datasets.md)
+ [Visualice los resultados AI/ML del modelo con Flask y AWS Elastic Beanstalk](visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.md)
+ [Más patrones](machinelearning-more-patterns-pattern-list.md)

# Asociar un AWS CodeCommit repositorio de una cuenta Cuenta de AWS a Amazon SageMaker AI Studio Classic de otra cuenta
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account"></a>

*Laurens van der Maas y Aubrey Oosthuizen, Amazon Web Services*

## Resumen
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-summary"></a>

Este patrón proporciona instrucciones y código sobre cómo asociar un AWS CodeCommit repositorio de una Cuenta de AWS (cuenta A) con Amazon SageMaker AI Studio Classic de otra Cuenta de AWS (cuenta B). Para configurar la asociación, debe crear una política y un rol AWS Identity and Access Management (de IAM) en la cuenta A y una política en línea de IAM en la cuenta B. A continuación, debe utilizar un script de shell para clonar el CodeCommit repositorio de la cuenta A a Amazon SageMaker AI Classic en la cuenta B.

## Requisitos previos y limitaciones
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-prereqs"></a>

**Requisitos previos**
+ Dos [Cuentas de AWS](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/), una que contiene el CodeCommit repositorio y la otra que contiene un dominio de SageMaker IA con un usuario
+ [Dominio y usuario de SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-studio-onboard.html) aprovisionados, con acceso a Internet o acceso a CodeCommit y AWS Security Token Service (AWS STS) a través de puntos finales de red privada virtual (VPC)
+ Conocimientos básicos de [IAM](https://docs.aws.amazon.com/iam/?id=docs_gateway)
+ [Conocimientos básicos de AI Studio Classic SageMaker ](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html)
+ Conocimientos básicos de [Git](https://git-scm.com/) y [CodeCommit ](https://docs.aws.amazon.com/codecommit/index.html)

**Limitaciones**

Este patrón se aplica únicamente a SageMaker AI Studio Classic, no RStudio a Amazon SageMaker AI.

## Arquitectura
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-architecture"></a>

**Pila de tecnología**
+ Amazon SageMaker AI
+ Amazon SageMaker AI Studio clásico
+ AWS CodeCommit
+ AWS Identity and Access Management (IAM) 
+ Git

**Arquitectura de destino**

El siguiente diagrama muestra una arquitectura que asocia un CodeCommit repositorio de la cuenta A a SageMaker AI Studio Classic en la cuenta B.

![\[Diagrama de arquitectura para la asociación entre cuentas\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/d40df9eb-6ee2-4cb8-8257-051fa624e52a/images/abb89a66-fc8f-4e72-8f45-f0f44c2ec6ce.png)


En el diagrama, se muestra el siguiente flujo de trabajo:

1. Un usuario asume el `MyCrossAccountRepositoryContributorRole` rol en la cuenta A a través del `sts:AssumeRole` rol, mientras que usa el SageMaker rol de ejecución de SageMaker IA en AI Studio Classic en la cuenta B. El rol asumido incluye CodeCommit los permisos para clonar e interactuar con el repositorio especificado.

1. El usuario ejecuta los comandos de Git desde el terminal del sistema en SageMaker AI Studio Classic.

**Automatización y escala**

Este patrón consiste en pasos manuales que se pueden automatizar mediante el uso de [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/?id=docs_gateway), [AWS CloudFormation](https://docs.aws.amazon.com/cloudformation/?id=docs_gateway), o [Terraform](https://www.terraform.io/).

## Tools (Herramientas)
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-tools"></a>

**Herramientas de AWS**
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/?id=docs_gateway) es un servicio de aprendizaje automático (ML) gestionado que le ayuda a crear y entrenar modelos de aprendizaje automático para luego implementarlos en un entorno hospedado listo para la producción.
+ [Amazon SageMaker AI Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) es un entorno de desarrollo integrado (IDE) basado en la web para el aprendizaje automático que le permite crear, entrenar, depurar, implementar y supervisar sus modelos de aprendizaje automático.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) es un servicio de control de versiones que permite almacenar y administrar repositorios de Git de forma privada, sin necesidad de administrar su propio sistema de control de origen.

  **Aviso**: ya no AWS CodeCommit está disponible para nuevos clientes. Los clientes actuales de AWS CodeCommit pueden seguir utilizando el servicio con normalidad. [Más información](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider/)
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.

**Otras herramientas**
+ [Git](https://git-scm.com/) es un sistema de control de versiones distribuido que rastrea los cambios en el código fuente durante el desarrollo del software.

## Epics
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-epics"></a>

### Cree una política y rol de IAM en la cuenta A
<a name="create-an-iam-policy-and-iam-role-in-account-a"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear una política de IAM de acceso al repositorio en Cuenta A. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.html)Se recomienda restringir el alcance de las políticas de IAM a los permisos mínimos requeridos para cada caso de uso. | AWS DevOps | 
| Crear un rol de IAM para el acceso al repositorio en la Cuenta A. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.html) | AWS DevOps | 

### Cree una política de IAM en línea en la cuenta B
<a name="create-an-iam-inline-policy-in-account-b"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Adjunte una política en línea a la función de ejecución asociada al usuario de su SageMaker dominio en la cuenta B. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.html) | AWS DevOps | 

### Clona el repositorio en SageMaker AI Studio Classic para la cuenta B
<a name="clone-the-repository-in-sm-studio-classic-for-account-b"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crea el script de shell en SageMaker AI Studio Classic en la cuenta B. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.html) | AWS DevOps | 
| Invoque el script de intérprete de comandos desde el terminal del sistema. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.html)Has clonado tu CodeCommit repositorio en una cuenta cruzada de SageMaker AI Studio. Ahora puede ejecutar todos los comandos de Git desde el terminal del sistema. | AWS DevOps | 

## Información adicional
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-additional"></a>

**Política de IAM de ejemplo**

Para utilizar este ejemplo de política, debe hacer lo siguiente:
+ `<CodeCommit_Repository_Region>` Región de AWS Sustitúyalo por el del repositorio.
+ Sustituya `<Account_A_ID>` por la ID de cuenta para la cuenta A.
+ `<CodeCommit_Repository_Name>`Sustitúyalo por el nombre de tu CodeCommit repositorio en la cuenta A.

```
{
"Version": "2012-10-17",		 	 	 
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "codecommit:BatchGet*",
            "codecommit:Create*",
            "codecommit:DeleteBranch",
            "codecommit:Get*",
            "codecommit:List*",
            "codecommit:Describe*",
            "codecommit:Put*",
            "codecommit:Post*",
            "codecommit:Merge*",
            "codecommit:Test*",
            "codecommit:Update*",
            "codecommit:GitPull",
            "codecommit:GitPush"
        ],
        "Resource": [
            "arn:aws:codecommit:<CodeCommit_Repository_Region>:<Account_A_ID>:<CodeCommit_Repository_Name>"
        ]
    }
]
}
```

**Ejemplo de script SageMaker AI shell**

Para utilizar este ejemplo de script, debe hacer lo siguiente:
+ Sustituya `<Account_A_ID>` por la ID de cuenta para la cuenta A.
+ Sustituya `<Account_A_Role_Name>` por el nombre del rol de IAM que ha creado anteriormente.
+ `<CodeCommit_Repository_Region>`Sustitúyalo Región de AWS por el para el repositorio.
+ `<CodeCommit_Repository_Name>`Sustitúyalo por el nombre de tu CodeCommit repositorio en la cuenta A.

```
#!/usr/bin/env bash
#Launch from system terminal
pip install --quiet git-remote-codecommit

mkdir -p ~/.aws
touch ~/.aws/config

echo "[profile CrossAccountAccessProfile]
region = <CodeCommit_Repository_Region>
credential_source=EcsContainer
role_arn = arn:aws:iam::<Account_A_ID>:role/<Account_A_Role_Name>
output = json" > ~/.aws/config

echo '[credential "https://git-codecommit.<CodeCommit_Repository_Region>.amazonaws.com"]
        helper = !aws codecommit credential-helper $@ --profile CrossAccountAccessProfile
        UseHttpPath = true' > ~/.gitconfig
        
git clone codecommit::<CodeCommit_Repository_Region>://CrossAccountAccessProfile@<CodeCommit_Repository_Name>
```

# Extraer contenido de archivos PDF automáticamente con Amazon Textract
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract"></a>

*Tianxia Jia, Amazon Web Services*

## Resumen
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-summary"></a>

Muchas organizaciones necesitan extraer información de los archivos PDF que se cargan en sus aplicaciones empresariales. Por ejemplo, una organización podría necesitar extraer con precisión la información de archivos PDF fiscales o médicos para realizar análisis tributarios o procesar reclamaciones médicas.

En la nube de Amazon Web Services (AWS), Amazon Textract extrae automáticamente la información (por ejemplo, texto impreso, formularios y tablas) de los archivos PDF y produce un archivo en formato JSON que contiene información del archivo PDF original. Puede usar Amazon Textract en la consola de administración de AWS o mediante la implementación de llamadas a la API. Le recomendamos que utilice [llamadas a la API mediante programación](https://aws.amazon.com/textract/faqs/) para escalar y procesar automáticamente grandes cantidades de archivos PDF.

Cuando Amazon Textract procesa un archivo, crea la siguiente lista de objetos `Block`: páginas, líneas y palabras de texto, formularios (pares clave-valor), tablas y celdas, y elementos de selección. También se incluye otra información del objeto, por ejemplo, [cuadros delimitadores](https://docs.aws.amazon.com/textract/latest/dg/API_BoundingBox.html) IDs, intervalos de confianza y relaciones. Amazon Textract extrae la información del contenido en forma de cadenas. Es necesario contar con valores de datos correctamente identificados y transformados para que las aplicaciones posteriores puedan utilizarlos más fácilmente. 

Este patrón describe un step-by-step flujo de trabajo para usar Amazon Textract para extraer automáticamente el contenido de los archivos PDF y procesarlo para obtener un resultado limpio. El patrón utiliza una técnica de coincidencia de plantillas para identificar correctamente el campo, el nombre clave y las tablas requeridos y, a continuación, aplica correcciones posteriores al procesamiento a cada tipo de datos. Puede utilizar este patrón para procesar distintos tipos de archivos PDF y, a continuación, escalar y automatizar este flujo de trabajo para procesar archivos PDF con un formato idéntico.   

## Requisitos previos y limitaciones
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ Un bucket de Amazon Simple Storage Service (Amazon S3) existente en el que almacenar los archivos PDF una vez convertidos a formato JPEG para su procesamiento por Amazon Textract. Para obtener más información sobre los buckets de S3, consulte la [Información general de los buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) en la documentación de Amazon S3.
+ El cuaderno de Jupyter `Textract_PostProcessing.ipynb` (adjunto), instalado y configurado. Para obtener más información sobre las libretas Jupyter, consulta [Crear una libreta Jupyter en](https://docs.aws.amazon.com/sagemaker/latest/dg/ex1-prepare.html) la documentación de Amazon. SageMaker 
+ Archivos PDF existentes que tengan un formato idéntico.
+ Conocimientos de Python.

**Limitaciones**
+ Sus archivos PDF deben ser de buena calidad y claramente legibles. Se recomiendan archivos PDF nativos, pero puede utilizar documentos escaneados y convertidos a formato PDF si todas las palabras individuales se leen con claridad. Para obtener más información al respecto, consulte [Preprocesamiento de documentos PDF con Amazon Textract: detección y eliminación de imágenes](https://aws.amazon.com/blogs/machine-learning/process-text-and-images-in-pdf-documents-with-amazon-textract/) en el blog de AWS Machine Learning.
+ Con los archivos de varias páginas, puede utilizar una operación asíncrona o combinar los archivos PDF en una única página y utilizar una operación síncrona. Para obtener más información sobre estas dos opciones, consulte [Detección y análisis de texto en documentos de varias páginas](https://docs.aws.amazon.com/textract/latest/dg/async.html) y [Detección y análisis de texto en documentos de una sola página](https://docs.aws.amazon.com/textract/latest/dg/sync.html) en la documentación de Amazon Textract.

## Arquitectura
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-architecture"></a>

El flujo de trabajo de este patrón ejecuta primero Amazon Textract sobre un archivo PDF de muestra (*Primera ejecución*) y, a continuación, lo ejecuta en archivos PDF que tengan un formato idéntico al del primer PDF (*Ejecución repetida*). El siguiente diagrama muestra el flujo de trabajo combinado de la *Primera ejecución* y la *Ejecución repetida* que extrae de forma automática y repetida el contenido de archivos PDF con idénticos formatos.

![\[Uso de Amazon Textract para extraer contenido de archivos PDF\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/2d724523-2cab-42c9-a773-65857014d9ec/images/9e20070f-3e0c-46aa-aa98-a8b1eb3395dc.png)


 

El diagrama muestra el siguiente flujo de trabajo de este patrón:

1. Convierta un archivo PDF a formato JPEG y almacénelo en un bucket de S3. 

1. Llame a la API de Amazon Textract y analice el archivo JSON de respuesta de Amazon Textract. 

1. Edite el archivo JSON añadiendo el par `KeyName:DataType` correcto para cada campo obligatorio. Cree un archivo `TemplateJSON` para la etapa de *Ejecución repetida*.

1. Defina las funciones de corrección posterior al procesamiento para cada tipo de datos (por ejemplo, flotante, entero y fecha).

1. Prepare los archivos PDF que tengan un formato idéntico al del primer archivo PDF.

1. Llame a la API de Amazon Textract y analice el JSON de respuesta de Amazon Textract.

1. Haga coincidir el archivo JSON analizado con el archivo `TemplateJSON`.

1. Implemente las correcciones posteriores al procesamiento.

El archivo de salida JSON final tiene el `KeyName` y el `Value` correctos para cada campo obligatorio.

**Pila de tecnología de destino**
+ Amazon SageMaker 
+ Amazon S3 
+ Amazon Textract

**Automatizar y escalar**

Puede automatizar el flujo de trabajo de *Ejecución repetida* mediante una función de AWS Lambda que inicie Amazon Textract cuando se agregue un nuevo archivo PDF a Amazon S3. A continuación, Amazon Textract ejecuta los scripts de procesamiento y el resultado final se puede guardar en una ubicación de almacenamiento. Para obtener más información al respecto, consulte [Uso de un desencadenador de Amazon S3 para invocar una función de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html) en la documentación de Lambda.

## Tools (Herramientas)
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-tools"></a>
+ [Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) es un servicio de aprendizaje automático totalmente gestionado que le ayuda a crear y entrenar modelos de aprendizaje automático de forma rápida y sencilla y, a continuación, a implementarlos directamente en un entorno hospedado listo para la producción.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) es un servicio de almacenamiento de objetos basado en la nube que le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.
+ [Amazon Textract](https://docs.aws.amazon.com/textract/latest/dg/what-is.html) facilita la adición de detección y análisis de texto de documentos a sus aplicaciones.

## Epics
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-epics"></a>

### Primera ejecución
<a name="first-time-run"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Convertir el archivo PDF. | Para preparar el archivo PDF para la primera ejecución, combínelo en una única página y conviértalo a formato JPEG para la [operación síncrona](https://docs.aws.amazon.com/textract/latest/dg/sync.html) (`Syn API`) de Amazon Textract.También puede utilizar la [operación asíncrona](https://docs.aws.amazon.com/textract/latest/dg/async.html) (`Asyn API`) de Amazon Textract para archivos PDF de varias páginas. | Científico de datos, desarrollador | 
| Analizar el JSON de respuesta de Amazon Textract. | Abra el cuaderno de Jupyter `Textract_PostProcessing.ipynb` (adjunto) y llame a la API de Amazon Textract mediante el siguiente código:<pre>response = textract.analyze_document(<br />Document={<br />        'S3Object': {<br />            'Bucket': BUCKET,<br />            'Name': '{}'.format(filename)<br />                    }<br />                },<br />        FeatureTypes=["TABLES", "FORMS"])</pre>Analice y transforme el JSON de respuesta en un formulario y una tabla mediante el siguiente código:<pre>parseformKV=form_kv_from_JSON(response)<br />parseformTables=get_tables_fromJSON(response)</pre> | Científico de datos, desarrollador | 
| Editar el archivo de TemplateJSON. | Edite el JSON analizado de cada `KeyName` y el `DataType` correspondiente (por ejemplo, cadena, flotante, entero o fecha) y las cabeceras de las tablas (por ejemplo, `ColumnNames` y `RowNames`).Esta plantilla se usa para cada tipo de archivo PDF individual, lo que significa que la plantilla se puede reutilizar para archivos PDF que tengan un formato idéntico. | Científico de datos, desarrollador | 
| Definir las funciones de corrección posterior al procesamiento. | Los valores de la respuesta de Amazon Textract para el archivo `TemplateJSON` son cadenas. No hay diferenciación por fecha, flotante, entero o divisa. Estos valores se deben convertir al tipo de datos correcto para su caso de uso posterior. Corrija cada tipo de datos según el archivo `TemplateJSON` mediante el siguiente código:<pre>finalJSON=postprocessingCorrection(parsedJSON,templateJSON)</pre> | Científico de datos, desarrollador | 

### Ejecución repetida
<a name="repeat-run"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prepare los archivos PDF. | Para preparar los archivos PDF, combínelos en una sola página y conviértalos a formato JPEG para la [operación síncrona](https://docs.aws.amazon.com/textract/latest/dg/sync.html) (`Syn API`) de Amazon Textract.También puede utilizar la [operación asíncrona](https://docs.aws.amazon.com/textract/latest/dg/async.html) (`Asyn API`) de Amazon Textract para archivos PDF de varias páginas. | Científico de datos, desarrollador | 
| Llamar a la API de Amazon Textract. | Para llamar a la API de Amazon Textract, utilice el siguiente código:<pre>response = textract.analyze_document(<br />        Document={<br />        'S3Object': {<br />            'Bucket': BUCKET,<br />            'Name': '{}'.format(filename)<br />                    }<br />                },<br />        FeatureTypes=["TABLES", "FORMS"])</pre> | Científico de datos, desarrollador | 
| Analizar el JSON de respuesta de Amazon Textract. | Analice y transforme el JSON de respuesta en un formulario y una tabla mediante el siguiente código:<pre>parseformKV=form_kv_from_JSON(response)<br />parseformTables=get_tables_fromJSON(response)</pre> | Científico de datos, desarrollador | 
| Cargar el archivo TemplateJSON y hacerlo coincidir con el JSON analizado. | Utilice el archivo `TemplateJSON` para extraer los pares clave-valor y la tabla correctos mediante los siguientes comandos:<pre>form_kv_corrected=form_kv_correction(parseformKV,templateJSON)<br />form_table_corrected=form_Table_correction(parseformTables, templateJSON)<br />form_kv_table_corrected_final={**form_kv_corrected , **form_table_corrected}</pre> | Científico de datos, desarrollador | 
| Correcciones posteriores al procesamiento. | Use `DataType` en el archivo `TemplateJSON` y funciones de procesamiento posterior para corregir los datos mediante el siguiente código: <pre>finalJSON=postprocessingCorrection(form_kv_table_corrected_final,templateJSON)</pre> | Científico de datos, desarrollador | 

## Recursos relacionados
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-resources"></a>
+ [Extracción automática de texto y datos estructurados de documentos con Amazon Textract](https://aws.amazon.com/blogs/machine-learning/automatically-extract-text-and-structured-data-from-documents-with-amazon-textract/)
+ [Extracción de texto y datos estructurados con Amazon Textract](https://aws.amazon.com/getting-started/hands-on/extract-text-with-amazon-textract/)
+ [Recursos de Amazon Textract](https://aws.amazon.com/textract/resources/?blog-posts-cards.sort-by=item.additionalFields.createdDate&blog-posts-cards.sort-order=desc)

## Conexiones
<a name="attachments-2d724523-2cab-42c9-a773-65857014d9ec"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/2d724523-2cab-42c9-a773-65857014d9ec/attachments/attachment.zip)

# Cree un modelo de previsión de arranque en frío utilizando DeepAR para series temporales en SageMaker Amazon AI Studio Lab
<a name="build-a-cold-start-forecasting-model-by-using-deepar"></a>

*Ivan Cui y Eyal Shacham, Amazon Web Services*

## Resumen
<a name="build-a-cold-start-forecasting-model-by-using-deepar-summary"></a>

No importa si quiere asignar los recursos de manera más eficiente al tráfico web, pronosticar la demanda de personal por parte de los pacientes o anticipar las ventas de los productos de una empresa, la previsión es una herramienta esencial. La previsión en inicio frío crea previsiones para series temporales que contienen pocos datos históricos, como un producto nuevo que acaba de presentarse en el mercado minorista. Este patrón utiliza el algoritmo de previsión DeepAR de Amazon SageMaker AI para entrenar un modelo de previsión de arranque en frío y demuestra cómo realizar previsiones de los elementos de arranque en frío.

 

[DeepAR](https://docs.aws.amazon.com/sagemaker/latest/dg/deepar.html) es un algoritmo de aprendizaje supervisado para series temporales (monodimensionales) escalares y de previsión que emplean redes neuronales recurrentes (RNN). DeepAR se centra en entrenar un único modelo de forma conjunta para todas las series temporales de los productos relacionados. 

Los métodos tradicionales de previsión de series temporales, como el promedio móvil integrado autorregresivo (ARIMA) o el suavizado exponencial (ETS), se basan en gran medida en las series temporales históricas de cada producto individual. Por lo tanto, esos métodos no son eficaces para la previsión de inicio en frío. Cuando el conjunto de datos contiene cientos de series temporales relacionadas, DeepAR supera el estándar ARIMA y los métodos ETS. También puede utilizar el modelo entrenado para generar previsiones para series temporales nuevas que son similares a aquellas para las que ha recibido capacitación.

## Requisitos previos y limitaciones
<a name="build-a-cold-start-forecasting-model-by-using-deepar-prereqs"></a>

**Requisitos previos **
+ Un activo. Cuenta de AWS
+ Un [dominio de Amazon SageMaker AI.](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-studio-onboard.html)
+ Una aplicación de [Amazon SageMaker AI Studio Lab](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-lab.html) o Jupiter lab.
+ Un bucket de Amazon Simple Storage Service (Amazon S3) con permisos de lectura y escritura.
+ Conocimientos de programación en Python.
+ Conocimientos sobre el uso de un cuaderno de Jupyter.

**Limitaciones**
+ Si se invoca el modelo de previsión sin ningún dato histórico, se devolverá un error. Si se invoca el modelo con un mínimo de puntos de datos históricos, se obtendrán predicciones inexactas con un alto grado de fiabilidad. Este patrón sugiere un enfoque para resolver estas limitaciones conocidas de la previsión de inicios en frío.
+ Algunas Servicios de AWS no están disponibles en todos Regiones de AWS. Para obtener información sobre la disponibilidad en regiones, consulte [AWS services by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para ver los puntos de conexión específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) y elija el enlace del servicio.

**Versiones de producto**
+ Python versión 3.10 o posterior.
+ El cuaderno del patrón se probó en Amazon SageMaker AI Studio en una instancia ml.t3.medium con el núcleo Python 3 (Data Science).

## Arquitectura
<a name="build-a-cold-start-forecasting-model-by-using-deepar-architecture"></a>

En el siguiente diagrama se muestran los componentes de la arquitectura y el flujo de trabajo de esta aplicación.

![\[Flujo de trabajo para crear un modelo de previsión de arranque en frío con SageMaker Amazon S3.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/98d021d3-96d2-40a9-b0ce-717934652173/images/d97d66a0-8eef-4d30-ac5f-4c6c79cf6c9f.png)


El flujo de trabajo realiza las siguientes tareas:

1. Los archivos de entrada de datos de entrenamiento y prueba se sintetizan y luego se cargan en un bucket de Amazon S3. Estos datos incluyen varias series temporales con características categóricas y dinámicas, junto con valores objetivo (por predecir). El cuaderno de Jupyter visualiza los datos para que pueda comprender mejor los requisitos de los datos de entrenamiento y los valores previstos esperados.

1. Se crea un trabajo de optimización de hiperparámetros para entrenar el modelo y encontrar el mejor modelo en función de las métricas predefinidas.

1. Los archivos de entrada se descargan del bucket de Amazon S3 a cada instancia de los trabajos de ajuste de hiperparámetros.

1. Una vez que el trabajo de ajuste selecciona el mejor modelo en función del umbral predefinido del ajustador, el modelo se implementa como un SageMaker punto final de IA.

1. Así pues, el modelo implementado estará listo para la invocación, donde sus predicciones se validan con los datos de la prueba.

El cuaderno muestra la precisión del modelo para predecir los valores objetivo cuando el número adecuado de puntos de datos históricos está disponible. Sin embargo, cuando se invoca al modelo con menos puntos de datos históricos (que representan un producto pasivo), las predicciones del modelo no coinciden con los datos de las pruebas originales, ni siquiera dentro de los niveles de confianza del modelo. En el patrón, se crea un nuevo modelo para productos pasivos en el que la longitud de contexto inicial (puntos pronosticados) se define como la cantidad de puntos históricos disponibles; a continuación, un nuevo modelo se entrena de forma iterativa a medida que se adquieren nuevos puntos de datos. El cuaderno muestra que el modelo tendrá predicciones precisas siempre que la cantidad de puntos de datos históricos se acerque a la longitud de su contexto.

## Tools (Herramientas)
<a name="build-a-cold-start-forecasting-model-by-using-deepar-tools"></a>

**Servicios de AWS**
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) le ayuda a gestionar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/?id=docs_gateway) es un servicio de aprendizaje automático (ML) gestionado que le ayuda a crear y entrenar modelos de aprendizaje automático para luego implementarlos en un entorno hospedado listo para la producción.
+ [Amazon SageMaker AI Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) es un entorno de desarrollo integrado (IDE) basado en la web para el aprendizaje automático que le permite crear, entrenar, depurar, implementar y supervisar sus modelos de aprendizaje automático.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) es un servicio de almacenamiento de objetos basado en la nube que lo ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

**Otras herramientas**
+ [Python](https://www.python.org/) es un lenguaje de programación informático de uso general.

**Repositorio de código**

El código de este patrón está disponible en el repositorio GitHub [DeepAR- ColdProduct -Patern](https://github.com/aws-samples/DeepAR-ColdProduct-Pattern).

## Prácticas recomendadas
<a name="build-a-cold-start-forecasting-model-by-using-deepar-best-practices"></a>
+ Entrene su modelo en un entorno virtual y utilice siempre el control de versiones para lograr la máxima reproducibilidad.
+ Incluya tantas características categóricas de alta calidad como pueda para obtener el mejor modelo predictivo.
+ Asegúrese de que los metadatos contengan elementos categóricos similares para que el modelo pueda deducir adecuadamente las predicciones de los productos de inicio en frío.
+ Ejecute un trabajo de optimización de hiperparámetros para obtener el modelo predictivo más alto.
+ En este patrón, el modelo que desarrolle tiene una longitud de contexto de 24 horas, lo que significa que predecirá las próximas 24 horas. Si intenta predecir las próximas 24 horas cuando tiene menos de 24 horas de datos históricos, la precisión de la predicción del modelo se degradará linealmente en función de la cantidad de puntos de datos históricos. Para mitigar este problema, cree un modelo nuevo para cada conjunto de puntos de datos históricos hasta que este número alcance la longitud de predicción (contexto) deseada. Por ejemplo, comience con un modelo de longitud de contexto de 2 horas y, a continuación, aumente el modelo en 4 horas, 8 horas, 16 horas y 24 horas respectivamente.

## Epics
<a name="build-a-cold-start-forecasting-model-by-using-deepar-epics"></a>

### Inicie su aplicación SageMaker AI Studio Classic
<a name="start-your-sm-studio-classic-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Inicie el entorno del cuaderno. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-a-cold-start-forecasting-model-by-using-deepar.html)Para obtener más información, consulte [Lanzamiento de Amazon SageMaker AI Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html) en la documentación de SageMaker IA. | Científico de datos | 

### Creación y activación del cuaderno
<a name="create-and-activate-the-notebook"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure el entorno virtual para el entrenamiento del modelo. | Para configurar el entorno virtual para el entrenamiento del modelo, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-a-cold-start-forecasting-model-by-using-deepar.html)Para obtener más información, consulte [Cargar archivos a SageMaker AI Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-tasks-files.html) en la documentación de SageMaker AI. | Científico de datos | 
| Cree y valide un modelo de previsión. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-a-cold-start-forecasting-model-by-using-deepar.html) | Científico de datos | 

## Recursos relacionados
<a name="build-a-cold-start-forecasting-model-by-using-deepar-resources"></a>
+ [Hiperparámetros DeepAR](https://docs.aws.amazon.com/sagemaker/latest/dg/deepar_hyperparameters.html)
+ [Predecir la demanda de lanzamientos de nuevos productos mediante el uso de servicios de aprendizaje automático AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/forecast-demand-new-product/introduction.html)
+ [Inicie Amazon SageMaker AI Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html)
+ [Utilice el algoritmo de SageMaker previsión AI DeepAR](https://docs.aws.amazon.com/sagemaker/latest/dg/deepar.html)

# Cree un MLOps flujo de trabajo con Amazon SageMaker AI y Azure DevOps
<a name="build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops"></a>

*Deepika Kumar, Sara van de Moosdijk y Philips Kokoh Prasetyo, Amazon Web Services*

## Resumen
<a name="build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops-summary"></a>

Las operaciones de aprendizaje automático (MLOps) son un conjunto de prácticas que automatizan y simplifican las implementaciones y los flujos de trabajo del aprendizaje automático (ML). MLOps se centra en automatizar el ciclo de vida del aprendizaje automático. Ayuda a garantizar que los modelos no solo se desarrollen, sino que también se implementen, supervisen y reentrenen de manera sistemática y repetida. Aporta DevOps principios al aprendizaje automático. MLOps da como resultado un despliegue más rápido de los modelos de aprendizaje automático, una mayor precisión a lo largo del tiempo y una mayor seguridad de que proporcionan un valor empresarial real.

Las organizaciones suelen tener DevOps herramientas y soluciones de almacenamiento de datos existentes antes de iniciar su MLOps viaje. Este patrón muestra cómo aprovechar los puntos fuertes de Microsoft Azure y AWS. Le ayuda a integrar Azure DevOps con Amazon SageMaker AI para crear un MLOps flujo de trabajo.

La solución simplifica el trabajo entre Azure y AWS. Puede usar Azure para el desarrollo y AWS el aprendizaje automático. Favorece un proceso eficaz para crear modelos de machine learning de principio a fin, que incluye la gestión de datos, el entrenamiento y la implementación en AWS. Para aumentar la eficiencia, administra estos procesos a través de las DevOps canalizaciones de Azure. La solución es aplicable a las operaciones de modelos básicos (FMOps) y a las operaciones de modelos de lenguaje de gran tamaño (LLMOps) en la IA generativa, lo que incluye ajustes precisos, bases de datos vectoriales y administración rápida.

## Requisitos previos y limitaciones
<a name="build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops-prereqs"></a>

**Requisitos previos **
+ **Suscripción a Azure**: acceso a los servicios de Azure, como Azure DevOps, para configurar las canalizaciones de integración e implementación continuas (CI/CD).
+ **Cuenta de AWS activa**: permisos para usar lo que Servicios de AWS se usa en este patrón.
+ **Datos**: acceso a datos históricos para entrenar el modelo de machine learning.
+ **Familiaridad con los conceptos de ML**: comprensión de Python, Jupyter Notebooks y desarrollo de modelos de machine learning.
+ **Configuración de seguridad**: configuración adecuada de los roles, políticas y permisos en Azure y AWS para garantizar la transferencia y el acceso seguros a los datos.
+ **Base de datos vectorial (opcional)**: si utiliza un enfoque de generación aumentada por recuperación (RAG) y un servicio de terceros para la base de datos vectorial, necesitará acceder a la base de datos vectorial externa.

**Limitaciones**
+ Esta guía no trata las transferencias de datos seguras entre nubes. Para obtener más información sobre de las transferencias de datos entre nubes, consulte [Soluciones de AWS para sistemas híbridos y multinube](https://aws.amazon.com/hybrid-multicloud/).
+ Las soluciones multinube pueden aumentar la latencia del procesamiento de datos en tiempo real y la inferencia del modelo.
+ Esta guía proporciona un ejemplo de una MLOps arquitectura de cuentas múltiples. Los ajustes son necesarios en función del aprendizaje automático y la AWS estrategia.
+ Esta guía no describe el uso de AI/ML servicios distintos de Amazon SageMaker AI.
+ Algunos Servicios de AWS no están disponibles en todos Regiones de AWS. Para conocer la disponibilidad de las regiones, consulte [Servicios de AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para los puntos de conexión específicos, consulte la página [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) y elija el enlace del servicio.

## Arquitectura
<a name="build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops-architecture"></a>

**Arquitectura de destino**

La arquitectura de destino integra Azure DevOps con Amazon SageMaker AI, lo que crea un flujo de trabajo de aprendizaje automático entre nubes. Utiliza Azure para CI/CD los procesos y la SageMaker IA para el entrenamiento y la implementación de modelos de aprendizaje automático. Describe el proceso de obtención de datos (de fuentes como Amazon S3, Snowflake y Azure Data Lake) mediante el desarrollo e implementación de modelos. Los componentes clave incluyen CI/CD las canalizaciones para la creación y el despliegue de modelos, la preparación de datos, la administración de la infraestructura y Amazon SageMaker AI para el entrenamiento y el ajuste, la evaluación y la implementación de modelos de aprendizaje automático. Esta arquitectura está diseñada para proporcionar flujos de trabajo de ML eficientes, automatizados y escalables en todas las plataformas en la nube.

![\[Diagrama de arquitectura de un MLOps flujo de trabajo que utiliza Azure DevOps y. SageMaker\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/95fdf414-e561-4a93-9628-b41db39a577e/images/84ddcc36-54ef-473e-875f-154fae18cb13.png)


La arquitectura consta de los siguientes componentes:

1. Los científicos de datos realizan experimentos de ML en la cuenta de desarrollo para explorar diferentes enfoques para los casos de uso de ML mediante diversos orígenes de datos. Los científicos de datos realizan pruebas y ensayos unitarios y, para realizar un seguimiento de sus experimentos, pueden utilizar [Amazon SageMaker AI con MLflow](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow.html). En el desarrollo de modelos de IA generativa, los científicos de datos ajustan los modelos básicos del centro de modelos de SageMaker IA JumpStart de Amazon. Tras la evaluación del modelo, los científicos de datos insertan el código y lo combinan en el repositorio Model Build, que está alojado en Azure. DevOps Este repositorio contiene código para poder hacer una canalización de creación de modelos de varios pasos.

1. En Azure DevOps, la canalización de creación de modelos, que proporciona una integración continua (CI), se puede activar automática o manualmente al fusionar el código con la rama principal. En la cuenta de automatización, esto activa la canalización de SageMaker IA para el preprocesamiento de los datos, el entrenamiento y el ajuste de los modelos, la evaluación de los modelos y el registro condicional de los modelos en función de la precisión.

1. La cuenta de automatización es una cuenta central en todas las plataformas de aprendizaje automático que aloja entornos de aprendizaje automático (Amazon ECR), modelos (Amazon S3), metadatos de modelos (SageMaker AI Model Registry), funciones (SageMaker AI Feature Store), canalizaciones automatizadas (SageMaker AI Pipelines) e información de registros de aprendizaje automático (). CloudWatch Si se trata de una carga de trabajo de IA generativa, es posible que necesite hacer evaluaciones adicionales para las peticiones de las aplicaciones posteriores. Una aplicación de gestión rápida de peticiones le permitirá agilizar y automatizar el proceso. Esta cuenta permite la volver a usar los recursos de ML y aplica las prácticas recomendadas para acelerar la entrega de casos de uso de ML.

1. La última versión del modelo se añade al Registro de modelos de SageMaker IA para su revisión. Realiza un seguimiento de las versiones de los modelos y de los artefactos respectivos (linaje y metadatos). También administra el estado del modelo (aprobado, rechazado o pendiente) y la versión para su implementación posterior.

1. Una vez que se apruebe un modelo entrenado en Model Registry mediante la interfaz del estudio o una llamada a la API, se puede enviar un evento a Amazon EventBridge. EventBridge inicia la canalización de Model Deploy en Azure DevOps.

1. La canalización de la implementación de modelos, que proporciona una implementación continua (CD), extrae la fuente del repositorio de implementación de modelos. El origen contiene el código, la configuración para la implementación del modelo y los scripts de prueba para establecer puntos de referencia de calidad. La canalización de implementación de modelos se puede adaptar a su tipo de inferencia.

1. Tras realizar las comprobaciones de control de calidad, la canalización de implementación de modelos implementa el modelo en la cuenta transitoria. La cuenta transitoria es una copia de la cuenta de producción y se utiliza para las pruebas y la evaluación de la integración. En el caso de querer realizar una transformación por lotes, la canalización de implementación de modelos puede actualizar automáticamente el proceso de inferencia en lotes para utilizar la última versión aprobada del modelo. Para realizar una inferencia asíncrona, sin servidor o en tiempo real, puede configurar o actualizar el punto de conexión del modelo correspondiente.

1. Tras realizar correctamente las pruebas en la cuenta transitoria, se puede implementar un modelo en la cuenta de producción mediante una aprobación manual a través de la canalización de implementación de modelos. Esta canalización proporciona un punto de conexión de producción en la etapa **Implementación y producción**, que incluye la supervisión del modelo y un mecanismo de valoración de los datos.

1. Una vez que el modelo esté en producción, utilice herramientas como SageMaker AI Model Monitor y SageMaker AI Clarify para identificar los sesgos, detectar desviaciones y supervisar continuamente el rendimiento del modelo.

**Automatización y escala**

Utilice infraestructura como código (IaC) para implementar automáticamente en varias cuentas y entornos. Al automatizar el proceso de configuración de un MLOps flujo de trabajo, es posible separar los entornos que utilizan los equipos de aprendizaje automático que trabajan en diferentes proyectos. [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)le ayuda a modelar, aprovisionar y gestionar AWS los recursos al tratar la infraestructura como código.

## Tools (Herramientas)
<a name="build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops-tools"></a>

**Servicios de AWS**
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) es un servicio de aprendizaje automático gestionado que le ayuda a crear y entrenar modelos de aprendizaje automático y, a continuación, implementarlos en un entorno hospedado listo para la producción.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) es un servicio de extracción, transformación y carga (ETL) completamente administrado. Ayuda a clasificar, limpiar, enriquecer y mover datos de forma fiable entre almacenes de datos y flujos de datos.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) es un servicio de almacenamiento de objetos basado en la nube que lo ayuda a almacenar, proteger y recuperar cualquier cantidad de datos. En este patrón, Amazon S3 se utiliza para el almacenamiento de datos y se integra con la SageMaker IA para el entrenamiento de modelos y los objetos de modelo.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice. En este patrón, Lambda se utiliza para las tareas procesamiento previas y posteriores de los datos.
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) es un servicio de registro de imágenes de contenedor administrado que es seguro, escalable y fiable. En este patrón, almacena los contenedores Docker que la SageMaker IA utiliza como entornos de entrenamiento e implementación.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) es un servicio de bus de eventos sin servidor que le ayuda a conectar sus aplicaciones con datos en tiempo real de diversas fuentes. Siguiendo este patrón, EventBridge organiza flujos de trabajo basados en eventos o basados en el tiempo que inician el reentrenamiento o la implementación automáticos del modelo.
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) le ayuda a crear, publicar, mantener, supervisar y proteger REST, HTTP y WebSocket APIs a cualquier escala.  En este patrón, se utiliza para crear un punto de entrada único orientado al exterior para los puntos finales de SageMaker IA.
+ En el caso de las aplicaciones RAG, puede Servicios de AWS utilizarlas, como [Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/what-is.html) y [Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html) for PostgreSQL, para almacenar las incrustaciones vectoriales que proporcionan al LLM sus datos internos.

**Otras herramientas**
+ [Azure](https://learn.microsoft.com/en-us/azure/devops/user-guide/what-is-azure-devops) le DevOps ayuda a administrar las CI/CD canalizaciones y a facilitar la creación, las pruebas y la implementación del código.
+ [Azure Data Lake Storage](https://learn.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-introduction) o [Snowflake](https://docs.snowflake.com/en/) son posibles orígenes de datos de entrenamiento de terceros para los modelos de ML.
+ [Pinecone](https://docs.pinecone.io/home), [Milvus](https://milvus.io/docs/overview.md) o [ChromaDB](https://docs.trychroma.com/) son posibles bases de datos vectoriales de terceros para almacenar incrustaciones vectoriales.

## Prácticas recomendadas
<a name="build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops-best-practices"></a>

Antes de implementar cualquier componente de este MLOps flujo de trabajo multinube, lleve a cabo las siguientes actividades:
+ Defina y comprenda el flujo de trabajo de machine learning y las herramientas necesarias para que funcione adecuadamente. Los diferentes casos de uso requieren diferentes flujos de trabajo y componentes. Por ejemplo, es posible que necesite un almacén de características para la reutilización de características y la inferencia de baja latencia en un caso de uso de personalización, pero puede que no sea necesario para otros casos de uso. Para personalizar correctamente la arquitectura, es necesario comprender el flujo de trabajo objetivo, los requisitos de los casos de uso y los métodos de colaboración preferidos del equipo de ciencia de datos.
+ Establezca una separación clara de responsabilidades para cada componente de la arquitectura. La distribución del almacenamiento de datos entre Azure Data Lake Storage, Snowflake y Amazon S3 puede aumentar la complejidad y los costos. Si es posible, elija un mecanismo de almacenamiento coherente. Del mismo modo, evite usar una combinación de DevOps servicios de Azure y AWS, o una combinación de servicios de Azure y AWS ML.
+ Elija uno o más modelos y conjuntos de datos existentes para realizar las end-to-end pruebas del MLOps flujo de trabajo. Los artefactos de prueba deben reflejar los casos de uso reales que los equipos de ciencia de datos desarrollen cuando la plataforma entre en la fase de producción.

## Epics
<a name="build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops-epics"></a>

### Diseñe su arquitectura MLOps
<a name="design-your-mlops-architecture"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Identifique los orígenes de datos | En función de los casos de uso actuales y futuros, las fuentes de datos disponibles y los tipos de datos (como los datos confidenciales), documente las fuentes de datos que deben integrarse con la MLOps plataforma. Los datos se pueden almacenar en Amazon S3, Azure Data Lake Storage, Snowflake u otros orígenes. En el caso de las cargas de trabajo de IA generativa, los datos también pueden incluir una base de conocimiento en la que se base la respuesta generada. Estos datos se almacenan como incrustaciones vectoriales en bases de datos vectoriales. Cree un plan para integrar estos orígenes con su plataforma y garantizar el acceso a los recursos correctos. | Ingeniero de datos, científico de datos, arquitecto de la nube | 
| Elija los servicios aplicables. | Personalice la arquitectura añadiendo o quitando servicios en función del flujo de trabajo que quiera usar el equipo de ciencia de datos, los orígenes de datos aplicables y la arquitectura de nube existente. Por ejemplo, los ingenieros de datos y los científicos de datos pueden realizar el preprocesamiento de datos y la ingeniería de características en SageMaker AI o Amazon EMR. AWS Glue Es poco probable que necesiten usar los tres servicios. | Administrador de AWS, ingeniero de datos, científico de datos, ingeniero de machine learning | 
| Analice los requisitos de seguridad. | Reúna y documente los requisitos de seguridad. Esto incluye determinar lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops.html)Para obtener más información sobre cómo proteger las cargas de trabajo de IA generativa, consulte Cómo [proteger la IA generativa: una introducción a la matriz de alcance de la seguridad de la IA generativa](https://aws.amazon.com/blogs/security/securing-generative-ai-an-introduction-to-the-generative-ai-security-scoping-matrix/) (entrada del blog).AWS  | Administrador de AWS, arquitecto de la nube | 

### Configurar AWS Organizations
<a name="set-up-aolong"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configurar AWS Organizations. |  AWS Organizations Configúrelo desde la raíz Cuenta de AWS. Esto le ayuda a administrar las cuentas subsiguientes que cree como parte de una MLOps estrategia de cuentas múltiples. Para obtener más información, consulte la [Documentación de AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tutorials_basic.html). | Administrador de AWS | 

### Configuración del entorno de desarrollo y control de versiones
<a name="set-up-the-development-environment-and-versioning"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crea una cuenta AWS de desarrollo. | Cree un espacio Cuenta de AWS en el que los ingenieros de datos y los científicos de datos tengan permisos para experimentar y crear modelos de aprendizaje automático. Para obtener instrucciones, consulte [Crear una cuenta de miembro en su organización](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_create.html) en la AWS Organizations documentación. | Administrador de AWS | 
| Creación de un repositorio de creación de modelos. | Cree un repositorio de Git en Azure donde los científicos de datos puedan enviar el código de creación e implementación de sus modelos una vez finalizada la fase de experimentación. Para obtener instrucciones, consulte [Configurar un repositorio de Git](https://learn.microsoft.com/en-us/devops/develop/git/set-up-a-git-repository) en la DevOps documentación de Azure. | DevOps ingeniero, ingeniero de aprendizaje automático | 
| Cree un repositorio de implementación de modelos. | Cree un repositorio de Git en Azure que almacene el código y las plantillas de implementación estándar. Debe incluir código para cada opción de implementación que utilice la organización, tal como se indicó en la fase de diseño. Por ejemplo, debe incluir puntos de conexión en tiempo real, puntos de conexión asíncronos, inferencias sin servidor o transformaciones por lotes. Para obtener instrucciones, consulte [Configurar un repositorio de Git](https://learn.microsoft.com/en-us/devops/develop/git/set-up-a-git-repository) en la DevOps documentación de Azure. | DevOps ingeniero, ingeniero de aprendizaje automático | 
| Cree un repositorio de Amazon ECR. | Configure un repositorio de Amazon ECR que almacene los entornos de ML aprobados como imágenes de Docker. Permita que los científicos de datos y los ingenieros de ML definan nuevos entornos. Para obtener instrucciones, consulte [Creación de un repositorio privado](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) en la documentación de Amazon ECR. | Ingeniero de ML | 
| Configura SageMaker AI Studio. | Configura SageMaker AI Studio en la cuenta de desarrollo de acuerdo con los requisitos de seguridad previamente definidos, las herramientas de ciencia de datos preferidas (como MLflow) y el entorno de desarrollo integrado (IDE) preferido. Utilice las configuraciones del ciclo de vida para automatizar la instalación de las funciones clave y crear un entorno de desarrollo uniforme para los científicos de datos. Para obtener más información, consulte [Amazon SageMaker AI Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated.html) y el [servidor MLflow de seguimiento](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow.html) en la documentación de SageMaker IA. | Científico de datos, ingeniero de ML, ingeniero de peticiones | 

### Integre las CI/CD canalizaciones
<a name="integrate-ci-cd-pipelines"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una cuenta de Automation. | Cree un Cuenta de AWS lugar en el que se ejecuten las canalizaciones y los trabajos automatizados. Puede dar a los equipos de ciencia de datos acceso de lectura a esta cuenta. Para obtener instrucciones, consulte [Crear una cuenta de miembro en su organización](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_create.html) en la AWS Organizations documentación. | Administrador de AWS | 
| Configure un registro de modelos. | Configura el registro de modelos de SageMaker IA en la cuenta de automatización. Este registro almacena los metadatos de los modelos de ML y permite que determinados científicos de datos o líderes de equipo aprueben o rechacen modelos. Para obtener más información, consulte [Registrar e implementar modelos con Model Registry](https://docs.aws.amazon.com/sagemaker/latest/dg/model-registry.html) en la documentación de SageMaker IA. | Ingeniero de ML | 
| Cree una canalización de creación de modelos. | Cree una CI/CD canalización en Azure que se inicie de forma manual o automática cuando el código se envíe al repositorio de Model Build. La canalización debería revisar el código fuente y crear o actualizar una canalización de SageMaker IA en la cuenta de Automation. La canalización debe añadir un modelo nuevo al registro de modelos. Para obtener más información acerca de la creación de una canalización, consulte la [documentación de Azure Pipelines](https://learn.microsoft.com/en-us/azure/devops/pipelines/get-started/what-is-azure-pipelines). | DevOps ingeniero, ingeniero de ML | 

### Desaroollo del paquete de implementación.
<a name="build-the-deployment-stack"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree cuentas AWS de puesta en escena y despliegue. | Cree modelos Cuentas de AWS de aprendizaje automático para la puesta en escena y el despliegue de ellos. Estas cuentas deben ser idénticas para poder realizar pruebas precisas de los modelos durante la fase de transición antes de pasar a la fase de producción. Puede dar a los equipos de ciencia de datos acceso de lectura a esta cuenta transitoria. Para obtener instrucciones, consulte [Crear una cuenta de miembro en su organización](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_create.html) en la AWS Organizations documentación. | Administrador de AWS | 
| Configure los buckets de S3 para la supervisión de modelos. | Complete este paso si desea habilitar la supervisión de modelos para los modelos implementados que crea la canalización de implementación de modelos. Cree buckets de Amazon S3 para almacenar los datos de entrada y salida. Para más información sobre cómo crear buckets de S3, consulte [Creación de un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) en la documentación de Amazon S3. Configure los permisos entre cuentas para que los trabajos de supervisión de modelos automatizados se ejecuten en la cuenta de Automation. Para obtener más información, consulte [Supervisar la calidad de los datos y los modelos](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor.html) en la documentación sobre SageMaker IA. | Ingeniero de ML | 
| Cree una canalización de implementación de modelos. | Cree una CI/CD canalización en Azure que comience cuando se apruebe un modelo en el registro de modelos. La canalización debe comprobar el código fuente y el artefacto del modelo, crear las plantillas de infraestructura para implementar el modelo en las cuentas transitorias y de producción, implementar el modelo en la cuenta transitoria, ejecutar pruebas automatizadas, esperar a la aprobación manual e implementar el modelo aprobado en la cuenta de producción. Para obtener más información acerca de la creación de una canalización, consulte la [documentación de Azure Pipelines](https://learn.microsoft.com/en-us/azure/devops/pipelines/get-started/what-is-azure-pipelines). | DevOps ingeniero, ingeniero de aprendizaje automático | 

### (Opcional) Automatización de la infraestructura del entorno de ML
<a name="optional-automate-ml-environment-infrastructure"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree AWS CDK nuestras CloudFormation plantillas. | Defina AWS Cloud Development Kit (AWS CDK) AWS CloudFormation nuestras plantillas para todos los entornos que deban implementarse automáticamente. Esto puede incluir el entorno de desarrollo, el entorno de automatización y los entornos transitorios y de implementación. Para obtener más información, consulte la documentación de [AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/home.html) y [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html). | AWS DevOps | 
| Cree una canalización de infraestructura. | Cree una CI/CD canalización en Azure para el despliegue de la infraestructura. Un administrador puede iniciar esta canalización para crear nuevos entornos Cuentas de AWS y configurar los que necesite el equipo de aprendizaje automático. | DevOps ingeniero | 

## Resolución de problemas
<a name="build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| **Supervisión y detección de desviaciones insuficientes**: una supervisión inadecuada puede provocar que no se detecten los problemas de rendimiento del modelo o la deriva de datos. | Refuerce los marcos de monitoreo con herramientas como Amazon CloudWatch, SageMaker AI Model Monitor y SageMaker AI Clarify. Configure alertas para tomar medidas inmediatas en caso de tener alguno de los problemas identificados. | 
| **Errores de activación de la canalización** de CI: es DevOps posible que**** la canalización de CI de Azure no se active al fusionar el código debido a una mala configuración. | Comprueba la configuración del DevOps proyecto de Azure para asegurarte de que los webhooks estén correctamente configurados y apunten a los puntos finales de SageMaker IA correctos. | 
| **Gobernanza**:** **es posible que la cuenta central de Automation no aplique las prácticas recomendadas en todas las plataformas de ML, lo que provocará flujos de trabajo incoherentes. | Audite la configuración de la cuenta de Automation y asegúrese de que todos los entornos y modelos de ML se ajusten a las prácticas recomendadas y políticas predefinidas. | 
| **Retrasos en la aprobación del registro de modelos**: esto ocurre cuando hay un retraso en la comprobación y aprobación del modelo, ya sea porque los usuarios tardan en revisarlo o por problemas técnicos. | Implemente un sistema de notificación para alertar a las partes interesadas sobre los modelos que están pendientes de aprobación y agilice el proceso de revisión. | 
| **Errores en los eventos de implementación de modelos**:** **los eventos enviados para iniciar los procesos de implementación del modelo pueden devolver errores y provocar retrasos en el proceso de implementación. | Confirma que Amazon EventBridge tiene los permisos y los patrones de eventos correctos para invocar las DevOps canalizaciones de Azure correctamente. | 
| **Cuellos de botella en la implementación de producción**:** **los procesos de aprobación manual pueden crear cuellos de botella y retrasar la implementación de los modelos en producción. | Para optimizar el flujo de trabajo de aprobación del proceso de implementación del modelo, favorezca las revisiones oportunas y los canales de comunicación claros. | 

## Recursos relacionados
<a name="build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops-resources"></a>

**AWS documentación**
+ [Documentación de Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/)
+ [Machine Learning Lens](https://docs.aws.amazon.com/wellarchitected/latest/machine-learning-lens/machine-learning-lens.html) (marco AWS bien diseñado)
+ [Planificar con éxito MLOps](https://docs.aws.amazon.com/prescriptive-guidance/latest/ml-operations-planning/welcome.html) (orientación AWS prescriptiva)

**Otros recursos AWS **
+ [MLOps hoja de ruta básica para empresas con Amazon SageMaker AI](https://aws.amazon.com/blogs/machine-learning/mlops-foundation-roadmap-for-enterprises-with-amazon-sagemaker/) (AWS entrada del blog)
+ [AWS Summit ANZ 2022: End-to-end MLOps para arquitectos](https://www.youtube.com/watch?v=UnAN35gu3Rw) (YouTube vídeo)
+ [FMOps/LLMOps: Operacionalice la IA generativa y sus diferencias con ella MLOps](https://aws.amazon.com/blogs/machine-learning/fmops-llmops-operationalize-generative-ai-and-differences-with-mlops/) (AWS entrada del blog)
+ [Operacionalice la evaluación de LLM a gran escala con Amazon SageMaker AI Clarify y sus MLOps servicios](https://aws.amazon.com/blogs/machine-learning/operationalize-llm-evaluation-at-scale-using-amazon-sagemaker-clarify-and-mlops-services/) (AWS entrada de blog)
+ [El papel de las bases de datos vectoriales en las aplicaciones de IA generativa](https://aws.amazon.com/blogs/database/the-role-of-vector-datastores-in-generative-ai-applications/) (AWS entrada del blog)

**Documentación de Azure**
+ [Documentación de Azure DevOps ](https://learn.microsoft.com/en-us/azure/devops/user-guide/what-is-azure-devops)
+ [Documentación de Azure Pipelines](https://learn.microsoft.com/en-us/azure/devops/pipelines/get-started/what-is-azure-pipelines)

# Configure el registro de invocación de modelos en Amazon Bedrock mediante AWS CloudFormation
<a name="configure-bedrock-invocation-logging-cloudformation"></a>

*Vikramaditya Bhatnagar, Amazon Web Services*

## Resumen
<a name="configure-bedrock-invocation-logging-cloudformation-summary"></a>

Puede configurar Amazon Bedrock para recopilar registros de invocación y datos de entrada y de salida del modelo para todas las invocaciones del modelo en su Cuenta de AWS. Esta es una [práctica recomendada](https://aws.amazon.com/blogs/machine-learning/best-practices-for-building-robust-generative-ai-applications-with-amazon-bedrock-agents-part-2/) para crear aplicaciones de IA generativa sólidas con Amazon Bedrock. Puede almacenar los registros de invocación de modelos en un grupo de CloudWatch registros de Amazon Logs, en un bucket de Amazon Simple Storage Service (Amazon S3) o en ambos. Tener los datos de registro en CloudWatch Logs le ayuda a crear filtros de métricas, alarmas y paneles personalizados. Amazon S3 es ideal para replicar datos en Regiones de AWS o para almacenamiento a largo plazo, según lo regido por las políticas de su organización.

Este patrón proporciona una AWS CloudFormation plantilla de ejemplo que utiliza un enfoque de infraestructura como código (IaC) para configurar el registro de invocaciones de modelos para Amazon Bedrock. La plantilla configura el almacenamiento de CloudWatch registros tanto en Logs como en Amazon S3.

## Requisitos previos y limitaciones
<a name="configure-bedrock-invocation-logging-cloudformation-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS
+ Los siguientes permisos:
  + [Permisos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html) para crear CloudFormation pilas
  + [Permisos](https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-updates) para acceder a Amazon Bedrock
  + [Permisos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-policies-s3.html) para crear buckets de Amazon S3 y acceder a ellos
  + [Permisos](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-identity-based-access-control-cwl.html) para crear grupos de CloudWatch registros y acceder a ellos
  + [Permisos](https://docs.aws.amazon.com/lambda/latest/dg/security-iam-awsmanpol.html) para crear AWS Lambda funciones y acceder a ellas
  + [Permisos](https://docs.aws.amazon.com/kms/latest/developerguide/customer-managed-policies.html) para crear claves y acceder a AWS Key Management Service ellas AWS KMS

**Limitaciones**

Este patrón registra las invocaciones de modelos tanto en CloudWatch Logs como en Amazon S3. No permite elegir solo uno de estos dos servicios.

## Arquitectura
<a name="configure-bedrock-invocation-logging-cloudformation-architecture"></a>

**Arquitectura de destino**

La CloudFormation plantilla proporciona los siguientes recursos en su destino Cuenta de AWS:
+ Un grupo CloudWatch de registros para almacenar los registros de invocación de modelos
+ Un bucket de Amazon S3 para almacenar registros de invocaciones de modelos y una política de bucket correspondiente
+ Un bucket de Amazon S3 para almacenar registros de acceso del lado de servidor y una política de bucket correspondiente
+  AWS Lambda Función que configura los ajustes de registro en Amazon Bedrock
+ Un alias AWS KMS key clave y su correspondiente
+ Un rol de servicio AWS Identity and Access Management (IAM) para Amazon Bedrock

El siguiente diagrama muestra cómo se almacenan los registros de invocación después de implementar la CloudFormation pila asociada a este patrón. Amazon Bedrock publica datos de registro cuando el modelo básico entrega texto, una imagen, un video o datos incrustados. Como se muestra en el diagrama, los buckets de Amazon S3 y el grupo de CloudWatch registros Logs se cifran con un AWS KMS key.

![\[Flujo de trabajo para registrar las invocaciones de un modelo básico de Amazon Bedrock.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/a55e7495-ec84-4d41-886e-5c37b37aac67/images/a958d52f-9072-40af-80cb-360f6c1c7fd5.png)


En el diagrama, se muestra el siguiente flujo de trabajo:

1. Un usuario envía una consulta a un modelo básico en Amazon Bedrock.

1. Amazon Bedrock asume el rol de servicio de IAM.

1. Amazon Bedrock genera datos de registro y los almacena en un grupo de CloudWatch registros y en un bucket de Amazon S3.

1. Si un usuario lee, carga o elimina cualquier archivo del bucket de Amazon S3 que contenga los registros de invocación del modelo, esas actividades se registran en otro bucket de Amazon S3 para los registros de acceso del lado del servidor.

**Automatización y escala**

Para escalar esta solución, puede implementar la CloudFormation plantilla como una pila configurada en varios Regiones de AWS y Cuentas de AWS. Para obtener más información, consulte [Administrar pilas en todas las cuentas y regiones StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) en la CloudFormation documentación.

## Tools (Herramientas)
<a name="configure-bedrock-invocation-logging-cloudformation-tools"></a>

**Servicios de AWS**
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) es un servicio totalmente gestionado que pone a su disposición modelos básicos de alto rendimiento (FMs) de las principales empresas de IA y Amazon a través de una API unificada.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)le ayuda a configurar AWS los recursos, aprovisionarlos de forma rápida y coherente y gestionarlos a lo largo de su ciclo de vida en Cuentas de AWS todo el mundo. Regiones de AWS
+ [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) le ayuda a centralizar los registros de todos sus sistemas y aplicaciones Servicios de AWS para que pueda supervisarlos y archivarlos de forma segura.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) le ayuda a crear y controlar claves criptográficas para proteger sus datos.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) es un servicio de almacenamiento de objetos que ofrece escalabilidad, disponibilidad de datos, seguridad y rendimiento líderes del sector.

**Otras herramientas**
+ [Git](https://git-scm.com/docs) es un sistema de control de versiones distribuido y de código abierto.

**Repositorio de código**

El código de este patrón está disponible en el repositorio GitHub [enable-bedrock-logging-using-cloudformation](https://github.com/aws-samples/enable-bedrock-logging-using-cloudformation).

## Epics
<a name="configure-bedrock-invocation-logging-cloudformation-epics"></a>

### Crea la pila CloudFormation
<a name="create-the-cfnshort-stack"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Descarga la CloudFormation plantilla. | Descarga la [CloudFormation plantilla](https://github.com/aws-samples/enable-bedrock-logging-using-cloudformation/blob/main/enable-bedrock-logging-using-cloudformation.yaml) del GitHub repositorio. | Arquitecto de la nube | 
| Implemente la plantilla. | Cree una pila en su cuenta y región de destino. En la sección **Parámetros**, especifique los valores para los parámetros que se definen en la plantilla. Para obtener instrucciones, consulte [Crear una pila](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) en la CloudFormation documentación. | Arquitecto de la nube | 

### Pruebe la solución
<a name="test-the-solution"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Habilite el acceso a modelos. | En Amazon Bedrock, añada el acceso a los modelos básicos. Para obtener instrucciones, consulte [Adición o eliminación del acceso a los modelos básicos de Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access-modify.html) en la documentación de Amazon Bedrock. | Arquitecto de la nube | 
| Ejecute una petición de muestra. | En el área de pruebas de Amazon Bedrock, ejecute una petición de ejemplo. Para obtener instrucciones, consulte [Generación de respuestas en la consola mediante áreas de pruebas](https://docs.aws.amazon.com/bedrock/latest/userguide/playgrounds.html) la documentación de Amazon Bedrock. | Arquitecto de la nube | 
| Revise la configuración de registro. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/configure-bedrock-invocation-logging-cloudformation.html) | Arquitecto de la nube | 
| Revise el bucket de Amazon S3: | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/configure-bedrock-invocation-logging-cloudformation.html) | Arquitecto de la nube | 
| Revise el grupo de registros. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/configure-bedrock-invocation-logging-cloudformation.html) | Arquitecto de la nube | 

## Recursos relacionados
<a name="configure-bedrock-invocation-logging-cloudformation-resources"></a>

**AWS documentación**
+ [Acceso a un bucket de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-bucket-intro.html) (documentación de Amazon S3)
+ [Creación y administración de pilas](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html) (CloudFormation documentación)
+ [Invocación del modelo de monitor](https://docs.aws.amazon.com/bedrock/latest/userguide/model-invocation-logging.html) (documentación de Amazon Bedrock)
+ [Trabajar con grupos de registros y flujos](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html) de CloudWatch registros (documentación de registros)

**AWS publicaciones de blog**
+ [Supervisión de aplicaciones de IA generativa mediante la integración de Amazon Bedrock y Amazon CloudWatch ](https://aws.amazon.com/blogs/mt/monitoring-generative-ai-applications-using-amazon-bedrock-and-amazon-cloudwatch-integration/)
+ [Prácticas recomendadas para crear aplicaciones sólidas de IA generativa con agentes de Amazon Bedrock (Parte 1)](https://aws.amazon.com/blogs/machine-learning/best-practices-for-building-robust-generative-ai-applications-with-amazon-bedrock-agents-part-1/)
+ [Prácticas recomendadas para crear aplicaciones sólidas de IA generativa con agentes de Amazon Bedrock (Parte 2)](https://aws.amazon.com/blogs/machine-learning/best-practices-for-building-robust-generative-ai-applications-with-amazon-bedrock-agents-part-2/)

# Cree una imagen de contenedor Docker personalizada SageMaker y úsela para el entrenamiento de modelos en AWS Step Functions
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions"></a>

*Julia Bluszcz, Aubrey Oosthuizen, Mohan Gowda Purushothama, Neha Sharma y Mateusz Zaremba, Amazon Web Services*

## Resumen
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions-summary"></a>

Este patrón muestra cómo crear una imagen de contenedor de Docker para [Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) y utilizarla como modelo de formación en [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html). Al empaquetar algoritmos personalizados en un contenedor, puede ejecutar prácticamente cualquier código del SageMaker entorno, independientemente del lenguaje de programación, el marco o las dependencias.

En la [SageMaker libreta](https://docs.aws.amazon.com/sagemaker/latest/dg/nbi.html) de ejemplo proporcionada, la imagen del contenedor Docker personalizado se almacena en [Amazon Elastic Container Registry (Amazon ECR).](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) A continuación, Step Functions utiliza el contenedor que está almacenado en Amazon ECR para ejecutar un script de procesamiento de Python. SageMaker A continuación, el contenedor exporta el modelo a [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html).

## Requisitos previos y limitaciones
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Un [rol de AWS Identity and Access Management (IAM) para SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html) con permisos de Amazon S3
+ Un [rol de IAM para Step Functions](https://sagemaker-examples.readthedocs.io/en/latest/step-functions-data-science-sdk/step_functions_mlworkflow_processing/step_functions_mlworkflow_scikit_learn_data_processing_and_model_evaluation.html#Create-an-Execution-Role-for-Step-Functions)
+ Conocimientos básicos sobre Python
+ Familiaridad con el SDK de Amazon SageMaker Python
+ Información de la interfaz de la línea de comandos de AWS (AWS CLI)
+ Información de AWS SDK para Python (Boto3)
+ Amazon ECR
+ Familiaridad con Docker

**Versiones de producto**
+ SDK de ciencia de datos de AWS Step Functions versión 2.3.0
+ Amazon SageMaker Python SDK versión 2.78.0

## Arquitectura
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions-architecture"></a>

En el siguiente diagrama, se muestra un ejemplo de flujo de trabajo para crear una imagen de contenedor de Docker y utilizarla después como modelo de entrenamiento en Step Functions: SageMaker

![\[Flujo de trabajo para crear una imagen de contenedor de Docker SageMaker para usarla como modelo de entrenamiento de Step Functions.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/7857d57f-3077-4b06-8971-fb5846387693/images/37755e38-0bc4-4dd0-90c7-135d95b00053.png)


En el diagrama, se muestra el siguiente flujo de trabajo:

1. Un científico o DevOps ingeniero de datos utiliza un SageMaker bloc de notas de Amazon para crear una imagen de contenedor Docker personalizada.

1. Un científico o DevOps ingeniero de datos almacena la imagen del contenedor de Docker en un repositorio privado de Amazon ECR que se encuentra en un registro privado.

1. Un científico o DevOps ingeniero de datos utiliza el contenedor de Docker para ejecutar un trabajo de SageMaker procesamiento de Python en un flujo de trabajo de Step Functions.

**Automatización y escala**

El ejemplo de SageMaker cuaderno de este patrón utiliza un tipo de instancia de `ml.m5.xlarge` bloc de notas. Puede cambiar el tipo de instancia para que se ajuste a su caso de uso. Para obtener más información sobre los tipos de instancias de SageMaker notebook, consulta [ SageMaker los precios de Amazon](https://aws.amazon.com/sagemaker/pricing/).

## Tools (Herramientas)
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions-tools"></a>
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) es un servicio de registro de imágenes de contenedor administrado que es seguro, escalable y fiable.
+ [Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) es un servicio de aprendizaje automático gestionado (ML) que le ayuda a crear y entrenar modelos de aprendizaje automático y, a continuación, a implementarlos en un entorno hospedado listo para la producción.
+ [Amazon SageMaker Python SDK](https://github.com/aws/sagemaker-python-sdk) es una biblioteca de código abierto para entrenar e implementar modelos de aprendizaje automático en. SageMaker
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) es un servicio de orquestación sin servidor que le permite combinar funciones de AWS Lambda y otros servicios de AWS para crear aplicaciones esenciales desde el punto de vista empresarial.
+ El [SDK de Python de ciencia de datos de AWS Step Functions](https://aws-step-functions-data-science-sdk.readthedocs.io/en/stable/index.html) es una biblioteca de código abierto que lo ayuda a crear flujos de trabajo de Step Functions que procesan y publican modelos de machine learning.

## Epics
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions-epics"></a>

### Crear una imagen de contenedor de Docker personalizada y guardarla en Amazon ECR
<a name="create-a-custom-docker-container-image-and-store-it-in-amazon-ecr"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure Amazon ECR y cree un nuevo registro privado. | Si aún no lo ha hecho, configure Amazon ECR siguiendo las instrucciones de [Configuración con Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/get-set-up-for-amazon-ecr.html) de la *Guía del usuario de Amazon ECR*. Cada cuenta de AWS se proporciona con un registro privado de Amazon ECR predeterminado. | DevOps ingeniero | 
| Crear un repositorio privado de Amazon ECR. | Siga las instrucciones de [Creación de un repositorio privado](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) de la *Guía del usuario de Amazon ECR*.El repositorio que cree es donde almacenará sus imágenes de contenedores de Docker personalizadas. | DevOps ingeniero | 
| Cree un Dockerfile que incluya las especificaciones necesarias para ejecutar su trabajo de SageMaker procesamiento.  | Cree un Dockerfile que incluya las especificaciones necesarias para ejecutar su trabajo de SageMaker procesamiento configurando un Dockerfile. Para obtener instrucciones, consulta Cómo [adaptar tu propio contenedor de formación](https://docs.aws.amazon.com/sagemaker/latest/dg/adapt-training-container.html) en la *Guía para SageMaker desarrolladores de Amazon*.Para obtener más información acerca de los Dockerfiles, consulte [Dockerfile Reference](https://docs.docker.com/engine/reference/builder/) (Referencia de Dockerfile) en la documentación de Docker.**Ejemplo de celdas de código de un cuaderno de Jupyter para crear un Dockerfile***Celda 1*<pre># Make docker folder<br />!mkdir -p docker</pre>*Celda 2*<pre>%%writefile docker/Dockerfile<br /><br />FROM python:3.7-slim-buster<br /><br />RUN pip3 install pandas==0.25.3 scikit-learn==0.21.3<br />ENV PYTHONUNBUFFERED=TRUE<br /><br />ENTRYPOINT ["python3"]</pre> | DevOps ingeniero | 
| Cree la imagen del contenedor de Docker y enviarla a Amazon ECR. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions.html)Para obtener más información, consulte [Crear y registrar el contenedor](https://sagemaker-examples.readthedocs.io/en/latest/advanced_functionality/scikit_bring_your_own/scikit_bring_your_own.html#Building-and-registering-the-container) en *Cómo crear su propio contenedor de algoritmos* GitHub.**Ejemplo de celdas de código del cuaderno de Jupyter para crear y registrar una imagen de Docker**Antes de ejecutar las siguientes celdas, asegúrese de haber creado un Dockerfile y de haberlo almacenado en el directorio denominado `docker`. Además, asegúrese de haber creado un repositorio de Amazon ECR y de sustituir el valor `ecr_repository` de la primera celda por el nombre del repositorio.*Celda 1*<pre>import boto3<br />tag = ':latest'<br />account_id = boto3.client('sts').get_caller_identity().get('Account')<br />region = boto3.Session().region_name<br />ecr_repository = 'byoc'<br /><br />image_uri = '{}.dkr.ecr.{}.amazonaws.com/{}'.format(account_id, region, ecr_repository + tag)</pre>*Celda 2*<pre># Build docker image<br />!docker build -t $image_uri docker</pre>*Celda 3*<pre># Authenticate to ECR<br />!aws ecr get-login-password --region {region} | docker login --username AWS --password-stdin {account_id}.dkr.ecr.{region}.amazonaws.com</pre>*Celda 4*<pre># Push docker image<br />!docker push $image_uri</pre>Debe [autenticar su cliente de Docker en su registro privado](https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry_auth.html) para poder utilizar los comandos `docker push` y `docker pull`. Estos comandos envían y extraen imágenes de los repositorios de su registro y las extraen de ellos. | DevOps ingeniero | 

### Cree un flujo de trabajo de Step Functions que utilice su imagen de contenedor de Docker personalizada
<a name="create-a-step-functions-workflow-that-uses-your-custom-docker-container-image"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un script de Python que incluya su procesamiento personalizado y su lógica de capacitación de modelos. | Escriba una lógica de procesamiento personalizada para ejecutarla en su script de procesamiento de datos. A continuación, guárdelo como un script de Python denominado `training.py`.Para obtener más información, consulte [Utilice su propio modelo con el modo SageMaker script activado](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-script-mode/sagemaker-script-mode.html) GitHub.**Ejemplo de script de Python que incluye procesamiento personalizado y lógica de capacitación de modelos**<pre>%%writefile training.py<br />from numpy import empty<br />import pandas as pd<br />import os<br />from sklearn import datasets, svm<br />from joblib import dump, load<br /><br /><br />if __name__ == '__main__':<br />    digits = datasets.load_digits()<br />    #create classifier object<br />    clf = svm.SVC(gamma=0.001, C=100.)<br />    <br />    #fit the model<br />    clf.fit(digits.data[:-1], digits.target[:-1])<br />    <br />    #model output in binary format<br />    output_path = os.path.join('/opt/ml/processing/model', "model.joblib")<br />    dump(clf, output_path)</pre> | Científico de datos | 
| Cree un flujo de trabajo de Step Functions que incluya su trabajo de SageMaker procesamiento como uno de los pasos.  | Instale e importe el [SDK de ciencia de datos de AWS Step Functions](https://aws-step-functions-data-science-sdk.readthedocs.io/en/stable/readmelink.html) y cargue el archivo **training.py** en Amazon S3. A continuación, utilice el [SDK de Amazon SageMaker Python](https://github.com/aws/sagemaker-python-sdk) para definir un paso de procesamiento en Step Functions.Asegúrese de haber [creado un rol de ejecución de IAM para Step Functions](https://sagemaker-examples.readthedocs.io/en/latest/step-functions-data-science-sdk/step_functions_mlworkflow_processing/step_functions_mlworkflow_scikit_learn_data_processing_and_model_evaluation.html#Create-an-Execution-Role-for-Step-Functions) en su cuenta de AWS.**Ejemplo de configuración del entorno y script de capacitación personalizado para cargarlo en Amazon S3**<pre>!pip install stepfunctions<br /><br />import boto3<br />import stepfunctions<br />import sagemaker<br />import datetime<br /><br />from stepfunctions import steps<br />from stepfunctions.inputs import ExecutionInput<br />from stepfunctions.steps import (<br />    Chain<br />)<br />from stepfunctions.workflow import Workflow<br />from sagemaker.processing import ScriptProcessor, ProcessingInput, ProcessingOutput<br /><br />sagemaker_session = sagemaker.Session()<br />bucket = sagemaker_session.default_bucket() <br />role = sagemaker.get_execution_role()<br />prefix = 'byoc-training-model'<br /><br /># See prerequisites section to create this role<br />workflow_execution_role = f"arn:aws:iam::{account_id}:role/AmazonSageMaker-StepFunctionsWorkflowExecutionRole"<br /><br />execution_input = ExecutionInput(<br />    schema={<br />        "PreprocessingJobName": str})<br /><br /><br />input_code = sagemaker_session.upload_data(<br />    "training.py",<br />    bucket=bucket,<br />    key_prefix="preprocessing.py",<br />)</pre>**Ejemplo SageMaker de definición de paso de procesamiento que utiliza una imagen personalizada de Amazon ECR y un script de Python**Asegúrese de utilizar el parámetro `execution_input` para especificar el nombre del trabajo. El valor del parámetro debe ser único cada vez que se ejecute el trabajo. Además, el código del archivo **training.py** se pasa como parámetro `input` a `ProcessingStep`, lo que significa que se copiará dentro del contenedor. El destino del código `ProcessingInput` es el mismo que el del segundo argumento incluido en `container_entrypoint`.<pre>script_processor = ScriptProcessor(command=['python3'],<br />                image_uri=image_uri,<br />                role=role,<br />                instance_count=1,<br />                instance_type='ml.m5.xlarge')<br /><br /><br />processing_step = steps.ProcessingStep(<br />    "training-step",<br />    processor=script_processor,<br />    job_name=execution_input["PreprocessingJobName"],<br />    inputs=[<br />        ProcessingInput(<br />            source=input_code,<br />            destination="/opt/ml/processing/input/code",<br />            input_name="code",<br />        ),<br />    ],<br />    outputs=[<br />        ProcessingOutput(<br />            source='/opt/ml/processing/model', <br />            destination="s3://{}/{}".format(bucket, prefix), <br />            output_name='byoc-example')<br />    ],<br />    container_entrypoint=["python3", "/opt/ml/processing/input/code/training.py"],<br />)</pre>**Ejemplo de flujo de trabajo de Step Functions que ejecuta un trabajo SageMaker de procesamiento**Este flujo de trabajo de ejemplo incluye solo el paso del trabajo de SageMaker procesamiento, no un flujo de trabajo completo de Step Functions. Para ver un ejemplo completo de flujo de trabajo, consulte [Cuadernos de ejemplo SageMaker en](https://aws-step-functions-data-science-sdk.readthedocs.io/en/stable/readmelink.html#example-notebooks-in-sagemaker) la documentación del SDK de ciencia de datos de AWS Step Functions.<pre>workflow_graph = Chain([processing_step])<br /><br />workflow = Workflow(<br />    name="ProcessingWorkflow",<br />    definition=workflow_graph,<br />    role=workflow_execution_role<br />)<br /><br />workflow.create()<br /># Execute workflow<br />execution = workflow.execute(<br />    inputs={<br />        "PreprocessingJobName": str(datetime.datetime.now().strftime("%Y%m%d%H%M-%SS")),  # Each pre processing job (SageMaker processing job) requires a unique name,<br />    }<br />)<br />execution_output = execution.get_output(wait=True)</pre> | Científico de datos | 

## Recursos relacionados
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions-resources"></a>
+ [Procesar datos](https://docs.aws.amazon.com/sagemaker/latest/dg/processing-job.html) (*Amazon SageMaker Developer Guide*)
+ [Adaptación de tu propio contenedor de formación](https://docs.aws.amazon.com/sagemaker/latest/dg/adapt-training-container.html) (*Amazon SageMaker Developer Guide*)

# Uso de agentes de Amazon Bedrock para automatizar la creación de controles de entrada de acceso en Amazon EKS mediante peticiones basadas en texto
<a name="using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks"></a>

*Keshav Ganesh y Sudhanshu Saurav, Amazon Web Services*

## Resumen
<a name="using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks-summary"></a>

Las organizaciones se enfrentan a desafíos al administrar los controles de acceso y el aprovisionamiento de recursos cuando varios equipos necesitan trabajar con un clúster compartido de Amazon Elastic Kubernetes Service (Amazon EKS). Un servicio de Kubernetes administrado, como Amazon EKS, ha simplificado las operaciones de los clústeres. Sin embargo, la sobrecarga administrativa que supone administrar el acceso de los equipos y los permisos de los recursos sigue siendo compleja y es tardada. 

Este patrón muestra cómo los agentes de Amazon Bedrock pueden serle útiles para automatizar la administración del acceso a los clústeres de Amazon EKS. Esta automatización permite a los equipos de desarrollo centrarse en el desarrollo de sus aplicaciones principales en lugar de centrarse en la configuración y la administración del control de acceso. Puede personalizar un agente de Amazon Bedrock para que realice acciones para una amplia variedad de tareas mediante instrucciones sencillas en lenguaje natural.

Al utilizar AWS Lambda funciones como grupos de acción, un agente de Amazon Bedrock puede gestionar tareas como la creación de entradas de acceso de usuarios y la gestión de las políticas de acceso. Además, un agente de Amazon Bedrock puede configurar asociaciones de identidad de pods que permiten el acceso a los recursos AWS Identity and Access Management (IAM) para los pods que se ejecutan en el clúster. Con esta solución, las organizaciones pueden optimizar la administración de sus clústeres de Amazon EKS con instrucciones sencillas basadas en texto, reducir la sobrecarga manual y mejorar la eficiencia general del desarrollo.

## Requisitos previos y limitaciones
<a name="using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks-prereqs"></a>

**Requisitos previos **
+ Un activo. Cuenta de AWS
+ Se establecieron [los roles y los permisos](https://docs.aws.amazon.com/bedrock/latest/userguide/security_iam_id-based-policy-examples.html) de IAM para el proceso de implementación. Esto incluye permisos para acceder a los modelos básicos (FM) de Amazon Bedrock, crear funciones Lambda y cualquier otro recurso necesario en todo el destino. Cuentas de AWS
+ El [acceso está habilitado](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html) en activo Cuenta de AWS a estos haiku Amazon Bedrock FMs: Amazon Titan Text Embeddings V2 y Anthropic Claude 3.
+ AWS Command Line Interface [https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)
+ eksctl 0.194.0 o posterior, [instalado](https://eksctl.io/installation/).

**Limitaciones**
+ Es posible que se necesiten entrenamiento y documentación para garantizar una adopción fluida y un uso efectivo de estas técnicas. El uso de Amazon Bedrock, Amazon EKS, Lambda, OpenSearch Amazon Service y [OpenAPI](https://www.openapis.org/what-is-openapi) implica una curva de aprendizaje importante para los desarrolladores y los equipos. DevOps 
+ Algunas Servicios de AWS no están disponibles en todos. Regiones de AWS Para obtener información sobre la disponibilidad en regiones, consulte [AWS services by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para ver los puntos de conexión específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) y elija el enlace del servicio.

## Arquitectura
<a name="using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks-architecture"></a>

En el siguiente diagrama se muestran los componentes de la arquitectura y el flujo de trabajo de esta aplicación.

![\[Flujo de trabajo y componentes para crear controles de acceso en Amazon EKS con los agentes de Amazon Bedrock.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/2c52b1ba-bbad-4a46-ab1e-10e69a0a66e7/images/c7981a86-f734-4c07-a2f7-63ad38b66ab6.png)


Esta solución realiza los pasos que se indican a continuación:

1. El usuario interactúa con el agente de Amazon Bedrock, ya que envía una petición o consulta que sirve de entrada para que el agente la procese y tome medidas.

1. Según la petición, el agente de Amazon Bedrock comprueba el esquema de OpenAPI para identificar la API correcta a la que dirigirse. Si el agente de Amazon Bedrock encuentra la llamada a la API correcta, la solicitud se dirige al grupo de acciones asociado a la función de Lambda que implementa estas acciones.

1. Si no encuentra una API relevante, el agente de Amazon Bedrock consulta la OpenSearch colección. La OpenSearch colección utiliza contenido indexado de la base de conocimientos que proviene del depósito de Amazon S3 que contiene la *Guía del usuario de Amazon EKS*.

1. La OpenSearch colección devuelve la información contextual relevante al agente de Amazon Bedrock.

1. En el caso de las solicitudes prácticas (aquellas que coinciden con una operación de API), el agente de Amazon Bedrock se ejecuta en una nube privada virtual (VPC) y activa la función de Lambda.

1. La función de Lambda realiza una acción que se basa en la entrada del usuario dentro del clúster de Amazon EKS.

1. El bucket de Amazon S3 para el código de Lambda almacena el artefacto que contiene el código y la lógica escritos para la función de Lambda.

## Tools (Herramientas)
<a name="using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks-tools"></a>

**Servicios de AWS**
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) es un servicio totalmente gestionado que pone a su disposición modelos básicos de alto rendimiento (FMs) de las principales empresas emergentes de IA y Amazon a través de una API unificada.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)le ayuda a configurar AWS los recursos, aprovisionarlos de forma rápida y coherente y gestionarlos a lo largo de su ciclo de vida en todo el territorio y. Cuentas de AWS Regiones de AWS
+ [Amazon Elastic Kubernetes Service (Amazon](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) EKS) le ayuda a ejecutar AWS Kubernetes sin necesidad de instalar o mantener su propio plano de control o nodos de Kubernetes.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.
+ [Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/what-is.html) es un servicio gestionado que le ayuda a implementar, operar y escalar OpenSearch clústeres en Nube de AWS. Su característica de colecciones le permite organizar los datos y crear bases de conocimiento integrales que los asistentes de IA, como los agentes de Amazon Bedrock, pueden utilizar.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) es un servicio de almacenamiento de objetos basado en la nube que lo ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

**Otras herramientas**
+ [eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html): es una utilidad sencilla de línea de comandos para crear y administrar clústeres de Kubernetes en Amazon EKS.

**Repositorio de código**

El código de este patrón está disponible en el repositorio GitHub [eks-access-controls-bedrock-agent](https://github.com/aws-samples/eks-access-controls-bedrock-agent.git).

## Prácticas recomendadas
<a name="using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks-best-practices"></a>
+ Mantenga la mayor seguridad posible al implementar este patrón. Asegúrese de que el clúster de Amazon EKS sea privado, tenga permisos de acceso limitados y que todos los recursos estén dentro de una nube privada virtual (VPC). Para más información, consulte [Best practices for security](https://docs.aws.amazon.com/eks/latest/best-practices/security.html) en la documentación de Amazon EKS.
+ Utilice [claves administradas por el AWS KMS cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html) siempre que sea posible y concédales permisos de acceso limitados.
+ Cumpla con el principio de privilegio mínimo y conceda los permisos mínimos necesarios para llevar a cabo una tarea. Para obtener más información, consulte [Otorgar privilegio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) y [Prácticas recomendadas de seguridad](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la documentación de IAM.

## Epics
<a name="using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks-epics"></a>

### Configuración del entorno
<a name="set-up-the-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clonar el repositorio. | Para clonar el repositorio de este patrón, ejecute el comando siguiente en la estación de trabajo local:<pre>git clone https://github.com/aws-samples/eks-access-controls-bedrock-agent.git</pre> | AWS DevOps | 
| Obtenga la Cuenta de AWS identificación. | Para obtener la Cuenta de AWS identificación, sigue los siguientes pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html)Este comando almacena tu Cuenta de AWS ID en la `AWS_ACCOUNT` variable. | AWS DevOps | 
| Cree el bucket de S3 para el código de Lambda. | Para implementar esta solución, debe crear tres buckets de Amazon S3 que sirvan para propósitos distintos, como se muestra en el diagrama de [arquitectura](#using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks-architecture). Los buckets de S3 son para código de Lambda, una base de conocimientos y un esquema OpenAPI.Para crear el bucket de Lambda, haga esto:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html)El comando package crea una nueva CloudFormation plantilla (`eks-access-controls-template.yaml`) que contiene:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html) | AWS DevOps | 
| Cree el bucket de S3 para la base de conocimientos. | Para crear el bucket de Amazon S3 para la base de conocimientos, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html) | AWS DevOps | 
| Cree el bucket de S3 para el esquema de OpenAPI. | Para crear el bucket de Amazon S3 para el esquema de OpenAPI, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html) | AWS DevOps | 

### Implemente la CloudFormation pila
<a name="deploy-the-cfnshort-stack"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Despliegue la CloudFormation pila.  | Para implementar la CloudFormation pila, usa el archivo CloudFormation de plantilla `eks-access-controls-template.yaml` que creaste anteriormente. Para obtener instrucciones más detalladas, consulte [Crear una pila desde la CloudFormation consola](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) en la CloudFormation documentación.El aprovisionamiento del OpenSearch índice con la CloudFormation plantilla tarda unos 10 minutos.Una vez creada la pila, anote el valor de `VPC_ID` y `PRIVATE_SUBNET ID`. | AWS DevOps | 
| Cree el clúster de Amazon EKS.  | Para crear el clúster de Amazon EKS dentro de la VPC, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html)Los resultados esperados son los siguientes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html) | AWS DevOps | 

### Conexión de la función de Lambda y el clúster de Amazon EKS
<a name="connect-the-lam-function-and-the-eks-cluster"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una conexión entre el clúster de Amazon EKS y la función de Lambda. | Para configurar los permisos de red e IAM para permitir que la función de Lambda se comunique con el clúster de Amazon EKS, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html) | AWS DevOps | 

### Pruebe la solución
<a name="test-the-solution"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Pruebe el agente de Amazon Bedrock. | Antes de hacer pruebas con el agente de Amazon Bedrock, asegúrese de hacer lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html)Para acceder al agente de Amazon Bedrock, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html)También puede pedirle al agente que realice acciones para las asociaciones de Pod Identity de EKS. Para más información, consulte [Más información sobre cómo Pod Identity de EKS concede a los pods acceso a los Servicios de AWS](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html) en la documentación de Amazon EKS. | AWS DevOps | 

### Limpieza
<a name="clean-up"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Eliminación de recursos. | Para limpiar los recursos que creó este patrón, siga el procedimiento siguiente. Espere a que cada paso de eliminación termine antes de ir al paso siguiente.Este procedimiento eliminará de manera permanente todos los recursos creados por estas pilas. Asegúrese de que hizo una copia de seguridad de los datos importantes antes de continuar.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html) | AWS DevOps | 

## Resolución de problemas
<a name="using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| Durante la configuración del entorno, se devuelve un código de error distinto de cero. | Compruebe que está utilizando la carpeta correcta al ejecutar los comandos para implementar esta solución. Para más información, consulte el archivo [FIRST\$1DEPLOY.md](https://github.com/aws-samples/eks-access-controls-bedrock-agent/blob/main/FIRST_DEPLOY.md) del repositorio de este patrón. | 
| La función de Lambda no puede hacer la tarea. | Asegúrese de que la conectividad esté configurada correctamente desde la función de Lambda al clúster de Amazon EKS. | 
| Las indicaciones del agente no reconocen el APIs. | Implementar la solución. Para más información, consulte el archivo [RE\$1DEPLOY.md](https://github.com/aws-samples/eks-access-controls-bedrock-agent/blob/main/RE_DEPLOY.md) del repositorio de este patrón. | 
| La pila no se puede eliminar. | Es posible que se produzca un error al intentar eliminar la pila por primera vez. Este error puede producirse debido a problemas de dependencia con el recurso personalizado que se creó para la OpenSearch colección, que se encarga de la indexación de la base de conocimientos. Para eliminar la pila, vuelva a intentar la operación de eliminación conservando el recurso personalizado. | 

## Recursos relacionados
<a name="using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks-resources"></a>

**AWS Blog**
+ [A deep dive into simplified Amazon EKS access management controls](https://aws.amazon.com/blogs/containers/a-deep-dive-into-simplified-amazon-eks-access-management-controls/) 

**Documentación de Amazon Bedrock**
+ [Automate tasks in your application using AI agents](https://docs.aws.amazon.com/bedrock/latest/userguide/agents.html) 
+ [Cómo funciona Amazon Bedrock Agents](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-how.html)
+ [Pruebe y solucione los problemas del comportamiento de los agentes](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-test.html)
+ [Utilice grupos de acciones para definir las acciones que debe realizar su agente](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-action-create.html) 

**Documentación de Amazon EKS**
+ [Descubra cómo funciona el control de acceso en Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/cluster-auth.html)

# Implemente un caso de uso de RAG AWS mediante Terraform y Amazon Bedrock
<a name="deploy-rag-use-case-on-aws"></a>

*Martin Maritsch, Nicolas Jacob Baer, Olivier Brique, Julian Ferdinand Grueber, Alice Morano y Nicola D Orazio, Amazon Web Services*

## Resumen
<a name="deploy-rag-use-case-on-aws-summary"></a>

AWS ofrece varias opciones para crear sus casos de uso de IA generativa habilitados para la [generación aumentada de recuperación (RAG).](https://aws.amazon.com/what-is/retrieval-augmented-generation/) Este patrón le proporciona una solución para una aplicación basada en RAG basada en LangChain y compatible con Amazon Aurora PostgreSQL como almacén vectorial. Puede implementar directamente esta solución con Terraform en su RAG Cuenta de AWS e implementar el siguiente caso de uso sencillo:

1. El usuario carga un archivo de forma manual en un bucket de Amazon Simple Storage Service (Amazon S3), como un archivo de Microsoft Excel o un documento PDF. (Para obtener más información sobre los tipos de archivos compatibles, consulte la documentación de [Unstructured](https://docs.unstructured.io/open-source/core-functionality/partitioning) [Sin estructurar]).

1. El contenido del archivo se extrae y se incrusta en una base de datos de conocimiento basada en Aurora sin servidor compatible con PostgreSQL, que permite la ingesta de documentos casi en tiempo real en el almacén vectorial. Este enfoque permite al modelo de RAG acceder a la información relevante y recuperarla para casos de uso en los que las bajas latencias son importantes.

1. Cuando el usuario utiliza el modelo de generación de texto, mejora la interacción al recuperar y aumentar el contenido relevante de los archivos cargados anteriormente.

El patrón utiliza [Amazon Titan Text Embeddings v2](https://docs.aws.amazon.com/bedrock/latest/userguide/titan-embedding-models.html) como modelo de incrustación y [Anthropic Claude 3 Sonnet](https://aws.amazon.com/bedrock/claude/) como modelo de generación de texto, ambos disponibles en Amazon Bedrock.

## Requisitos previos y limitaciones
<a name="deploy-rag-use-case-on-aws-prereqs"></a>

**Requisitos previos **
+ Un activo. Cuenta de AWS
+ AWS Command Line Interface (AWS CLI) instalado y configurado con su Cuenta de AWS. Para obtener instrucciones de instalación, consulte [Instalar o actualizar a la última versión de AWS CLI en la](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) AWS CLI documentación. Para revisar sus AWS credenciales y el acceso a su cuenta, consulte los [ajustes de configuración y del archivo de credenciales](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) en la AWS CLI documentación.
+ Acceso al modelo que está habilitado para los modelos de idiomas grandes requeridos (LLMs) en la consola Amazon Bedrock de su Cuenta de AWS. Este patrón requiere lo siguiente: LLMs
  + `amazon.titan-embed-text-v2:0`
  + `anthropic.claude-3-sonnet-20240229-v1:0`

**Limitaciones**
+ Esta arquitectura de ejemplo no incluye una interfaz para responder preguntas mediante programación con la base de datos vectorial. Si su caso de uso requiere una API, considere añadir [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide) con una AWS Lambda función que ejecute tareas de recuperación y respuesta a preguntas. 
+ Este ejemplo de arquitectura no incluye características de supervisión para la infraestructura implementada. Si su caso de uso requiere supervisión, considere la posibilidad de añadir [servicios de supervisión de AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/welcome.html).
+ Si carga muchos documentos en poco tiempo al bucket de Amazon S3, es posible que la función de Lambda encuentre límites de tasas. Como solución, puede desacoplar la función de Lambda de una cola de Amazon Simple Queue Service (Amazon SQS) donde pueda controlar la frecuencia de las invocaciones de Lambda.
+ Algunas Servicios de AWS no están disponibles en todos. Regiones de AWS Para obtener información sobre la disponibilidad en regiones, consulte [Servicios de AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para ver los puntos de conexión específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) y elija el enlace del servicio.

**Versiones de producto**
+ [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) versión 2 o posterior
+ La versión 26.0.0 o posterior de [Docker](https://docs.docker.com/get-started/)
+ [Poetry](https://pypi.org/project/poetry/) versión 1.7.1 o posterior
+ [Python](https://www.python.org/downloads/) versión 3.10 o posterior
+ La versión 1.8.4 o posterior de [Terraform](https://developer.hashicorp.com/terraform/install)

## Arquitectura
<a name="deploy-rag-use-case-on-aws-architecture"></a>

En el siguiente diagrama se muestran los componentes de la arquitectura y el flujo de trabajo de esta aplicación.

![\[Flujo de trabajo para crear una aplicación basada en RAG con Aurora PostgreSQL LLMs y Amazon Bedrock.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/8f184945-7f17-4760-8806-6d0eaeef372a/images/3771b7a0-05bd-4eb3-ad5b-199e22f86184.png)


Este diagrama ilustra lo siguiente:

1. Cuando se crea un objeto en el bucket `bedrock-rag-template-<account_id>` de Amazon S3, una [notificación de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/EventNotifications.html) invoca la función de Lambda `data-ingestion-processor`.

1. La función de Lambda `data-ingestion-processor` se basa en una imagen de Docker almacenada en el repositorio Amazon Elastic Container Registry (Amazon ECR) `bedrock-rag-template`.

   [La función usa el [LangChain S3 FileLoader](https://python.langchain.com/v0.1/docs/integrations/document_loaders/aws_s3_file/) para leer el archivo como un documento. LangChain ](https://api.python.langchain.com/en/v0.0.339/schema/langchain.schema.document.Document.html) Luego, divide [LangChain RecursiveCharacterTextSplitter](https://python.langchain.com/v0.1/docs/modules/data_connection/document_transformers/recursive_text_splitter/)cada documento, con una `CHUNK_SIZE` y una `CHUNK_OVERLAP` que dependen del tamaño máximo del token del modelo de incrustación Amazon Titan Text Embedding V2. A continuación, la función de Lambda invoca el modelo de incrustación de Amazon Bedrock para incrustar los fragmentos en representaciones vectoriales numéricas. Por último, estos vectores se almacenan en la base de datos de Aurora PostgreSQL. Para acceder a la base de datos, la función Lambda recupera primero el nombre de usuario y la contraseña de. AWS Secrets Manager

1. En la [instancia de Amazon SageMaker AI notebook](https://docs.aws.amazon.com/sagemaker/latest/dg/nbi.html)`aws-sample-bedrock-rag-template`, el usuario puede escribir un mensaje de pregunta. El código invoca Claude 3 en Amazon Bedrock y añade la información de la base de conocimientos al contexto de la petición. Como resultado, Claude 3 proporciona respuestas utilizando la información de los documentos.

El enfoque de este patrón con respecto a las redes y la seguridad es el siguiente:
+ La función de Lambda `data-ingestion-processor` se encuentra en una subred privada dentro de la nube privada virtual (VPC). La función de Lambda no puede enviar tráfico a la Internet pública debido a su grupo de seguridad. Como resultado, el tráfico a Amazon S3 y Amazon Bedrock se enruta únicamente a través de los puntos de conexión de VPC. Por lo tanto, el tráfico no atraviesa la red pública de Internet, lo que reduce la latencia y añade una capa adicional de seguridad a nivel de red.
+ Todos los recursos y datos se cifran siempre que sea posible mediante la clave AWS Key Management Service (AWS KMS) con el alias`aws-sample/bedrock-rag-template`.

**Automatización y escala**

Este patrón utiliza Terraform para implementar la infraestructura del repositorio de código en una Cuenta de AWS.

## Tools (Herramientas)
<a name="deploy-rag-use-case-on-aws-tools"></a>

**Servicios de AWS**
+ La [edición de Amazon Aurora compatible con PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) es un motor de base de datos relacional compatible con ACID, completamente administrado que le permite configurar, utilizar y escalar implementaciones de PostgreSQL. En este patrón, Aurora compatible con PostgreSQL utiliza el complemento pgvector como base de datos vectorial.
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) es un servicio totalmente gestionado que pone a su disposición modelos básicos de alto rendimiento (FMs) de las principales empresas emergentes de IA y Amazon a través de una API unificada.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) es una herramienta de código abierto que le ayuda a interactuar Servicios de AWS mediante comandos en su consola de línea de comandos.
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) es un servicio de registro de imágenes de contenedor administrado que es seguro, escalable y fiable. En este patrón, Amazon ECR aloja la imagen de Docker para la función de Lambda `data-ingestion-processor`.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) lo ayuda a crear y controlar claves criptográficas que ayudan a proteger los datos.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice. En este patrón, Lambda ingiere datos en el almacén vectorial.
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/?id=docs_gateway) es un servicio de aprendizaje automático (ML) gestionado que le ayuda a crear y entrenar modelos de aprendizaje automático para luego implementarlos en un entorno hospedado listo para la producción.
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) lo ayuda a reemplazar las credenciales codificadas en su código, incluidas contraseñas, con una llamada a la API de Secrets Manager para recuperar el secreto mediante programación.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) es un servicio de almacenamiento de objetos basado en la nube que lo ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) le ayuda a lanzar AWS recursos en una red virtual que haya definido. Esa red virtual es similar a la red tradicional que utiliza en su propio centro de datos, con los beneficios de usar la infraestructura escalable de AWS. La VPC incluye subredes y tablas de enrutamiento para controlar el flujo de tráfico.

**Otras herramientas**
+ [Docker](https://docs.docker.com/manuals/) es un conjunto de productos de plataforma como servicio (PaaS) que utiliza la virtualización a nivel del sistema operativo para entregar software en contenedores.
+ [HashiCorp Terraform](https://www.terraform.io/docs) es una herramienta de infraestructura como código (IaC) que facilita usar el código para aprovisionar y administrar los recursos y la infraestructura en la nube.
+ [Poetry](https://pypi.org/project/poetry/) es una herramienta de empaquetado y administración de dependencias de Python.
+ [Python](https://www.python.org/) es un lenguaje de programación informático de uso general.

**Repositorio de código**

El código de este patrón está disponible en el repositorio GitHub [terraform-rag-template-using-amazon-bedrock](https://github.com/aws-samples/terraform-rag-template-using-amazon-bedrock).

## Prácticas recomendadas
<a name="deploy-rag-use-case-on-aws-best-practices"></a>
+ Aunque este ejemplo de código se puede implementar en cualquier Región de AWS lugar, le recomendamos que utilice US East (North Virginia) `us-east-1` o US West (North California). `us-west-1` Esta recomendación se basa en la disponibilidad de modelos de incrustación y fundacionales en Amazon Bedrock en el momento de la publicación de este patrón. Para obtener una up-to-date lista del soporte del modelo base de Amazon Bedrock Regiones de AWS, consulte [Soporte de modelos Región de AWS en la](https://docs.aws.amazon.com/bedrock/latest/userguide/models-regions.html) documentación de Amazon Bedrock. Para obtener información sobre cómo implementar este ejemplo de código en otras regiones, consulte la [información adicional](#deploy-rag-use-case-on-aws-additional).
+ Este patrón solo proporciona una proof-of-concept demostración (PoC) o piloto. Si desea llevar el código a producción, asegúrese de seguir las siguientes prácticas recomendadas:
  + Habilite el registro de acceso al servidor de Amazon S3.
  + Configure la [supervisión y las alertas](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html) para la función de Lambda.
  + Si su caso de uso requiere una API, considere añadir Amazon API Gateway con una función de Lambda que ejecute tareas de recuperación y respuesta a preguntas.
+ Siga el principio de privilegio mínimo y conceda los permisos mínimos necesarios para llevar a cabo una tarea. Para obtener más información, consulte [Otorgar privilegio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) y [Prácticas recomendadas de seguridad](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPracticesAndUseCases.html) en la documentación de IAM.

## Epics
<a name="deploy-rag-use-case-on-aws-epics"></a>

### Implemente la solución en un Cuenta de AWS
<a name="deploy-the-solution-in-an-aws-account"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clonar el repositorio. | Para clonar el GitHub repositorio proporcionado con este patrón, utilice el siguiente comando:<pre>git clone https://github.com/aws-samples/terraform-rag-template-using-amazon-bedrock</pre> | AWS DevOps | 
| Configure las variables. | Para configurar los parámetros de este patrón, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-rag-use-case-on-aws.html) | AWS DevOps | 
| Implemente la solución. | Para implementar la solución, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-rag-use-case-on-aws.html)La implementación de la infraestructura aprovisiona una instancia de SageMaker IA dentro de la VPC y con los permisos para acceder a la base de datos PostgreSQL de Aurora. | AWS DevOps | 

### Pruebe la solución
<a name="test-the-solution"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Ejecute la demostración. | Una vez que la implementación anterior de la infraestructura se haya realizado correctamente, siga estos pasos para ejecutar la demostración en cuaderno de Jupyter:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-rag-use-case-on-aws.html)El cuaderno de Jupyter le guía a través del siguiente proceso:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-rag-use-case-on-aws.html) | AWS general | 

### Limpieza de la infraestructura
<a name="clean-up-infrastucture"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Limpie la infraestructura. | Para eliminar todos los recursos que creó cuando ya no sean necesarios, utilice el siguiente comando:<pre>terraform destroy -var-file=commons.tfvars</pre> | AWS DevOps | 

## Recursos relacionados
<a name="deploy-rag-use-case-on-aws-resources"></a>

**AWS resources**
+ [Creación de funciones de Lambda con Python](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html)
+ [Parámetros de inferencia para modelos básicos](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters.html)
+ [Acceso a los modelos fundacionales de Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)
+ [El papel de las bases de datos vectoriales en las aplicaciones de IA generativa](https://aws.amazon.com/blogs/database/the-role-of-vector-datastores-in-generative-ai-applications/) (blog de bases AWS de datos)
+ [Uso de Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)

**Otros recursos**
+ [Documentación de pgvector](https://github.com/pgvector/pgvector)

## Información adicional
<a name="deploy-rag-use-case-on-aws-additional"></a>

**Implementación de una base de datos vectorial**

Este patrón utiliza Aurora compatible con PostgreSQL para implementar una base de datos vectorial para RAG. Como alternativa a Aurora PostgreSQL AWS , ofrece otras capacidades y servicios para RAG, como Amazon Bedrock Knowledge Bases y Amazon Service. OpenSearch Puede elegir la solución que mejor se adapte a sus requisitos específicos:
+ [Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/what-is.html) proporciona motores de búsqueda y análisis distribuidos que puede utilizar para almacenar y consultar grandes volúmenes de datos.
+ [Las bases de conocimiento de Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html) están diseñadas para crear e implementar bases de conocimiento como una abstracción adicional para simplificar el proceso de ingesta y recuperación de RAG. Las bases de conocimiento de Amazon Bedrock funcionan tanto con Aurora PostgreSQL como con Amazon Service. OpenSearch 

**¿Implementar en otros Regiones de AWS**

Como se describe en [Arquitectura](#deploy-rag-use-case-on-aws-architecture), le recomendamos que utilice la región Este de EE. UU. (Norte de Virginia):`us-east-1` u Oeste de EE. UU. (Norte de California):`us-west-1` para implementar este ejemplo de código. Sin embargo, hay dos formas posibles de implementar este ejemplo de código en regiones distintas de `us-east-1` y `us-west-1`. Puede configurar la región de implementación en el archivo `commons.tfvars`. Para el acceso al modelo fundacional entre regiones, tenga en cuenta las opciones siguientes:
+ **Atravesar la Internet pública**: si el tráfico puede atravesar la Internet pública, añada puertas de enlace de Internet a la VPC. A continuación, ajuste el grupo de seguridad asignado a la función Lambda `data-ingestion-processor` y a la instancia de SageMaker AI notebook para permitir el tráfico saliente a la Internet pública.
+ **No atravesar la Internet pública**: para implementar este ejemplo en cualquier otra región que no sea `us-east-1` ni `us-west-1`, haga lo siguiente:

1. En la región `us-east-1` o `us-west-1`, cree una VPC adicional que incluya un punto de conexión de VPC para `bedrock-runtime`. 

1. Cree una conexión de emparejamiento mediante el [emparejamiento de VPC](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) o una [puerta de enlace de tránsito](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-peering.html) a la VPC de la aplicación.

1. Al configurar el cliente `bedrock-runtime` de boto3 en cualquier función de Lambda fuera de `us-east-1` o `us-west-1`, pase el nombre de DNS privado del punto de conexión de VPC para `bedrock-runtime` en `us-east-1` o us-west-1 como `endpoint_url` al cliente de boto3.

# Implemente la lógica de preprocesamiento en un modelo de aprendizaje automático en un único punto final mediante una canalización de inferencias en Amazon SageMaker
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker"></a>

*Mohan Gowda Purushothama, Gabriel Rodriguez Garcia y Mateusz Zaremba, Amazon Web Services*

## Resumen
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-summary"></a>

Este patrón explica cómo implementar varios objetos del modelo de canalización en un único punto final mediante una [canalización de inferencia](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipelines.html) en Amazon SageMaker. El objeto del modelo de canalización representa diferentes etapas del flujo de trabajo del machine learning (ML), como el preprocesamiento, la inferencia de modelos y el posprocesamiento. [Para ilustrar el despliegue de objetos del modelo de canalización conectados en serie, este patrón muestra cómo implementar un contenedor [Scikit-learn](https://docs.aws.amazon.com/sagemaker/latest/dg/sklearn.html) de preprocesamiento y un modelo de regresión basado en el algoritmo de aprendizaje lineal incorporado en él.](https://docs.aws.amazon.com/sagemaker/latest/dg/linear-learner.html) SageMaker La implementación se aloja en un único punto final. SageMaker

**nota**  
La implementación de este patrón utiliza el tipo de instancia ml.m4.2xlarge. Le recomendamos usar un tipo de instancia que se ajuste a sus requisitos de tamaño de datos y a la complejidad de su flujo de trabajo. Para obtener más información, consulta los [ SageMaker precios de Amazon](https://aws.amazon.com/sagemaker/pricing/). Este patrón usa [imágenes de Docker prediseñadas para Scikit-learn](https://docs.aws.amazon.com/sagemaker/latest/dg/pre-built-docker-containers-scikit-learn-spark.html), pero puede usar sus propios contenedores de Docker e integrarlos en su flujo de trabajo.

## Requisitos previos y limitaciones
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ [Python 3.9](https://www.python.org/downloads/release/python-390/)
+ [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/) y biblioteca [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)
+ [Función](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) [de AWS Identity and Access Management (AWS IAM) con SageMaker [permisos básicos y permisos](https://docs.aws.amazon.com/sagemaker/latest/dg/api-permissions-reference.html) de Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-policy-language-overview.html)

**Versiones de producto**
+ [Amazon SageMaker Python SDK 2.49.2](https://sagemaker.readthedocs.io/en/v2.49.2/)

## Arquitectura
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-architecture"></a>

**Pila de tecnología de destino**
+ Amazon Elastic Container Registry (Amazon ECR)
+ Amazon SageMaker
+ Amazon SageMaker Studio
+ Amazon Simple Storage Service (Amazon S3)
+ Punto final de [inferencia en tiempo real](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints.html) para Amazon SageMaker

**Arquitectura de destino**

El siguiente diagrama muestra la arquitectura para el despliegue de un objeto del modelo de SageMaker canalización de Amazon.

![\[Arquitectura para el despliegue de un objeto de modelo de SageMaker canalización\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/1105d51b-752f-46d7-962c-acef1fb3399f/images/12f06715-b1c2-4de0-b277-99ce87308152.png)


En el diagrama, se muestra el siguiente flujo de trabajo:

1. Un SageMaker cuaderno despliega un modelo de canalización.

1. Un bucket de S3 almacena los artefactos del modelo.

1. Amazon ECR obtiene las imágenes del contenedor de origen del bucket de S3.

## Tools (Herramientas)
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-tools"></a>

**Herramientas de AWS**
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) es un servicio de registro de imágenes de contenedor administrado que es seguro, escalable y fiable.
+ [Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) es un servicio de aprendizaje automático gestionado que le ayuda a crear y entrenar modelos de aprendizaje automático y, a continuación, a implementarlos en un entorno hospedado listo para la producción.
+ [Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) es un entorno de desarrollo integrado (IDE) basado en la web para el aprendizaje automático que le permite crear, entrenar, depurar, implementar y supervisar sus modelos de aprendizaje automático.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) es un servicio de almacenamiento de objetos basado en la nube que lo ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

**Código**

El código de este patrón está disponible en GitHub [Inference Pipeline con los repositorios Scikit-learn](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-python-sdk/scikit_learn_inference_pipeline/Inference%20Pipeline%20with%20Scikit-learn%20and%20Linear%20Learner.ipynb) y Linear Learner.

## Epics
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-epics"></a>

### Prepare el conjunto de datos
<a name="prepare-the-dataset"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prepare el conjunto de datos para la tarea de regresión. | [Abre una libreta](https://docs.aws.amazon.com/sagemaker/latest/dg/notebooks-create-open.html#notebooks-open) en Amazon SageMaker Studio.Para importar todas las bibliotecas necesarias e inicializar su entorno de trabajo, utilice el siguiente código de ejemplo en su bloc de notas:<pre>import sagemaker<br />from sagemaker import get_execution_role<br /><br />sagemaker_session = sagemaker.Session()<br /><br /># Get a SageMaker-compatible role used by this Notebook Instance.<br />role = get_execution_role()<br /><br /># S3 prefix<br />bucket = sagemaker_session.default_bucket()<br />prefix = "Scikit-LinearLearner-pipeline-abalone-example"</pre>Para descargar un conjunto de datos de muestra, añada el siguiente código a su bloc de notas:<pre>! mkdir abalone_data<br />! aws s3 cp s3://sagemaker-sample-files/datasets/tabular/uci_abalone/abalone.csv ./abalone_data</pre>** **El ejemplo de este patrón utiliza el [conjunto de datos Abalone](https://archive.ics.uci.edu/ml/datasets/abalone) del repositorio de machine learning de UCI. | Científico de datos | 
| Cargue el conjunto de datos en un bucket de S3. | En el bloc de notas en el que preparó su conjunto de datos anteriormente, añada el siguiente código para cargar los datos de muestra en un bucket de S3:<pre>WORK_DIRECTORY = "abalone_data"<br /><br />train_input = sagemaker_session.upload_data(<br />    path="{}/{}".format(WORK_DIRECTORY, "abalone.csv"),<br />    bucket=bucket,<br />    key_prefix="{}/{}".format(prefix, "train"),<br />)</pre> | Científico de datos | 

### Cree el preprocesador de datos mediante SKLearn
<a name="create-the-data-preprocessor-using-sklearn"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prepare el script preprocessor.py. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker.html) | Científico de datos | 
| Cree el objeto del SKLearn preprocesador. | Para crear un objeto SKLearn preprocesador (denominado SKLearn Estimator) que pueda incorporar a su proceso de inferencia final, ejecute el siguiente código en su bloc de notas: SageMaker <pre>from sagemaker.sklearn.estimator import SKLearn<br /><br />FRAMEWORK_VERSION = "0.23-1"<br />script_path = "sklearn_abalone_featurizer.py"<br /><br />sklearn_preprocessor = SKLearn(<br />    entry_point=script_path,<br />    role=role,<br />    framework_version=FRAMEWORK_VERSION,<br />    instance_type="ml.c4.xlarge",<br />    sagemaker_session=sagemaker_session,<br />)<br />sklearn_preprocessor.fit({"train": train_input})</pre> | Científico de datos | 
| Pruebe la inferencia del preprocesador. | Para confirmar que el preprocesador está definido correctamente, inicie un [trabajo de transformación por lotes](https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform.html) introduciendo el siguiente código en su bloc de notas: SageMaker <pre># Define a SKLearn Transformer from the trained SKLearn Estimator<br />transformer = sklearn_preprocessor.transformer(<br />    instance_count=1, instance_type="ml.m5.xlarge", assemble_with="Line", accept="text/csv"<br />)<br /><br /><br /># Preprocess training input<br />transformer.transform(train_input, content_type="text/csv")<br />print("Waiting for transform job: " + transformer.latest_transform_job.job_name)<br />transformer.wait()<br />preprocessed_train = transformer.output_path</pre> |  | 

### Cree un modelo de machine learning
<a name="create-a-machine-learning-model"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un objeto modelo. | Para crear un objeto modelo basado en el algoritmo de aprendizaje lineal, introduzca el siguiente código en su SageMaker bloc de notas:<pre>import boto3<br />from sagemaker.image_uris import retrieve<br /><br />ll_image = retrieve("linear-learner", boto3.Session().region_name)<br />s3_ll_output_key_prefix = "ll_training_output"<br />s3_ll_output_location = "s3://{}/{}/{}/{}".format(<br />    bucket, prefix, s3_ll_output_key_prefix, "ll_model"<br />)<br /><br />ll_estimator = sagemaker.estimator.Estimator(<br />    ll_image,<br />    role,<br />    instance_count=1,<br />    instance_type="ml.m4.2xlarge",<br />    volume_size=20,<br />    max_run=3600,<br />    input_mode="File",<br />    output_path=s3_ll_output_location,<br />    sagemaker_session=sagemaker_session,<br />)<br /><br />ll_estimator.set_hyperparameters(feature_dim=10, predictor_type="regressor", mini_batch_size=32)<br /><br />ll_train_data = sagemaker.inputs.TrainingInput(<br />    preprocessed_train,<br />    distribution="FullyReplicated",<br />    content_type="text/csv",<br />    s3_data_type="S3Prefix",<br />)<br /><br />data_channels = {"train": ll_train_data}<br />ll_estimator.fit(inputs=data_channels, logs=True)</pre>El código anterior recupera la imagen de Docker de Amazon ECR correspondiente del registro público de Amazon ECR del modelo, crea un objeto estimador y, a continuación, utiliza ese objeto para entrenar el modelo de regresión. | Científico de datos | 

### Implemente la canalización final
<a name="deploy-the-final-pipeline"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Implemente el modelo de canalización. | Para crear un objeto de modelo de canalización (es decir, un objeto de preprocesador) e implementar el objeto, introduzca el siguiente código en su SageMaker bloc de notas:<pre>from sagemaker.model import Model<br />from sagemaker.pipeline import PipelineModel<br />import boto3<br />from time import gmtime, strftime<br /><br />timestamp_prefix = strftime("%Y-%m-%d-%H-%M-%S", gmtime())<br /><br />scikit_learn_inferencee_model = sklearn_preprocessor.create_model()<br />linear_learner_model = ll_estimator.create_model()<br /><br />model_name = "inference-pipeline-" + timestamp_prefix<br />endpoint_name = "inference-pipeline-ep-" + timestamp_prefix<br />sm_model = PipelineModel(<br />    name=model_name, role=role, models= [scikit_learn_inferencee_model, linear_learner_model]<br />)<br /><br />sm_model.deploy(initial_instance_count=1, instance_type="ml.c4.xlarge", endpoint_name=endpoint_name)</pre>Puede ajustar el tipo de instancia utilizado en el objeto modelo para adaptarlo a sus necesidades. | Científico de datos | 
| Pruebe la inferencia. | Para confirmar que el punto final funciona correctamente, ejecute el siguiente código de inferencia de ejemplo en su SageMaker bloc de notas:<pre>from sagemaker.predictor import Predictor<br />from sagemaker.serializers import CSVSerializer<br /><br />payload = "M, 0.44, 0.365, 0.125, 0.516, 0.2155, 0.114, 0.155"<br />actual_rings = 10<br />predictor = Predictor(<br />    endpoint_name=endpoint_name, sagemaker_session=sagemaker_session, serializer=CSVSerializer()<br />)<br /><br />print(predictor.predict(payload))</pre> | Científico de datos | 

## Recursos relacionados
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-resources"></a>
+ [Procese previamente los datos de entrada antes de realizar predicciones mediante las canalizaciones de SageMaker inferencia de Amazon y Scikit-learn (blog de AWS Machine Learning)](https://aws.amazon.com/blogs/machine-learning/preprocess-input-data-before-making-predictions-using-amazon-sagemaker-inference-pipelines-and-scikit-learn/)
+ [Machine Learning de principio a fin con Amazon SageMaker](https://github.com/aws-samples/amazon-sagemaker-build-train-deploy) (GitHub)

# Implemente la validación de seguridad de la codificación en tiempo real mediante un servidor MCP con Kiro y otros asistentes de codificación
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants"></a>

*Ivan Girardi e Iker Reina Fuente, Amazon Web Services*

## Resumen
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-summary"></a>

Este patrón describe cómo implementar un servidor de Model Context Protocol (MCP) que integre tres herramientas de escaneo de seguridad estándar del sector para proporcionar un análisis exhaustivo de la seguridad del código. El servidor permite a los asistentes de codificación de IA (como Kiro, Amazon Q Developer y Cline) escanear automáticamente fragmentos de código y configuraciones de infraestructura como código (IaC). Con estos escaneos, los asistentes de codificación pueden ayudar a identificar las vulnerabilidades de seguridad, los errores de configuración y las infracciones de conformidad.

Los generadores de códigos de IA entrenados con millones de fragmentos de código crean un punto ciego en materia de seguridad. ¿Cuán seguros estaban los datos de entrenamiento? Este patrón proporciona una validación de seguridad en tiempo real durante la generación del código, lo que ayuda a los desarrolladores a identificar y comprender los posibles problemas de seguridad a medida que codifican. Este enfoque ayuda a los desarrolladores a abordar tanto las vulnerabilidades directas como los riesgos heredados de las dependencias. Al cerrar la brecha entre la eficiencia de la IA y el cumplimiento de las normas de seguridad, este patrón ayuda a permitir la adopción segura de herramientas de desarrollo impulsadas por la IA.

Este patrón ayuda a las organizaciones a mejorar sus prácticas de seguridad de desarrollo mediante herramientas de codificación asistidas por IA, que proporcionan capacidades de escaneo de seguridad continuo en varios lenguajes de programación y definiciones de infraestructura. La solución combina las capacidades de las siguientes herramientas:
+ Compruebe si puede escanear archivos de IaC, incluidos los manifiestos de Terraform y AWS CloudFormation Kubernetes
+ Semgrep para analizar múltiples lenguajes de programación como Python JavaScript, Java y otros
+ Bandit para el escaneo de seguridad especializado en Python 

Entre las principales características de esta solución se incluyen las siguientes:
+ Escaneo delta de nuevos segmentos de código, lo que reduce la sobrecarga computacional
+ Entornos de herramientas de seguridad aislados, lo que evita la contaminación entre herramientas
+ Integración perfecta con los asistentes de codificación de IA (Kiro, Amazon Q Developer, Cline y otros)
+ Comentarios de seguridad en tiempo real durante la generación de código
+ Reglas de escaneo personalizables para el cumplimiento organizacional

El patrón proporciona una interfaz unificada para el escaneo de seguridad con formatos de respuesta estandarizados, lo que facilita la integración de los controles de seguridad en los flujos de trabajo de desarrollo. El patrón utiliza Python y el marco MCP para ofrecer comentarios de seguridad automatizados. Este enfoque ayuda a los desarrolladores a identificar y abordar los problemas de seguridad al principio del proceso de desarrollo, a la vez que aprenden sobre las mejores prácticas de seguridad a través de hallazgos detallados.

## Requisitos previos y limitaciones
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-prereqs"></a>

**Requisitos previos **
+ Un desarrollador activo Cuenta de AWS con acceso a Kiro o Amazon Q, si quieres usar alguno de esos asistentes de codificación
+ [Python versión 3.10 o posterior instalada](https://www.python.org/downloads/)
+ `uv`[administrador de paquetes instalado](https://docs.astral.sh/uv/getting-started/installation/)
+ Familiaridad con las herramientas y conceptos de escaneo de seguridad
+ Comprensión básica de la IaC y la seguridad de las aplicaciones

**Limitaciones**
+ El escaneo de bandidos se limita únicamente a los archivos de Python.
+ El escaneo en tiempo real puede afectar al rendimiento de bases de código grandes.
+ Las limitaciones específicas de la herramienta se basan en los formatos de archivo y los idiomas compatibles.
+ Se requiere una revisión manual para validar los hallazgos de seguridad.
+ Los resultados de los escaneos de seguridad requieren experiencia en seguridad para una interpretación adecuada.
+ Algunos Servicios de AWS no están disponibles en todos Regiones de AWS. Para obtener información sobre la disponibilidad en regiones, consulte [AWS Services by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para ver los puntos de conexión específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) y elija el enlace del servicio.

**Versiones de producto**
+ Python versión 3.10 o posterior
+ Checkov versión 3.0.0 o posterior
+ Semgrep versión 1.45.0 o posterior
+ Bandit, versión 1.7.5 o posterior
+ MCP [cli] versión 1.11.0 o posterior
+ Pydantic, versión 1.10.0 o posterior
+ Loguru versión 0.6.0 o posterior

## Arquitectura
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-architecture"></a>

En el siguiente diagrama se muestra la arquitectura para esta solución.

![\[Los asistentes de IA envían el código al servidor de escáneres de seguridad MCP para enviarlo a escáneres especializados; los resultados del escaneo se envían al desarrollador.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/fa623544-4d54-48af-a4e4-9b6a0624e776/images/9c881f95-76d0-40f6-983e-d987fd2097b8.png)


En el diagrama, se muestra el siguiente flujo de trabajo:

1. El desarrollador utiliza asistentes de IA (por ejemplo, Kiro, Cline, Amazon Q Developer o Roo Code) para generar o analizar el código. El asistente de IA envía el código para escanearlo de seguridad.

1. El servidor de escáner de seguridad MCP procesa la solicitud enrutándola al escáner especializado apropiado: Checkov para archivos IAC, Semgrep para el análisis de múltiples lenguajes de programación o Bandit para el escaneo de seguridad específico de Python.

1. El asistente de IA envía al desarrollador los resultados del escáner, con los datos de seguridad, los niveles de gravedad, las descripciones detalladas y las correcciones sugeridas.

1. Se establece un circuito de retroalimentación continuo en el que el desarrollador recibe una validación de seguridad en tiempo real, lo que permite realizar correcciones automatizadas mediante asistentes de IA y promueve las mejores prácticas de seguridad durante el desarrollo.

La arquitectura mitiga los siguientes riesgos de seguridad comunes: 
+ Inyección de comandos
+ Inyección rápida
+ Recorrido de trayectoria
+ Ataques de dependencia
+ Agotamiento de recursos 

La arquitectura mitiga estos riesgos de seguridad comunes mediante la implementación de las siguientes prácticas recomendadas: 
+ Todas las entradas del usuario y del modelo de IA se escriben en archivos temporales.
+ No se proporcionan entradas directas a los comandos de la interfaz de línea de comandos (CLI).
+ El acceso al sistema de archivos está restringido únicamente a los directorios y archivos temporales.
+ Los archivos temporales se limpian automáticamente.
+ Las respuestas de escaneo están desinfectadas.
+ Se aplica un aislamiento del proceso que restringe las capacidades del proceso.
+ Se registran todas las actividades de escaneo.

**Automatización y escala**

El patrón admite la automatización a través de las siguientes capacidades:
+ Integración con asistentes de codificación de IA para el escaneo automático de códigos
+ Respuestas de API estandarizadas para el procesamiento automatizado
+ Configuración mediante archivos de configuración MCP
+ Support para el procesamiento por lotes de varios archivos
+ Escaneo escalable en varios lenguajes de programación y formatos IaC

El proceso de escaneo se puede automatizar a través de los puntos finales de la API proporcionados:
+ `scan_with_checkov`para escanear iAC
+ `scan_with_semgrep`para escanear códigos en varios idiomas
+ `scan_with_bandit`para escaneos específicos de Python
+ `get_supported_formats`para la validación del formato

Al ampliar las herramientas de digitalización, siga los principios de diseño y las prácticas recomendadas descritos anteriormente en esta sección. Consulte también [las prácticas recomendadas](#deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-best-practices). 

## Tools (Herramientas)
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-tools"></a>

**Servicios de AWS**
+ [Kiro](https://aws.amazon.com/documentation-overview/kiro/) es un servicio de programación agencial que trabaja junto con los desarrolladores para convertir las indicaciones en especificaciones detalladas y, luego, en código funcional, documentos y pruebas. Los agentes de Kiro ayudan a los desarrolladores a resolver problemas complejos y a automatizar tareas como la generación de documentación y las pruebas unitarias.
+ [Amazon Q Developer](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/what-is.html) es un asistente conversacional generativo basado en inteligencia artificial que puede ayudarlo a comprender, crear, ampliar y operar aplicaciones. AWS 

**Otras herramientas**
+ [Bandit](https://bandit.readthedocs.io/en/latest/) es una herramienta de escaneo de seguridad especializada en Python. Detecta problemas de seguridad comunes de Python, como funciones inseguras, secretos codificados y vulnerabilidades de inyección. Bandit proporciona índices detallados de confianza y gravedad.
+ [Checkov](https://github.com/bridgecrewio/checkov) es una herramienta de análisis de código estático que comprueba si el IaC está mal configurado en materia de seguridad y conformidad. Además, Checkov detecta las infracciones de conformidad y las mejores prácticas de seguridad.
+ [Cline](https://cline.bot/) es un asistente de codificación impulsado por IA que se ejecuta en VS Code.
+ [Loguru](https://loguru.readthedocs.io/en/stable/) es una biblioteca de validación de datos para Python.
+ [El Model Context Protocol (MCP)](https://modelcontextprotocol.io/docs/getting-started/intro) es un marco de código abierto para crear herramientas de desarrollo asistidas por IA.
+ [Pydantic](https://docs.pydantic.dev/latest/) es una biblioteca de validación de datos para Python.
+ [Semgrep](https://semgrep.dev/docs/introduction) analiza el código fuente en busca de vulnerabilidades y errores de seguridad. Es compatible con varios lenguajes de programación. Semgrep utiliza conjuntos de reglas centrados en la seguridad para un análisis exhaustivo. Proporciona calificaciones detalladas de confianza y gravedad.

**Repositorio de código**

El código de este patrón está disponible en el repositorio GitHub [MCP Security Scanner: Real-Time Protection for AI Code Assistants](https://github.com/aws-samples/sample-mcp-security-scanner). El repositorio incluye la implementación del servidor MCP, detalles sobre la configuración del MCP para Kiro, Amazon Q Developer, Cline y otros, ejemplos de configuración y utilidades de prueba.

La estructura del repositorio incluye lo siguiente:
+ `security_scanner_mcp_server/`- Implementación del servidor principal
+ `docs/`- Documentación y materiales de demostración
+ `tests/`- Archivos de prueba
+ `mcp-config-example.json`- Ejemplo de configuración de MCP
+ `requirements.txt`- Dependencias del proyecto

## Prácticas recomendadas
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-best-practices"></a>

**Implementación de escaneos de seguridad**
+ Revise los hallazgos de seguridad para validar y priorizar los problemas.
+ Mantenga las herramientas de escaneo (Checkov, Semgrep y Bandit) actualizadas a las versiones más recientes.
+ Utilice la herramienta de seguridad MCP de este patrón junto con otras medidas y herramientas de seguridad.
+ Actualice los conjuntos de reglas y políticas de seguridad con regularidad.

**Administración de la configuración**
+ Utilice los archivos de configuración del MCP de la fuente oficial de control de versiones.
+ Documente las reglas y configuraciones personalizadas.

**Integration**
+ Integre el escaneo de seguridad al principio del ciclo de desarrollo.
+ Configure el escaneo automatizado en enlaces previos a la confirmación o en canalizaciones de integración e implementación continuas (CI/CD).
+ Configure los umbrales de gravedad adecuados para su entorno.
+ Establezca procedimientos claros para gestionar los hallazgos de seguridad.

**Consideraciones operativas**
+ Supervise el rendimiento del escaneo y el uso de los recursos.
+ Implemente un manejo y registro de errores adecuados.
+ Mantenga la documentación de las configuraciones personalizadas.
+ Establezca un proceso para revisar y actualizar las reglas de seguridad.

Además, tenga en cuenta las siguientes prácticas recomendadas:
+ Valide siempre los hallazgos de seguridad en su contexto específico.
+ Mantenga actualizadas las dependencias y las herramientas de seguridad.
+ Utilice varias herramientas de seguridad para obtener una cobertura integral.
+ Siga las mejores prácticas de seguridad en su proceso de desarrollo.

## Epics
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-epics"></a>

### (Usuarios de Kiro) Configure el servidor del escáner de seguridad MCP
<a name="kiro-users-set-up-the-mcp-security-scanner-server"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure los ajustes del MCP. | Puede editar los archivos de configuración en Kiro (opción 1) localizándolos manualmente o (opción 2) utilizando el IDE de Kiro.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html)<pre>{<br />  "mcpServers": {<br />    "security-scanner": {<br />      "command": "uvx",<br />      "args": [<br />        "--from",<br />        "git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main",<br />        "security_scanner_mcp_server"<br />      ],<br />      "env": {<br />        "FASTMCP_LOG_LEVEL": "ERROR"<br />      },<br />      "disabled": false,<br />      "autoApprove": []<br />    }<br />  }<br />}</pre> | Desarrollador de aplicaciones | 

### (Usuarios desarrolladores de Amazon Q) Configurar el servidor del escáner de seguridad MCP
<a name="qdevlong-users-set-up-the-mcp-security-scanner-server"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure los ajustes del MCP. | Para configurar los ajustes del MCP manualmente, siga estos pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html)<pre>{<br />  "mcpServers": {<br />    "security-scanner": {<br />      "command": "uvx",<br />      "args": [<br />        "--from",<br />        "git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main",<br />        "security_scanner_mcp_server"<br />      ],<br />      "env": {<br />        "FASTMCP_LOG_LEVEL": "ERROR"<br />      }<br />    }<br />  }<br />}</pre> | Desarrollador de aplicaciones | 

### (Usuarios de Cline) Configure el servidor del escáner de seguridad MCP
<a name="cline-users-set-up-the-mcp-security-scanner-server"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure los ajustes del MCP. | Para configurar los ajustes del MCP manualmente, siga estos pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html)<pre>{<br />  "mcpServers": {<br />    "security-scanner": {<br />      "command": "uvx",<br />      "args": [<br />        "--from",<br />        "git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main",<br />        "security_scanner_mcp_server"<br />      ],<br />      "env": {<br />        "FASTMCP_LOG_LEVEL": "ERROR"<br />      },<br />      "disabled": false,<br />      "autoApprove": []<br />    }<br />  }<br />}</pre> | Desarrollador de aplicaciones | 

### Ejemplo de análisis de código con Python y Bandit
<a name="example-of-code-analysis-using-python-and-bandit"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Realice el análisis del código. | Para realizar un análisis de código mediante Python y Bandit, siga los siguientes pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | Desarrollador de aplicaciones | 

### Ejemplo de análisis de código con Terraform y Checkov
<a name="example-of-code-analysis-using-terraform-and-checkov"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Realice el análisis del código. | Para realizar un análisis de código mediante Terraform y Checkov, siga los siguientes pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | Desarrollador de aplicaciones | 

### Ejemplo de capacidades de escaneo avanzadas
<a name="example-of-advanced-scanning-capabilities"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Realice un escaneo específico. | A continuación, se muestran algunos ejemplos de solicitudes que puede utilizar para realizar un análisis específico:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | Desarrollador de aplicaciones | 
| Utilice el escaneo de seguridad con la generación de código. | Para resolver los problemas de seguridad mediante bucles de generación de código, siga los siguientes pasos (en este ejemplo se utiliza Kiro como asistente de codificación):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | Desarrollador de aplicaciones | 

## Resolución de problemas
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| Problemas de configuración del entorno | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | 
| Problemas con el escáner | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | 
| Problemas de integración | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | 
| Compatibilidad adicional | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | 

## Recursos relacionados
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-resources"></a>

**AWS documentación**
+ [La infraestructura como código](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html) (AWS documento técnico: *introducción a DevOps On*) AWS

**Otros recursos AWS **
+ [Prácticas recomendadas para seguridad, identidad y conformidad](https://aws.amazon.com/architecture/security-identity-compliance/)

**Otros recursos**
+ [Documentación sobre bandidos](https://aws.amazon.com/architecture/security-identity-compliance/)
+ [Consulte la documentación](https://aws.amazon.com/architecture/security-identity-compliance/)
+ [Documentación del Protocolo de contexto modelo (MCP)](https://aws.amazon.com/architecture/security-identity-compliance/)
+ [Prácticas de codificación segura de OWASP](https://owasp.org/www-project-secure-coding-practices-quick-reference-guide/) (sitio web de la Fundación OWASP)
+ [Documentación de Semgrep](https://aws.amazon.com/architecture/security-identity-compliance/)

## Información adicional
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-additional"></a>

**Ejemplo de configuración de MCP con la aprobación automática habilitada**

Si no `autoApprove` está configurado, el usuario debe aprobar el envío del código al servidor de seguridad MCP para su escaneo. Cuando `autoApprove` está configurado, el asistente de código puede invocar las herramientas sin la aprobación del usuario. Estas herramientas se ejecutan localmente en la máquina, no se envían datos y solo se escanea el código.

La siguiente configuración permite la ejecución automática de todas las funciones de escaneo de seguridad:

```
{
  "mcpServers": {
    "security-scanner": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main",
        "security_scanner_mcp_server"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR"
      },
      "disabled": false,
      "autoApprove": [
        "scan_with_checkov",
        "scan_with_semgrep", 
        "scan_with_bandit",
        "get_supported_formats"
      ]
    }
  }
}
```

Para habilitar el registro de depuración, establézcalo en`"FASTMCP_LOG_LEVEL"`. `"DEBUG"`

**Formatos de archivo compatibles con las herramientas de análisis de seguridad**

Cada herramienta de análisis de seguridad de esta solución admite los siguientes formatos de archivo:

*Checkov (iAC)*
+ Terraform: .tf, .tfvars, .tfstate
+ CloudFormation — .yaml, .yml, .json, .template
+ Kubernetes: .yaml, .yml
+ Dockerfile — Dockerfile
+ ARM — .json (administrador de recursos de Azure)
+ Bíceps: .bicep
+ Sin servidor: .yml, .yaml
+ Helm: .yaml, .yml, .tpl
+ GitHub Acciones: .yml, .yaml
+ GitLab\$1ci: .yml, .yaml
+ Ansible: .yml, .yaml

*Semgrep (código fuente)*
+ Python — .py
+ JavaScript — .js
+ TypeScript — .ts
+ Java — .java
+ Ir — .go
+ C — c.
+ C\$1\$1 — .cpp
+ C\$1 — .cs
+ Ruby — .rb
+ PHP — .php
+ Scala — .scala
+ Kotlin — .kt
+ Rust — .rs

*Bandit (solo en Python)*
+ Python — .py

**Demostraciones**

Para escanear códigos, prueba los siguientes ejemplos de instrucciones con tu asistente de IA:
+ «Escanea el script actual y dime los resultados».
+ «Escanea las líneas 20 a 60 y dime los resultados».
+ «Escanee este recurso de tabla de Amazon DynamoDB y dígame el resultado».

Para obtener más información, consulte esta [demostración de escaneo de código](https://github.com/aws-samples/sample-mcp-security-scanner/blob/main/docs/demo_code_scan.gif) en el repositorio de GitHub este patrón.

Para generar código seguro, prueba los siguientes ejemplos de instrucciones:
+ «Genere una configuración de Terraform para crear una tabla de DynamoDB con el cifrado activado y escanéela para detectar problemas de seguridad».
+ «Cree una función Lambda de Python que escriba en DynamoDB y analícela en busca de vulnerabilidades».
+ «Genere una CloudFormation plantilla para un bucket de S3 con la configuración de seguridad adecuada y compruebe que supera las comprobaciones de seguridad».
+ «Escriba un script de Python para consultar DynamoDB con paginación y busque las mejores prácticas de seguridad».
+ «Cree un manifiesto de despliegue de Kubernetes para un microservicio que refuerce la seguridad y valídelo».

Para obtener más información, consulta esta demostración de [generación de código con escaneo de seguridad](https://github.com/aws-samples/sample-mcp-security-scanner/blob/main/docs/demo_code_generation.gif) en el repositorio de este patrón. GitHub 

# Desarrolle asistentes avanzados de IA generativa basados en chat mediante RAG y solicitudes ReAct
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting"></a>

*Praveen Kumar Jeyarajan, Shuai Cao, Noah Hamilton, Kiowa Jackson, Jundong Qiao y Kara Yang, Amazon Web Services*

## Resumen
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-summary"></a>

Una empresa típica tiene el 70 por ciento de sus datos atrapados en sistemas aislados. Puede utilizar asistentes basados en el chat de IA generativa para obtener información y relaciones entre estos silos de datos mediante interacciones en lenguaje natural. Para aprovechar al máximo la IA generativa, los resultados deben ser fiables, precisos e incluir los datos corporativos disponibles. El éxito de los asistentes basados en el chat depende de lo siguiente:
+ Modelos de IA generativa (como Anthropic Claude 2)
+ Vectorización de orígenes de datos
+ Técnicas de razonamiento avanzadas, como el [ReAct marco](https://www.promptingguide.ai/techniques/react), para impulsar el modelo

Este patrón proporciona enfoques de recuperación de datos desde orígenes de datos como los buckets de Amazon Simple Storage Service (Amazon S3), AWS Glue y Amazon Relational Database Service (Amazon RDS). El valor se obtiene de esos datos intercalando la [generación aumentada de recuperación (RAG](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html)) con los métodos. chain-of-thought Los resultados permiten mantener conversaciones complejas con asistentes basados en el chat que utilizan la totalidad de los datos almacenados en su empresa.

Este patrón utiliza los SageMaker manuales de Amazon y las tablas de datos de precios como ejemplo para explorar las capacidades de un asistente generativo basado en el chat de IA. Crearás un asistente basado en el chat que ayude a los clientes a evaluar el SageMaker servicio respondiendo a preguntas sobre los precios y las capacidades del servicio. La solución utiliza una biblioteca Streamlit para crear la aplicación frontend y el LangChain marco para desarrollar el backend de la aplicación con la tecnología de un gran modelo de lenguaje (LLM).

Las consultas al asistente basado en el chat se responden con una clasificación inicial de intenciones para redirigirlas a uno de los tres posibles flujos de trabajo. El flujo de trabajo más sofisticado combina una orientación de asesoramiento general con un análisis de precios complejo. Puede adaptar el patrón para que se ajuste a los casos de uso empresarial, corporativo e industrial.

## Requisitos previos y limitaciones
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-prereqs"></a>

**Requisitos previos **
+ La [Interfaz de la línea de comandos de AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) instalada y configurada.
+ [Kit de herramientas AWS Cloud Development Kit (AWS CDK) 2.114.1 o posterior](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html) instalado y configurado.
+ Conocimientos básicos sobre Python y AWS CDK.
+ [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) instalado
+ [Docker](https://docs.docker.com/get-docker/) instalado
+ [Python 3.11 o posterior](https://www.python.org/downloads/) instalado y configurado (para obtener más información, consulte la sección [Herramientas](#develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-tools)).
+ Una [cuenta de AWS activa](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-creating.html) iniciada mediante [AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html).
+ El [acceso a los modelos](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html#add-model-access) de Amazon Titan y Anthropic Claude habilitado en el servicio Amazon Bedrock.
+ [Credenciales de seguridad de AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html), incluida `AWS_ACCESS_KEY_ID`, correctamente configuradas en su entorno de terminal

**Limitaciones**
+ LangChain no es compatible con todos los LLM para la transmisión. Los modelos Anthropic Claude son compatibles, pero los modelos de AI21 Labs no.
+ Esta solución se implementa en una única cuenta de AWS.
+ Esta solución solo se puede implementar en las regiones de AWS en las que estén disponibles Amazon Bedrock y Amazon Kendra. Para obtener información sobre la disponibilidad, consulte la documentación de [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html#bedrock-regions) y [Amazon Kendra](https://docs.aws.amazon.com/general/latest/gr/kendra.html).

**Versiones de producto**
+ Python versión 3.11 o posterior
+ Streamlit versión 1.30.0 o posterior
+ Streamlit versión de chat 0.1.1 o posterior
+ LangChain versión 0.1.12 o posterior
+ AWS CDK versión 2.132.1 o posterior

## Arquitectura
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-architecture"></a>

**Pila de tecnología de destino**
+ Amazon Athena
+ Amazon Bedrock
+ Amazon Elastic Container Service (Amazon ECS)
+ AWS Glue
+ AWS Lambda
+ Amazon S3
+ Amazon Kendra
+ Elastic Load Balancing

**Arquitectura de destino**

El código de AWS CDK implementará todos los recursos necesarios para configurar la aplicación de asistente basado en el chat en una cuenta de AWS. La aplicación de asistente basada en el chat que se muestra en el siguiente diagrama está diseñada para responder a las consultas SageMaker relacionadas de los usuarios. Los usuarios se conectan a través de un equilibrador de carga de aplicación a una VPC que contiene un clúster de Amazon ECS que aloja la aplicación Streamlit. Una función de Lambda de orquestación se conecta a la aplicación. Los orígenes de datos del bucket de S3 proporcionan datos a la función de Lambda a través de Amazon Kendra y AWS Glue. La función de Lambda se conecta a Amazon Bedrock para responder a las consultas (preguntas) de los usuarios de asistentes basados en el chat.

![\[Diagrama de arquitectura.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/b4df6405-76ab-4493-a722-15ceca067254/images/4e5856cf-9489-41f8-a411-e3b8d8a50748.png)


1. La función de Lambda de orquestación envía la solicitud de petición LLM al modelo de Amazon Bedrock (Claude 2).

1. Amazon Bedrock devuelve la respuesta LLM a la función de Lambda de orquestación.

**Flujo lógico dentro de la función de Lambda de orquestación**

Cuando los usuarios hacen una pregunta a través de la aplicación Streamlit, esta invoca directamente la función de Lambda de orquestación. El siguiente diagrama muestra el flujo lógico cuando se invoca la función de Lambda.

![\[Diagrama de arquitectura.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/b4df6405-76ab-4493-a722-15ceca067254/images/70ae4736-06a6-4d3a-903a-edc5c10d78a0.png)

+ Paso 1: la entrada `query` (pregunta) se clasifica en una de las tres intenciones:
  + Preguntas de SageMaker orientación general
  + Preguntas generales SageMaker sobre precios (formación/inferencia)
  + Preguntas complejas relacionadas con los precios SageMaker 
+ Paso 2: la entrada `query` inicia uno de los tres servicios:
  + `RAG Retrieval service`, que recupera el contexto relevante de la base de datos vectorial de [Amazon Kendra](https://aws.amazon.com/kendra/) y llama al LLM a través de [Amazon Bedrock](https://aws.amazon.com/bedrock/) para resumir el contexto recuperado como respuesta.
  + `Database Query service`, que utiliza el LLM, los metadatos de la base de datos y las filas de muestra de las tablas relevantes para convertir la entrada `query` en una consulta SQL. El servicio Database Query ejecuta la consulta SQL en la base de datos de SageMaker precios a través de [Amazon Athena](https://aws.amazon.com/athena/) y resume los resultados de la consulta como respuesta.
  + `In-context ReACT Agent service`, que divide la entrada `query` en varios pasos antes de proporcionar una respuesta. El agente utiliza `RAG Retrieval service` y `Database Query service` como herramientas para recuperar información relevante durante el proceso de razonamiento. Una vez completados los procesos de razonamiento y acción, el agente genera la respuesta final como respuesta.
+ Paso 3: la respuesta de la función de Lambda de orquestación se envía a la aplicación Streamlit como salida.

## Tools (Herramientas)
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-tools"></a>

**Servicios de AWS**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) es un servicio interactivo de consultas que le permite analizar datos directamente en Amazon Simple Storage Service (Amazon S3) usando SQL estándar.
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) es un servicio totalmente gestionado que pone a su disposición modelos básicos de alto rendimiento (FMs) de las principales empresas emergentes de IA y Amazon a través de una API unificada.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) es un marco de desarrollo de software que le ayuda a definir y aprovisionar la infraestructura de la nube de AWS en código.
+ La [Interfaz de la línea de comandos de AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) es una herramienta de código abierto que le permite interactuar con los servicios de AWS mediante comandos en el intérprete de comandos de la línea de comandos.
+ [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) es un servicio de administración de contenedores escalable y rápido que ayuda a ejecutar, detener y administrar contenedores en un clúster.
+ [AWS Glue](https://docs.aws.amazon.com/glue/) es un servicio de extracción, transformación y carga (ETL) completamente administrado. Ayuda a clasificar, limpiar, enriquecer y mover datos de forma fiable entre almacenes de datos y flujos de datos. Este patrón emplea un rastreador de AWS Glue y una tabla del catálogo de datos de AWS Glue.
+ [Amazon Kendra](https://docs.aws.amazon.com/kendra/latest/dg/what-is-kendra.html) es un servicio de búsqueda inteligente que usa el procesamiento del lenguaje natural y algoritmos avanzados de machine learning para devolver respuestas específicas a las preguntas de búsqueda a partir de sus datos.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) es un servicio de almacenamiento de objetos basado en la nube que lo ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.
+ [Elastic Load Balancing (ELB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) distribuye el tráfico entrante de aplicaciones o redes entre varios destinos. Así, por ejemplo, puede distribuir el tráfico a través de instancias de Amazon Elastic Compute Cloud (Amazon EC2), contenedores y direcciones IP de una o varias zonas de disponibilidad.

**Repositorio de código**

El código de este patrón está disponible en el GitHub [genai-bedrock-chatbot](https://github.com/awslabs/genai-bedrock-chatbot)repositorio.

El repositorio de código contiene los siguientes archivos y carpetas:
+ Carpeta `assets`: los activos estáticos, el diagrama de arquitectura y el conjunto de datos público.
+ Carpeta `code/lambda-container`: el código Python que se ejecuta en la función de Lambda.
+ Carpeta `code/streamlit-app`: el código Python que se ejecuta como imagen de contenedor en Amazon ECS.
+ Carpeta `tests`: los archivos de Python que se ejecutan para realizar pruebas unitarias de los constructos de AWS CDK.
+ Carpeta `code/code_stack.py`: los archivos de Python de constructo de AWS CDK usados para crear los recursos de AWS.
+ `app.py`: los archivos de Python de la pila de AWS CDK que se utilizan para implementar los recursos de AWS en la cuenta de AWS de destino.
+ `requirements.txt`: la lista de todas las dependencias de Python que se deben instalar para AWS CDK.
+ `requirements-dev.txt`: la lista de todas las dependencias de Python que se deben instalar para AWS CDK para ejecutar el conjunto de pruebas unitarias.
+ `cdk.json` – El archivo de entrada que proporciona los valores necesarios para activar los recursos


| 
| 
| Nota: El código de AWS CDK utiliza [constructos de nivel 3 (capa 3)](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html) y [políticas de AWS Identity and Access Management (IAM) administradas por AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) para implementar la solución. | 
| --- |

## Prácticas recomendadas
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-best-practices"></a>
+ El ejemplo de código que se proporciona aquí es solo para una demostración proof-of-concept (PoC) o piloto. Si desea llevar el código a producción, asegúrese de seguir las siguientes prácticas recomendadas:
  + El [registro de acceso a Amazon S3 está activado](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html).
  + Los [registros de flujos de VPC están activados](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html).
  + El [índice Enterprise Edition de Amazon Kendra](https://docs.aws.amazon.com/whitepapers/latest/how-aws-pricing-works/amazon-kendra.html) está activado.
+ Configure la supervisión y las alertas para las funciones de Lambda de AWS. Para obtener más información, consulte [Supervisión y solución de problemas de funciones de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html). Para obtener más información sobre las prácticas recomendadas generales en el uso de funciones de Lambda, consulte la [documentación de AWS](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html).

## Epics
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-epics"></a>

### Configuración de las credenciales de AWS en su máquina local
<a name="set-up-aws-credentials-on-your-local-machine"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Exporte las variables de la cuenta y región de AWS en las que se implementará la pila. | Para proporcionar las credenciales de AWS para AWS CDK mediante variables de entorno, ejecute los siguientes comandos.<pre>export CDK_DEFAULT_ACCOUNT=<12 Digit AWS Account Number><br />export CDK_DEFAULT_REGION=<region></pre> | DevOps ingeniero, AWS DevOps | 
| Configure el perfil de AWS CLI. | Para configurar el perfil de AWS CLI para la cuenta, siga las instrucciones de la [documentación de AWS](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/keys-profiles-credentials.html). | DevOps ingeniero, AWS DevOps | 

### Configure su entorno
<a name="set-up-your-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clone el repositorio en su máquina local. | Para clonar el repositorio, ejecute el siguiente comando en el terminal.<pre>git clone https://github.com/awslabs/genai-bedrock-chatbot.git</pre> | DevOps ingeniero, AWS DevOps | 
| Configure el entorno virtual de Python e instale las dependencias necesarias. | Para configurar y activar el entorno virtual de Python, ejecute el siguiente comando.<pre>cd genai-bedrock-chatbot<br />python3 -m venv .venv<br />source .venv/bin/activate</pre>Para configurar las dependencias necesarias, ejecute el siguiente comando.<pre>pip3 install -r requirements.txt</pre> | DevOps ingeniero, AWS DevOps | 
| Configure el entorno de AWS CDK y sintetice el código de AWS CDK. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.html) | DevOps ingeniero, AWS DevOps | 

### Configuración e implementación de la aplicación de asistente basado en el chat
<a name="configure-and-deploy-the-chat-based-assistant-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Proporcione acceso al modelo Claude. | Para activar el acceso al modelo Anthropic Claude en su cuenta de AWS, siga las instrucciones de la [documentación de Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html#add-model-access). | AWS DevOps | 
| Implementar recursos en la cuenta. | Para implementar recursos en la cuenta de AWS mediante AWS CDK, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.html)Tras una implementación correcta, puede acceder a la aplicación de asistente basada en el chat mediante la URL proporcionada en la sección de CloudFormation **resultados**. | AWS DevOps, DevOps ingeniero | 
| Ejecute el rastreador de AWS Glue y cree la tabla del catálogo de datos. | El [rastreador de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) se usa para mantener el esquema de datos dinámico. La solución crea y actualiza las particiones en la [tabla del catálogo de datos de AWS Glue](https://docs.aws.amazon.com/athena/latest/ug/querying-glue-catalog.html) mediante la ejecución del rastreador bajo demanda. Una vez copiados los archivos del conjunto de datos CSV en el bucket de S3, ejecute el rastreador de AWS Glue y cree el esquema de la tabla del catálogo de datos para realizar las pruebas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.html)El código de AWS CDK configura el rastreador de AWS Glue para que se ejecute bajo demanda, pero también puede [programarlo](https://docs.aws.amazon.com/glue/latest/dg/schedule-crawler.html) para que se ejecute de forma periódica. | DevOps ingeniero, AWS DevOps | 
| Inicie la indexación de documentos. | Una vez copiados los archivos en el bucket de S3, utilice Amazon Kendra para rastrearlos e indexarlos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.html)El código de AWS CDK configura la sincronización de índices de Amazon Kendra para que se ejecute bajo demanda, pero también puede ejecutarla periódicamente mediante el [parámetro de programación](https://docs.aws.amazon.com/kendra/latest/dg/data-source.html#cron). | AWS DevOps, DevOps ingeniero | 

### Limpie todos los recursos de AWS de la solución
<a name="clean-up-all-aws-resources-in-the-solution"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Elimine los recursos de AWS. | Después de probar la solución, limpie los recursos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.html) | DevOps ingeniero, AWS DevOps | 

## Resolución de problemas
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| AWS CDK devuelve errores. | Para obtener ayuda con los errores de AWS CDK, consulte [Solución de problemas comunes de AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/troubleshooting.html). | 

## Recursos relacionados
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-resources"></a>
+ Amazon Bedrock:
  + [Acceso a modelos](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)
  + [Parámetros de inferencia para modelos básicos](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters.html)
+ [Creación de funciones de Lambda con Python](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html)
+ [Introducción a AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)
+ [Utilización de AWS CDK en Python](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-python.html)
+ [Creador de aplicaciones de IA generativa en AWS](https://docs.aws.amazon.com/solutions/latest/generative-ai-application-builder-on-aws/solution-overview.html)
+ [LangChain documentación](https://python.langchain.com/docs/get_started/introduction)
+ [Documentación de Streamlit](https://docs.streamlit.io/)

## Información adicional
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-additional"></a>

**Comandos de AWS CDK**

Cuando trabaje con AWS CDK, recuerde los siguientes comandos útiles:
+ Muestra todas las pilas de la aplicación

  ```
  cdk ls
  ```
+ Emite la plantilla de AWS CloudFormation sintetizada

  ```
  cdk synth
  ```
+ Implementa la pila en la cuenta y región de AWS predeterminadas

  ```
  cdk deploy
  ```
+ Compara la pila implementada con el estado actual

  ```
  cdk diff
  ```
+ Abre la documentación de AWS CDK

  ```
  cdk docs
  ```
+ Elimina la CloudFormation pila y elimina los recursos desplegados por AWS

  ```
  cdk destroy
  ```

# Desarrollo de un asistente basado en el chat totalmente automatizado con los agentes y las bases de conocimiento de Amazon Bedrock
<a name="develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases"></a>

*Jundong Qiao, Shuai Cao, Noah Hamilton, Kiowa Jackson, Praveen Kumar Jeyarajan y Kara Yang, Amazon Web Services*

## Resumen
<a name="develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases-summary"></a>

Muchas organizaciones se enfrentan a desafíos a la hora de crear un asistente basado en el chat que sea capaz de organizar diversos orígenes de datos para ofrecer respuestas integrales. Este patrón presenta una solución para desarrollar un asistente basado en el chat que sea capaz de responder a consultas tanto de la documentación como de las bases de datos, con una implementación sencilla.

Empezando por [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html), este servicio de inteligencia artificial generativa (IA) totalmente gestionado ofrece una amplia gama de modelos básicos avanzados (FMs). Esto facilita la creación eficiente de aplicaciones de IA generativa con un fuerte enfoque en la privacidad y la seguridad. En el contexto de la recuperación de documentación, la [generación aumentada por recuperación (RAG)](https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-customize-rag.html) es una característica fundamental. Utiliza [bases de conocimiento](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html) para complementar las peticiones de FM con información relevante desde el punto de vista contextual procedente de orígenes externos. Un índice de [Amazon OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-overview.html) sirve como base de datos vectorial detrás de las bases de conocimiento de Amazon Bedrock. Esta integración se mejora mediante una ingeniería de peticiones cuidadosa para minimizar las imprecisiones y garantizar que las respuestas se basen en la documentación fáctica. Para las consultas de bases FMs de datos, Amazon Bedrock transforma las consultas textuales en consultas SQL estructuradas, incorporando parámetros específicos. [Esto permite la recuperación precisa de los datos de las bases de datos administradas por las bases de datos.AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/define-database.html) Para estas consultas se utiliza [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html).

Para gestionar consultas más complejas, lograr respuestas integrales exige información procedente tanto de la documentación como de las bases de datos. [Agentes para Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/agents.html) es una característica de IA generativa que lo ayuda a crear agentes autónomos que puedan entender tareas complejas y dividirlas en tareas más sencillas para su orquestación. La combinación de información obtenida de las tareas simplificadas, facilitada por los agentes autónomos de Amazon Bedrock, mejora la síntesis de la información y permite obtener respuestas más completas y exhaustivas. Este patrón demuestra cómo crear un asistente basado en el chat mediante Amazon Bedrock y los servicios y características de IA generativa relacionados dentro de una solución automatizada.

## Requisitos previos y limitaciones
<a name="develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS
+ Docker [instalado](https://docs.docker.com/engine/install/)
+ AWS Cloud Development Kit (AWS CDK), [instalado](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_tools) y [arrancado en el](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_bootstrap) o `us-east-1` `us-west-2` Regiones de AWS
+ AWS CDK [Kit de herramientas, versión 2.114.1 o posterior, instalado](https://docs.aws.amazon.com/cdk/v2/guide/cli.html)
+ AWS Command Line Interface [https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ La versión 3.11 o posterior de Python [instalada](https://www.python.org/downloads/)
+ En Amazon Bedrock, [habilite el acceso](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html) a Claude 2, Claude 2.1, Claude Instant y Titan Embeddings G1 — Text

**Limitaciones**
+ Esta solución se implementa en una sola unidad Cuenta de AWS.
+ Esta solución solo se puede implementar en Regiones de AWS lugares donde Amazon Bedrock y Amazon OpenSearch Serverless sean compatibles. Para obtener más información, consulte la documentación de [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-regions.html) y [Amazon OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-overview.html#serverless-regions).

**Versiones de producto**
+ Llama-index versión 0.10.6 o posterior
+ Sqlalchemy versión 2.0.23 o posterior
+ Opensearch-py versión 2.4.2 o posterior
+ Requests\$1aws4auth versión 1.2.3 o posterior
+ AWS SDK para Python (Boto3) versión 1.34.57 o posterior

## Arquitectura
<a name="develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases-architecture"></a>

**Pila de tecnología de destino**

[AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)Se trata de un marco de desarrollo de software de código abierto para definir la infraestructura de nube en el código y aprovisionarla mediante ella. AWS CloudFormation La AWS CDK pila utilizada en este patrón emplea los siguientes recursos: AWS  
+ AWS Key Management Service (AWS KMS)
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Glue Data Catalog, para el componente de AWS Glue base de datos
+ AWS Lambda
+ AWS Identity and Access Management (IAM)
+ Amazon OpenSearch Serverless
+ Amazon Elastic Container Registry (Amazon ECR) 
+ Amazon Elastic Container Service (Amazon ECS)
+ AWS Fargate
+ Amazon Virtual Private Cloud (Amazon VPC)
+ [Equilibrador de carga de aplicación](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) 

**Arquitectura de destino**

![\[Diagrama de arquitectura mediante un agente y una base de conocimientos de Amazon Bedrock\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/15372718-3a5d-4918-9cfa-422c455f288d/images/ff19152e-0bb6-4758-a6dd-4f6140e55113.png)


El diagrama muestra una completa configuración AWS nativa de la nube dentro de una sola Región de AWS, usando múltiples. Servicios de AWS La interfaz principal del asistente basado en el chat es una aplicación de [Streamlit](https://docs.streamlit.io/) alojada en un clúster de Amazon ECS. Un [equilibrador de carga de aplicación](https://aws.amazon.com/elasticloadbalancing/application-load-balancer/) administra la accesibilidad. Las consultas realizadas a través de esta interfaz activan la función de Lambda `Invocation`, que luego interactúa con los agentes para Amazon Bedrock. Este agente responde a las consultas de los usuarios consultando las bases de conocimiento de Amazon Bedrock o invocando una función de Lambda `Agent executor`. Esta función desencadena un conjunto de acciones asociadas al agente, siguiendo un esquema de API predefinido. Las bases de conocimiento de Amazon Bedrock utilizan un índice OpenSearch sin servidor como base de base de datos vectorial. Además, la `Agent executor` función genera consultas SQL que se ejecutan en la AWS Glue base de datos a través de Amazon Athena. 

## Tools (Herramientas)
<a name="develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases-tools"></a>

**Servicios de AWS**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) es un servicio interactivo de consultas que le permite analizar datos directamente en Amazon Simple Storage Service (Amazon S3) usando SQL estándar.
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) es un servicio totalmente gestionado que pone a su disposición modelos básicos de alto rendimiento (FMs) de las principales empresas emergentes de IA y Amazon a través de una API unificada.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)es un marco de desarrollo de software que le ayuda a definir y aprovisionar AWS la infraestructura de la nube en código.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) es una herramienta de código abierto que te ayuda a interactuar Servicios de AWS mediante comandos en tu shell de línea de comandos.
+ [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) es un servicio de administración de contenedores escalable y rápido que ayuda a ejecutar, detener y administrar contenedores en un clúster.
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) permite distribuir el tráfico entrante de las aplicaciones o de la red entre varios destinos. Así, por ejemplo, puede distribuir el tráfico a través de instancias de Amazon Elastic Compute Cloud (Amazon EC2), contenedores y direcciones IP de una o varias zonas de disponibilidad.
+ [AWS Glue](https://docs.aws.amazon.com/glue/) es un servicio de extracción, transformación y carga (ETL) completamente administrado. Ayuda a clasificar, limpiar, enriquecer y mover datos de forma fiable entre almacenes de datos y flujos de datos. Este patrón utiliza un AWS Glue rastreador y una tabla. AWS Glue Data Catalog 
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.
+ [Amazon OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-overview.html) es una configuración sin servidor bajo demanda para Amazon OpenSearch Service. En este patrón, un índice OpenSearch sin servidor sirve como base de datos vectorial para las bases de conocimiento de Amazon Bedrock.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) es un servicio de almacenamiento de objetos basado en la nube que lo ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

**Otras herramientas**
+ [Streamlit](https://docs.streamlit.io/) es un marco de Python de código abierto para crear aplicaciones de datos.

**Repositorio de código**

El código de este patrón está disponible en el GitHub [genai-bedrock-agent-chatbot](https://github.com/awslabs/genai-bedrock-agent-chatbot/)repositorio. El repositorio de código contiene los siguientes archivos y carpetas:
+ Carpeta `assets`: los activos estáticos, como el diagrama de arquitectura y el conjunto de datos público.
+ Carpeta `code/lambdas/action-lambda`: el código de Python de la función de Lambda que actúa como una acción para el agente de Amazon Bedrock.
+ `code/lambdas/create-index-lambda`folder: el código de Python de la función Lambda que crea el índice OpenSearch Serverless.
+ Carpeta `code/lambdas/invoke-lambda`: el código de Python de la función de Lambda que invoca el agente de Amazon Bedrock, al que se llama directamente desde la aplicación Streamlit.
+ `code/lambdas/update-lambda`carpeta: el código de Python de la función Lambda que actualiza o elimina los recursos después de desplegarlos a AWS través de. AWS CDK
+ `code/layers/boto3_layer`folder: la AWS CDK pila que crea una capa de Boto3 que se comparte entre todas las funciones de Lambda.
+ `code/layers/opensearch_layer`carpeta: la AWS CDK pila que crea una capa OpenSearch sin servidor que instala todas las dependencias para crear el índice.
+ `code/streamlit-app`folder: el código de Python que se ejecuta como imagen del contenedor en Amazon ECS.
+ `code/code_stack.py`— AWS CDK Construyen archivos de Python que crean AWS recursos.
+ `app.py`— La AWS CDK pila de archivos Python que despliegan AWS recursos en la AWS cuenta de destino.
+ `requirements.txt`— La lista de todas las dependencias de Python que se deben instalar para. AWS CDK
+ `cdk.json`: el archivo de entrada que proporciona los valores necesarios para crear los recursos. Además, en los campos `context/config`, puede personalizar la solución en consecuencia. Para más información sobre la personalización, consulte la sección [Información adicional](#develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases-additional).

## Prácticas recomendadas
<a name="develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases-best-practices"></a>
+ El ejemplo de código que se proporciona aquí es únicamente para fines proof-of-concept (PoC) o piloto. Si desea llevar el código a producción, asegúrese de seguir las siguientes prácticas recomendadas:
  + Habilitación del [registro de acceso a Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html)
  + Habilitación de los [registros de flujo de VPC](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)
+ Configure la supervisión y las alertas para las funciones de Lambda. Para obtener más información, consulte [Supervisión y solución de problemas de funciones de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html). Para obtener información sobre las prácticas recomendadas, consulte las [prácticas recomendadas para trabajar con AWS Lambda funciones](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html).

## Epics
<a name="develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases-epics"></a>

### Configure AWS las credenciales en su estación de trabajo local
<a name="set-up-aws-credentials-on-your-local-workstation"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Exporte las variables de cuenta y región. | Para proporcionar AWS las credenciales AWS CDK mediante variables de entorno, ejecute los siguientes comandos.<pre>export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number><br />export CDK_DEFAULT_REGION=<Region></pre> | AWS DevOps, DevOps ingeniero | 
| Configure el AWS CLI perfil indicado. | Para configurar el perfil AWS CLI designado para la cuenta, siga las instrucciones de los [ajustes de configuración y del archivo de credenciales](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html). | AWS DevOps, DevOps ingeniero | 

### Configure su entorno
<a name="set-up-your-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clone el repositorio en su estación de trabajo local. | Para clonar el repositorio, ejecute el siguiente comando en el terminal.<pre>git clone https://github.com/awslabs/genai-bedrock-agent-chatbot.git</pre> | DevOps ingeniero, AWS DevOps | 
| Configure un entorno de Python virtual. | Para configurar y activar el entorno virtual de Python, ejecute el siguiente comando.<pre>cd genai-bedrock-agent-chatbot<br />python3 -m venv .venv<br />source .venv/bin/activate</pre>Para configurar las dependencias necesarias, ejecute el siguiente comando.<pre>pip3 install -r requirements.txt</pre> | DevOps ingeniero, AWS DevOps | 
| Configure el AWS CDK entorno. | Para convertir el código en una AWS CloudFormation plantilla, ejecute el comando`cdk synth`. | AWS DevOps, DevOps ingeniero | 

### Configuración e implementación de la aplicación
<a name="configure-and-deploy-the-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Implementar recursos en la cuenta. | Para implementar recursos en el Cuenta de AWS mediante el AWS CDK, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases.html)Tras una implementación correcta, puede acceder a la aplicación de asistente basada en el chat mediante la URL proporcionada en la **pestaña Resultados** de la CloudFormation consola. | DevOps ingeniero, AWS DevOps | 

### Limpie todos los AWS recursos de la solución
<a name="clean-up-all-aws-resources-in-the-solution"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Elimine los AWS recursos. | Después de probar la solución, limpie los recursos y ejecute el comando `cdk destroy`. | AWS DevOps, DevOps ingeniero | 

## Recursos relacionados
<a name="develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases-resources"></a>

**AWS documentación**
+ Recursos de Amazon Bedrock:
  + [Acceso a modelos](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)
  + [Parámetros de inferencia para modelos básicos](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters.html)
  + [Agentes de Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/agents.html)
  + [Bases de conocimiento de Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html)
+ [Creación de funciones de Lambda con Python](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html)
+ AWS CDK recursos:
  + [Comience con el AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)
  + [Solución de AWS CDK problemas comunes](https://docs.aws.amazon.com/cdk/v2/guide/troubleshooting.html)
  + [Trabajando con el AWS CDK en Python](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-python.html)
+ [Creador de aplicaciones de IA generativa en AWS](https://docs.aws.amazon.com/solutions/latest/generative-ai-application-builder-on-aws/solution-overview.html)

**Otros recursos AWS **
+ [Motor vectorial para Amazon OpenSearch Serverless](https://aws.amazon.com/opensearch-service/serverless-vector-engine/)

**Otros recursos**
+ [LlamaIndex documentación](https://docs.llamaindex.ai/en/stable/)
+ [Documentación de Streamlit](https://docs.streamlit.io/)

## Información adicional
<a name="develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases-additional"></a>

**Personalización del asistente basado en el chat con sus propios datos**

Para integrar sus datos personalizados para implementar la solución, siga estas pautas estructuradas. Estos pasos están diseñados para garantizar un proceso de integración eficiente y fluido, lo que le permitirá implementar la solución de manera efectiva con sus datos personalizados.

*Para la integración de datos de la base de conocimientos*

**Preparación de datos**

1. Localice el directorio `assets/knowledgebase_data_source/`.

1. Coloque el conjunto de datos en esta carpeta.

**Ajustes de configuración**

1. Abra el archivo `cdk.json`.

1. Navegue hasta el campo `context/configure/paths/knowledgebase_file_name` y, a continuación, actualícelo en consecuencia.

1. Navegue hasta el campo `bedrock_instructions/knowledgebase_instruction` y, a continuación, actualícelo para que refleje con precisión los matices y el contexto de su nuevo conjunto de datos.

*Para la integración de datos estructurales*

**Organización de datos**

1. En el directorio `assets/data_query_data_source/`, cree un subdirectorio, como `tabular_data`.

1. Coloque su conjunto de datos estructurado (los formatos aceptables incluyen CSV, JSON, ORC y Parquet) en esta subcarpeta recién creada.

1. Si se está conectando a una base de datos existente, actualice la función `create_sql_engine()` en `code/lambda/action-lambda/build_query_engine.py` para conectarse a su base de datos.

**Actualizaciones de configuración y código**

1. En el archivo `cdk.json`, actualice el campo `context/configure/paths/athena_table_data_prefix` para alinearlo con la nueva ruta de datos.

1. Realice `code/lambda/action-lambda/dynamic_examples.csv` la revisión incorporando nuevos text-to-SQL ejemplos que se correspondan con su conjunto de datos.

1. Revise `code/lambda/action-lambda/prompt_templates.py` para reflejar los atributos de su conjunto de datos estructurado.

1. En el archivo `cdk.json`, actualice el campo `context/configure/bedrock_instructions/action_group_description` para explicar el propósito y la funcionalidad de la función de Lambda `Action group`.

1. En el archivo `assets/agent_api_schema/artifacts_schema.json`, explique las nuevas funcionalidades de la función de Lambda `Action group`.

*Actualización general*

En el archivo `cdk.json`, en la sección `context/configure/bedrock_instructions/agent_instruction`, proporcione una descripción completa de la funcionalidad y el propósito de diseño previstos por el agente de Amazon Bedrock, teniendo en cuenta los datos recién integrados.

# Documentación del conocimiento institucional a partir de las entradas de voz mediante Amazon Bedrock y Amazon Transcribe
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe"></a>

*Praveen Kumar Jeyarajan, Jundong Qiao, Rajiv Upadhyay y Megan Wu, Amazon Web Services*

## Resumen
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-summary"></a>

Capturar el conocimiento institucional es fundamental para garantizar el éxito y la resiliencia de la organización. El conocimiento institucional representa la sabiduría, los conocimientos y las experiencias colectivos acumulados por los empleados a lo largo del tiempo, a menudo de naturaleza tácita y transmitidos de manera informal. Esta gran cantidad de información abarca enfoques únicos, prácticas recomendadas y soluciones para problemas complejos que tal vez no estén documentados en otros lugares. Al formalizar y documentar este conocimiento, las empresas pueden preservar la memoria institucional, fomentar la innovación, mejorar los procesos de toma de decisiones y acelerar las curvas de aprendizaje de los nuevos empleados. Además, promueve la colaboración, empodera a las personas y cultiva una cultura de mejora continua. En última instancia, el aprovechamiento del conocimiento institucional ayuda a las empresas a utilizar su activo más valioso, la inteligencia colectiva de su fuerza laboral, para superar los desafíos, impulsar el crecimiento y mantener una ventaja competitiva en entornos empresariales dinámicos.

Este patrón explica cómo captar el conocimiento institucional a través de grabaciones de voz de los empleados sénior. Utiliza [Amazon Transcribe](https://docs.aws.amazon.com/transcribe/latest/dg/what-is.html) y [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) para la documentación y verificación sistemáticas. Al documentar este conocimiento informal, puede conservarlo y compartirlo con otros grupos de empleados. Este esfuerzo apoya la excelencia operativa y mejora la eficacia de los programas de formación mediante la incorporación de los conocimientos prácticos adquiridos a través de la experiencia directa.

## Requisitos previos y limitaciones
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Docker [instalado](https://docs.docker.com/engine/install/)
+ La versión 2.114.1 o posterior de AWS Cloud Development Kit (AWS CDK) [instalada](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_tools) y [arrancada](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_bootstrap) en las regiones de AWS `us-east-1` o `us-west-2`
+ La versión 2.114.1 o posterior del Kit de herramientas de AWS CDK [instalada](https://docs.aws.amazon.com/cdk/v2/guide/cli.html)
+ Interfaz de la línea de comandos de AWS (AWS CLI) [instalada](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) y [configurada](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ La versión 3.12 o posterior de Python [instalada](https://www.python.org/downloads/)
+ Permisos para crear recursos de Amazon Transcribe, Amazon Bedrock, Amazon Simple Storage Service (Amazon S3) y AWS Lambda

**Limitaciones**
+ Esta solución se implementa en una única cuenta de AWS.
+ Esta solución solo se puede implementar en las regiones de AWS en las que estén disponibles Amazon Bedrock y Amazon Transcribe. Para obtener información sobre la disponibilidad, consulte la documentación de [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-regions.html) y [Amazon Transcribe](https://docs.aws.amazon.com/transcribe/latest/dg/what-is.html#tsc-regions).
+ Los archivos de audio deben estar en un formato compatible con Amazon Transcribe. Para obtener una lista de los formatos compatibles, consulte [Formatos multimedia](https://docs.aws.amazon.com/transcribe/latest/dg/how-input.html#how-input-audio) en la documentación de Transcribe.

**Versiones de producto**
+ AWS SDK para Python (Boto3) versión 1.34.57 o posterior
+ LangChain versión 0.1.12 o posterior

## Arquitectura
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-architecture"></a>

La arquitectura representa un flujo de trabajo sin servidor en AWS. [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) organiza las funciones de Lambda para el procesamiento de audio, el análisis de texto y la generación de documentos. En el siguiente diagrama se muestra el flujo de trabajo de Step Functions, también conocido como *máquina de estado*.

![\[Diagrama de arquitectura de la máquina de estado de Step Functions que genera un documento\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/f1e0106d-b046-4adc-9718-c299efb7b436/images/e90298ca-1b7f-4c3e-97bd-311a9d5a4997.png)


Cada paso de la máquina de estado lo gestiona una función de Lambda distinta. Los siguientes son los pasos del proceso de generación de documentos:

1. La función de Lambda `preprocess` valida la entrada pasada a Step Functions y muestra todos los archivos de audio presentes en la ruta de la carpeta URI de Amazon S3 proporcionada. Las funciones de Lambda posteriores del flujo de trabajo utilizan la lista de archivos para validar, resumir y generar el documento.

1. La función de Lambda `transcribe` usa Amazon Transcribe para convertir archivos de audio en transcripciones de texto. Esta función de Lambda es responsable de iniciar el proceso de transcripción y transformar con precisión la voz en texto, que luego se almacena para su posterior procesamiento.

1. La función de Lambda `validate` analiza las transcripciones del texto y determina la relevancia de las respuestas a las preguntas iniciales. Al utilizar un modelo de lenguaje de gran tamaño (LLM) a través de Amazon Bedrock, identifica y separa las respuestas relacionadas con el tema de las respuestas no relacionadas con el tema.

1. La función de Lambda `summarize` utiliza Amazon Bedrock para generar un resumen coherente y conciso de las respuestas relacionadas con el tema.

1. La función de Lambda `generate` agrupa los resúmenes en un documento bien estructurado. Puede formatear el documento de acuerdo con plantillas predefinidas e incluir cualquier contenido o dato adicional necesario.

1. Si se produce un error en alguna de las funciones de Lambda, recibirá una notificación por correo electrónico a través de Amazon Simple Notification Service (Amazon SNS).

A lo largo de este proceso, AWS Step Functions se asegura de que cada función de Lambda se inicie en la secuencia correcta. Esta máquina de estado tiene la capacidad de procesamiento en paralelo para mejorar la eficiencia. Un bucket de Amazon S3 actúa como repositorio de almacenamiento central y respalda el flujo de trabajo mediante la administración de los distintos formatos multimedia y de documentos involucrados.

## Tools (Herramientas)
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-tools"></a>

**Servicios de AWS**
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) es un servicio totalmente gestionado que pone a su disposición modelos básicos de alto rendimiento (FMs) de las principales empresas emergentes de IA y Amazon a través de una API unificada.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.
+ [Amazon Simple Notification Service (Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)) le permite coordinar y administrar el intercambio de mensajes entre publicadores y clientes, incluidos los servidores web y las direcciones de correo electrónico.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) es un servicio de almacenamiento de objetos basado en la nube que lo ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) es un servicio de orquestación sin servidor que le permite combinar funciones de Lambda AWS y otros servicios de AWS para crear aplicaciones esenciales desde el punto de vista empresarial.  
+ [Amazon Transcribe](https://docs.aws.amazon.com/transcribe/latest/dg/what-is.html) es un servicio de reconocimiento de voz automático que utiliza modelos de machine learning para convertir audio en texto.

**Otras herramientas**
+ [LangChain](https://python.langchain.com/docs/get_started/introduction/)es un marco para desarrollar aplicaciones que funcionan con modelos de lenguaje de gran tamaño ()LLMs.

**Repositorio de código**

El código de este patrón está disponible en el GitHub [genai-knowledge-capture](https://github.com/aws-samples/genai-knowledge-capture)repositorio.

El repositorio de código contiene los siguientes archivos y carpetas:
+ Carpeta `assets`: los activos estáticos de la solución, como el diagrama de arquitectura y el conjunto de datos público.
+ Carpeta `code/lambdas`: el código de Python para todas las funciones de Lambda.
  + Carpeta `code/lambdas/generate`: el código Python que genera un documento a partir de los datos resumidos en el bucket de S3.
  + Carpeta `code/lambdas/preprocess`: el código de Python que procesa las entradas de la máquina de estado de Step Functions.
  + Carpeta `code/lambdas/summarize`: el código de Python que resume los datos transcritos mediante el servicio de Amazon Bedrock.
  + Carpeta `code/lambdas/transcribe`: el código Python que convierte los datos de voz (archivo de audio) en texto mediante Amazon Transcribe.
  + Carpeta `code/lambdas/validate`: el código de Python que valida si todas las respuestas pertenecen al mismo tema.
+ `code/code_stack.py`: los archivos de Python de constructo de AWS CDK usados para crear los recursos de AWS.
+ `app.py`: los archivos de Python de la aplicación de AWS CDK que se utilizan para implementar los recursos de AWS en la cuenta de AWS de destino.
+ `requirements.txt`: la lista de todas las dependencias de Python que se deben instalar para AWS CDK.
+ `cdk.json`: el archivo de entrada que proporciona los valores necesarios para crear los recursos.

## Prácticas recomendadas
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-best-practices"></a>

El ejemplo de código proporcionado es únicamente para fines proof-of-concept (PoC) o piloto. Si desea llevar el código a producción, siga las siguientes prácticas recomendadas:
+ Habilitación del [registro de acceso a Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html)
+ Habilitación de los [registros de flujo de VPC](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)

## Epics
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-epics"></a>

### Configuración de las credenciales de AWS en su estación de trabajo
<a name="set-up-aws-credentials-on-your-local-workstation"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Exporte las variables de cuenta y región de AWS. | Para proporcionar las credenciales de AWS para AWS CDK mediante variables de entorno, ejecute los siguientes comandos.<pre>export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number><br />export CDK_DEFAULT_REGION=<Region></pre> | AWS DevOps, DevOps ingeniero | 
| Configure el perfil con nombre de AWS CLI. | Para configurar el perfil de la AWS CLI para la cuenta, siga las instrucciones de [Opciones de los archivos de configuración y credenciales](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html). | AWS DevOps, DevOps ingeniero | 

### Configure su entorno
<a name="set-up-your-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clone el repositorio en su estación de trabajo local. | Para clonar el [genai-knowledge-capture](https://github.com/aws-samples/genai-knowledge-capture)repositorio, ejecuta el siguiente comando en tu terminal.<pre>git clone https://github.com/aws-samples/genai-knowledge-capture</pre> | AWS DevOps, DevOps ingeniero | 
| (Opcional) Sustituya los archivos de audio. | Para personalizar la aplicación de muestra para que incorpore sus propios datos, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.html) | AWS DevOps, DevOps ingeniero | 
| Configure un entorno de Python virtual. | Para configurar y activar el entorno virtual de Python, ejecute el siguiente comando.<pre>cd genai-knowledge-capture<br />python3 -m venv .venv<br />source .venv/bin/activate<br />pip install -r requirements.txt</pre> | AWS DevOps, DevOps ingeniero | 
| Sintetice el código de AWS CDK. | Para convertir el código en una configuración de CloudFormation pila de AWS, ejecute el siguiente comando.<pre>cdk synth</pre> | AWS DevOps, DevOps ingeniero | 

### Configuración e implementación de la solución
<a name="configure-and-deploy-the-solution"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Aprovisione el acceso al modelo fundacional. | Habilite el acceso al modelo Anthropic Claude 3 Sonnet para su cuenta de AWS. Para obtener instrucciones, consulte [Adición de un modelo de acceso](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html#model-access-add) en la documentación de Bedrock. | AWS DevOps | 
| Implementar recursos en la cuenta. | Para implementar recursos en la cuenta de AWS mediante AWS CDK, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.html) | AWS DevOps, DevOps ingeniero | 
| Suscríbase al tema de Amazon SNS. | Para suscribirse al tema de Amazon SNS para recibir notificaciones, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.html) | AWS general | 

### Pruebe la solución
<a name="test-the-solution"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Ejecuta la máquina de estado. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.html) | Desarrollador de aplicaciones, AWS general | 

### Limpie todos los recursos de AWS de la solución
<a name="clean-up-all-aws-resources-in-the-solution"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Elimine los recursos de AWS. | Después de probar la solución, limpie los recursos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.html) | AWS DevOps, DevOps ingeniero | 

## Recursos relacionados
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-resources"></a>

**Documentación de AWS**
+ Recursos de Amazon Bedrock:
  + [Acceso a modelos](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)
  + [Parámetros de inferencia para modelos básicos](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters.html)
+ Recursos de AWS CDK:
  + [Introducción a AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)
  + [Utilización de AWS CDK en Python](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-python.html)
  + [Solución de problemas comunes de AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/troubleshooting.html)
  + [Comandos del kit de herramientas](https://docs.aws.amazon.com/cdk/v2/guide/cli.html#cli-commands)
+ Recursos de AWS Step Functions:
  + [Introducción a AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/getting-started-with-sfn.html)
  + [Solución de problemas](https://docs.aws.amazon.com/step-functions/latest/dg/troubleshooting.html)
+ [Creación de funciones de Lambda con Python](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html)
+ [Creador de aplicaciones de IA generativa en AWS](https://docs.aws.amazon.com/solutions/latest/generative-ai-application-builder-on-aws/solution-overview.html)

**Otros recursos**
+ [LangChain documentación](https://python.langchain.com/docs/get_started/introduction)

# Genere recomendaciones personalizadas y reclasificadas con Amazon Personalize
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize"></a>

*Mason Cahill, Matthew Chasse y Tayo Olajide, Amazon Web Services*

## Resumen
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-summary"></a>

Este patrón le muestra cómo usar Amazon Personalize para generar recomendaciones personalizadas, incluidas las recomendaciones reclasificadas, para sus usuarios en función de la ingesta de datos de interacción de los usuarios en tiempo real por parte de esos usuarios. El escenario de ejemplo utilizado en este patrón se basa en un sitio web de adopción de mascotas que genera recomendaciones para sus usuarios en función de sus interacciones (por ejemplo, qué mascotas visita un usuario). Siguiendo el escenario de ejemplo, aprenderá a utilizar Amazon Kinesis Data Streams para ingerir datos de interacción, AWS Lambda para generar recomendaciones y reordenar las recomendaciones, y Amazon Data Firehose para almacenar los datos en un bucket de Amazon Simple Storage Service (Amazon S3). También aprenderá a usar AWS Step Functions para crear una máquina de estados que administre la versión de la solución (es decir, un modelo entrenado) que genera sus recomendaciones.

## Requisitos previos y limitaciones
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-prereqs"></a>

**Requisitos previos **
+ Una [cuenta de AWS](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/) activa con un AWS Cloud Development Kit (AWS CDK) [arrancado](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html).
+ [Interfaz de la línea de comandos de AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) con credenciales configuradas
+ [Python 3.9](https://www.python.org/downloads/release/python-390/)

**Versiones de producto**
+ Python 3.9
+ CDK de AWS 2.23.0 o posterior
+ AWS SDK: 2.7.27 o posterior

## Arquitectura
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-architecture"></a>

**Pila de tecnología**
+ Amazon Data Firehose
+ Amazon Kinesis Data Streams
+ Amazon Personalize
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Cloud Development Kit (AWS CDK)
+ Interfaz de la línea de comandos de AWS (AWS CLI)
+ AWS Lambda
+ AWS Step Functions

**Arquitectura de destino**

El siguiente diagrama ilustra una canalización para incorporar datos en tiempo real a Amazon Personalize. Luego, la canalización utiliza esos datos para generar recomendaciones personalizadas y reclasificadas para los usuarios.

![\[Arquitectura de ingesta de datos para Amazon Personalize\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/42eb193b-2347-408a-8b25-46beeb3b29ca/images/786dbd56-7d7f-41bb-90f6-d4485d73fe15.png)


En el diagrama, se muestra el siguiente flujo de trabajo:

1. El flujo de datos de Kinesis ingiere datos de usuarios en tiempo real (por ejemplo, eventos como visitas de mascotas) para que Lambda y Firehose los procesen.

1. Una función de Lambda procesa los registros de flujo de datos de Kinesis y realiza una llamada a la API para añadir la interacción del usuario en el registro a un rastreador de eventos de Amazon Personalize.

1. Una regla basada en el tiempo invoca un equipo de estados de Step Functions y genera nuevas versiones de soluciones para los modelos de recomendación y reclasificación mediante los eventos del rastreador de eventos de Amazon Personalize.

1. El equipo de estados actualiza las [campañas](https://docs.aws.amazon.com/personalize/latest/dg/campaigns.html) de Amazon Personalize para usar la nueva [versión de la solución](https://docs.aws.amazon.com/personalize/latest/dg/creating-a-solution-version.html).

1. Lambda cambia el orden de la lista de artículos recomendados mediante la campaña Amazon Personalize de reclasificación.

1. Lambda devuelve la lista de artículos recomendados mediante la campaña de recomendaciones de Amazon Personalize.

1. Firehose guarda los eventos en un bucket de S3 donde se puede acceder a ellos como datos históricos.

## Tools (Herramientas)
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-tools"></a>

**Herramientas de AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) es un marco de desarrollo de software que le ayuda a definir y aprovisionar la infraestructura de la nube de AWS en código.
+ La [Interfaz de la línea de comandos de AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) es una herramienta de código abierto que le permite interactuar con los servicios de AWS mediante comandos en el intérprete de comandos de la línea de comandos.
+ [Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) lo ayuda a entregar [datos de streaming](https://aws.amazon.com/streaming-data/) en tiempo real a otros servicios de AWS, puntos de conexión HTTP personalizados y puntos de conexión HTTP propiedad de proveedores de servicios externos compatibles.
+ [Amazon Kinesis Data Streams](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) le ayuda a recopilar y procesar grandes secuencias de registros de datos en tiempo real.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.
+ [Amazon Personalize](https://docs.aws.amazon.com/personalize/latest/dg/what-is-personalize.html) es un servicio de machine learning (ML) totalmente gestionado que le ayuda a generar recomendaciones de artículos para sus usuarios en función de sus datos.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) es un servicio de orquestación sin servidor que le permite combinar funciones de Lambda y otros servicios de AWS para crear aplicaciones esenciales desde el punto de vista empresarial.

**Otras herramientas**
+ [pytest](https://docs.pytest.org/en/7.2.x/index.html) es un marco de Python para escribir pruebas pequeñas y legibles.
+ [Python](https://www.python.org/) es un lenguaje de programación informático de uso general.

**Código**

El código de este patrón está disponible en el repositorio GitHub [Animal Recommender](https://github.com/aws-samples/personalize-pet-recommendations). Puede usar la CloudFormation plantilla de AWS de este repositorio para implementar los recursos de la solución de ejemplo.

**nota**  
Las versiones de la solución Amazon Personalize, el rastreador de eventos y las campañas están respaldadas por [recursos personalizados](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html) (dentro de la infraestructura) que amplían CloudFormation los recursos nativos.

## Epics
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-epics"></a>

### Creación de la infraestructura
<a name="create-the-infrastructure"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un entorno Python aislado. | **Configuración de Mac/Linux**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-personalized-and-re-ranked-recommendations-using-amazon-personalize.html)**Configuración en Windows**Para crear manualmente un entorno virtual, ejecute el comando `% .venv\Scripts\activate.bat` desde su terminal. | DevOps ingeniero | 
| Sintetiza la CloudFormation plantilla. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-personalized-and-re-ranked-recommendations-using-amazon-personalize.html)En el paso 2, `CDK_ENVIRONMENT` hace referencia al archivo `config/{env}.yml`. | DevOps ingeniero | 
| Implemente recursos y cree infraestructura. | Desde su terminal, ejecute el comando `./deploy.sh` para implementar todos los recursos.Este script instala las dependencias requeridas de Python. Un script de Python crea un bucket de S3 y una clave de AWS Key Management Service (AWS KMS) y, a continuación, agrega los datos de base para las creaciones iniciales del modelo. Por último, el script se ejecuta `cdk deploy` para crear la infraestructura restante.El entrenamiento del modelo inicial se lleva a cabo durante la creación de la pila. La pila puede tardar hasta dos horas en terminar de crearse. | DevOps ingeniero | 

## Recursos relacionados
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-resources"></a>
+ [Recomendador de animales](https://github.com/aws-samples/personalize-pet-recommendations) () GitHub
+ [Documentación de referencia de AWS SDK](https://docs.aws.amazon.com/cdk/api/v2/)
+ [Documentación de Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)
+ [Optimice las recomendaciones personalizadas para una métrica empresarial de su elección con Amazon Personalize](https://aws.amazon.com/blogs/machine-learning/optimize-personalized-recommendations-for-a-business-metric-of-your-choice-with-amazon-personalize/) (blog de AWS Machine Learning)

## Información adicional
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-additional"></a>

**Ejemplos de cargas útiles y respuestas**

*Función de Lambda de recomendación*

Para recuperar las recomendaciones, envíe una solicitud a la función de Lambda de recomendaciones con una carga útil en el siguiente formato:

```
{
  "userId": "3578196281679609099",
  "limit": 6
}
```

El siguiente ejemplo de respuesta contiene una lista de grupos de animales:

```
[{"id": "1-domestic short hair-1-1"},
{"id": "1-domestic short hair-3-3"},
{"id": "1-domestic short hair-3-2"},
{"id": "1-domestic short hair-1-2"},
{"id": "1-domestic short hair-3-1"},
{"id": "2-beagle-3-3"},
```

Si omite el campo `userId`, la función devuelve recomendaciones generales.

*Reordenación de la función de Lambda*

Para utilizar la reclasificación, envíe una solicitud a la función de Lambda de reclasificación. La carga útil contiene todos `userId` los elementos que se van IDs a reclasificar y sus metadatos. Los siguientes datos de ejemplo utilizan las clases de Oxford Pets para `animal_species_id` (1=gato, 2=perro) y los números enteros del 1 al 5 para `animal_age_id` y `animal_size_id`:

```
{
   "userId":"12345",
   "itemMetadataList":[
      {
         "itemId":"1",
         "animalMetadata":{
            "animal_species_id":"2",
            "animal_primary_breed_id":"Saint_Bernard",
            "animal_size_id":"3",
            "animal_age_id":"2"
         }
      },
      {
         "itemId":"2",
         "animalMetadata":{
            "animal_species_id":"1",
            "animal_primary_breed_id":"Egyptian_Mau",
            "animal_size_id":"1",
            "animal_age_id":"1"
         }
      },
      {
         "itemId":"3",
         "animalMetadata":{
            "animal_species_id":"2",
            "animal_primary_breed_id":"Saint_Bernard",
            "animal_size_id":"3",
            "animal_age_id":"2"
         }
      }
   ]
}
```

La función Lambda vuelve a clasificar estos artículos y, a continuación, devuelve una lista ordenada que incluye el artículo IDs y la respuesta directa de Amazon Personalize. Esta es una lista ordenada de los grupos de animales en los que se encuentran los artículos y su puntuación. Amazon Personalize utiliza recetas de [Personalización por usuario](https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-new-item-USER_PERSONALIZATION.html) y [Clasificación personalizada](https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-search.html) para incluir una puntuación para cada artículo en las recomendaciones. Estas puntuaciones representan la certeza relativa que tiene Amazon Personalize respecto a qué elemento va a seleccionar el usuario a continuación. Las puntuaciones más altas representan una mayor certeza.

```
{
   "ranking":[
      "1",
      "3",
      "2"
   ],
   "personalizeResponse":{
      "ResponseMetadata":{
         "RequestId":"a2ec0417-9dcd-4986-8341-a3b3d26cd694",
         "HTTPStatusCode":200,
         "HTTPHeaders":{
            "date":"Thu, 16 Jun 2022 22:23:33 GMT",
            "content-type":"application/json",
            "content-length":"243",
            "connection":"keep-alive",
            "x-amzn-requestid":"a2ec0417-9dcd-4986-8341-a3b3d26cd694"
         },
         "RetryAttempts":0
      },
      "personalizedRanking":[
         {
            "itemId":"2-Saint_Bernard-3-2",
            "score":0.8947961
         },
         {
            "itemId":"1-Siamese-1-1",
            "score":0.105204
         }
      ],
      "recommendationId":"RID-d97c7a87-bd4e-47b5-a89b-ac1d19386aec"
   }
}
```

*Carga de Amazon Kinesis*

La carga que se va a enviar a Amazon Kinesis tiene el formato siguiente:

```
{
    "Partitionkey": "randomstring",
    "Data": {
        "userId": "12345",
        "sessionId": "sessionId4545454",
        "eventType": "DetailView",
        "animalMetadata": {
            "animal_species_id": "1",
            "animal_primary_breed_id": "Russian_Blue",
            "animal_size_id": "1",
            "animal_age_id": "2"
        },
        "animal_id": "98765"
        
    }
}
```

**nota**  
El campo `userId` se elimina para un usuario no autenticado.

# Optimice los flujos de trabajo de aprendizaje automático desde el desarrollo local hasta los experimentos escalables mediante el uso de SageMaker IA e Hydra
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker"></a>

*David Sauerwein, Marco Geiger y Julian Ferdinand Grueber, Amazon Web Services*

## Resumen
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-summary"></a>

Este patrón proporciona un enfoque unificado para configurar y ejecutar algoritmos de aprendizaje automático (ML) desde las pruebas locales hasta la producción en Amazon SageMaker AI. Este patrón se centra en los algoritmos de ML, pero su enfoque se extiende a la ingeniería de características, la inferencia y canalizaciones completas de ML. Este patrón demuestra la transición del desarrollo de guiones locales a los trabajos de formación en SageMaker IA a través de un ejemplo de caso de uso.

Un flujo de trabajo de ML típico consiste en desarrollar y probar soluciones en una máquina local, ejecutar experimentos a gran escala (por ejemplo, con distintos parámetros) en la nube e implementar la solución aprobada en la nube. A continuación, se debe supervisar y mantener la solución implementada. Sin un enfoque unificado de este flujo de trabajo, los desarrolladores a menudo tienen que refactorizar su código en cada etapa. Si la solución depende de una gran cantidad de parámetros que pueden cambiar en cualquier etapa de este flujo de trabajo, puede resultar cada vez más difícil mantener la organización y la coherencia. 

Este patrón resuelve estos desafíos. En primer lugar, elimina la necesidad de refactorizar el código entre entornos al proporcionar un flujo de trabajo unificado que mantiene la coherencia tanto si se ejecuta en máquinas locales, en contenedores o en SageMaker IA. En segundo lugar, simplifica la administración de parámetros mediante el sistema de configuración de Hydra, en el que los parámetros se definen en archivos de configuración independientes que se pueden modificar y combinar fácilmente, con un registro automático de la configuración de cada ejecución. Para más detalles acerca de cómo este patrón resuelve estos desafíos, consulte la sección [Información adicional](#streamline-machine-learning-workflows-by-using-amazon-sagemaker-additional).

## Requisitos previos y limitaciones
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS
+ Un [rol de usuario AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) (IAM) para implementar e iniciar los trabajos de formación en SageMaker IA
+ AWS Command Line Interface [(AWS CLI) versión 2.0 o posterior [instalada](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) y configurada](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ La versión 1.8 o posterior de [Poetry](https://python-poetry.org/), pero anterior a la versión 2.0, instalada
+ [Docker](https://www.docker.com/) instalado
+ Python [versión 3.10.x](https://www.python.org/downloads/release/python-31011/)

**Limitaciones**
+ Actualmente, el código solo se dirige a los trabajos de formación en SageMaker IA. Extenderlo a los trabajos de procesamiento y a toda la cartera de SageMaker IA es sencillo.
+ Para una configuración de SageMaker IA totalmente productiva, es necesario contar con detalles adicionales. Algunos ejemplos podrían ser las claves personalizadas AWS Key Management Service (AWS KMS) para el procesamiento y el almacenamiento, o las configuraciones de red. También puede configurar estas opciones adicionales con Hydra en una subcarpeta específica de la carpeta `config`.
+ Algunas Servicios de AWS no están disponibles en todos Regiones de AWS. Para obtener información sobre la disponibilidad en regiones, consulte [AWS Services by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para ver los puntos de conexión específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) y elija el enlace del servicio.

## Arquitectura
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-architecture"></a>

En el diagrama siguiente se muestra la arquitectura de la solución.

![\[Flujo de trabajo para crear y ejecutar cursos de SageMaker IA o trabajos de HPO.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/1db57484-f85c-49a6-b870-471dade02b26/images/d80e7474-a975-4d92-8f66-2d34e33053fd.png)


En el diagrama, se muestra el siguiente flujo de trabajo:

1. El científico de datos puede iterar el algoritmo a pequeña escala en un entorno local, ajustar los parámetros y probar el guion de entrenamiento rápidamente sin necesidad de usar Docker o IA. SageMaker (Para más información, consulte la tarea “Run locally for quick testing” en [Epics](#streamline-machine-learning-workflows-by-using-amazon-sagemaker-epics)).

1. Una vez satisfecho con el algoritmo, el científico de datos crea y envía la imagen de Docker al repositorio de Amazon Elastic Container Registry (Amazon ECR) denominado `hydra-sm-artifact`. (Para obtener más información, consulta la sección «Ejecutar flujos de trabajo con SageMaker IA» en [Epics](#streamline-machine-learning-workflows-by-using-amazon-sagemaker-epics)).

1. El científico de datos inicia trabajos de capacitación en SageMaker IA o trabajos de optimización de hiperparámetros (HPO) mediante scripts de Python. Para los trabajos de entrenamiento habituales, la configuración ajustada se escribe en el bucket de Amazon Simple Storage Service (Amazon S3) denominado `hydra-sample-config`. En el caso de los trabajos de HPO, se aplica el conjunto de configuraciones predeterminadas que se encuentra en la carpeta `config`.

1. El trabajo de entrenamiento de SageMaker IA extrae la imagen de Docker, lee los datos de entrada del bucket `hydra-sample-data` de Amazon S3 y obtiene la configuración del bucket de Amazon S3 `hydra-sample-config` o utiliza la configuración predeterminada. Tras el entrenamiento, el trabajo guarda los datos de salida en el bucket `hydra-sample-data` de Amazon S3.

**Automatización y escala**
+ [Para la formación, el reentrenamiento o la inferencia automatizados, puedes integrar el AWS CLI código con servicios como [AWS Lambda[AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html), o Amazon. EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)
+ El escalamiento se puede lograr al cambiar las configuraciones (por ejemplo, el tamaño de las instancias) o agregar configuraciones para el entrenamiento distribuido.

## Tools (Herramientas)
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-tools"></a>

**Servicios de AWS**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)le ayuda a configurar AWS los recursos, aprovisionarlos de forma rápida y coherente y gestionarlos a lo largo de su ciclo de vida en Cuentas de AWS todo el mundo. Regiones de AWS
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) es una herramienta de código abierto que te ayuda a interactuar Servicios de AWS mediante los comandos de tu consola de línea de comandos. Para este patrón, AWS CLI es útil tanto para la configuración inicial de los recursos como para las pruebas.
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) es un servicio de registro de imágenes de contenedor administrado que es seguro, escalable y fiable.
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/?id=docs_gateway) es un servicio de aprendizaje automático (ML) gestionado que le ayuda a crear y entrenar modelos de aprendizaje automático para luego implementarlos en un entorno hospedado listo para la producción. SageMaker AI Training es un servicio de aprendizaje automático totalmente gestionado dentro de la SageMaker IA que permite el entrenamiento de modelos de aprendizaje automático a escala. La herramienta puede gestionar las demandas computacionales de los modelos de entrenamiento de manera eficiente, haciendo uso de la escalabilidad incorporada y la integración con otros Servicios de AWS modelos. SageMaker AI Training también es compatible con algoritmos y contenedores personalizados, lo que la hace flexible para una amplia gama de flujos de trabajo de aprendizaje automático.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) es un servicio de almacenamiento de objetos basado en la nube que lo ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

**Otras herramientas**
+ [Docker](https://www.docker.com/) es un conjunto de productos de plataforma como servicio (PaaS) que utiliza la virtualización del sistema operativo para entregar software en contenedores. Se utilizó en este patrón para garantizar entornos coherentes en varias etapas, desde el desarrollo hasta la implementación, y para empaquetar las dependencias y el código de manera fiable. La contenedorización de Docker permitió un escalado y control de versiones fáciles en el flujo de trabajo.
+ [Hydra](https://hydra.cc/) es una herramienta de administración de la configuración que proporciona flexibilidad para gestionar varias configuraciones y una administración dinámica de los recursos. Es fundamental para administrar las configuraciones del entorno, ya que permite una implementación perfecta en entornos distintos. Para más información acerca de Hydra, consulte [Información adicional](#streamline-machine-learning-workflows-by-using-amazon-sagemaker-additional).
+ [Python](https://www.python.org/) es un lenguaje de programación informático de uso general. Se utilizó Python para escribir el código de ML y el flujo de trabajo de implementación.
+ [Poetry](https://python-poetry.org/) es una herramienta de empaquetado y administración de dependencias de Python.

**Repositorio de código**

El código de este patrón está disponible en el repositorio GitHub [configuring-sagemaker-training-jobs-with-hydra](https://github.com/aws-samples/configuring-sagemaker-training-jobs-with-hydra).

## Prácticas recomendadas
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-best-practices"></a>
+ Elija una función de IAM para implementar e iniciar los trabajos de formación en SageMaker IA que siga el principio de privilegios mínimos y conceda los permisos mínimos necesarios para realizar una tarea. Para obtener más información, consulte [Otorgar privilegio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) y [Prácticas recomendadas de seguridad](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la documentación de IAM.
+ Utilice credenciales temporales para acceder al rol de IAM en la terminal.

## Epics
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-epics"></a>

### Configuración del entorno
<a name="set-up-the-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree y active un entorno virtual. | Para crear y activar el entorno virtual, ejecute los comandos siguientes en la raíz del repositorio:<pre>poetry install <br />poetry shell</pre> | AWS general | 
| Implemente la infraestructura.  | Para implementar la infraestructura mediante CloudFormation, ejecute el siguiente comando:<pre>aws cloudformation deploy --template-file infra/hydra-sagemaker-setup.yaml --stack-name hydra-sagemaker-setup  --capabilities CAPABILITY_NAMED_IAM</pre> | General AWS, DevOps ingeniero | 
| Descargue de los datos de muestra.  | Para descargar los datos de entrada de [openml](https://www.openml.org/) a su equipo local, ejecute el comando siguiente:<pre>python scripts/download_data.py</pre> | AWS general | 
| Ejecute localmente para hacer pruebas rápidas. | Para ejecutar el código de entrenamiento de manera local para la prueba, ejecute el comando siguiente:<pre>python mypackage/train.py data.train_data_path=data/train.csv evaluation.base_dir_path=data</pre>Los registros de todas las ejecuciones se almacenan por tiempo de ejecución en una carpeta llamada `outputs`. Para obtener más información, consulte la sección «Resultados» del [GitHub repositorio](https://github.com/aws-samples/configuring-sagemaker-training-jobs-with-hydra).También puede hacer varios entrenamientos en paralelo, con parámetros distintos, mediante la funcionalidad `--multirun`. Para más detalles, consulte la [documentación de Hydra](https://hydra.cc/docs/tutorials/basic/running_your_app/multi-run/). | Científico de datos | 

### Ejecute flujos de trabajo en SageMaker IA
<a name="run-workflows-on-sm"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Establezca las variables de entorno. | Para ejecutar tu trabajo con SageMaker IA, establece las siguientes variables de entorno, proporcionando tu ID Región de AWS y tu Cuenta de AWS ID:<pre>export ECR_REPO_NAME=hydra-sm-artifact<br />export image_tag=latest<br />export AWS_REGION="<your_aws_region>" # for instance, us-east-1<br />export ACCOUNT_ID="<your_account_id>"<br />export BUCKET_NAME_DATA=hydra-sample-data-$ACCOUNT_ID<br />export BUCKET_NAME_CONFIG=hydra-sample-config-$ACCOUNT_ID<br />export AWS_DEFAULT_REGION=$AWS_REGION<br />export ROLE_ARN=arn:aws:iam::${ACCOUNT_ID}:role/hydra-sample-sagemaker<br />export INPUT_DATA_S3_PATH=s3://$BUCKET_NAME_DATA/hydra-on-sm/input/<br />export OUTPUT_DATA_S3_PATH=s3://$BUCKET_NAME_DATA/hydra-on-sm/output/</pre> | AWS general | 
| Cree y envíe la imagen de Docker. | Para crear la imagen de Docker y enviarla al repositorio de Amazon ECR, ejecute los comandos siguientes:<pre>chmod +x scripts/create_and_push_image.sh<br />scripts/create_and_push_image.sh $ECR_REPO_NAME $image_tag $AWS_REGION $ACCOUNT_ID</pre>Esta tarea supone que tiene credenciales válidas en su entorno. La imagen de Docker se envía al repositorio de Amazon ECR especificado en la variable de entorno de la tarea anterior y se utiliza para activar el contenedor de SageMaker IA en el que se ejecutará el trabajo de formación. | Ingeniero de ML, AWS general | 
| Copie los datos de entrada en Amazon S3. | El trabajo de formación en SageMaker IA debe recoger los datos de entrada. Para copiar los datos de entrada al bucket de Amazon S3 para datos, ejecute el comando siguiente: <pre>aws s3 cp data/train.csv "${INPUT_DATA_S3_PATH}train.csv" </pre> | Ingeniero de datos, AWS general | 
| Envíe trabajos de formación en SageMaker IA. | Para simplificar la ejecución de sus scripts, especifique los parámetros de configuración predeterminados en el archivo `default.yaml`. Además de garantizar la coherencia en las ejecuciones, este enfoque también ofrece la flexibilidad de anular fácilmente la configuración predeterminada según sea necesario. Vea el siguiente ejemplo:<pre>python scripts/start_sagemaker_training_job.py sagemaker.role_arn=$ROLE_ARN sagemaker.config_s3_bucket=$BUCKET_NAME_CONFIG sagemaker.input_data_s3_path=$INPUT_DATA_S3_PATH sagemaker.output_data_s3_path=$OUTPUT_DATA_S3_PATH</pre> | AWS general, ingeniero de ML, científico de datos | 
| Ejecute el ajuste de hiperparámetros de la SageMaker IA. | Ejecutar el ajuste de los hiperparámetros de la SageMaker IA es similar a enviar un trabajo de entrenamiento SageMaker de IA. Sin embargo, el script de ejecución difiere en algunos aspectos importantes, como puede ver en el archivo [start\$1sagemaker\$1hpo\$1job.py](https://github.com/aws-samples/configuring-sagemaker-training-jobs-with-hydra/blob/main/scripts/start_sagemaker_hpo_job.py). Los hiperparámetros que se van a ajustar deben pasar por la carga útil del boto3, no por un canal hacia el trabajo de entrenamiento.Para iniciar el trabajo de optimización de hiperparámetros (HPO), ejecute los comandos siguientes:<pre>python scripts/start_sagemaker_hpo_job.py sagemaker.role_arn=$ROLE_ARN sagemaker.config_s3_bucket=$BUCKET_NAME_CONFIG sagemaker.input_data_s3_path=$INPUT_DATA_S3_PATH sagemaker.output_data_s3_path=$OUTPUT_DATA_S3_PATH</pre> | Científico de datos | 

## Resolución de problemas
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| Token vencido | Exporte AWS credenciales nuevas. | 
| Falta de permisos de IAM | Asegúrese de exportar las credenciales de un rol de IAM que tenga todos los permisos de IAM necesarios para implementar la CloudFormation plantilla e iniciar los trabajos de formación en SageMaker IA. | 

## Recursos relacionados
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-resources"></a>
+ [Entrena un modelo con Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html) (AWS documentación)
+ [What is Hyperparameter Tuning?](https://aws.amazon.com/what-is/hyperparameter-tuning/#:~:text=Hyperparameter%20tuning%20allows%20data%20scientists,the%20model%20as%20a%20hyperparameter.)

## Información adicional
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-additional"></a>

Este patrón resuelve los desafíos siguientes:

**Coherencia desde el desarrollo local hasta la implementación a escala**: con este patrón, los desarrolladores pueden usar el mismo flujo de trabajo, independientemente de si utilizan scripts de Python locales, ejecutan contenedores Docker locales, realizan grandes experimentos con SageMaker IA o despliegan en SageMaker producción con IA. Esta coherencia es importante por los motivos siguientes:
+ **Iteración más rápida**: permite una experimentación local rápida sin necesidad de hacer ajustes importantes al escalar verticalmente.
+ **Sin necesidad de refactorizar: la** transición a experimentos de SageMaker IA de mayor envergadura es sencilla y no requiere una revisión de la configuración existente.
+ **Mejora continua**: desarrollar características nuevas y mejorar de manera continua el algoritmo es sencillo, ya que el código sigue siendo el mismo en todos los entornos.

**Administración de la configuración**: este patrón utiliza [Hydra](https://hydra.cc/), una herramienta de administración de la configuración, para ofrecer las ventajas siguientes:
+ Los parámetros se definen en los archivos de configuración, independientes del código.
+ Los conjuntos de parámetros distintos se pueden intercambiar o combinar con facilidad.
+ El seguimiento de los experimentos se simplifica porque la configuración de cada ejecución se registra de manera automática.
+ Los experimentos en la nube pueden utilizar la misma estructura de configuración que las ejecuciones locales, lo que garantiza la coherencia.

Con Hydra, puede administrar la configuración de manera eficaz; para ello, habilite las características siguientes:
+ **Divida las configuraciones**: divida las configuraciones de su proyecto en partes más pequeñas y manejables que se puedan modificar de manera independiente. Este enfoque facilita la gestión de proyectos complejos.
+ **Ajuste los valores predeterminados con facilidad**: cambie de manera rápida las configuraciones de referencia para que sea más fácil probar nuevas ideas.
+ **Alinee las entradas de la CLI y los archivos de configuración**: combine las entradas de la línea de comandos con sus archivos de configuración sin problemas. Este enfoque reduce el desorden y la confusión, lo que hace que el proyecto sea más manejable con el tiempo.

 

# Traduce el lenguaje natural a consultas (DSL) para consultas de Elasticsearch OpenSearch y consultas de Elasticsearch
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch"></a>

*Tabby Ward, Nicholas Switzer y Breanne Warner, Amazon Web Services*

## Resumen
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch-summary"></a>

Este patrón demuestra cómo utilizar modelos de lenguaje grandes (LLMs) para convertir las consultas en lenguaje natural en un lenguaje específico del dominio de consulta (consulta DSL), lo que facilita a los usuarios la interacción con los servicios de búsqueda, como OpenSearch Elasticsearch, sin un conocimiento exhaustivo del lenguaje de consulta. Este recurso es especialmente valioso para los desarrolladores y científicos de datos que quieren mejorar las aplicaciones basadas en búsquedas con funcionalidades de consulta en lenguaje natural y, en última instancia, mejorar la experiencia del usuario y la funcionalidad de búsqueda.

El patrón ilustra las técnicas de ingeniería de peticiones, el perfeccionamiento iterativo y la incorporación de conocimientos especializados, todas fundamentales en la generación de datos sintéticos. Si bien este enfoque se centra principalmente en la conversión de consultas, demuestra de manera implícita el potencial del aumento de datos y la producción escalable de datos sintéticos. Esta base podría ampliarse a tareas de generación de datos sintéticos más exhaustivas, a fin de resaltar el poder de unir las entradas de lenguaje natural no LLMs estructuradas con las salidas estructuradas y específicas de la aplicación.

Esta solución no implica herramientas de migración ni implementación en el sentido tradicional. En cambio, se centra en demostrar una prueba de concepto (PoC) para convertir consultas en lenguaje natural en consultas de DSL mediante el uso de. LLMs
+ El patrón utiliza un cuaderno de Jupyter como step-by-step guía para configurar el entorno e implementar la conversión. text-to-query
+ Utiliza Amazon Bedrock para acceder LLMs, que es crucial para interpretar el lenguaje natural y generar las consultas adecuadas.
+ La solución está diseñada para funcionar con Amazon OpenSearch Service. Puede seguir un proceso similar para Elasticsearch y las consultas generadas podrían adaptarse a los motores de búsqueda similares.

[Query DSL](https://opensearch.org/docs/latest/query-dsl/) es un lenguaje de búsqueda flexible basado en JSON que se utiliza para crear consultas complejas tanto en Elasticsearch como en. OpenSearch Permite especificar consultas en el parámetro de consulta de las operaciones de búsqueda y admite varios tipos de consultas. Una consulta de DSL incluye consultas hojas y consultas compuestas. Las consultas hoja buscan valores específicos en campos determinados y abarcan consultas de texto completo, por términos, geográficas, de unión, de alcance y especializadas. Las consultas compuestas actúan como contenedores para cláusulas compuestas o de varias hojas y combinan sus resultados o modifican su comportamiento. Query DSL permite la creación de búsquedas sofisticadas, que van desde consultas sencillas que coinciden con todos los requisitos hasta consultas complejas con varias cláusulas que producen resultados muy específicos. Query DSL es especialmente útil para proyectos que requieren funcionalidades de búsqueda avanzadas, una construcción de consultas flexible y estructuras de consulta basadas en JSON.

Para la conversión de DSL, este patrón utiliza técnicas como la generación de mensajes en pocos pasos, las solicitudes del sistema, la salida estructurada, el encadenamiento de solicitudes, el suministro de contexto y las solicitudes específicas para tareas específicas. text-to-query Para definiciones y ejemplos de estas técnicas, consulte la sección [Información adicional](#translate-natural-language-query-dsl-opensearch-elasticsearch-additional).

## Requisitos previos y limitaciones
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch-prereqs"></a>

**Requisitos previos **

Para utilizar de manera eficaz el cuaderno de Jupyter para convertir consultas en lenguaje natural en DSL de consultas, necesita lo siguiente:
+ **Conocimientos de los cuadernos de Jupyter**. Comprensión básica de cómo navegar y ejecutar código en un entorno de cuadernos de Jupyter.
+ **Entorno de Python**. Un entorno de Python que funcione, de preferencia Python 3.x, con las bibliotecas necesarias instaladas.
+ ** OpenSearch Elasticsearch** o conocimiento. Conocimientos básicos de Elasticsearch o OpenSearch, incluida su arquitectura y cómo realizar consultas.
+ **Cuenta de AWS**. Un activo Cuenta de AWS para acceder a Amazon Bedrock y otros servicios relacionados.
+ **Bibliotecas y dependencias**. Instalación de bibliotecas específicas mencionadas en el cuaderno, por ejemplo, `boto3` para la AWS interacción, y cualquier otra dependencia necesaria para la integración con LLM.
+ **Acceso a modelos en Amazon Bedrock**. Este patrón usa tres Claude LLMs de Anthropic. Abra la [consola de Amazon Bedrock](https://console.aws.amazon.com/bedrock/) y elija **Acceso a modelos**. En la pantalla siguiente, elija **Activar modelos específicos** y seleccione estos tres modelos:
  + Claude 3 Sonnet
  + Claude 3.5 Sonnet
  + Claude 3 Haiku
+ **Políticas de IAM y rol de IAM adecuados**. Para ejecutar el cuaderno en una función AWS Identity and Access Management (de IAM) Cuenta de AWS, es necesaria la `SagemakerFullAccess` política, así como la política que se proporciona en la sección de [información adicional](#translate-natural-language-query-dsl-opensearch-elasticsearch-additional), a la que puede dar un nombre. `APGtext2querydslpolicy` Esta política incluye la suscripción a los tres modelos de Claude que se indican.

Contar con estos requisitos previos garantiza una experiencia fluida a la hora de trabajar con el portátil e implementar la text-to-query funcionalidad.

**Limitaciones**
+ **Estado de la prueba de concepto**. Este proyecto pretende principalmente ser una prueba de concepto (PoC). Demuestra el potencial de su uso LLMs para convertir consultas en lenguaje natural en consultas DSL, pero es posible que no esté completamente optimizado o preparado para la producción.
+ **Limitaciones del modelo**:

  **Restricciones de la ventana de contexto***.* Cuando utilice las LLMs que están disponibles en Amazon Bedrock, tenga en cuenta las limitaciones de la ventana de contexto:

  Modelos de Claude (a partir de septiembre de 2024):
  + Claude 3 Opus: 200.000 tokens
  + Claude 3 Sonnet: 200.000 tokens
  + Claude 3 Haiku: 200.000 tokens

  Es posible que otros modelos de Amazon Bedrock tengan tamaños de ventana de contexto distintos. Consulte siempre la documentación más reciente para obtener la información más actualizada.

  **Disponibilidad de modelos***. *La disponibilidad de modelos específicos en Amazon Bedrock puede variar. Asegúrese de tener acceso a los modelos necesarios antes de implementar esta solución.
+ **Limitaciones adicionales**
  + **Complejidad de la consulta**. La eficacia de la conversión del lenguaje natural a DSL de consulta puede variar según la complejidad de la consulta introducida.
  + **Compatibilidad de versiones**. Es posible que el DSL de consulta generado necesite ajustes en función de la versión específica de Elasticsearch o OpenSearch de la que utilice.
  + **Rendimiento.** Este patrón proporciona una implementación de PoC, por lo que la velocidad y precisión de la generación de consultas podrían no ser óptimas la producción a gran escala.
  + **Costo**. Su uso LLMs en Amazon Bedrock conlleva costes. Tenga en cuenta la estructura de precios del modelo que elija. Para obtener más información, consulte [Precios de Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-pricing.html).
  + **Mantenimiento.** Es posible que sea necesario actualizar de manera periódica las peticiones y la selección de modelos para mantenerse al día con los avances de la tecnología de los LLM y los cambios en la sintaxis del DSL de consultas.

**Versiones de producto**

Esta solución se probó en Amazon OpenSearch Service. Si quiere utilizar Elasticsearch, es posible que tenga que hacer algunos cambios para replicar la funcionalidad exacta de este patrón.
+ **OpenSearch compatibilidad de versiones**. **OpenSearch **mantiene la compatibilidad con versiones anteriores en las principales versiones. Por ejemplo:
  + OpenSearch Los clientes 1.x son generalmente compatibles con los clústeres OpenSearch 1.x.
  + OpenSearch Los clientes 2.x son generalmente compatibles con OpenSearch los clústeres 2.x.

  Sin embargo, siempre que sea posible, es mejor utilizar la misma versión secundaria para el cliente y para el clúster.
+ OpenSearch Compatibilidad con las **API.** **OpenSearch **mantiene la compatibilidad de la API con Elasticsearch OSS 7.10.2 para la mayoría de las operaciones. Sin embargo, existen algunas diferencias, sobre todo en las versiones más recientes.
+ **OpenSearch consideraciones sobre la actualización:**
  + No se admiten las versiones de nivel inferior directas. Utilice instantáneas para la reversión si es necesario.
  + Cuando actualice, consulte la [matriz de compatibilidad y notas de la versión](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/supported-operations.html) para ver si hay cambios importantes.

**Consideraciones sobre Elasticsearch**
+ **Versión de Elasticsearch**. La versión principal de Elasticsearch que utilice es crucial, ya que la sintaxis y las características de las consultas pueden cambiar entre las versiones principales. Actualmente, la última versión estable es Elasticsearch 8.x. Asegúrese de que las consultas sean compatibles con la versión específica de Elasticsearch.
+ **Versión de la biblioteca de DSL de consultas de Elasticsearch**. Si utiliza la biblioteca de Python de DSL de consultas de Elasticsearch, asegúrese de que la versión coincida con la versión de Elasticsearch. Por ejemplo:
  + Para Elasticsearch 8.x, utilice una versión de `elasticsearch-dsl` superior o igual a la versión 8.0.0, pero inferior a la versión 9.0.0.
  + Para Elasticsearch 7.x, utilice una versión de `elasticsearch-dsl` superior o igual a la versión 7.0.0, pero inferior a la versión 8.0.0.
+ **Versión de la biblioteca del cliente**. Ya sea que utilice el cliente oficial de Elasticsearch o un cliente para un lenguaje específico, asegúrese de que sea compatible con la versión de Elasticsearch.
+ **Versión de Query DSL**. Query DSL evoluciona con las versiones de Elasticsearch. Es posible que algunos tipos o parámetros de consulta estén en desuso o se hayan introducido en versiones diferentes.
+ **Asignación de versión**. La manera en que define las asignaciones de los índices y cambia de una versión a otra. Consulte siempre la documentación de asignación de la versión específica de Elasticsearch.
+ **Versiones de herramientas de análisis**. Si utiliza analizadores, tokenizadores u otras herramientas de análisis de texto, su comportamiento o disponibilidad podrían cambiar de una versión a otra.

## Arquitectura
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch-architecture"></a>

**Arquitectura de destino**

El siguiente diagrama ilustra la arquitectura de este patrón.

![\[Arquitectura para traducir lenguaje natural a DSL de consultas en Amazon Bedrock.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/75296405-2893-4328-9551-9bcc6ec7fd3e/images/ffb1b893-d23c-4e1c-b679-8063b4f85a8a.png)


donde:

1. Entrada de usuario y petición del sistema con algunos ejemplos de solicitudes de pocos pasos. El proceso comienza con un usuario que proporciona una consulta en lenguaje natural o una solicitud de generación de esquemas.

1. Amazon Bedrock La entrada se envía a Amazon Bedrock, que sirve como interfaz para acceder al LLM de Claude.

1. LLM de Claude 3 Sonnet. Amazon Bedrock utiliza el soneto Claude 3 de la familia Claude 3 LLMs para procesar la entrada. Interpreta y genera el DSL de Elasticsearch o consulta adecuado. OpenSearch Para las solicitudes de esquemas, genera Elasticsearch o mapeos sintéticos. OpenSearch 

1. Generación de DSL de consultas. En el caso de las consultas en lenguaje natural, la aplicación toma el resultado del LLM y lo formatea en un DSL válido para consultas de Elasticsearch o Service. OpenSearch 

1. Generación de datos sintéticos. La aplicación también utiliza esquemas para crear Elasticsearch sintético o OpenSearch datos para cargarlos en una colección Serverless con fines de prueba. OpenSearch 

1. OpenSearch o Elasticsearch. La consulta DSL generada se consulta con una colección OpenSearch Serverless en todos los índices. La salida de JSON contiene los datos relevantes y el número de *visitas* de los datos que residen en la colección Serverless. OpenSearch 

**Automatización y escala**

El código que se proporciona con este patrón está diseñado estrictamente para fines de PoC. En la lista siguiente se proporcionan algunas sugerencias para automatizar y escalar aún más la solución y pasar el código a producción. Estas mejoras quedan fuera del alcance de este patrón.
+ Creación de contenedores:
  + Utilice Docker para la aplicación a fin de garantizar la coherencia entre los diversos entornos.
  + Utilice plataformas de orquestación de contenedores como Amazon Elastic Container Service (Amazon ECS) o Kubernetes para las implementaciones escalables.
+ Arquitectura sin servidor:
  + Convierta la funcionalidad principal en AWS Lambda funciones.
  + Utilice Amazon API Gateway para crear RESTful puntos de enlace para la entrada de consultas en lenguaje natural.
+ Proceso asíncrono:
  + Implemente Amazon Simple Queue Service (Amazon SQS) para poner en cola las consultas entrantes.
  + Úselo AWS Step Functions para organizar el flujo de trabajo de procesamiento de consultas y generación del DSL de consultas.
+ Almacenamiento en caché:
  + Implemente un mecanismo para almacenar las peticiones en la memoria caché.
+ Supervisión y registro:
  + Usa Amazon CloudWatch para monitorizar y emitir alertas.
  + Implemente el registro centralizado con Amazon CloudWatch Logs o Amazon OpenSearch Service para el análisis de registros.
+ Mejoras de seguridad:
  + Implemente los roles de IAM para el control de acceso específico.
  + Úselo AWS Secrets Manager para almacenar y administrar de forma segura las claves y credenciales de la API.
+ Implementación multirregional
  + Considere la posibilidad de implementar la solución en varios Regiones de AWS para mejorar la latencia y la recuperación ante desastres.
  + Utilice Amazon Route 53 para el enrutamiento de solicitudes inteligente.

Al implementar estas sugerencias, puede transformar esta PoC en una solución sólida, escalable y lista para la producción. Recomendamos que pruebe exhaustivamente cada componente y todo el sistema antes de la implementación completa.

## Tools (Herramientas)
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch-tools"></a>

**Herramientas**
+ Los [cuadernos Amazon SageMaker AI son cuadernos](https://aws.amazon.com/sagemaker/notebooks/) Jupyter totalmente gestionados para el desarrollo del aprendizaje automático. Este patrón utiliza las libretas como un entorno interactivo para la exploración de datos, el desarrollo de modelos y la experimentación en Amazon SageMaker AI. Los cuadernos proporcionan una integración perfecta con otras funciones de SageMaker IA y. Servicios de AWS
+ [Python](https://www.python.org/) es un lenguaje de programación informático de uso general. Este patrón utiliza Python como lenguaje principal para implementar la solución.
+ [Amazon Bedrock](https://aws.amazon.com/bedrock/) es un servicio totalmente gestionado que pone a su disposición modelos básicos de alto rendimiento (FMs) de las principales empresas emergentes de IA y Amazon a través de una API unificada. Amazon Bedrock proporciona acceso al procesamiento LLMs del lenguaje natural. Este patrón utiliza modelos Anthropic Claude 3.
+ [AWS SDK para Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)es un kit de desarrollo de software que le ayuda a integrar su aplicación, biblioteca o script de Python con Servicios de AWS, incluido Amazon Bedrock.
+ [Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/what-is.html) es un servicio gestionado que le ayuda a implementar, operar y escalar clústeres de OpenSearch servicios en la nube de AWS. Este patrón utiliza OpenSearch Service como sistema de destino para generar el DSL de consultas.

**Repositorio de código**

El código de este patrón está disponible en el repositorio GitHub [Prompt Engineering Text-to-QueryDSL Using Claude 3 Models](https://github.com/aws-samples/text-to-queryDSL/blob/main/text2ES_prompting_guide.ipynb). En el ejemplo se utiliza una aplicación de redes sociales de salud que crea publicaciones para los usuarios y los perfiles de usuario asociados a la aplicación de salud.

## Prácticas recomendadas
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch-best-practices"></a>

Al trabajar con esta solución, tenga en cuenta lo siguiente:
+ La necesidad de contar con AWS las credenciales y los permisos adecuados para acceder a Amazon Bedrock
+ Los posibles costos asociados con el uso Servicios de AWS y LLMs
+ La importancia de comprender el DSL de consultas para validar y, posiblemente, modificar las consultas generadas

## Epics
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch-epics"></a>

### Configuración del entorno y preparación de los datos
<a name="set-up-the-environment-and-prepare-data"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure el entorno de desarrollo. | Para obtener instrucciones detalladas y el código para este y los demás pasos de este patrón, consulte el tutorial completo en el [GitHub repositorio](https://github.com/aws-samples/text-to-queryDSL/blob/main/text2ES_prompting_guide.ipynb).[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/translate-natural-language-query-dsl-opensearch-elasticsearch.html) | Python, pip, AWS SDK | 
| Configura el AWS acceso. | Configure el cliente de Amazon Bedrock y la sesión de SageMaker IA. Recupera el nombre del recurso de Amazon (ARN) del rol de ejecución de SageMaker IA para usarlo más adelante en la creación de la colección OpenSearch Serverless. | IAM, AWS CLI, Amazon Bedrock, Amazon SageMaker | 
| Cargue esquemas de aplicaciones de salud. | Lea y analice los esquemas JSON de las publicaciones de salud y perfiles de usuario a partir de archivos predefinidos. Convierta los esquemas en cadenas para utilizarlos más adelante en las peticiones. | DevOps ingeniero, AWS general, Python, JSON | 

### Generación de datos sintéticos
<a name="generate-synthetic-data"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un generador de datos basado en LLM. | Implemente la función **generate\$1data()** para llamar a la API de Converse de Amazon Bedrock con los modelos Claude 3. Modelo de configuración IDs para Sonnet, Sonnet 3.5 y Haiku:<pre>model_id_sonnet3_5 = "anthropic.claude-3-5-sonnet-20240620-v1:0" <br />model_id_sonnet = "anthropic.claude-3-sonnet-20240229-v1:0" <br />model_id_haiku = "anthropic.claude-3-haiku-20240307-v1:0"</pre> | Python, API de Amazon Bedrock, peticiones de LLM | 
| Cree publicaciones de salud sintéticas. | Utilice la función **generate\$1data()** con una petición específica para crear entradas sintéticas de publicaciones de salud basadas en el esquema proporcionado. Una llamada a la función tiene un aspecto similar al siguiente: <pre>health_post_data = generate_data(bedrock_rt, model_id_sonnet, system_prompt, message_healthpost, inference_config)</pre> | Python, JSON | 
| Cree perfiles de usuario sintéticos. | Utilice la función **generate\$1data()** con una petición específica para crear entradas sintéticas de perfiles de usuario basadas en el esquema proporcionado. Esto es similar a la generación de publicaciones de salud, pero utiliza una petición distinta. | Python, JSON | 

### Configure e ingiera datos OpenSearch
<a name="set-up-opensearch-and-ingest-data"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure una colección OpenSearch sin servidor. | Utilice Boto3 para crear una colección OpenSearch sin servidor con las políticas de cifrado, red y acceso adecuadas. La creación de la colección tiene un aspecto como el siguiente: <pre>collection = aoss_client.create_collection(name=es_name, type='SEARCH')</pre> [Para obtener más información sobre OpenSearch Serverless, consulte la documentación.AWS](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless.html) | OpenSearch Sin servidor, IAM | 
| Defina los índices OpenSearch . | Cree índices para publicaciones de salud y perfiles de usuario mediante el OpenSearch cliente, en función de las asignaciones de esquemas predefinidas. La creación del índice tiene un aspecto como este:<pre>response_health = oss_client.indices.create(healthpost_index, body=healthpost_body)</pre> | OpenSearch, JSON | 
| Cargue datos en OpenSearch. | Ejecuta la función **ingest\$1data ()** para insertar de forma masiva las publicaciones sintéticas sobre salud y los perfiles de usuario en sus índices respectivos. OpenSearch La función utiliza el asistente masivo de `opensearch-py`:<pre>success, failed = bulk(oss_client, actions)</pre> | Python, OpenSearch API, operaciones de datos masivos | 

### Creación y ejecución de consultas
<a name="generate-and-run-queries"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Diseñe ejemplos de peticiones con pocos pasos. | Genere consultas de ejemplo y las preguntas correspondientes en lenguaje natural con los modelos de Claude 3 como ejemplos con pocos pasos para la generación de consultas. La petición del sistema incluye los ejemplos siguientes:<pre>system_prompt_query_generation = [{"text": f"""You are an expert query dsl generator. ... Examples: {example_prompt} ..."""}]</pre> | Petición de LLM, DSL de consultas | 
| Crea un conversor text-to-query DSL. | Implemente la petición del sistema, que incluye esquemas, datos y ejemplos con pocos pasos, para la generación de consultas. Utilice la petición del sistema para convertir las consultas en lenguaje natural en DSL de consultas. Una llamada a la función tiene un aspecto similar al siguiente:<pre>query_response = generate_data(bedrock_rt, model_id, system_prompt_query_generation, query, inference_config)</pre> | Python, API de Amazon Bedrock, peticiones de LLM | 
| Pruebe la consulta DSL activada. OpenSearch | Ejecute la función **query\$1oss ()** para ejecutar la consulta DSL generada en la colección OpenSearch Serverless y obtener resultados. La función utiliza el método de búsqueda del cliente OpenSearch :<pre>response = oss_client.search(index="_all", body=temp)</pre> | Python, OpenSearch API, consulta DSL | 

### Prueba y evaluación
<a name="test-and-evaluate"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un conjunto de consultas de prueba. | Utilice Claude 3 para generar un conjunto diverso de preguntas de prueba basadas en los datos y esquemas sintéticos:<pre>test_queries = generate_data(bedrock_rt, model_id_sonnet, query_system_prompt, query_prompt, inference_config)</pre> | Peticiones de LLM | 
| Evalúe la precisión de la conversión de DSL de consultas. | Pruebe la consulta DSL generada mediante la ejecución de consultas OpenSearch y el análisis de los resultados devueltos para comprobar su relevancia y precisión. Esto implica ejecutar la consulta e inspeccionar los resultados:<pre>output = query_oss(response1) print("Response after running query against Opensearch") print(output)</pre> | Python, análisis de datos, DSL de consultas | 
| Modelos Claude 3 de referencia.  | Compare el rendimiento de los distintos modelos de Claude 3 (Haiku, Sonnet, Sonnet 3.5) para la generación de consultas en términos de precisión y latencia. Para comparar, cambie `model_id` cuando llame a **generate\$1data()** y mide el tiempo de ejecución. | Python, análisis comparativo de rendimiento | 

### Limpieza y documentación
<a name="clean-up-and-document"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Desarrolle un proceso de limpieza. | Elimine todos los índices de la colección OpenSearch Serverless después de usarlos. | Python, SDK de AWS, OpenSearch API | 

## Recursos relacionados
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch-resources"></a>
+ [Consulta DSL](https://opensearch.org/docs/latest/query-dsl/) (OpenSearch documentación)
+ [Documentación OpenSearch de Amazon Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/what-is.html)
+ [OpenSearch Colecciones sin servidor](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-manage.html)
+ [Documentación de Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html)
+ [Documentación de Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html)
+ [AWS SDK para Python (Boto3) documentación](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)

## Información adicional
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch-additional"></a>

**Política de IAM**

Esta es la política `APGtext2querydslpolicy` para el rol de IAM que se utiliza en este patrón:

```
{
  "Version": "2012-10-17",		 	 	  
  "Statement": [
    { "Effect": "Allow", 
      "Action": [ 
        "bedrock:InvokeModel", 
        "bedrock:InvokeModelWithResponseStream"
      ], 
      "Resource": "*" 
    }, 
    { "Effect": "Allow", 
      "Action": [ 
        "s3:GetObject", 
        "s3:PutObject", 
        "s3:ListBucket"
      ], 
      "Resource": [
        "arn:aws:s3:::sagemaker-*", 
        "arn:aws:s3:::sagemaker-*/*" 
      ] 
    }, 
    { "Effect": "Allow", 
      "Action": [ 
        "logs:CreateLogGroup", 
        "logs:CreateLogStream", 
        "logs:PutLogEvents" 
      ], 
      "Resource": "arn:aws:logs:*:*:log-group:/aws/sagemaker/*" 
    }, 
    { "Effect": "Allow", 
      "Action": [
        "ec2:CreateNetworkInterface", 
        "ec2:DescribeNetworkInterfaces", 
        "ec2:DeleteNetworkInterface" 
      ], 
      "Resource": "*" 
    }, 
    { "Effect": "Allow", 
      "Action": [
        "aoss:*" 
      ], 
      "Resource": "*" 
    }, 
    { "Effect": "Allow", 
      "Action": [ 
        "iam:PassRole", 
        "sagemaker:*" 
      ], 
      "Resource": [ 
        "arn:aws:iam::*:role/*", "*" 
      ], 
      "Condition": { 
        "StringEquals": { 
          "iam:PassedToService": "sagemaker.amazonaws.com" 
          } 
      } 
    }, 
    { "Effect": "Allow", 
      "Action": [ 
        "codecommit:GetBranch", 
        "codecommit:GetCommit", 
        "codecommit:GetRepository", 
        "codecommit:ListBranches", 
        "codecommit:ListRepositories" 
      ], 
      "Resource": "*" 
    }, 
    { "Effect": "Allow", 
      "Action": [ 
        "aws-marketplace:Subscribe" 
      ], 
      "Resource": "*", 
      "Condition": {
        "ForAnyValue:StringEquals": { 
          "aws-marketplace:ProductId": [ 
            "prod-6dw3qvchef7zy", 
            "prod-m5ilt4siql27k", 
            "prod-ozonys2hmmpeu" 
          ]
        } 
      } 
    }, 
    { "Effect": "Allow", 
      "Action": [ 
        "aws-marketplace:Unsubscribe", 
        "aws-marketplace:ViewSubscriptions" 
      ], 
      "Resource": "*" 
    }, 
    { "Effect": "Allow", 
      "Action": "iam:*", 
      "Resource": "*" 
    } 
  ] 
}
```

**Técnicas de peticiones con modelos Anthropic Claude 3**

Este patrón muestra las siguientes técnicas de solicitud para la conversión text-to-query DSL utilizando los modelos Claude 3.
+ **Petición con pocos pasos**: las peticiones con pocos pasos es una técnica eficiente para mejorar el rendimiento de los modelos de Claude 3 en Amazon Bedrock. Este enfoque implica proporcionar al modelo un pequeño número de ejemplos que demuestren el input/output comportamiento deseado antes de pedirle que realice una tarea similar. Al utilizar los modelos de Claude 3 en Amazon Bedrock, las peticiones con pocos pasos pueden resultar muy eficaces para las tareas que requieren un formato específico, patrones de razonamiento o conocimientos del dominio. Para implementar esta técnica, en general, se estructura la petición con dos componentes principales: la sección de ejemplos y la consulta propiamente dicha. La sección de ejemplos contiene uno o más input/output pares que ilustran la tarea y la sección de consultas presenta la nueva entrada para la que desea obtener una respuesta. Este método ayuda a Claude 3 a entender el contexto y el formato de salida esperado y, a menudo, da como resultado una respuesta más precisa y coherente.

  Ejemplo:

  ```
  "query": {
    "bool": {
      "must": [
        {"match": {"post_type": "recipe"}},
        {"range": {"likes_count": {"gte": 100}}},
        {"exists": {"field": "media_urls"}}
      ]
    }
  }
  Question: Find all recipe posts that have at least 100 likes and include media URLs.
  ```
+ **Peticiones del sistema: **además de las peticiones con pocos pasos, los modelos de Claude 3 de Amazon Bedrock también admiten el uso de peticiones del sistema. Las peticiones del sistema son una manera de proporcionar un contexto general, instrucciones o directrices al modelo antes de presentarlo con entradas específicas del usuario. Son muy útiles para definir el tono, establecer el papel del modelo o establecer las limitaciones de toda la conversación. Para utilizar una petición del sistema con Claude 3 en Amazon Bedrock, debe incluirlo en el parámetro `system` de su solicitud de API. Esto es independiente de los mensajes de usuario y se aplica a toda la interacción. Las peticiones detalladas del sistema se utilizan para establecer el contexto y proporcionar pautas para el modelo.

  Ejemplo:

  ```
  You are an expert query dsl generator. Your task is to take an input question and generate a query dsl to answer the question. Use the schemas and data below to generate the query.
  
  Schemas: [schema details]
  Data: [sample data]
  Guidelines: 
  - Ensure the generated query adheres to DSL query syntax
  - Do not create new mappings or other items that aren't included in the provided schemas.
  ```
+ **Salida estructurada**: puede indicar al modelo que proporcione la salida en formatos específicos, como JSON o en etiquetas XML.

  Ejemplo:

  ```
  Put the query in json tags
  ```
+ **Encadenamiento de peticiones**: el cuaderno utiliza el resultado de una llamada al LLM como entrada para otra, por ejemplo, utiliza los datos sintéticos generados para crear preguntas de ejemplo.
+ **Aprovisionamiento de contexto**: en las peticiones se proporciona el contexto correspondiente, como los esquemas y los datos de muestra.

  Ejemplo:

  ```
  Schemas: [schema details]
  Data: [sample data]
  ```
+ **Peticiones específicas para cada tarea**: se diseñan peticiones distintas para tareas específicas, como generar datos sintéticos, crear preguntas de ejemplo y convertir consultas en lenguaje natural en DSL de consultas.

  Ejemplo de generación de preguntas de prueba:

  ```
  Your task is to generate 5 example questions users can ask the health app based on provided schemas and data. Only include the questions generated in the response.
  ```

# Uso de Amazon Q Developer como asistente de codificación para aumentar la productividad
<a name="use-q-developer-as-coding-assistant-to-increase-productivity"></a>

*Ram Kandaswamy, Amazon Web Services*

## Resumen
<a name="use-q-developer-as-coding-assistant-to-increase-productivity-summary"></a>

Este patrón utiliza un tic-tac-toe juego para demostrar cómo puedes aplicar Amazon Q Developer en una variedad de tareas de desarrollo. Genera código para un tic-tac-toe juego como una aplicación de una sola página (SPA), mejora su interfaz de usuario y crea scripts para implementar la AWS aplicación.

Amazon Q Developer funciona como un asistente de codificación para ayudar a acelerar los flujos de trabajo de desarrollo de software y mejorar la productividad para desarrolladores y para no desarrolladores. Independientemente de sus conocimientos técnicos, le permite crear arquitecturas y diseñar soluciones para problemas empresariales, a reforzar su entorno de trabajo, a implementar características nuevas y a generar casos de prueba para su validación. Utiliza instrucciones en lenguaje natural y funcionalidades de IA para garantizar un código coherente y de alta calidad y mitigar los desafíos de codificación, independientemente de sus habilidades de programación.

La ventaja principal de Amazon Q Developer es su capacidad para quitarle de encima las tareas de codificación repetitivas. Cuando utiliza la anotación `@workspace`, Amazon Q Developer ingiere e indexa todos los archivos de código, las configuraciones y la estructura del proyecto en su entorno de desarrollo integrado (IDE) y proporciona respuestas personalizadas para que se centre en la resolución creativa de problemas. Puede dedicar más tiempo a diseñar soluciones innovadoras y a mejorar la experiencia del usuario. Si no tiene conocimientos técnicos, puede utilizar Amazon Q Developer para agilizar los flujos de trabajo y colaborar de manera más eficaz con el equipo de desarrollo. La característica de **explicación del código** de Amazon Q Developer ofrece instrucciones y resúmenes detallados para que pueda navegar por bases de código complejas.

Además, Amazon Q Developer ofrece un enfoque independiente del lenguaje que ayuda a los desarrolladores de nivel medio y medio a ampliar sus habilidades. Puede concentrarse en los conceptos básicos y la lógica empresarial en lugar de centrarse en la sintaxis específica del lenguaje. Esto reduce la curva de aprendizaje al cambiar de tecnología.

## Requisitos previos y limitaciones
<a name="use-q-developer-as-coding-assistant-to-increase-productivity-prereqs"></a>

**Requisitos previos **
+ IDE (por ejemplo, WebStorm o Visual Studio Code) con el complemento Amazon Q Developer instalado. Para obtener instrucciones, consulte [Installing the Amazon Q Developer extension or plugin in your IDE](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/q-in-IDE-setup.html) en la documentación de Amazon Q Developer.
+ Una Cuenta de AWS configuración activa con Amazon Q Developer. Para obtener instrucciones, consulte [Getting started](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/getting-started-q-dev.html) en la documentación de Amazon Q Developer.
+ **npm** instalado. Para obtener instrucciones, consulte la [documentación de npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm). Este patrón se probó con la versión 10.8 de npm.
+ AWS Command Line Interface (AWS CLI) instalado. Para obtener instrucciones, consulte la [documentación de AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

**Limitaciones**
+ Amazon Q Developer solo puede hacer una tarea de desarrollo a la vez.
+ Algunas Servicios de AWS no están disponibles en todas Regiones de AWS. Para conocer la disponibilidad de las regiones, consulte [Servicios de AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para ver los puntos de conexión específicos, consulte la página [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) y elija el enlace del servicio.

## Tools (Herramientas)
<a name="use-q-developer-as-coding-assistant-to-increase-productivity-tools"></a>
+ Este patrón requiere un IDE como Visual Studio Code o WebStorm. Para obtener una lista de los compatibles IDEs, consulte la [documentación para desarrolladores de Amazon Q.](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/q-in-IDE.html#supported-ides-features)
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) es una herramienta de código abierto que le ayuda a interactuar Servicios de AWS mediante los comandos de su shell de línea de comandos.

## Prácticas recomendadas
<a name="use-q-developer-as-coding-assistant-to-increase-productivity-best-practices"></a>

Consulte [las prácticas recomendadas de codificación con Amazon Q Developer](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-code-generation/best-practices-coding.html) en la Guía AWS prescriptiva. Además:
+ Al enviar peticiones a Amazon Q Developer, asegúrese de que las instrucciones sean claras e inequívocas. Agregue fragmentos de código y anotaciones, por ejemplo, `@workspace` a la petición para proporcionar más contexto a las peticiones.
+ Incluya las bibliotecas pertinentes e impórtelas para evitar conflictos o conjeturas incorrectas por parte del sistema.
+ Si el código generado no es exacto o no es el esperado, utilice la opción **Enviar comentarios y regenerar**. Intente dividir las peticiones en instrucciones más pequeñas.

## Epics
<a name="use-q-developer-as-coding-assistant-to-increase-productivity-epics"></a>

### Configuración del entorno de trabajo
<a name="set-up-the-working-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un nuevo proyecto de . | Para crear un proyecto nuevo en el entorno de trabajo, ejecute el comando siguiente y acepte la configuración predeterminada para todas las preguntas:<pre>npx create-next-app@latest</pre> | Desarrollador de aplicaciones, programador, desarrollador de software | 
| Pruebe la aplicación base. | Ejecute el comando siguiente y confirme que la aplicación base cargó de manera correcta en el navegador:<pre>npm run dev </pre> | Desarrollador de aplicaciones, programador, desarrollador de software | 
| Limpie el código base. | Vaya al archivo `page.tsx` de la carpeta `src/app` y elimine el contenido predeterminado para obtener una página en blanco. Una vez eliminado, el archivo debe tener el aspecto siguiente:<pre>export default function Home() {<br />  return (<div></div><br />      );<br />}</pre> | Desarrollador de aplicaciones, programador, desarrollador de software | 

### Usa Amazon Q Developer para diseñar un proyecto de tic-tac-toe juego
<a name="use-qdevlong-to-design-a-tic-tac-toe-game-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Obtenga información general de los pasos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/use-q-developer-as-coding-assistant-to-increase-productivity.html) | Desarrollador de aplicaciones, programador, desarrollador de software | 
| Genera código para tic-tac-toe. | En el panel de chat, inicie una tarea de desarrollo mediante el comando `/dev` seguido de la descripción de la tarea. Por ejemplo:<pre>/dev Create a React-based single-page application  written in TypeScript for a tic-tac-toe game with the following specifications:<br />1. Design an aesthetically pleasing interface with the game grid centered vertically and <br />horizontally on the page. <br />2. Include a heading and clear instructions on how to play the game.<br />3. Implement color-coding for X and O marks to distinguish them easily. </pre>Amazon Q Developer genera código según sus instrucciones. | Desarrollador de aplicaciones, programador, desarrollador de software | 
| Inspeccione y acepte el código generado. | Inspeccione visualmente el código y elija **Aceptar código** para reemplazar automáticamente el archivo `page.tsx`.Si tiene problemas, elija **Enviar comentarios y regenerar** y describa el problema que encontró. | Desarrollador de aplicaciones, programador, desarrollador de software | 
| Corrija los errores de linting. | El tic-tac-toe juego de ejemplo incluye una cuadrícula. El código que genera Amazon Q Developer podría utilizar el tipo predeterminado `any`. Para agregar seguridad tipográfica, haga una petición a Amazon Q Developer de la manera siguiente:<pre>/dev Ensure proper TypeScript typing for the onSquare Click event handler <br />to resolve any 'any' type issues.</pre> | Desarrollador de aplicaciones, programador, desarrollador de software | 
| Agregue atractivo visual. | Puede dividir el requisito original en fragmentos más pequeños. Por ejemplo, puede mejorar la IU del juego con las peticiones siguientes en las tareas de desarrollo. Esta petición mejora los estilos de Cascading Style Sheets (CSS) y exporta la aplicación para su implementación.<pre>/dev Debug and fix any CSS issues to correctly display the game grid and overall layout. <br /><br />Simplify the code by removing game history functionality and related components. <br /><br />Implement static file export to an 'out' directory for easy deployment. The solution <br />should be fully functional, visually appealing, and free of typing errors or layout issues. </pre> | Desarrollador de aplicaciones, programador, desarrollador de software | 
| Vuelva a probar. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/use-q-developer-as-coding-assistant-to-increase-productivity.html) | Desarrollador de aplicaciones, programador, desarrollador de software | 

### Implemente la aplicación en el Nube de AWS
<a name="deploy-the-application-to-the-aws-cloud"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree carpetas y archivos para su implementación. | En el proyecto del entorno de trabajo, cree una carpeta de implementación con dos archivos en su interior: `pushtos3.sh` y `cloudformation.yml`<pre>mkdir deployment && cd deployment<br />touch pushtos3.sh && chmod +x pushtos3.sh<br />touch cloudformation.yml</pre> | Desarrollador de aplicaciones, programador, desarrollador de software | 
| Genere código de automatización. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/use-q-developer-as-coding-assistant-to-increase-productivity.html) | Administrador de AWS, AWS DevOps, desarrollador de aplicaciones | 
| Genere el contenido del script. | Para crear un script de implementación, utilice la petición siguiente:<pre>/dev Modify the pushtos3 shell script so that it can use AWS CLI commands to create a <br />CloudFormation stack named tictactoe-stack if it does not exist already, and use <br />cloudformation.yml as the source template. Wait for the stack to complete and sync the <br />contents from the out folder to the S3 bucket. Perform invalidation of the CloudFront <br />origin.</pre> | Desarrollador de aplicaciones, programador, desarrollador de software | 
| Implemente la aplicación en la Nube de AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/use-q-developer-as-coding-assistant-to-increase-productivity.html) | Administrador de AWS DevOps, arquitecto de nube, desarrollador de aplicaciones | 

## Resolución de problemas
<a name="use-q-developer-as-coding-assistant-to-increase-productivity-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| La creación no crea una aplicación de una sola página ni la exporta a la carpeta de salida. | Mire el contenido del archivo `next.config.mjs`:Si el código tiene la configuración siguiente de manera predeterminada:<pre>const nextConfig = {};</pre>modifíquelo de la manera siguiente:<pre>const nextConfig = {<br />  output: 'export',<br />  distDir: 'out',<br />};</pre> | 

## Recursos relacionados
<a name="use-q-developer-as-coding-assistant-to-increase-productivity-resources"></a>
+ [Creating a new React project](https://react.dev/learn/start-a-new-react-project) (documetación de React)
+ [Descripción general para desarrolladores de Amazon Q](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/what-is.html) (AWS documentación)
+ [Prácticas recomendadas para desarrolladores de Amazon Q](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-code-generation/introduction.html) (guía AWS prescriptiva)
+ [Instalación, configuración y uso de Amazon Q Developer con JetBrains IDEs](https://www.youtube.com/watch?v=-iQfIhTA4J0&pp=ygUSYW1hem9uIHEgZGV2ZWxvcGVy) (YouTube vídeo)
+ [Instalación de Amazon Q para la línea de comandos](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-getting-started-installing.html) (AWS documentación)

# Utilice el SageMaker procesamiento para la ingeniería de características distribuidas de conjuntos de datos de aprendizaje automático a escala de terabytes
<a name="use-sagemaker-processing-for-distributed-feature-engineering-of-terabyte-scale-ml-datasets"></a>

*Chris Boomhower, Amazon Web Services*

## Resumen
<a name="use-sagemaker-processing-for-distributed-feature-engineering-of-terabyte-scale-ml-datasets-summary"></a>

Muchos conjuntos de datos a escala de terabytes o más grandes suelen constar de una estructura jerárquica de carpetas y, en ocasiones, los archivos del conjunto de datos comparten interdependencias. Por este motivo, los ingenieros de machine learning (ML) y los científicos de datos deben tomar decisiones de diseño bien pensadas a fin de preparar dichos datos para el entrenamiento y la inferencia de modelos. Este patrón demuestra cómo puede utilizar técnicas manuales de macrofragmentación y microfragmentación en combinación con Amazon SageMaker Processing y la paralelización de CPU virtual (vCPU) para escalar de manera eficiente los procesos de ingeniería de características para conjuntos de datos de aprendizaje automático de big data complicados. 

Este patrón define la *macrofragmentación* como la división de los directorios de datos en varias máquinas para su procesamiento, y la *microfragmentación* como la división de los datos de cada máquina en varios subprocesos de procesamiento. El patrón demuestra estas técnicas mediante el uso de Amazon SageMaker con ejemplos de registros de formas de onda de series temporales del conjunto de datos [PhysioNet MIMIC-III](https://physionet.org/content/mimic3wdb/1.0/). Al implementar las técnicas en este patrón, puede minimizar el tiempo y los costos de procesamiento de la ingeniería de características y, al mismo tiempo, maximizar la utilización de los recursos y la eficiencia del rendimiento. Estas optimizaciones se basan en el SageMaker procesamiento distribuido en las instancias de Amazon Elastic Compute Cloud (Amazon EC2) y en v CPUs para conjuntos de datos grandes y similares, independientemente del tipo de datos.

## Requisitos previos y limitaciones
<a name="use-sagemaker-processing-for-distributed-feature-engineering-of-terabyte-scale-ml-datasets-prereqs"></a>

**Requisitos previos **
+ Acceda a instancias de SageMaker notebook o a SageMaker Studio, si desea implementar este patrón en su propio conjunto de datos. Si es la primera vez que utiliza Amazon SageMaker , consulte [Comenzar con Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/gs.html) en la documentación de AWS.
+ SageMaker Studio, si quiere implementar este patrón con los datos de muestra del [PhysioNet MIMIC-III](https://physionet.org/content/mimic3wdb/1.0/). 
+ El patrón usa SageMaker Processing, pero no requiere experiencia en la ejecución SageMaker de trabajos de Processing.

**Limitaciones**
+ Este patrón se adapta bien a los conjuntos de datos de machine learning que incluyen archivos interdependientes. Estas interdependencias son las que más se benefician de la fragmentación manual de macros y de la ejecución en paralelo de varios trabajos de procesamiento de una sola instancia SageMaker . Para los conjuntos de datos en los que no existen dichas interdependencias, la `ShardedByS3Key` función de SageMaker procesamiento podría ser una mejor alternativa a la macrofragmentación, ya que envía los datos fragmentados a varias instancias administradas por el mismo trabajo de procesamiento. Sin embargo, puede implementar la estrategia de microfragmentación de este patrón en ambos escenarios para aprovechar al máximo la instancia v. CPUs

**Versiones de producto**
+ Amazon SageMaker Python SDK versión 2

## Arquitectura
<a name="use-sagemaker-processing-for-distributed-feature-engineering-of-terabyte-scale-ml-datasets-architecture"></a>

**Pila de tecnología de destino**
+ Amazon Simple Storage Service (Amazon S3)
+ Amazon SageMaker

**Arquitectura de destino**

*Macrofragmentación e instancias distribuidas EC2 *

Los 10 procesos paralelos representados en esta arquitectura reflejan la estructura del conjunto de datos MIMIC-III. (Los procesos se representan mediante elipses para simplificar el diagrama). Cuando se utiliza la macrofragmentación manual, se aplica una arquitectura similar a cualquier conjunto de datos. En el caso de MIMIC-III, puede aprovechar la estructura sin procesar del conjunto de datos procesando la carpeta de cada grupo de pacientes por separado, con un esfuerzo mínimo. En el siguiente diagrama, el bloque de grupos de registros aparece a la izquierda (1). Dada la naturaleza distribuida de los datos, tiene sentido dividirlos por grupo de pacientes.

![\[Arquitectura para microfragmentación e instancias distribuidas EC2\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/e7a90b31-de8f-41fd-bb3f-c7c6100fc306/images/c19a8f87-ac59-458e-89cb-50be17ca4a0c.png)


Sin embargo, la fragmentación manual por grupo de pacientes significa que se requiere un trabajo de procesamiento independiente para cada carpeta del grupo de pacientes, como puede ver en la sección central del diagrama (2), en lugar de un solo trabajo de procesamiento con varias instancias. EC2 Como los datos de MIMIC-III incluyen tanto archivos de forma de onda binarios como archivos de encabezados basados en texto coincidentes, y existe una dependencia obligatoria de la [biblioteca wfdb](https://wfdb.readthedocs.io/en/latest/) para la extracción de datos binarios, todos los registros de un paciente específico deben estar disponibles en la misma instancia. La única forma de asegurarse de que el archivo de cabecera asociado a cada archivo de forma de onda binaria también esté presente es implementar la fragmentación manual para ejecutar cada fragmento dentro de su propio trabajo de procesamiento y especificar `s3_data_distribution_type='FullyReplicated'` cuándo se define la entrada del trabajo de procesamiento. Como alternativa, si todos los datos estuvieran disponibles en un único directorio y no existieran dependencias entre los archivos, una opción más adecuada sería lanzar un único trabajo de procesamiento con varias EC2 instancias especificadas`s3_data_distribution_type='ShardedByS3Key'`. Si `ShardedByS3Key ` se especifica el tipo de distribución de datos de Amazon S3, se SageMaker gestionará automáticamente la fragmentación de datos en todas las instancias. 

Lanzar un trabajo de procesamiento para cada carpeta es una forma rentable de preprocesar los datos, ya que la ejecución simultánea de varias instancias ahorra tiempo. Para ahorrar costos y tiempo adicionales, puede utilizar la microfragmentación en cada trabajo de procesamiento. 

*Microsharding y parallel v CPUs*

Dentro de cada trabajo de procesamiento, los datos agrupados se dividen aún más para maximizar el uso de todos los v disponibles CPUs en la instancia SageMaker totalmente administrada EC2 . Los bloques de la sección central del diagrama (2) muestran lo que ocurre en cada trabajo de procesamiento principal. El contenido de las carpetas de registros de pacientes se aplana y se divide en partes iguales en función del número de v disponibles CPUs en la instancia. Una vez dividido el contenido de la carpeta, el conjunto de archivos de tamaño uniforme se distribuye por todos los archivos v CPUs para su procesamiento. Cuando se completa el procesamiento, los resultados de cada vCPU se combinan en un único archivo de datos para cada trabajo de procesamiento. 

En el código adjunto, estos conceptos se representan en la siguiente sección del archivo `src/feature-engineering-pass1/preprocessing.py`.

```
def chunks(lst, n):
    """
    Yield successive n-sized chunks from lst.
    
    :param lst: list of elements to be divided
    :param n: number of elements per chunk
    :type lst: list
    :type n: int
    :return: generator comprising evenly sized chunks
    :rtype: class 'generator'
    """
    for i in range(0, len(lst), n):
        yield lst[i:i + n]
 
 
# Generate list of data files on machine
data_dir = input_dir
d_subs = next(os.walk(os.path.join(data_dir, '.')))[1]
file_list = []
for ds in d_subs:
    file_list.extend(os.listdir(os.path.join(data_dir, ds, '.')))
dat_list = [os.path.join(re.split('_|\.', f)[0].replace('n', ''), f[:-4]) for f in file_list if f[-4:] == '.dat']
 
# Split list of files into sub-lists
cpu_count = multiprocessing.cpu_count()
splits = int(len(dat_list) / cpu_count)
if splits == 0: splits = 1
dat_chunks = list(chunks(dat_list, splits))
 
# Parallelize processing of sub-lists across CPUs
ws_df_list = Parallel(n_jobs=-1, verbose=0)(delayed(run_process)(dc) for dc in dat_chunks)
 
# Compile and pickle patient group dataframe
ws_df_group = pd.concat(ws_df_list)
ws_df_group = ws_df_group.reset_index().rename(columns={'index': 'signal'})
ws_df_group.to_json(os.path.join(output_dir, group_data_out))
```

Una función, `chunks`, se define primero para consumir una lista dada dividiéndola en trozos de longitud de tamaño uniforme `n ` y devolviendo estos resultados como un generador. A continuación, los datos se agrupan en las carpetas de los pacientes mediante la compilación de una lista de todos los archivos de forma de onda binaria presentes. Una vez hecho esto, se obtiene el número de v CPUs disponible en la EC2 instancia. [La lista de archivos de formas de onda binarias se divide uniformemente entre estas v CPUs mediante una llamada y`chunks`, a continuación, cada sublista de formas de onda se procesa en su propia vCPU mediante la clase Parallel de joblib.](https://joblib.readthedocs.io/en/latest/generated/joblib.Parallel.html) El trabajo de procesamiento combina automáticamente los resultados en una sola lista de marcos de datos, que SageMaker luego los procesa más antes de escribirlos en Amazon S3 al finalizar el trabajo. En este ejemplo, los trabajos de procesamiento escriben 10 archivos en Amazon S3 (uno para cada trabajo).

Cuando se hayan completado todos los trabajos de procesamiento iniciales, un trabajo de procesamiento secundario, que se muestra en el bloque a la derecha del diagrama (3), combina los archivos de salida generados por cada trabajo de procesamiento principal y escribe el resultado combinado en Amazon S3 (4).

## Tools (Herramientas)
<a name="use-sagemaker-processing-for-distributed-feature-engineering-of-terabyte-scale-ml-datasets-tools"></a>

**Herramientas**
+ [Python](https://www.python.org/): el código de ejemplo utilizado para este patrón es Python (versión 3).
+ [SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html): Amazon SageMaker Studio es un entorno de desarrollo integrado (IDE) basado en la web para el aprendizaje automático que le permite crear, entrenar, depurar, implementar y supervisar sus modelos de aprendizaje automático. Los trabajos de SageMaker procesamiento se ejecutan con los cuadernos de Jupyter incluidos en Studio. SageMaker 
+ [SageMaker Procesamiento](https://docs.aws.amazon.com/sagemaker/latest/dg/processing-job.html): Amazon SageMaker Processing proporciona una forma simplificada de ejecutar sus cargas de trabajo de procesamiento de datos. En este patrón, el código de ingeniería de funciones se implementa a escala mediante tareas SageMaker de procesamiento.

**Código**

El archivo .zip adjunto proporciona el código completo de este patrón. En la siguiente sección se describen los pasos para crear la arquitectura para este patrón. Cada paso se ilustra con un ejemplo de código del archivo adjunto.

## Epics
<a name="use-sagemaker-processing-for-distributed-feature-engineering-of-terabyte-scale-ml-datasets-epics"></a>

### Configura tu entorno de SageMaker estudio
<a name="set-up-your-sagemaker-studio-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Accede a Amazon SageMaker Studio. | Inscríbase en SageMaker Studio en su cuenta de AWS siguiendo las instrucciones que se proporcionan en la [ SageMaker documentación de Amazon](https://docs.aws.amazon.com/sagemaker/latest/dg/onboard-quick-start.html). | Científico de datos, ingeniero de machine learning | 
| Instale la utilidad wget. | Instala *wget* si has incorporado una nueva configuración de SageMaker Studio o si nunca has utilizado estas utilidades en SageMaker Studio. Para instalarlo, abre una ventana de terminal en la consola de SageMaker Studio y ejecuta el siguiente comando:<pre>sudo yum install wget</pre> | Científico de datos, ingeniero de machine learning | 
| Descargue y descomprima el código de muestra. | Descargue el archivo `attachments.zip` en la sección *Adjuntos*. En una ventana de terminal, navegue hasta la carpeta en la que descargó el archivo y extraiga su contenido:<pre>unzip attachment.zip</pre>Desplácese hasta la ubicación donde descargó el archivo .zip y extraiga el contenido del archivo `Scaled-Processing.zip`.<pre>unzip Scaled-Processing.zip</pre> | Científico de datos, ingeniero de machine learning | 
| Descargue el conjunto de datos de muestra de physionet.org y cárguelo en Amazon S3. | Ejecute el cuaderno de Jupyter `get_data.ipynb` dentro de la carpeta que contiene los archivos `Scaled-Processing`. Este bloc de notas descarga un conjunto de datos MIMIC-III de muestra de [physionet.org](https://physionet.org) y lo carga en el bucket de sesión SageMaker de Studio en Amazon S3. | Científico de datos, ingeniero de machine learning | 

### Configuración del primer script de preprocesamiento
<a name="configure-the-first-preprocessing-script"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Aplane la jerarquía de archivos en todos los subdirectorios. | En conjuntos de datos grandes, como MIMIC-III, los archivos suelen distribuirse en varios subdirectorios, incluso dentro de un grupo principal lógico. El script debe estar configurado para aplanar todos los archivos del grupo en todos los subdirectorios, como se muestra en el siguiente código.<pre># Generate list of .dat files on machine<br />data_dir = input_dir<br />d_subs = next(os.walk(os.path.join(data_dir, '.')))[1]<br />file_list = []<br />for ds in d_subs:<br />    file_list.extend(os.listdir(os.path.join(data_dir, ds, '.')))<br />dat_list = [os.path.join(re.split('_|\.', f)[0].replace('n', ''), f[:-4]) for f in file_list if f[-4:] == '.dat']</pre>    Los fragmentos de código de ejemplo de esta epic provienen del archivo `src/feature-engineering-pass1/preprocessing.py` que se proporciona en el archivo adjunto. | Científico de datos, ingeniero de machine learning | 
| Divida los archivos en subgrupos según el recuento de vCPU. | Los archivos deben dividirse en subgrupos o fragmentos de tamaño uniforme, según el número de v CPUs presentes en la instancia que ejecuta el script. Para este paso, puede implementar código similar al siguiente.<pre># Split list of files into sub-lists<br />cpu_count = multiprocessing.cpu_count()<br />splits = int(len(dat_list) / cpu_count)<br />if splits == 0: splits = 1<br />dat_chunks = list(chunks(dat_list, splits))</pre> | Científico de datos, ingeniero de machine learning | 
| Paralelice el procesamiento de los subgrupos entre v. CPUs | La lógica del script debe configurarse para procesar todos los subgrupos en paralelo. Para ello, utilice la clase `Parallel ` y el método `delayed ` de la biblioteca Joblib de la siguiente manera. <pre># Parallelize processing of sub-lists across CPUs<br />ws_df_list = Parallel(n_jobs=-1, verbose=0)(delayed(run_process)(dc) for dc in dat_chunks)</pre> | Científico de datos, ingeniero de machine learning | 
| Guarde la salida de un solo grupo de archivos en Amazon S3. | Cuando se complete el procesamiento de la vCPU paralela, los resultados de cada vCPU deben combinarse y cargarse en la ruta del bucket de S3 del grupo de archivos. Para este paso, puede utilizar código similar al siguiente.<pre># Compile and pickle patient group dataframe<br />ws_df_group = pd.concat(ws_df_list)<br />ws_df_group = ws_df_group.reset_index().rename(columns={'index': 'signal'})<br />ws_df_group.to_json(os.path.join(output_dir, group_data_out))</pre> | Científico de datos, ingeniero de machine learning | 

### Configuración del segundo script de preprocesamiento
<a name="configure-the-second-preprocessing-script"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Combine los archivos de datos generados en todos los trabajos de procesamiento en los que se ejecutó el primer script. | El script anterior genera un único archivo para cada trabajo de SageMaker procesamiento que procesa un grupo de archivos del conjunto de datos.  A continuación, debe combinar estos archivos de salida en un único objeto y escribir un único conjunto de datos de salida en Amazon S3. Esto se demuestra en el archivo `src/feature-engineering-pass1p5/preprocessing.py`, que se proporciona en el archivo adjunto, de la siguiente manera.<pre>def write_parquet(wavs_df, path):<br />    """<br />    Write waveform summary dataframe to S3 in parquet format.<br />    <br />    :param wavs_df: waveform summary dataframe<br />    :param path: S3 directory prefix<br />    :type wavs_df: pandas dataframe<br />    :type path: str<br />    :return: None<br />    """<br />    extra_args = {"ServerSideEncryption": "aws:kms"}<br />    wr.s3.to_parquet(<br />        df=wavs_df,<br />        path=path,<br />        compression='snappy',<br />        s3_additional_kwargs=extra_args)<br /> <br /> <br />def combine_data():<br />    """<br />    Get combined data and write to parquet.<br />    <br />    :return: waveform summary dataframe<br />    :rtype: pandas dataframe<br />    """<br />    wavs_df = get_data()<br />    wavs_df = normalize_signal_names(wavs_df)<br />    write_parquet(wavs_df, "s3://{}/{}/{}".format(bucket_xform, dataset_prefix, pass1p5out_data))<br /> <br />    return wavs_df<br /> <br /> <br />wavs_df = combine_data()</pre> | Científico de datos, ingeniero de machine learning | 

### Ejecutar trabajos de procesamiento
<a name="run-processing-jobs"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Ejecute el primer trabajo de procesamiento. | Para realizar la fragmentación de macros, ejecute un trabajo de procesamiento independiente para cada grupo de archivos. La microfragmentación se realiza dentro de cada trabajo de procesamiento, ya que cada trabajo ejecuta el primer script. El código siguiente muestra cómo iniciar un trabajo de procesamiento para cada directorio de grupos de archivos en el siguiente fragmento (incluido en `notebooks/FeatExtract_Pass1.ipynb`).<pre>pat_groups = list(range(30,40))<br />ts = str(int(time.time()))<br /> <br />for group in pat_groups:<br />    sklearn_processor = SKLearnProcessor(framework_version='0.20.0',<br />                                     role=role,<br />                                     instance_type='ml.m5.4xlarge',<br />                                     instance_count=1,<br />                                     volume_size_in_gb=5)<br />    sklearn_processor.run(<br />        code='../src/feature-engineering-pass1/preprocessing.py',<br />        job_name='-'.join(['scaled-processing-p1', str(group), ts]),<br />        arguments=[<br />            "input_path", "/opt/ml/processing/input",<br />            "output_path", "/opt/ml/processing/output",<br />            "group_data_out", "ws_df_group.json"<br />        ],<br />        inputs=<br />        [<br />            ProcessingInput(<br />                source=f's3://{sess.default_bucket()}/data_inputs/{group}',<br />                destination='/opt/ml/processing/input',<br />                s3_data_distribution_type='FullyReplicated'<br />            )<br />        ],<br />        outputs=<br />        [<br />            ProcessingOutput(<br />                source='/opt/ml/processing/output',<br />                destination=f's3://{sess.default_bucket()}/data_outputs/{group}'<br />            )<br />        ],<br />        wait=False<br />    )</pre> | Científico de datos, ingeniero de machine learning | 
| Ejecute el segundo trabajo de procesamiento. | Para combinar los resultados generados por el primer conjunto de trabajos de procesamiento y realizar cualquier cálculo adicional para el preprocesamiento, ejecute el segundo script mediante un único trabajo de SageMaker procesamiento. El siguiente código lo demuestra (incluido en `notebooks/FeatExtract_Pass1p5.ipynb`).<pre>ts = str(int(time.time()))<br />bucket = sess.default_bucket()<br />     <br />sklearn_processor = SKLearnProcessor(framework_version='0.20.0',<br />                                 role=role,<br />                                 instance_type='ml.t3.2xlarge',<br />                                 instance_count=1,<br />                                 volume_size_in_gb=5)<br />sklearn_processor.run(<br />    code='../src/feature-engineering-pass1p5/preprocessing.py',<br />    job_name='-'.join(['scaled-processing', 'p1p5', ts]),<br />    arguments=['bucket', bucket,<br />               'pass1out_prefix', 'data_outputs',<br />               'pass1out_data', 'ws_df_group.json',<br />               'pass1p5out_data', 'waveform_summary.parquet',<br />               'statsdata_name', 'signal_stats.csv'],<br />    wait=True<br />)</pre> | Científico de datos, ingeniero de machine learning | 

## Recursos relacionados
<a name="use-sagemaker-processing-for-distributed-feature-engineering-of-terabyte-scale-ml-datasets-resources"></a>
+ [Incorporarse a Amazon SageMaker Studio mediante Quick Start](https://docs.aws.amazon.com/sagemaker/latest/dg/onboard-quick-start.html) (SageMaker documentación)
+ [Datos del proceso](https://docs.aws.amazon.com/sagemaker/latest/dg/processing-job.html) (SageMaker documentación) 
+ [Procesamiento de datos con scikit-learn (documentación)](https://docs.aws.amazon.com/sagemaker/latest/dg/use-scikit-learn-processing-container.html) SageMaker  
+ [Documentación de JobLib.Parallel](https://joblib.readthedocs.io/en/latest/generated/joblib.Parallel.html)
+ Moody, B., Moody, G., Villarroel, M., Clifford, G. D., & Silva, I. (2020). Base de datos de formas de [onda MIMIC-III (versión 1.0)](https://doi.org/10.13026/c2607m). *PhysioNet*.
+ Johnson, A. E. W., Pollard, T. J., Shen, L., Lehman, L. H., Feng, M., Ghassemi, M., Moody, B., Szolovits, P., Celi, L. A., & Mark, R. G. (2016). [MIMIC-III, una base de datos de cuidados intensivos de acceso gratuito](https://dx.doi.org/10.1038/sdata.2016.35). Scientific Data, 3, 160035.
+ [Licencia de MIMIC-III Waveform Database](https://physionet.org/content/mimic3wdb/1.0/LICENSE.txt)

## Conexiones
<a name="attachments-e7a90b31-de8f-41fd-bb3f-c7c6100fc306"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/e7a90b31-de8f-41fd-bb3f-c7c6100fc306/attachments/attachment.zip)

# Visualice los resultados AI/ML del modelo con Flask y AWS Elastic Beanstalk
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk"></a>

*Chris Caudill y Durga Sury, Amazon Web Services*

## Resumen
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-summary"></a>

La visualización de los resultados de los servicios de inteligencia artificial y machine learning (IA/ML) suele requerir llamadas complejas a la API, que los desarrolladores e ingenieros deben personalizar. Esto puede ser un inconveniente si sus analistas desean explorar rápidamente un nuevo conjunto de datos.

Para mejorar la accesibilidad de sus servicios y ofrecer una forma de análisis de datos más interactiva puede utilizar una interfaz de usuario (UI) basada en la web que permite a los usuarios cargar sus propios datos y visualizar los resultados del modelo en un panel de control.

Este patrón utiliza [Flask](https://flask.palletsprojects.com/en/2.0.x/) y [Plotly](https://plotly.com/) para integrar Amazon Comprehend en una aplicación web personalizada y visualizar opiniones y entidades a partir de los datos proporcionados por los usuarios. El patrón también indica los pasos para implementar una aplicación mediante AWS Elastic Beanstalk. Puede adaptar la aplicación mediante los servicios de [IA de Amazon Web Services (AWS)](https://aws.amazon.com/machine-learning/ai-services/) o con un modelo entrenado personalizado alojado en un punto final (por ejemplo, un [ SageMaker punto final de Amazon](https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html)).

## Requisitos previos y limitaciones
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa. 
+ Interfaz de la línea de comandos de AWS (AWS CLI), instalada y configurada en su equipo local. Para obtener más información, consulte la sección [Aspectos básicos de configuración](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) en la documentación de la CLI de AWS. También puede usar un entorno de desarrollo integrado (IDE) de AWS Cloud9; para obtener más información, consulte el [Python tutorial for AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/sample-python.html) y [Previewing running applications in the AWS Cloud9 IDE](https://docs.aws.amazon.com/cloud9/latest/user-guide/app-preview.html) en la documentación de AWS Cloud9.

  **Aviso**: ya no AWS Cloud9 está disponible para nuevos clientes. Los clientes actuales de AWS Cloud9 pueden seguir utilizando el servicio con normalidad. [Más información](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)
+ Comprensión de la estructura de aplicaciones web de Flask. Para obtener más información acerca de Flask, consulte [Quickstart](https://flask.palletsprojects.com/en/1.1.x/quickstart) en la documentación de Flask.
+ Python 3.6 o una versión posterior, instalada y configurada. Puede instalar Python siguiendo las instrucciones de [Configuración del entorno de desarrollo de Python](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/python-development-environment.html) en la documentación de AWS Elastic Beanstalk.
+ Interfaz de la línea de comandos de Elastic Beanstalk (CLI de EB), instalada y configurada. Para obtener más información, consulte [Instalación de la CLI de EB](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-install.html) y [Configuración de la CLI de EB](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-configuration.html) en la documentación de AWS Elastic Beanstalk.

**Limitaciones**
+ La aplicación Flask de este patrón está diseñada para funcionar con archivos .csv que utilizan una sola columna de texto y están limitados a 200 filas. El código de la aplicación se puede adaptar para gestionar otros tipos de archivos y volúmenes de datos.
+ La aplicación no tiene en cuenta la retención de datos y continúa agregando los archivos de usuario cargados hasta que se eliminan manualmente. Puede integrar la aplicación con Amazon Simple Storage Service (Amazon S3) para el almacenamiento persistente de objetos o utilizar una base de datos como Amazon DynamoDB para el almacenamiento de valores clave sin servidor.
+ La aplicación solo tiene en cuenta documentos en inglés. Sin embargo, puede utilizar Amazon Comprehend para detectar el idioma principal de un documento. Para obtener más información acerca de los idiomas admitidos para cada acción, consulte la [Referencia de la API](https://docs.aws.amazon.com/comprehend/latest/dg/API_Reference.html) en la documentación de Amazon Comprehend.
+ En la sección *Información adicional* encontrará una lista de resolución de problemas con los errores más comunes y sus soluciones.

## Arquitectura
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-architecture"></a>

**Arquitectura de aplicaciones Flask**

Flask es una estructura ligera para desarrollar aplicaciones web en Python. Está diseñada para combinar el potente procesamiento de datos de Python con una interfaz de usuario web enriquecida. La aplicación Flask del patrón muestra cómo crear una aplicación web que permita a los usuarios cargar datos, enviar los datos a Amazon Comprehend para su inferencia y, a continuación, visualizar los resultados.   La aplicación tiene la estructura siguiente:
+ `static`— Contiene todos los archivos estáticos compatibles con la interfaz de usuario web (por ejemplo JavaScript, CSS e imágenes)
+ `templates` – Contiene todas las páginas HTML de la aplicación
+ `userData` – Almacena los datos cargados por el usuario
+ `application.py` – El archivo de la aplicación Flask
+ `comprehend_helper.py` – Funciones para realizar llamadas de API a Amazon Comprehend
+ `config.py` – Archivo de configuración de la aplicación
+ `requirements.txt` – Las dependencias de Python que requiere la aplicación

El script `application.py` contiene la funcionalidad principal de la aplicación web, que consta de cuatro rutas de Flask. En el diagrama siguiente se muestran estas rutas de Flask.

![\[Las cuatro rutas de Flask que componen la funcionalidad principal de la aplicación web.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/03d80cf1-ec97-43f7-adb5-2746a9ec70e6/images/9ca6bad1-26e2-4262-98d0-d54c172336bf.png)


 
+ `/` es la raíz de la aplicación y dirige a los usuarios a la página `upload.html` (almacenada en el directorio `templates`).
+ `/saveFile` es una ruta que se invoca después de que un usuario cargue un archivo. Esta ruta recibe una solicitud `POST` a través de un formulario HTML, que contiene el archivo cargado por el usuario. El archivo se guarda en el directorio `userData` y la ruta redirige a los usuarios a la ruta `/dashboard`.
+ `/dashboard` envía a los usuarios a la página `dashboard.html`. En el HTML de esta página, ejecuta el JavaScript código `static/js/core.js` que lee los datos de la `/data` ruta y, a continuación, crea visualizaciones para la página.
+ `/data` es una API de JSON que presenta los datos que se van a visualizar en el panel de control. Esta ruta lee los datos proporcionados por el usuario y utiliza las funciones en `comprehend_helper.py` para enviar los datos del usuario a Amazon Comprehend para el análisis de opiniones y el reconocimiento de entidades nombradas (NER). La respuesta de Amazon Comprehend se formatea y se devuelve como un objeto JSON.

**Arquitectura de implementación**

![\[Diagrama de arquitectura para usar Flask y Elastic AI/ML Beanstalk para visualizar los resultados del modelo.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/03d80cf1-ec97-43f7-adb5-2746a9ec70e6/images/d691bfd2-e2ec-4830-8bff-ffa1e3a95c4a.png)


[Consideraciones sobre el diseño](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.concepts.design.html)

 Para más información sobre las consideraciones de diseño de las aplicaciones implementadas con Elastic Beanstalk en la nube de AWS, consulte la documentación de AWS Elastic Beanstalk.

**Pila de tecnología**
+ Amazon Comprehend 
+ Elastic Beanstalk 
+ Flask 

**Automatización y escala**

Las implementaciones de Elastic Beanstalk se configuran automáticamente con equilibradores de carga y grupos de escalado automático. Para obtener más opciones de configuración, consulte [Configuración de entornos de Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers.html) en la documentación de AWS Elastic Beanstalk.

## Tools (Herramientas)
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-tools"></a>
+ [Interfaz de la línea de comandos de AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html): es una herramienta unificada que proporciona una interfaz coherente para interactuar con todas las partes de AWS.
+ [Amazon Comprehend](https://docs.aws.amazon.com/comprehend/latest/dg/comprehend-general.html): utiliza el procesamiento de lenguaje natural (NLP) para extraer información sobre el contenido de los documentos, sin necesitar procesamiento especial.
+ [AWS Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html): le permite implementar y administrar aplicaciones rápidamente en la nube de AWS sin tener que aprender acerca de la infraestructura que las ejecuta.
+ [Elastic Beanstalk CLI (EB CLI)](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3.html): es una interfaz de la línea de comandos de AWS Elastic Beanstalk que proporciona comandos interactivos que simplifican la creación, actualización y supervisión de entornos desde un repositorio local.
+ El marco de [Flask](https://flask.palletsprojects.com/en/2.0.x/) hace el procesamiento de datos y las llamadas a la API mediante Python y ofrece una visualización web interactiva con Plotly.

**Código**

El código de este patrón está disponible en los [resultados del AI/ML modelo de GitHub Visualize mediante Flask y el repositorio AWS Elastic Beanstalk](https://github.com/aws-samples/aws-comprehend-elasticbeanstalk-for-flask).

## Epics
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-epics"></a>

### Configurar la aplicación Flask
<a name="set-up-the-flask-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clone el repositorio. GitHub  | Extraiga el código de la aplicación de los [resultados del AI/ML modelo de GitHub Visualize mediante Flask y el repositorio de AWS Elastic Beanstalk](https://github.com/aws-samples/aws-comprehend-elasticbeanstalk-for-flask) ejecutando el siguiente comando:`git clone git@github.com:aws-samples/aws-comprehend-elasticbeanstalk-for-flask.git`Asegúrese de configurar sus claves SSH con. GitHub | Desarrollador | 
| Instale los módulos de Python. | Una vez clonado el repositorio, se crea un nuevo directorio `aws-comprehend-elasticbeanstalk-for-flask` local. En ese directorio, el archivo `requirements.txt` contiene los módulos y las versiones de Python que ejecutan la aplicación. Utilice los comandos siguientes para instalar los módulos:`cd aws-comprehend-elasticbeanstalk-for-flask``pip install -r requirements.txt` | Python developer | 
| Pruebe la aplicación localmente. | Ejecute el siguiente comando para iniciar el servidor de Flask:`python application.py`Esto devuelve información sobre el servidor en ejecución. Debería poder acceder a la aplicación si abre un navegador y visita http://localhost:5000Si ejecuta la aplicación en un IDE de AWS Cloud9, debe reemplazar el comando `application.run()` del archivo `application.py` por la línea siguiente:`application.run(host=os.getenv('IP', '0.0.0.0'),port=int(os.getenv('PORT', 8080)))`Debe revertir este cambio antes de la implementación. | Python developer | 

### Implementar la aplicación en Elastic Beanstalk
<a name="deploy-the-application-to-elastic-beanstalk"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Inicie la aplicación Elastic Beanstalk. | Para lanzar el proyecto como una aplicación de Elastic Beanstalk, ejecute el comando siguiente desde el directorio raíz de la aplicación:`eb init -p python-3.6 comprehend_flask --region us-east-1`[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.html)Ejecute el comando `eb init -i` para obtener más opciones de configuración de implementación. | Arquitecto, desarrollador | 
| Implemente el entorno de Elastic Beanstalk. | Ejecute el comando siguiente desde el directorio raíz de la aplicación: `eb create comprehend-flask-env``comprehend-flask-env` es el nombre del entorno de Elastic Beanstalk y se puede cambiar según las necesidades. El nombre solo puede contener letras, números y guiones. | Arquitecto, desarrollador | 
| Autorice su implementación para usar Amazon Comprehend. | Si bien es posible que su aplicación se haya implementado correctamente, debe proporcionar a su implementación acceso a Amazon Comprehend. `ComprehendFullAccess` es una política administrada de AWS que proporciona a la aplicación implementada los permisos para realizar llamadas de API a Amazon Comprehend.Adjunte la política `ComprehendFullAccess` a `aws-elasticbeanstalk-ec2-role` (esta función se crea automáticamente para las instancias de Amazon Elastic Compute Cloud (Amazon EC2) de la implementación) al ejecutar el comando siguiente:`aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/ComprehendFullAccess --role-name aws-elasticbeanstalk-ec2-role``aws-elasticbeanstalk-ec2-role` se crea cuando se implementa la aplicación. Debe completar el proceso de implementación para poder adjuntar la política de AWS Identity and Access Management (IAM). | Desarrollador, arquitecto de seguridad | 
| Visite su aplicación implementada. | Una vez que la aplicación se haya implementado correctamente, puede visitarla mediante la ejecución del comando `eb open`.También puede ejecutar el comando `eb status` para recibir detalles sobre su implementación. La URL de la implementación aparece en `CNAME`. | Arquitecto, desarrollador | 

### (Opcional) Personalizar la aplicación según su modelo de ML
<a name="optional-customize-the-application-to-your-ml-model"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Autorice que Elastic Beanstalk acceda al nuevo modelo. | Asegúrese de que Elastic Beanstalk tenga los permisos de acceso necesarios para el nuevo modelo de punto de conexión. Por ejemplo, si utilizas un SageMaker punto de conexión de Amazon, tu implementación debe tener permiso para invocar el punto de conexión. Para obtener más información al respecto, consulta [InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html)la SageMaker documentación de Amazon. | Desarrollador, arquitecto de seguridad | 
| Envíe los datos del usuario a un nuevo modelo. | Para cambiar el modelo de ML subyacente en esta aplicación, debe cambiar los archivos siguientes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.html) | Científico de datos | 
| Actualice las visualizaciones del panel de control. | Por lo general, la incorporación de un nuevo modelo de ML significa que las visualizaciones deben actualizarse para reflejar los nuevos resultados. Se han realizado estos cambios en los archivos siguientes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.html) | Desarrollador web | 

### (Opcional) Implementar la aplicación actualizada
<a name="optional-deploy-the-updated-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Actualice el archivo de requisitos de su solicitud. | Antes de enviar los cambios a Elastic Beanstalk, actualice el archivo `requirements.txt` para que refleje los nuevos módulos de Python. Para ello, ejecute el siguiente comando en el directorio raíz de la aplicación:`pip freeze > requirements.txt` | Python developer | 
| Vuelva a implementar el entorno de Elastic Beanstalk. | Para asegurarse de que los cambios en la aplicación se reflejen en la implementación de Elastic Beanstalk, navegue hasta el directorio raíz de la aplicación y ejecute el comando siguiente:`eb deploy`Esto envía la versión más reciente del código de la aplicación a la implementación de Elastic Beanstalk existente. | Administrador de sistemas, arquitecto | 

## Recursos relacionados
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-resources"></a>
+ [Llame a un punto de conexión SageMaker modelo de Amazon mediante Amazon API Gateway y AWS Lambda](https://aws.amazon.com/blogs/machine-learning/call-an-amazon-sagemaker-model-endpoint-using-amazon-api-gateway-and-aws-lambda/)
+ [Implementación de una aplicación Flask en Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-flask.html)
+ [Referencia de los comandos de EB CLI](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-cmd-commands.html)
+ [Configuración del entorno de desarrollo de Python](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/python-development-environment.html)

## Información adicional
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-additional"></a>

**Lista de solución de problemas**

A continuación, se presentan seis errores comunes y sus soluciones.

***Error 1 * **

```
Unable to assume role "arn:aws:iam::xxxxxxxxxx:role/aws-elasticbeanstalk-ec2-role". Verify that the role exists and is configured correctly.
```

**Solución**: Si este error se produce al ejecutar `eb create`, cree una aplicación de muestra en la consola de Elastic Beanstalk para crear el perfil de instancia predeterminado. Para obtener más información al respecto, consulte [Creación de un entorno de Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.environments.html) en la documentación de AWS Elastic Beanstalk.

***Error 2***

```
Your WSGIPath refers to a file that does not exist.
```

**Solución:** Este error se produce en los registros de implementación porque Elastic Beanstalk espera que el código de Flask se denomine `application.py`. Si eligió un nombre diferente, ejecútelo `eb config` y edítelo WSGIPath como se muestra en el siguiente ejemplo de código:

```
aws:elasticbeanstalk:container:python:
     NumProcesses: '1'
     NumThreads: '15'
     StaticFiles: /static/=static/
     WSGIPath: application.py
```

Asegúrese de reemplazar `application.py` con el nombre de su archivo.

También puede aprovechar Gunicorn y un Procfile. Para obtener más información sobre este enfoque, consulte [Configuración del servidor WSGI con un Procfile](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/python-configuration-procfile.html) en la documentación de AWS Elastic Beanstalk.

***Error 3***

```
Target WSGI script '/opt/python/current/app/application.py' does not contain WSGI application 'application'.
```

**Solución:** Elastic Beanstalk espera que la variable que representa la aplicación Flask se denomine `application`. Asegúrese de que el archivo `application.py` utilice `application` como nombre de la variable:

```
application = Flask(__name__)
```

***Error 4***

```
The EB CLI cannot find your SSH key file for keyname
```

**Solución:** Utilice la EB CLI para especificar qué par de claves usar o para crear un par de claves para las instancias EC2 de la implementación. Para resolver el error, ejecute `eb init -i` y una de las opciones le solicitará lo siguiente:

```
Do you want to set up SSH for your instances?
```

Responda `Y` para crear un par de claves o especificar un par de claves existente.

***Error 5***

*He actualizado mi código y lo he vuelto a implementar, pero mi implementación no refleja los cambios.*

**Solución**: Si utiliza un repositorio de Git con su implementación, asegúrese de añadir y confirmar los cambios antes de volver a implementarlos.

***Error 6***

*Está previsualizando la aplicación Flask desde un IDE de AWS Cloud9 y se produce un error.*

**Solución:** Para obtener más información al respecto, consulte [Vista previa de las aplicaciones en ejecución en el IDE de AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/app-preview.html) en la documentación de AWS Cloud9.

 

 

**Uso de Amazon Comprehend para el procesamiento de lenguaje natural**

Al elegir Amazon Comprehend, puede detectar entidades personalizadas en documentos de texto individuales mediante la ejecución de análisis en tiempo real o trabajos por lotes asíncronos. Amazon Comprehend también le permite entrenar modelos personalizados de reconocimiento de entidades y clasificación de texto que se pueden utilizar en tiempo real mediante la creación de un punto de conexión.

Este patrón utiliza trabajos por lotes asíncronos para detectar opiniones y entidades en un archivo de entrada que contiene varios documentos. La aplicación de ejemplo que proporciona este patrón está diseñada para que los usuarios carguen un archivo .csv que contenga una sola columna con un documento de texto por fila. El `comprehend_helper.py` archivo del [ AI/ML modelo de GitHub Visualize genera resultados con Flask y el repositorio de AWS Elastic Beanstalk](https://github.com/aws-samples/aws-comprehend-elasticbeanstalk-for-flask) lee el archivo de entrada y lo envía a Amazon Comprehend para su procesamiento.

*BatchDetectEntities*

Amazon Comprehend inspecciona el texto de un lote de documentos en busca de entidades nombradas y devuelve la entidad detectada, la ubicación, el [tipo de entidad](https://docs.aws.amazon.com/comprehend/latest/dg/how-entities.html) y una puntuación que indica el nivel de confianza de Amazon Comprehend. Se puede enviar un máximo de 25 documentos en una llamada de API, y cada documento tiene un tamaño inferior a 5000 bytes. Puede filtrar los resultados para mostrar solo determinadas entidades en función del caso de uso. Así, por ejemplo, puede omitir el tipo de entidad `‘quantity’` y establecer una puntuación límite para la entidad detectada (por ejemplo, 0,75). Le recomendamos que explore los resultados para su caso de uso específico antes de elegir un valor umbral. Para obtener más información al respecto, consulte [BatchDetectEntities](https://docs.aws.amazon.com/comprehend/latest/dg/API_BatchDetectEntities.html)la documentación de Amazon Comprehend.

*BatchDetectSentiment*

Amazon Comprehend inspecciona un lote de documentos entrantes y devuelve la opinión predominante para cada documento (`POSITIVE`, `NEUTRAL`, `MIXED` o `NEGATIVE`). Se puede enviar un máximo de 25 documentos en una llamada de API, y cada documento tiene un tamaño inferior a 5000 bytes. Analizar la opinión es sencillo y se puede elegir aquella que tiene la puntuación más alta para que aparezca en los resultados finales. Para obtener más información al respecto, consulte [BatchDetectSentiment](https://docs.aws.amazon.com/comprehend/latest/dg/API_BatchDetectSentiment.html)la documentación de Amazon Comprehend.

 

 

**Manejo de la configuración de Flask**

Los servidores Flask utilizan una serie de [variables de configuración](https://flask.palletsprojects.com/en/1.1.x/config/) para controlar el funcionamiento del servidor. Estas variables pueden contener el resultado de la depuración, tokens de sesión u otros ajustes de la aplicación. También puede definir variables personalizadas a las que se puede acceder mientras la aplicación se está ejecutando. Existen varios enfoques para establecer las variables de configuración.

En este patrón, la configuración se define `config.py` y se hereda dentro de `application.py`.
+ 
**nota**  
`config.py` contiene las variables de configuración que se configuran al iniciar la aplicación. En esta aplicación, se define una variable `DEBUG` para indicar a la aplicación que ejecute el servidor en [modo de depuración](https://flask.palletsprojects.com/en/1.1.x/config/#DEBUG). El modo de depuración no debe utilizarse cuando se ejecuta una aplicación en un entorno de producción. `UPLOAD_FOLDER` es una variable personalizada que se define para hacer referencia a ella más adelante en la aplicación e indicar dónde deben almacenarse los datos de usuario cargados.
+ `application.py` inicia la aplicación Flask y hereda los ajustes de configuración definidos en `config.py`. Esto se lleva a cabo mediante el código siguiente:

```
application = Flask(__name__)
application.config.from_pyfile('config.py')
```

# Más patrones
<a name="machinelearning-more-patterns-pattern-list"></a>

**Topics**
+ [Acelere MLOps con las plantillas Backstage y de autoservicio de Amazon AI SageMaker](accelerate-mlops-with-backstage-and-sagemaker-templates.md)
+ [Automatice las operaciones de AWS infraestructura con Amazon Bedrock](automate-aws-infrastructure-operations-by-using-amazon-bedrock.md)
+ [Implementación de sistemas de agentes en Amazon Bedrock con el marco CrewAI mediante Terraform](deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.md)
+ [Implemente una ChatOps solución para gestionar los resultados de los escaneos SAST mediante Amazon Q Developer en aplicaciones de chat, acciones personalizadas y CloudFormation](deploy-chatops-solution-to-manage-sast-scan-results.md)
+ [Genere información de datos mediante AWS Mainframe Modernization Amazon Q en Quick Sight](generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.md)
+ [Genere información sobre z/OS datos de Db2 mediante AWS Mainframe Modernization Amazon Q en Quick Sight](generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.md)
+ [Otorgue a las instancias de SageMaker notebook acceso temporal a un CodeCommit repositorio de otra cuenta de AWS](give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account.md)
+ [Gestione AWS Organizations las políticas como código mediante AWS CodePipeline Amazon Bedrock](manage-organizations-policies-as-code.md)
+ [Modernice la aplicación de CardDemo mainframe mediante AWS Transform](modernize-carddemo-mainframe-app.md)
+ [Modernice e implemente aplicaciones de mainframe con Terraform AWS Transform](modernize-mainframe-app-transform-terraform.md)
+ [Realizar análisis avanzados mediante Amazon Redshift ML](perform-advanced-analytics-using-amazon-redshift-ml.md)
+ [Optimice la gestión EC2 del cumplimiento de Amazon con los agentes de Amazon Bedrock y AWS Config](streamline-amazon-ec2-compliance-management-with-amazon-bedrock-agents-and-aws-config.md)
+ [Simplificación del desarrollo y la implementación de los bots de Amazon Lex mediante un flujo de trabajo automatizado](streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow.md)
+ [Solucione problemas de estados AWS Step Functions mediante Amazon Bedrock](troubleshooting-states-in-aws-step-functions.md)