

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# IA et apprentissage automatique
<a name="machinelearning-pattern-list"></a>

**Topics**
+ [Associer un AWS CodeCommit référentiel dans un compte Compte AWS à Amazon SageMaker AI Studio Classic dans un autre compte](associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.md)
+ [Extrayez automatiquement le contenu de fichiers PDF à l'aide d'Amazon Textract](automatically-extract-content-from-pdf-files-using-amazon-textract.md)
+ [Créez un modèle de prévision de démarrage à froid en utilisant DeePar pour les séries chronologiques dans Amazon SageMaker AI Studio Lab](build-a-cold-start-forecasting-model-by-using-deepar.md)
+ [Créez un MLOps flux de travail à l'aide d'Amazon SageMaker AI et d'Azure DevOps](build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops.md)
+ [Configurez la journalisation des appels de modèles dans Amazon Bedrock en utilisant AWS CloudFormation](configure-bedrock-invocation-logging-cloudformation.md)
+ [Créez une image de conteneur Docker personnalisée SageMaker et utilisez-la pour la formation des modèles dans AWS Step Functions](create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions.md)
+ [Utilisez les agents Amazon Bedrock pour automatiser la création de contrôles d'accès dans Amazon EKS via des instructions textuelles](using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.md)
+ [Déployez un cas d'utilisation de RAG AWS en utilisant Terraform et Amazon Bedrock](deploy-rag-use-case-on-aws.md)
+ [Déployez une logique de prétraitement dans un modèle de machine learning sur un seul point de terminaison à l'aide d'un pipeline d'inférence sur Amazon SageMaker](deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker.md)
+ [Déployez la validation de la sécurité du codage en temps réel à l'aide d'un serveur MCP avec Kiro et d'autres assistants de codage](deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.md)
+ [Développez des assistants avancés basés sur l'IA générative basés sur le chat en utilisant RAG et des instructions ReAct](develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.md)
+ [Développez un assistant entièrement automatisé basé sur le chat en utilisant les agents et les bases de connaissances Amazon Bedrock](develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases.md)
+ [Documentez les connaissances institutionnelles à partir de saisies vocales à l'aide d'Amazon Bedrock et Amazon Transcribe](document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.md)
+ [Générez des recommandations personnalisées et reclassées à l'aide d'Amazon Personalize](generate-personalized-and-re-ranked-recommendations-using-amazon-personalize.md)
+ [Rationalisez les flux de travail d'apprentissage automatique, du développement local aux expériences évolutives en utilisant l' SageMaker IA et Hydra](streamline-machine-learning-workflows-by-using-amazon-sagemaker.md)
+ [Translate le langage naturel en requêtes DSL pour OpenSearch et requêtes Elasticsearch](translate-natural-language-query-dsl-opensearch-elasticsearch.md)
+ [Utilisez Amazon Q Developer comme assistant de codage pour augmenter votre productivité](use-q-developer-as-coding-assistant-to-increase-productivity.md)
+ [Utiliser SageMaker le traitement pour l'ingénierie des fonctionnalités distribuées d'ensembles de données ML à l'échelle du téraoctet](use-sagemaker-processing-for-distributed-feature-engineering-of-terabyte-scale-ml-datasets.md)
+ [Visualisez les résultats AI/ML du modèle à l'aide de Flask et d'AWS Elastic Beanstalk](visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.md)
+ [Plus de modèles](machinelearning-more-patterns-pattern-list.md)

# Associer un AWS CodeCommit référentiel dans un compte Compte AWS à Amazon SageMaker AI Studio Classic dans un autre compte
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account"></a>

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

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

Ce modèle fournit des instructions et du code expliquant comment associer un AWS CodeCommit référentiel dans un compte Compte AWS (compte A) à Amazon SageMaker AI Studio Classic dans un autre Compte AWS (compte B). Pour configurer l'association, vous devez créer une politique et un rôle Gestion des identités et des accès AWS (IAM) dans le compte A et une politique IAM en ligne dans le compte B. Ensuite, vous devez utiliser un script shell pour cloner le CodeCommit référentiel du compte A vers Amazon SageMaker AI Classic dans le compte B.

## Conditions préalables et limitations
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-prereqs"></a>

**Prérequis**
+ Deux [Comptes AWS](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/), l'un contenant le CodeCommit référentiel et l'autre contenant un domaine SageMaker AI avec un utilisateur
+ [Domaine et utilisateur SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-studio-onboard.html) provisionnés, avec accès à Internet ou accès à CodeCommit et AWS Security Token Service (AWS STS) via des points de terminaison de réseau privé virtuel (VPC)
+ Compréhension de base de l'[IAM](https://docs.aws.amazon.com/iam/?id=docs_gateway)
+ Compréhension de base d'[SageMaker AI Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html)
+ Compréhension de base de [Git](https://git-scm.com/) et [CodeCommit ](https://docs.aws.amazon.com/codecommit/index.html)

**Limites**

Ce modèle s'applique uniquement à SageMaker AI Studio Classic, et non RStudio à Amazon SageMaker AI.

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

**Pile technologique**
+ Amazon SageMaker AI
+ Amazon SageMaker AI Studio classique
+ AWS CodeCommit
+ Gestion des identités et des accès AWS (JE SUIS) 
+ Git

**Architecture cible**

Le schéma suivant montre une architecture qui associe un CodeCommit référentiel du compte A à SageMaker AI Studio Classic dans le compte B.

![\[Schéma d'architecture pour l'association entre comptes\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/d40df9eb-6ee2-4cb8-8257-051fa624e52a/images/abb89a66-fc8f-4e72-8f45-f0f44c2ec6ce.png)


Le schéma suivant illustre le flux de travail suivant :

1. Un utilisateur assume le `MyCrossAccountRepositoryContributorRole` rôle dans le compte A par le biais du `sts:AssumeRole` rôle, tandis qu'il utilise le rôle d'exécution SageMaker SageMaker AI dans AI Studio Classic dans le compte B. Le rôle assumé inclut les CodeCommit autorisations de clonage et d'interaction avec le référentiel spécifié.

1. L'utilisateur exécute des commandes Git depuis le terminal système dans SageMaker AI Studio Classic.

**Automatisation et mise à l'échelle**

Ce modèle comprend des étapes manuelles qui peuvent être automatisées à l'aide de [AWS Cloud Development Kit (AWS CDK)[AWS CloudFormation](https://docs.aws.amazon.com/cloudformation/?id=docs_gateway)](https://docs.aws.amazon.com/cdk/?id=docs_gateway), ou [Terraform](https://www.terraform.io/).

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

**Outils AWS**
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/?id=docs_gateway) est un service géré d'apprentissage automatique (ML) qui vous aide à créer et à former des modèles de machine learning, puis à les déployer dans un environnement hébergé prêt pour la production.
+ [Amazon SageMaker AI Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) est un environnement de développement intégré (IDE) basé sur le Web pour l'apprentissage automatique qui vous permet de créer, de former, de déboguer, de déployer et de surveiller vos modèles d'apprentissage automatique.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)est un service de contrôle de version qui vous permet de stocker et de gérer de manière privée des référentiels Git, sans avoir à gérer votre propre système de contrôle de source.

  **Remarque** : n' AWS CodeCommit est plus disponible pour les nouveaux clients. Les clients existants de AWS CodeCommit peuvent continuer à utiliser le service normalement. [En savoir plus](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider/)
+ [Gestion des identités et des accès AWS (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos AWS ressources en contrôlant qui est authentifié et autorisé à les utiliser.

**Autres outils**
+ [Git](https://git-scm.com/) est un système de contrôle de version distribué permettant de suivre les modifications du code source pendant le développement de logiciels.

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

### Création d'une politique IAM et d'un rôle IAM dans le compte A
<a name="create-an-iam-policy-and-iam-role-in-account-a"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une politique IAM pour l'accès au référentiel dans le compte A. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.html)Il est recommandé de limiter la portée de vos politiques IAM aux autorisations minimales requises pour votre cas d'utilisation. | AWS DevOps | 
| Créez un rôle IAM pour accéder au référentiel dans le compte A. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.html) | AWS DevOps | 

### Créez une politique en ligne IAM dans le compte B
<a name="create-an-iam-inline-policy-in-account-b"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Associez une politique intégrée au rôle d'exécution associé à votre utilisateur de SageMaker domaine dans le compte B. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.html) | AWS DevOps | 

### Cloner le référentiel dans SageMaker AI Studio Classic pour le compte B
<a name="clone-the-repository-in-sm-studio-classic-for-account-b"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez le script shell dans SageMaker AI Studio Classic dans le compte B. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.html) | AWS DevOps | 
| Appelez le script shell depuis le terminal système. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.html)Vous avez cloné votre CodeCommit dépôt dans un compte croisé SageMaker AI Studio. Vous pouvez désormais exécuter toutes les commandes Git depuis le terminal système. | AWS DevOps | 

## Informations supplémentaires
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-additional"></a>

**Exemple de politique IAM**

Si vous utilisez cet exemple de politique, procédez comme suit :
+ Remplacez `<CodeCommit_Repository_Region>` par le Région AWS pour le référentiel.
+ Remplacez `<Account_A_ID>` par le numéro de compte du compte A.
+ Remplacez `<CodeCommit_Repository_Name>` par le nom de votre CodeCommit dépôt dans le compte 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>"
        ]
    }
]
}
```

**Exemple de script shell SageMaker AI**

Si vous utilisez cet exemple de script, procédez comme suit :
+ Remplacez `<Account_A_ID>` par le numéro de compte du compte A.
+ `<Account_A_Role_Name>`Remplacez-le par le nom du rôle IAM que vous avez créé précédemment.
+ Remplacez `<CodeCommit_Repository_Region>` par le Région AWS pour le référentiel.
+ Remplacez `<CodeCommit_Repository_Name>` par le nom de votre CodeCommit dépôt dans le compte 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>
```

# Extrayez automatiquement le contenu de fichiers PDF à l'aide d'Amazon Textract
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract"></a>

*Tianxia Jia, Amazon Web Services*

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

De nombreuses entreprises ont besoin d'extraire des informations à partir de fichiers PDF qui sont téléchargés vers leurs applications professionnelles. Par exemple, une organisation peut avoir besoin d'extraire avec précision des informations de fichiers PDF fiscaux ou médicaux à des fins d'analyse fiscale ou de traitement des demandes médicales.

Sur le cloud Amazon Web Services (AWS), Amazon Textract extrait automatiquement les informations (par exemple, le texte imprimé, les formulaires et les tableaux) des fichiers PDF et produit un fichier au format JSON contenant les informations du fichier PDF d'origine. Vous pouvez utiliser Amazon Textract dans l'AWS Management Console ou en implémentant des appels d'API. Nous vous recommandons d'utiliser des [appels d'API programmatiques](https://aws.amazon.com/textract/faqs/) pour redimensionner et traiter automatiquement un grand nombre de fichiers PDF.

Lorsqu'Amazon Textract traite un fichier, il crée la liste d'`Block`objets suivante : pages, lignes et mots de texte, formulaires (paires clé-valeur), tableaux et cellules, et éléments de sélection. D'autres informations sur les objets sont également incluses, par exemple les cadres de [délimitation](https://docs.aws.amazon.com/textract/latest/dg/API_BoundingBox.html), les intervalles de confiance et les relations. IDs Amazon Textract extrait les informations relatives au contenu sous forme de chaînes. Des valeurs de données correctement identifiées et transformées sont nécessaires car elles peuvent être plus facilement utilisées par vos applications en aval. 

Ce modèle décrit un step-by-step flux de travail permettant d'utiliser Amazon Textract pour extraire automatiquement le contenu des fichiers PDF et le transformer en un résultat propre. Le modèle utilise une technique de correspondance de modèles pour identifier correctement le champ, le nom de clé et les tables requis, puis applique des corrections de post-traitement à chaque type de données. Vous pouvez utiliser ce modèle pour traiter différents types de fichiers PDF, puis redimensionner et automatiser ce flux de travail pour traiter des fichiers PDF au format identique.   

## Conditions préalables et limitations
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif.
+ Un bucket Amazon Simple Storage Service (Amazon S3) existant pour stocker les fichiers PDF après leur conversion au format JPEG en vue de leur traitement par Amazon Textract. Pour plus d'informations sur les compartiments S3, consultez la [présentation des compartiments](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) dans la documentation Amazon S3.
+ Le bloc-notes `Textract_PostProcessing.ipynb` Jupyter (joint), installé et configuré. Pour plus d'informations sur les blocs-notes Jupyter, consultez la section [Créer un bloc-notes Jupyter dans la documentation](https://docs.aws.amazon.com/sagemaker/latest/dg/ex1-prepare.html) Amazon. SageMaker 
+ Fichiers PDF existants au format identique.
+ Compréhension de Python.

**Limites**
+ Vos fichiers PDF doivent être de bonne qualité et clairement lisibles. Les fichiers PDF natifs sont recommandés, mais vous pouvez utiliser des documents numérisés convertis au format PDF si tous les mots sont clairs. Pour plus d'informations à ce sujet, consultez la section [Prétraitement de documents PDF avec Amazon Textract : détection et suppression de visuels](https://aws.amazon.com/blogs/machine-learning/process-text-and-images-in-pdf-documents-with-amazon-textract/) sur le blog AWS Machine Learning.
+ Pour les fichiers de plusieurs pages, vous pouvez utiliser une opération asynchrone ou diviser les fichiers PDF en une seule page et utiliser une opération synchrone. Pour plus d'informations sur ces deux options, consultez les sections [Détection et analyse du texte dans des documents multipages](https://docs.aws.amazon.com/textract/latest/dg/async.html) et [Détection et analyse du texte dans des documents d'une seule page](https://docs.aws.amazon.com/textract/latest/dg/sync.html) dans la documentation Amazon Textract.

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

Le flux de travail de ce modèle exécute d'abord Amazon Textract sur un exemple de fichier PDF (*première exécution*), puis sur des fichiers PDF dont le format est identique à celui du premier PDF (exécution *répétée*). Le schéma suivant montre le flux de travail combiné de *première exécution* et de *répétition* qui extrait automatiquement et de manière répétée le contenu de fichiers PDF aux formats identiques.

![\[Utilisation d'Amazon Textract pour extraire le contenu de fichiers PDF\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/2d724523-2cab-42c9-a773-65857014d9ec/images/9e20070f-3e0c-46aa-aa98-a8b1eb3395dc.png)


 

Le diagramme montre le flux de travail suivant pour ce modèle :

1. Convertissez un fichier PDF au format JPEG et stockez-le dans un compartiment S3. 

1. Appelez l'API Amazon Textract et analysez le fichier JSON de réponse Amazon Textract. 

1. Modifiez le fichier JSON en ajoutant la bonne `KeyName:DataType` paire pour chaque champ obligatoire. Créez un `TemplateJSON` fichier pour l'étape *Repeat run*.

1. Définissez les fonctions de correction après le traitement pour chaque type de données (par exemple, float, entier et date).

1. Préparez les fichiers PDF dont le format est identique à celui de votre premier fichier PDF.

1. Appelez l'API Amazon Textract et analysez le JSON de réponse Amazon Textract.

1. Associez le fichier JSON analysé au `TemplateJSON` fichier.

1. Implémentez les corrections de post-traitement.

Le fichier de sortie JSON final contient le bon `KeyName` et `Value` pour chaque champ obligatoire.

**Pile technologique cible**
+ Amazon SageMaker 
+ Amazon S3 
+ Amazon Textract

**Automatisation et mise à l'échelle**

Vous pouvez automatiser le flux de travail de *répétition* à l'aide d'une fonction AWS Lambda qui lance Amazon Textract lorsqu'un nouveau fichier PDF est ajouté à Amazon S3. Amazon Textract exécute ensuite les scripts de traitement et le résultat final peut être enregistré sur un emplacement de stockage. Pour plus d'informations à ce sujet, consultez la section [Utilisation d'un déclencheur Amazon S3 pour appeler une fonction Lambda dans la documentation](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html) Lambda.

## Outils
<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) est un service de machine learning entièrement géré qui vous permet de créer et de former rapidement et facilement des modèles de machine learning, puis de les déployer directement dans un environnement hébergé prêt pour la production.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.
+ [Amazon Textract](https://docs.aws.amazon.com/textract/latest/dg/what-is.html) permet d'ajouter facilement la détection et l'analyse du texte des documents à vos applications.

## Épopées
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-epics"></a>

### Première course
<a name="first-time-run"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Convertissez le fichier PDF. | Préparez le fichier PDF pour votre première utilisation en le divisant en une seule page et en le convertissant au format JPEG pour l'opération [synchrone Amazon Textract](https://docs.aws.amazon.com/textract/latest/dg/sync.html) (). `Syn API`Vous pouvez également utiliser l'[opération asynchrone](https://docs.aws.amazon.com/textract/latest/dg/async.html) Amazon Textract (`Asyn API`) pour les fichiers PDF de plusieurs pages. | Data scientist, développeur | 
| Analysez le code JSON de réponse Amazon Textract. | Ouvrez le bloc-notes `Textract_PostProcessing.ipynb` Jupyter (joint) et appelez l'API Amazon Textract en utilisant le code suivant :<pre>response = textract.analyze_document(<br />Document={<br />        'S3Object': {<br />            'Bucket': BUCKET,<br />            'Name': '{}'.format(filename)<br />                    }<br />                },<br />        FeatureTypes=["TABLES", "FORMS"])</pre>Analysez le JSON de réponse dans un formulaire et un tableau à l'aide du code suivant :<pre>parseformKV=form_kv_from_JSON(response)<br />parseformTables=get_tables_fromJSON(response)</pre> | Data scientist, développeur | 
| Modifiez le fichier TemplateJSON. | Modifiez le JSON analysé pour chacun `KeyName` des en-têtes correspondants `DataType` (par exemple, chaîne, valeur flottante, entier ou date) et des en-têtes de tableau (par exemple, `ColumnNames` et`RowNames`).Ce modèle est utilisé pour chaque type de fichier PDF individuel, ce qui signifie qu'il peut être réutilisé pour des fichiers PDF au format identique. | Data scientist, développeur | 
| Définissez les fonctions de correction après le traitement. | Les valeurs figurant dans la réponse d'Amazon Textract pour le `TemplateJSON` fichier sont des chaînes. Il n'y a aucune différenciation pour la date, le flottant, le nombre entier ou la devise. Ces valeurs doivent être converties dans le type de données adapté à votre cas d'utilisation en aval. Corrigez chaque type de données en fonction du `TemplateJSON` fichier en utilisant le code suivant :<pre>finalJSON=postprocessingCorrection(parsedJSON,templateJSON)</pre> | Data scientist, développeur | 

### Répéter la course
<a name="repeat-run"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Préparez les fichiers PDF. | Préparez les fichiers PDF en les divisant en une seule page et en les convertissant au format JPEG pour l'opération [synchrone Amazon Textract](https://docs.aws.amazon.com/textract/latest/dg/sync.html) (). `Syn API`Vous pouvez également utiliser l'[opération asynchrone](https://docs.aws.amazon.com/textract/latest/dg/async.html) Amazon Textract (`Asyn API`) pour les fichiers PDF de plusieurs pages. | Data scientist, développeur | 
| Appelez l'API Amazon Textract. | Appelez l'API Amazon Textract à l'aide du code suivant :<pre>response = textract.analyze_document(<br />        Document={<br />        'S3Object': {<br />            'Bucket': BUCKET,<br />            'Name': '{}'.format(filename)<br />                    }<br />                },<br />        FeatureTypes=["TABLES", "FORMS"])</pre> | Data scientist, développeur | 
| Analysez le code JSON de réponse Amazon Textract. | Analysez le JSON de réponse dans un formulaire et un tableau à l'aide du code suivant :<pre>parseformKV=form_kv_from_JSON(response)<br />parseformTables=get_tables_fromJSON(response)</pre> | Data scientist, développeur | 
| Chargez le fichier TemplateJSON et associez-le au JSON analysé. | Utilisez le `TemplateJSON` fichier pour extraire les paires clé-valeur et le tableau corrects à l'aide des commandes suivantes :<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> | Data scientist, développeur | 
| Corrections après le traitement. | Utilisez `DataType` les fonctions de `TemplateJSON` fichier et de post-traitement pour corriger les données à l'aide du code suivant : <pre>finalJSON=postprocessingCorrection(form_kv_table_corrected_final,templateJSON)</pre> | Data scientist, développeur | 

## Ressources connexes
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-resources"></a>
+ [Extrayez automatiquement du texte et des données structurées à partir de documents avec Amazon Textract](https://aws.amazon.com/blogs/machine-learning/automatically-extract-text-and-structured-data-from-documents-with-amazon-textract/)
+ [Extrayez du texte et des données structurées avec Amazon Textract](https://aws.amazon.com/getting-started/hands-on/extract-text-with-amazon-textract/)
+ [Ressources Amazon Textract](https://aws.amazon.com/textract/resources/?blog-posts-cards.sort-by=item.additionalFields.createdDate&blog-posts-cards.sort-order=desc)

## Pièces jointes
<a name="attachments-2d724523-2cab-42c9-a773-65857014d9ec"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/2d724523-2cab-42c9-a773-65857014d9ec/attachments/attachment.zip)

# Créez un modèle de prévision de démarrage à froid en utilisant DeePar pour les séries chronologiques dans Amazon SageMaker AI Studio Lab
<a name="build-a-cold-start-forecasting-model-by-using-deepar"></a>

*Ivan Cui et Eyal Shacham, Amazon Web Services*

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

Que vous allouiez les ressources plus efficacement au trafic Web, que vous prédisiez la demande de patients pour les besoins en personnel ou que vous anticipiez les ventes des produits d'une entreprise, les prévisions sont un outil essentiel. Les prévisions de démarrage à froid établissent des prévisions pour une série chronologique contenant peu de données historiques, comme un nouveau produit qui vient d'entrer sur le marché de détail. Ce modèle utilise l'algorithme de prévision DeePar d'Amazon SageMaker AI pour entraîner un modèle de prévision de démarrage à froid et montre comment effectuer des prévisions sur des éléments de démarrage à froid.

 

[DeepAR est un](https://docs.aws.amazon.com/sagemaker/latest/dg/deepar.html) algorithme d'apprentissage supervisé permettant de prévoir des séries chronologiques scalaires (unidimensionnelles) à l'aide de réseaux neuronaux récurrents (RNN). DeePar adopte l'approche qui consiste à former un seul modèle conjointement sur toutes les séries chronologiques des produits connexes. 

Les méthodes traditionnelles de prévision des séries chronologiques telles que la moyenne mobile intégrée autorégressive (ARIMA) ou le lissage exponentiel (ETS) s'appuient largement sur les séries chronologiques historiques de chaque produit individuel. Par conséquent, ces méthodes ne sont pas efficaces pour la prévision des démarrages à froid. Lorsque votre jeu de données contient des centaines de séries chronologiques connexes, DeepAR surpasse les méthodes ARIMA et ETS standard. Vous pouvez également utiliser le modèle entraîné pour générer des prévisions pour de nouvelles séries chronologiques similaires aux séries chronologiques sur lesquelles il a été entraîné.

## Conditions préalables et limitations
<a name="build-a-cold-start-forecasting-model-by-using-deepar-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS.
+ Un [domaine Amazon SageMaker AI.](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-studio-onboard.html)
+ Une application de [laboratoire Amazon SageMaker AI Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-lab.html) ou Jupiter.
+ Un bucket Amazon Simple Storage Service (Amazon S3) doté d'autorisations de lecture et d'écriture.
+ Connaissance de la programmation en Python.
+ Connaissance de l'utilisation d'un bloc-notes Jupyter.

**Limites**
+ L'appel du modèle de prévision sans aucun point de données historique renverra une erreur. L'invocation du modèle avec un minimum de points de données historiques renverra des prédictions inexactes avec un niveau de confiance élevé. Ce schéma suggère une approche pour résoudre ces limites connues de la prévision des démarrages à froid.
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, consultez la section [Services AWS par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

**Versions du produit**
+ Python version 3.10 ou ultérieure.
+ Le bloc-notes du modèle a été testé dans Amazon SageMaker AI Studio sur une instance ml.t3.medium avec le noyau Python 3 (Data Science).

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

Le schéma suivant montre les composants du flux de travail et de l'architecture de ce modèle.

![\[Flux de travail pour créer un modèle de prévision de démarrage à froid à SageMaker l'aide d'Amazon S3.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/98d021d3-96d2-40a9-b0ce-717934652173/images/d97d66a0-8eef-4d30-ac5f-4c6c79cf6c9f.png)


Le flux de travail exécute les tâches suivantes :

1. Les fichiers d'entrée contenant les données d'entraînement et de test sont synthétisés puis téléchargés dans un compartiment Amazon S3. Ces données incluent plusieurs séries chronologiques avec des caractéristiques catégoriques et dynamiques, ainsi que des valeurs cibles (à prévoir). Le bloc-notes Jupyter visualise les données afin de mieux comprendre les exigences relatives aux données d'entraînement et les valeurs prédites attendues.

1. Une tâche de tuner d'hyperparamètres est créée pour entraîner le modèle et trouver le meilleur modèle en fonction de métriques prédéfinies.

1. Les fichiers d'entrée sont téléchargés depuis le compartiment Amazon S3 vers chaque instance des tâches de réglage des hyperparamètres.

1. Une fois que la tâche du tuner a sélectionné le meilleur modèle en fonction du seuil prédéfini du tuner, le modèle est déployé en tant que point de terminaison SageMaker AI.

1. Le modèle déployé est alors prêt à être invoqué et ses prédictions sont validées par rapport aux données de test.

Le carnet montre dans quelle mesure le modèle prédit les valeurs cibles lorsqu'un nombre suffisant de points de données historiques sont disponibles. Cependant, lorsque nous invoquons le modèle avec moins de points de données historiques (ce qui représente un produit froid), les prédictions du modèle ne correspondent pas aux données de test d'origine, même dans les limites des niveaux de confiance du modèle. Dans le modèle, un nouveau modèle est créé pour les produits froids, dont la longueur de contexte initiale (points prédits) est définie comme le nombre de points historiques disponibles, et un nouveau modèle est entraîné de manière itérative à mesure que de nouveaux points de données sont acquis. Le bloc-notes indique que le modèle produira des prévisions précises tant que la quantité de points de données historiques est proche de la longueur du contexte.

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

**Services AWS**
+ [Gestion des identités et des accès AWS (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos AWS ressources en contrôlant qui est authentifié et autorisé à les utiliser.
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/?id=docs_gateway) est un service géré d'apprentissage automatique (ML) qui vous aide à créer et à former des modèles de machine learning, puis à les déployer dans un environnement hébergé prêt pour la production.
+ [Amazon SageMaker AI Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) est un environnement de développement intégré (IDE) basé sur le Web pour le ML qui vous permet de créer, de former, de déboguer, de déployer et de surveiller vos modèles de ML.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.

**Autres outils**
+ [Python](https://www.python.org/) est un langage de programmation informatique polyvalent.

**Référentiel de code**

Le code de ce modèle est disponible dans le dépôt GitHub [DeePar- ColdProduct -Pattern](https://github.com/aws-samples/DeepAR-ColdProduct-Pattern).

## Bonnes pratiques
<a name="build-a-cold-start-forecasting-model-by-using-deepar-best-practices"></a>
+ Entraînez votre modèle dans un environnement virtuel et utilisez toujours le contrôle de version pour optimiser la reproductibilité.
+ Incluez autant de fonctionnalités catégoriques de haute qualité que possible pour obtenir le meilleur modèle prédictif possible.
+ Assurez-vous que les métadonnées contiennent des éléments catégoriels similaires afin que le modèle puisse déduire correctement les prévisions relatives aux produits de démarrage à froid.
+ Exécutez une tâche de réglage des hyperparamètres pour obtenir le modèle prédictif le plus élevé.
+ Dans ce modèle, le modèle que vous créez a une durée de contexte de 24 heures, ce qui signifie qu'il prédira les 24 prochaines heures. Si vous essayez de prévoir les prochaines 24 heures alors que vous disposez de moins de 24 heures de données historiques, la précision des prévisions du modèle se dégrade de manière linéaire en fonction du nombre de points de données historiques. Pour atténuer ce problème, créez un nouveau modèle pour chaque ensemble de points de données historiques jusqu'à ce que ce nombre atteigne la longueur de prédiction (contexte) souhaitée. Par exemple, commencez par un modèle de durée de contexte de 2 heures, puis augmentez progressivement le modèle à 4 heures, 8 heures, 16 heures et 24 heures.

## Épopées
<a name="build-a-cold-start-forecasting-model-by-using-deepar-epics"></a>

### Démarrez votre application SageMaker AI Studio Classic
<a name="start-your-sm-studio-classic-application"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Démarrez l'environnement de votre ordinateur portable. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/build-a-cold-start-forecasting-model-by-using-deepar.html)Pour plus d'informations, consultez la section [Lancer Amazon SageMaker AI Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html) dans la documentation sur l' SageMaker IA. | Scientifique des données | 

### Création et activation du bloc-notes
<a name="create-and-activate-the-notebook"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez votre environnement virtuel pour la formation des modèles. | Pour configurer votre environnement virtuel pour l'entraînement des modèles, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/build-a-cold-start-forecasting-model-by-using-deepar.html)Pour plus d'informations, consultez la section [Charger des fichiers vers SageMaker AI Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-tasks-files.html) dans la documentation sur l' SageMaker IA. | Scientifique des données | 
| Créez et validez un modèle de prévision. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/build-a-cold-start-forecasting-model-by-using-deepar.html) | Scientifique des données | 

## Ressources connexes
<a name="build-a-cold-start-forecasting-model-by-using-deepar-resources"></a>
+ [Hyperparamètres DeePar](https://docs.aws.amazon.com/sagemaker/latest/dg/deepar_hyperparameters.html)
+ [Prévision de la demande pour le lancement de nouveaux produits à l'aide de services d'apprentissage AWS automatique](https://docs.aws.amazon.com/prescriptive-guidance/latest/forecast-demand-new-product/introduction.html)
+ [Lancez Amazon SageMaker AI Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html)
+ [Utilisez l'algorithme de SageMaker prévision AI DeePar](https://docs.aws.amazon.com/sagemaker/latest/dg/deepar.html)

# Créez un MLOps flux de travail à l'aide d'Amazon SageMaker AI et d'Azure DevOps
<a name="build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops"></a>

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

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

Les opérations d'apprentissage automatique (MLOps) sont un ensemble de pratiques qui automatisent et simplifient les flux de travail et les déploiements de machine learning (ML). MLOps se concentre sur l'automatisation du cycle de vie du machine learning. Cela permet de garantir que les modèles ne sont pas seulement développés, mais également déployés, surveillés et réentraînés de manière systématique et répétée. Il apporte DevOps des principes au ML. MLOps se traduit par un déploiement plus rapide des modèles de machine learning, une meilleure précision au fil du temps et une meilleure assurance qu'ils apportent une réelle valeur commerciale.

Organisations disposent souvent d' DevOps outils et de solutions de stockage de données existants avant de commencer leur MLOps parcours. Ce modèle montre comment exploiter les points forts de Microsoft Azure et AWS. Il vous aide à intégrer Azure DevOps à Amazon SageMaker AI pour créer un MLOps flux de travail.

La solution simplifie le travail entre Azure et AWS. Vous pouvez utiliser Azure pour le développement et AWS l'apprentissage automatique. Il promeut un processus efficace pour créer des modèles d'apprentissage automatique du début à la fin, y compris le traitement des données, la formation et le déploiement AWS. Pour plus d'efficacité, vous gérez ces processus par le biais de DevOps pipelines Azure. La solution est applicable aux opérations de modèles de base (FMOps) et aux opérations de grands modèles de langage (LLMOps) dans l'IA générative, qui incluent le réglage fin, les bases de données vectorielles et la gestion rapide.

## Conditions préalables et limitations
<a name="build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops-prereqs"></a>

**Conditions préalables**
+ **Abonnement Azure** : accès aux services Azure, tels qu'Azure DevOps, pour configurer les pipelines d'intégration continue et de déploiement continu (CI/CD).
+ **Compte AWS actif** : autorisations d' Services AWS utilisation de l'utilisateur dans ce modèle.
+ **Données** — Accès aux données historiques pour l'entraînement du modèle d'apprentissage automatique.
+ **Connaissance des concepts de machine learning** — Compréhension de Python, des blocs-notes Jupyter et du développement de modèles d'apprentissage automatique.
+ **Configuration de sécurité** : configuration appropriée des rôles, des politiques et des autorisations dans Azure et AWS afin de garantir un transfert et un accès sécurisés aux données.
+ **(Facultatif) Base de données vectorielle** — Si vous utilisez une approche RAG (Retrieval Augmented Generation) et un service tiers pour la base de données vectorielle, vous devez accéder à la base de données vectorielle externe.

**Limites**
+ Ce guide ne traite pas des transferts de données sécurisés entre clouds. Pour plus d'informations sur les transferts de données entre clouds, consultez la section [AWS Solutions pour le cloud hybride et multicloud](https://aws.amazon.com/hybrid-multicloud/).
+ Les solutions multicloud peuvent augmenter la latence pour le traitement des données en temps réel et l'inférence de modèles.
+ Ce guide fournit un exemple d' MLOps architecture multi-comptes. Des ajustements sont nécessaires en fonction de votre AWS stratégie et de votre apprentissage automatique.
+ Ce guide ne décrit pas l'utilisation de AI/ML services autres qu'Amazon SageMaker AI.
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, voir [Services AWS par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez la page [Points de terminaison et quotas du service](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien vers le service.

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

**Architecture cible**

L'architecture cible intègre Azure DevOps à Amazon SageMaker AI, créant ainsi un flux de travail ML multicloud. Il utilise Azure pour les CI/CD processus et l' SageMaker IA pour la formation et le déploiement des modèles ML. Il décrit le processus d'obtention de données (à partir de sources telles qu'Amazon S3, Snowflake et Azure Data Lake) par le biais de la création et du déploiement de modèles. Les composants clés incluent des CI/CD pipelines pour la création et le déploiement de modèles, la préparation des données, la gestion de l'infrastructure, et Amazon SageMaker AI pour la formation, le réglage, l'évaluation et le déploiement de modèles de machine learning. Cette architecture est conçue pour fournir des flux de travail ML efficaces, automatisés et évolutifs sur les plateformes cloud.

![\[Schéma d'architecture d'un MLOps flux de travail utilisant Azure Devops et SageMaker.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/95fdf414-e561-4a93-9628-b41db39a577e/images/84ddcc36-54ef-473e-875f-154fae18cb13.png)


L'architecture comprend les composants suivants :

1. Les data scientists réalisent des expériences de machine learning dans le compte de développement afin d'explorer différentes approches pour les cas d'utilisation du machine learning en utilisant différentes sources de données. Les data scientists réalisent des tests unitaires et des essais, et pour suivre leurs expériences, ils peuvent utiliser [Amazon SageMaker AI avec MLflow](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow.html). Dans le cadre du développement de modèles d'IA générative, les data scientists affinent les modèles de base à partir d'Amazon SageMaker AI JumpStart Model Hub. Après l'évaluation du modèle, les data scientists transmettent et fusionnent le code dans le référentiel Model Build, qui est hébergé sur Azure DevOps. Ce référentiel contient le code d'un pipeline de création de modèles en plusieurs étapes.

1. Sur Azure DevOps, le pipeline Model Build, qui fournit une intégration continue (CI), peut être activé automatiquement ou manuellement lors de la fusion du code avec la branche principale. Dans le compte Automation, cela active le pipeline d' SageMaker IA pour le prétraitement des données, l'entraînement et le réglage précis des modèles, l'évaluation des modèles et l'enregistrement conditionnel des modèles en fonction de leur précision.

1. Le compte Automation est un compte central sur toutes les plateformes de ML qui héberge des environnements ML (Amazon ECR), des modèles (Amazon S3), des métadonnées de modèles (SageMaker AI Model Registry), des fonctionnalités (SageMaker AI Feature Store), des pipelines automatisés (SageMaker AI Pipelines) et des informations de journal ML (CloudWatch). Pour une charge de travail d'IA générative, vous pouvez avoir besoin d'évaluations supplémentaires pour les invites dans les applications en aval. Une application de gestion rapide permet de rationaliser et d'automatiser le processus. Ce compte permet la réutilisation des actifs de ML et applique les meilleures pratiques pour accélérer la diffusion des cas d'utilisation du ML.

1. La dernière version du modèle est ajoutée au registre des modèles SageMaker AI pour examen. Il suit les versions des modèles et les artefacts respectifs (lignage et métadonnées). Il gère également le statut du modèle (approbation, rejet ou en attente) et gère la version pour le déploiement en aval.

1. Une fois qu'un modèle entraîné dans Model Registry a été approuvé via l'interface du studio ou un appel d'API, un événement peut être envoyé à Amazon EventBridge. EventBridge démarre le pipeline Model Deploy sur Azure DevOps.

1. Le pipeline Model Deploy, qui fournit un déploiement continu (CD), extrait la source du référentiel Model Deploy. La source contient le code, la configuration pour le déploiement du modèle et des scripts de test pour les tests de qualité. Le pipeline Model Deploy peut être adapté à votre type d'inférence.

1. Après des contrôles de qualité, le pipeline Model Deploy déploie le modèle sur le compte Staging. Le compte Staging est une copie du compte Production, et il est utilisé pour les tests et évaluations d'intégration. Pour une transformation par lots, le pipeline Model Deploy peut automatiquement mettre à jour le processus d'inférence par lots afin d'utiliser la dernière version approuvée du modèle. Pour une inférence en temps réel, sans serveur ou asynchrone, il configure ou met à jour le point de terminaison du modèle correspondant.

1. Après un test réussi dans le compte Staging, un modèle peut être déployé sur le compte Production par approbation manuelle via le pipeline Model Deploy. Ce pipeline fournit un point de terminaison de production lors de l'étape **Déploiement vers la production**, y compris la surveillance du modèle et un mécanisme de retour des données.

1. Une fois le modèle en production, utilisez des outils tels que SageMaker AI Model Monitor et SageMaker AI Clarify pour identifier les biais, détecter les dérives et surveiller en permanence les performances du modèle.

**Automatisation et mise à l'échelle**

Utilisez l'infrastructure en tant que code (IaC) pour le déployer automatiquement sur plusieurs comptes et environnements. En automatisant le processus de configuration d'un MLOps flux de travail, il est possible de séparer les environnements utilisés par les équipes de ML travaillant sur différents projets. [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)vous aide à modéliser, à approvisionner et à gérer les AWS ressources en traitant l'infrastructure comme du code.

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

**Services AWS**
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) est un service de machine learning géré qui vous aide à créer et à former des modèles de machine learning, puis à les déployer dans un environnement hébergé prêt pour la production.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)est un service d'extraction, de transformation et de chargement (ETL) entièrement géré. Il vous aide à classer, nettoyer, enrichir et déplacer les données de manière fiable entre les magasins de données et les flux de données.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données. Dans ce modèle, Amazon S3 est utilisé pour le stockage des données et intégré à l' SageMaker IA pour l'entraînement des modèles et les objets modèles.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez. Dans ce modèle, Lambda est utilisé pour les tâches de prétraitement et de post-traitement des données.
+ [Amazon Elastic Container Registry (Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)) est un service géré de registre d'images de conteneurs sécurisé, évolutif et fiable. Dans ce modèle, il stocke les conteneurs Docker que l' SageMaker IA utilise comme environnements de formation et de déploiement.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) est un service de bus d'événements sans serveur qui vous permet de connecter vos applications à des données en temps réel provenant de diverses sources. Dans ce modèle, EventBridge orchestre des flux de travail basés sur des événements ou basés sur le temps qui initient le réentraînement ou le déploiement automatiques des modèles.
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) vous aide à créer, publier, gérer, surveiller et sécuriser REST, HTTP, et ce, WebSocket APIs à n'importe quelle échelle.  Dans ce modèle, il est utilisé pour créer un point d'entrée unique orienté vers l'extérieur pour les points de terminaison de l' SageMaker IA.
+ Pour les applications RAG, vous pouvez les utiliser Services AWS, comme [Amazon OpenSearch Service et Amazon](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/what-is.html) [RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html) for PostgreSQL, pour stocker les intégrations vectorielles qui fournissent au LLM vos données internes.

**Autres outils**
+ [Azure](https://learn.microsoft.com/en-us/azure/devops/user-guide/what-is-azure-devops) vous DevOps aide à gérer les CI/CD pipelines et à faciliter la création, les tests et le déploiement de code.
+ [Azure Data Lake Storage](https://learn.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-introduction) ou [Snowflake](https://docs.snowflake.com/en/) sont des sources tierces possibles de données de formation pour les modèles de machine learning.
+ [Pinecone](https://docs.pinecone.io/home), [Milvus](https://milvus.io/docs/overview.md) ou [ChromaDB](https://docs.trychroma.com/) sont des bases de données vectorielles tierces possibles pour stocker des intégrations vectorielles.

## Bonnes pratiques
<a name="build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops-best-practices"></a>

Avant de mettre en œuvre un composant de ce MLOps flux de travail multicloud, effectuez les activités suivantes :
+ Définissez et comprenez le flux de travail d'apprentissage automatique et les outils nécessaires pour le soutenir. Les différents cas d'utilisation nécessitent des flux de travail et des composants différents. Par exemple, un feature store peut être nécessaire pour la réutilisation des fonctionnalités et l'inférence à faible latence dans un cas d'utilisation de personnalisation, mais il peut ne pas être nécessaire pour les autres cas d'utilisation. Il est nécessaire de comprendre le flux de travail cible, les exigences des cas d'utilisation et les méthodes de collaboration préférées de l'équipe de science des données pour personnaliser correctement l'architecture.
+ Créez une séparation claire des responsabilités pour chaque composant de l'architecture. La répartition du stockage des données entre Azure Data Lake Storage, Snowflake et Amazon S3 peut accroître la complexité et les coûts. Si possible, choisissez un mécanisme de stockage cohérent. De même, évitez d'utiliser une combinaison de DevOps services Azure et AWS, ou une combinaison de services Azure et AWS ML.
+ Choisissez un ou plusieurs modèles et ensembles de données existants pour end-to-end tester le MLOps flux de travail. Les artefacts de test doivent refléter des cas d'utilisation réels développés par les équipes de data science lorsque la plateforme entre en production.

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

### Concevez votre MLOps architecture
<a name="design-your-mlops-architecture"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Identifiez les sources de données. | Sur la base des cas d'utilisation actuels et futurs, des sources de données disponibles et des types de données (telles que les données confidentielles), documentez les sources de données qui doivent être intégrées à la MLOps plateforme. Les données peuvent être stockées dans Amazon S3, Azure Data Lake Storage, Snowflake ou d'autres sources. Pour les charges de travail génératives liées à l'IA, les données peuvent également inclure une base de connaissances qui fonde la réponse générée. Ces données sont stockées sous forme d'intégrations vectorielles dans des bases de données vectorielles. Créez un plan pour intégrer ces sources à votre plateforme et sécuriser l'accès aux bonnes ressources. | Ingénieur de données, data scientist, architecte cloud | 
| Choisissez les services applicables. | Personnalisez l'architecture en ajoutant ou en supprimant des services en fonction du flux de travail souhaité par l'équipe de data science, des sources de données applicables et de l'architecture cloud existante. Par exemple, les ingénieurs de données et les scientifiques des données peuvent effectuer le prétraitement des données et l'ingénierie des fonctionnalités dans le domaine de l' SageMaker IA ou d'Amazon EMR. AWS Glue Il est peu probable que les trois services soient nécessaires. | Administrateur AWS, ingénieur de données, scientifique des données, ingénieur ML | 
| Analysez les exigences de sécurité. | Rassemblez et documentez les exigences de sécurité. Il s'agit notamment de déterminer :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops.html)Pour plus d'informations sur la sécurisation des charges de travail d'IA générative, voir [Sécurisation de l'IA générative : introduction à la matrice de cadrage de la sécurité de l'IA générative](https://aws.amazon.com/blogs/security/securing-generative-ai-an-introduction-to-the-generative-ai-security-scoping-matrix/) (article de AWS blog). | Administrateur AWS, architecte du cloud | 

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


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez AWS Organizations. | Configurez AWS Organizations à la racine Compte AWS. Cela vous permet de gérer les comptes suivants que vous créerez dans le cadre d'une MLOps stratégie multi-comptes. Pour plus d’informations, consultez la [documentation AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tutorials_basic.html). | Administrateur AWS | 

### Configuration de l'environnement de développement et de la gestion des versions
<a name="set-up-the-development-environment-and-versioning"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un compte AWS de développement. | Créez un environnement Compte AWS dans lequel les ingénieurs de données et les scientifiques des données sont autorisés à expérimenter et à créer des modèles de machine learning. Pour obtenir des instructions, consultez [la section Création d'un compte membre dans votre organisation](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_create.html) dans la AWS Organizations documentation. | Administrateur AWS | 
| Créez un référentiel Model Build. | Créez un référentiel Git dans Azure dans lequel les data scientists pourront transférer le code de création et de déploiement de leur modèle une fois la phase d'expérimentation terminée. Pour obtenir des instructions, consultez la section [Configurer un référentiel Git](https://learn.microsoft.com/en-us/devops/develop/git/set-up-a-git-repository) dans la DevOps documentation Azure. | DevOps ingénieur, ingénieur ML | 
| Créez un référentiel Model Deploy. | Créez un référentiel Git dans Azure qui stocke le code de déploiement standard et les modèles. Il doit inclure du code pour chaque option de déploiement utilisée par l'organisation, telle qu'identifiée lors de la phase de conception. Par exemple, il doit inclure des points de terminaison en temps réel, des points de terminaison asynchrones, une inférence sans serveur ou des transformations par lots. Pour obtenir des instructions, consultez la section [Configurer un référentiel Git](https://learn.microsoft.com/en-us/devops/develop/git/set-up-a-git-repository) dans la DevOps documentation Azure. | DevOps ingénieur, ingénieur ML | 
| créer un référentiel Amazon ECR ; | Configurez un référentiel Amazon ECR qui stocke les environnements ML approuvés sous forme d'images Docker. Permettez aux data scientists et aux ingénieurs ML de définir de nouveaux environnements. Pour obtenir des instructions, consultez [la section Création d'un référentiel privé](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) dans la documentation Amazon ECR. | Ingénieur ML | 
| Configurez SageMaker AI Studio. | Configurez SageMaker AI Studio sur le compte de développement conformément aux exigences de sécurité définies précédemment, aux outils de science des données préférés (tels que MLflow) et à l'environnement de développement intégré (IDE) préféré. Utilisez les configurations du cycle de vie pour automatiser l'installation des fonctionnalités clés et créer un environnement de développement uniforme pour les data scientists. Pour plus d'informations, consultez [Amazon SageMaker AI Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated.html) et le [serveur MLflow de suivi](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow.html) dans la documentation sur l' SageMaker IA. | Data scientist, ingénieur ML, ingénieur Prompt | 

### Intégrer les CI/CD pipelines
<a name="integrate-ci-cd-pipelines"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un compte Automation. | Créez un environnement Compte AWS dans lequel s'exécutent les pipelines et les tâches automatisés. Vous pouvez donner aux équipes de data science un accès en lecture à ce compte. Pour obtenir des instructions, consultez [la section Création d'un compte membre dans votre organisation](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_create.html) dans la AWS Organizations documentation. | Administrateur AWS | 
| Configurez un registre de modèles. | Configurez le registre des modèles SageMaker AI dans le compte Automation. Ce registre stocke les métadonnées des modèles de machine learning et aide certains data scientists ou chefs d'équipe à approuver ou rejeter les modèles. Pour plus d'informations, consultez la section [Enregistrer et déployer des modèles avec Model Registry](https://docs.aws.amazon.com/sagemaker/latest/dg/model-registry.html) dans la documentation de l' SageMaker IA. | Ingénieur ML | 
| Créez un pipeline de construction de modèles. | Créez un CI/CD pipeline dans Azure qui démarre manuellement ou automatiquement lorsque le code est transféré vers le référentiel Model Build. Le pipeline doit vérifier le code source et créer ou mettre à jour un pipeline d' SageMaker IA dans le compte Automation. Le pipeline doit ajouter un nouveau modèle au registre des modèles. Pour plus d'informations sur la création d'un pipeline, consultez la [documentation Azure Pipelines](https://learn.microsoft.com/en-us/azure/devops/pipelines/get-started/what-is-azure-pipelines). | DevOps ingénieur, ingénieur ML | 

### Construisez la pile de déploiement
<a name="build-the-deployment-stack"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez des AWS comptes de préparation et de déploiement. | Créez Comptes AWS pour la mise en scène et le déploiement de modèles de machine learning. Ces comptes doivent être identiques pour permettre de tester avec précision les modèles lors de la mise en scène avant de passer à la production. Vous pouvez donner aux équipes de data science un accès en lecture au compte de mise en scène. Pour obtenir des instructions, consultez [la section Création d'un compte membre dans votre organisation](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_create.html) dans la AWS Organizations documentation. | Administrateur AWS | 
| Configurez des compartiments S3 pour la surveillance des modèles. | Effectuez cette étape si vous souhaitez activer la surveillance des modèles pour les modèles déployés créés par le pipeline Model Deploy. Créez des compartiments Amazon S3 pour stocker les données d'entrée et de sortie. Pour plus d'informations sur la création de compartiments S3, consultez la section [Création d'un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) dans la documentation Amazon S3. Configurez des autorisations entre comptes afin que les tâches de surveillance automatique des modèles s'exécutent dans le compte Automation. Pour plus d'informations, consultez la section [Surveillance des données et de la qualité des modèles](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor.html) dans la documentation de l' SageMaker IA. | Ingénieur ML | 
| Créez un pipeline Model Deploy. | Créez un CI/CD pipeline dans Azure qui démarre lorsqu'un modèle est approuvé dans le registre des modèles. Le pipeline doit vérifier le code source et l'artefact du modèle, créer les modèles d'infrastructure pour déployer le modèle dans les comptes de test et de production, déployer le modèle dans le compte de test, exécuter des tests automatisés, attendre l'approbation manuelle et déployer le modèle approuvé dans le compte de production. Pour plus d'informations sur la création d'un pipeline, consultez la [documentation Azure Pipelines](https://learn.microsoft.com/en-us/azure/devops/pipelines/get-started/what-is-azure-pipelines). | DevOps ingénieur, ingénieur ML | 

### (Facultatif) Automatisez l'infrastructure de l'environnement ML
<a name="optional-automate-ml-environment-infrastructure"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez AWS CDK des CloudFormation modèles. | Définissez AWS Cloud Development Kit (AWS CDK) nos AWS CloudFormation modèles pour tous les environnements qui doivent être déployés automatiquement. Cela peut inclure l'environnement de développement, l'environnement d'automatisation et les environnements de préparation et de déploiement. Pour plus d'informations, consultez la [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)documentation [AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/home.html)et. | AWS DevOps | 
| Créez un pipeline d'infrastructure. | Créez un CI/CD pipeline dans Azure pour le déploiement de l'infrastructure. Un administrateur peut lancer ce pipeline pour créer de nouveaux environnements Comptes AWS et configurer les environnements dont l'équipe ML a besoin. | DevOps ingénieur | 

## Résolution des problèmes
<a name="build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| **Surveillance et détection de la dérive insuffisantes** — Une surveillance inadéquate peut entraîner la non-détection des problèmes de performance du modèle ou une dérive des données. | Renforcez les cadres de surveillance avec des outils tels qu'Amazon CloudWatch, SageMaker AI Model Monitor et SageMaker AI Clarify. Configurez des alertes pour une action immédiate en cas de problèmes identifiés. | 
| **Erreurs de déclenchement du pipeline CI** —**** Le pipeline CI dans Azure DevOps peut ne pas être déclenché lors de la fusion de code en raison d'une mauvaise configuration. | Vérifiez les paramètres du DevOps projet Azure pour vous assurer que les webhooks sont correctement configurés et pointent vers les points de terminaison d' SageMaker IA appropriés. | 
| **Gouvernance** —**** Le compte d'automatisation central risque de ne pas appliquer les meilleures pratiques sur les plateformes d'apprentissage automatique, ce qui entraîne des flux de travail incohérents. | Auditez les paramètres du compte Automation, en vous assurant que tous les environnements et modèles de ML sont conformes aux meilleures pratiques et politiques prédéfinies. | 
| **Retards d'approbation du registre des modèles :** cela se produit lorsque la vérification et l'approbation du modèle sont retardées, soit parce que les utilisateurs mettent du temps à l'examiner, soit en raison de problèmes techniques. | Mettez en œuvre un système de notification pour avertir les parties prenantes des modèles en attente d'approbation et rationaliser le processus de révision. | 
| **Défaillances liées aux événements de déploiement de modèles** : les**** événements envoyés pour démarrer les pipelines de déploiement de modèles peuvent échouer, ce qui entraîne des retards de déploiement. | Vérifiez qu'Amazon EventBridge dispose des autorisations et des modèles d'événements appropriés pour appeler correctement les DevOps pipelines Azure. | 
| Goulets d'**étranglement liés au déploiement de la production — Les** processus**** d'approbation manuels peuvent créer des goulets d'étranglement et retarder le déploiement des modèles en production. | Optimisez le flux de travail d'approbation au sein du pipeline de déploiement des modèles, en promouvant des révisions rapides et des canaux de communication clairs. | 

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

**AWS documentation**
+ [Documentation 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) (framework AWS Well Architected)
+ [Planifier pour réussir MLOps](https://docs.aws.amazon.com/prescriptive-guidance/latest/ml-operations-planning/welcome.html) (directives AWS prescriptives)

**Autres AWS ressources**
+ [MLOps feuille de route de base pour les entreprises utilisant Amazon SageMaker AI](https://aws.amazon.com/blogs/machine-learning/mlops-foundation-roadmap-for-enterprises-with-amazon-sagemaker/) (article de AWS blog)
+ [AWS Summit ANZ 2022 - End-to-end MLOps pour les architectes](https://www.youtube.com/watch?v=UnAN35gu3Rw) (YouTube vidéo)
+ [FMOps/LLMOps: Opérationnalisez l'IA générative et ses différences avec MLOps](https://aws.amazon.com/blogs/machine-learning/fmops-llmops-operationalize-generative-ai-and-differences-with-mlops/) (article de AWS blog)
+ [Opérationnalisez l'évaluation du LLM à grande échelle à l'aide d'Amazon SageMaker AI Clarify et MLOps des services](https://aws.amazon.com/blogs/machine-learning/operationalize-llm-evaluation-at-scale-using-amazon-sagemaker-clarify-and-mlops-services/) (AWS article de blog)
+ [Le rôle des bases de données vectorielles dans les applications d'IA générative](https://aws.amazon.com/blogs/database/the-role-of-vector-datastores-in-generative-ai-applications/) (article de AWS blog)

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

# Configurez la journalisation des appels de modèles dans Amazon Bedrock en utilisant AWS CloudFormation
<a name="configure-bedrock-invocation-logging-cloudformation"></a>

*Vikramaditya Bhatnagar, Amazon Web Services*

## Résumé
<a name="configure-bedrock-invocation-logging-cloudformation-summary"></a>

Vous pouvez configurer Amazon Bedrock pour collecter les journaux d'invocation, les données d'entrée du modèle et les données de sortie du modèle pour toutes les invocations de modèle dans votre. Compte AWS Il s'agit d'une [bonne pratique](https://aws.amazon.com/blogs/machine-learning/best-practices-for-building-robust-generative-ai-applications-with-amazon-bedrock-agents-part-2/) pour créer des applications d'IA générative robustes avec Amazon Bedrock. Vous pouvez stocker les journaux d'invocation des modèles dans un groupe de CloudWatch journaux Amazon Logs, dans un compartiment Amazon Simple Storage Service (Amazon S3), ou dans les deux. La présence de données de journal dans CloudWatch Logs vous permet de créer des filtres métriques, des alarmes et des tableaux de bord personnalisés. Amazon S3 est idéal pour répliquer des données sur Régions AWS ou pour le stockage à long terme, conformément aux politiques de votre entreprise.

Ce modèle fournit un exemple de AWS CloudFormation modèle qui utilise une approche d'infrastructure en tant que code (IaC) pour configurer la journalisation des appels de modèles pour Amazon Bedrock. Le modèle configure le stockage des CloudWatch journaux dans Logs et Amazon S3.

## Conditions préalables et limitations
<a name="configure-bedrock-invocation-logging-cloudformation-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS
+ Les autorisations suivantes :
  + [Autorisations](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html) pour créer des CloudFormation piles
  + [Autorisations](https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-updates) d'accès à Amazon Bedrock
  + [Autorisations](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-policies-s3.html) pour créer des buckets Amazon S3 et y accéder
  + [Autorisations](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-identity-based-access-control-cwl.html) permettant de créer des groupes de CloudWatch journaux et d'y accéder
  + [Autorisations](https://docs.aws.amazon.com/lambda/latest/dg/security-iam-awsmanpol.html) pour créer des AWS Lambda fonctions et y accéder
  + [Autorisations](https://docs.aws.amazon.com/kms/latest/developerguide/customer-managed-policies.html) pour créer des clés et y accéder AWS Key Management Service (AWS KMS)

**Limites**

Ce modèle enregistre les appels du modèle à la fois vers CloudWatch Logs et Amazon S3. Il ne soutient pas le choix d'un seul de ces deux services.

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

**Architecture cible**

Le CloudFormation modèle fournit les ressources suivantes dans votre cible Compte AWS :
+ Un groupe de CloudWatch journaux pour stocker les journaux d'invocation des modèles
+ Un compartiment Amazon S3 pour stocker les journaux d'invocation des modèles et une politique de compartiment correspondante
+ Un compartiment Amazon S3 pour stocker les journaux d'accès côté serveur et une politique de compartiment correspondante
+ Une AWS Lambda fonction qui configure les paramètres de journalisation dans Amazon Bedrock
+ Un AWS KMS key et un alias de clé correspondant
+ Un rôle de service Gestion des identités et des accès AWS (IAM) pour Amazon Bedrock

Le schéma suivant montre comment les journaux d'invocation sont stockés après le déploiement de la CloudFormation pile associée à ce modèle. Amazon Bedrock publie des données de journal lorsque le modèle de base fournit du texte, une image, une vidéo ou intègre des données. Comme le montre le schéma, les compartiments Amazon S3 et le groupe de CloudWatch journaux Logs sont chiffrés avec un AWS KMS key.

![\[Flux de travail pour enregistrer les invocations d'un modèle de fondation Amazon Bedrock.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/a55e7495-ec84-4d41-886e-5c37b37aac67/images/a958d52f-9072-40af-80cb-360f6c1c7fd5.png)


Le schéma suivant illustre le flux de travail suivant :

1. Un utilisateur soumet une requête à un modèle de base dans Amazon Bedrock.

1. Amazon Bedrock assume le rôle de service IAM.

1. Amazon Bedrock génère des données de journal et les stocke dans un groupe de CloudWatch journaux de journaux et dans un compartiment Amazon S3.

1. Si un utilisateur lit, télécharge ou supprime des fichiers du compartiment Amazon S3 contenant les journaux d'invocation du modèle, ces activités sont enregistrées dans un autre compartiment Amazon S3 pour les journaux d'accès côté serveur.

**Automatisation et mise à l'échelle**

Pour adapter cette solution, vous pouvez déployer le CloudFormation modèle sous la forme d'une pile définie sur plusieurs Régions AWS et Comptes AWS. Pour plus d'informations, consultez [la section Gestion des piles entre les comptes et les régions StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) dans la CloudFormation documentation.

## Outils
<a name="configure-bedrock-invocation-logging-cloudformation-tools"></a>

**Services AWS**
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) est un service entièrement géré qui met à votre disposition des modèles de base très performants (FMs) des principales sociétés d'IA et d'Amazon via une API unifiée.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)vous aide à configurer les AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie à travers Comptes AWS et Régions AWS.
+ [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) vous aide à centraliser les journaux de tous vos systèmes et applications, Services AWS afin que vous puissiez les surveiller et les archiver en toute sécurité.
+ [Gestion des identités et des accès AWS (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos AWS ressources en contrôlant qui est authentifié et autorisé à les utiliser.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) vous aide à créer et à contrôler des clés cryptographiques afin de protéger vos données.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets qui offre une évolutivité, une disponibilité des données, une sécurité et des performances de pointe.

**Autres outils**
+ [Git](https://git-scm.com/docs) est un système de contrôle de version distribué open source.

**Référentiel de code**

Le code de ce modèle est disponible dans le référentiel GitHub [enable-bedrock-logging-using-cloudformation](https://github.com/aws-samples/enable-bedrock-logging-using-cloudformation).

## Épopées
<a name="configure-bedrock-invocation-logging-cloudformation-epics"></a>

### Créez la CloudFormation pile
<a name="create-the-cfnshort-stack"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Téléchargez le CloudFormation modèle. | Téléchargez le [CloudFormation modèle](https://github.com/aws-samples/enable-bedrock-logging-using-cloudformation/blob/main/enable-bedrock-logging-using-cloudformation.yaml) depuis le GitHub référentiel. | Architecte du cloud | 
| Déployez le modèle. | Créez une pile dans votre compte cible et dans votre région. Dans la section **Paramètres**, spécifiez les valeurs des paramètres définis dans le modèle. Pour obtenir des instructions, consultez [la section Création d'une pile](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) dans la CloudFormation documentation. | Architecte du cloud | 

### Tester la solution
<a name="test-the-solution"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Activez l'accès aux modèles. | Dans Amazon Bedrock, ajoutez l'accès au modèle de base. Pour obtenir des instructions, consultez la section [Ajouter ou supprimer l'accès aux modèles de fondation Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access-modify.html) dans la documentation Amazon Bedrock. | Architecte du cloud | 
| Exécutez un exemple d'invite. | Dans Amazon Bedrock Playgrounds, lancez un exemple de demande. Pour obtenir des instructions, consultez la section [Générer des réponses dans la console à l'aide de terrains](https://docs.aws.amazon.com/bedrock/latest/userguide/playgrounds.html) de jeu dans la documentation Amazon Bedrock. | Architecte du cloud | 
| Vérifiez la configuration de journalisation. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/configure-bedrock-invocation-logging-cloudformation.html) | Architecte du cloud | 
| Passez en revue le compartiment Amazon S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/configure-bedrock-invocation-logging-cloudformation.html) | Architecte du cloud | 
| Passez en revue le groupe de journaux. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/configure-bedrock-invocation-logging-cloudformation.html) | Architecte du cloud | 

## Ressources connexes
<a name="configure-bedrock-invocation-logging-cloudformation-resources"></a>

**AWS documentation**
+ [Accès à un compartiment Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-bucket-intro.html) (documentation Amazon S3)
+ [Création et gestion de piles](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html) (CloudFormation documentation)
+ [Surveiller l'invocation du modèle](https://docs.aws.amazon.com/bedrock/latest/userguide/model-invocation-logging.html) (documentation Amazon Bedrock)
+ [Utilisation de groupes de journaux et de flux](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html) de CloudWatch journaux (documentation sur les journaux)

**AWS articles de blog**
+ [Surveillance des applications d'IA générative à l'aide d'Amazon Bedrock et de l'intégration d'Amazon CloudWatch ](https://aws.amazon.com/blogs/mt/monitoring-generative-ai-applications-using-amazon-bedrock-and-amazon-cloudwatch-integration/)
+ [Meilleures pratiques pour créer des applications d'IA générative robustes avec Amazon Bedrock Agents — Partie 1](https://aws.amazon.com/blogs/machine-learning/best-practices-for-building-robust-generative-ai-applications-with-amazon-bedrock-agents-part-1/)
+ [Meilleures pratiques pour créer des applications d'IA générative robustes avec Amazon Bedrock Agents — Partie 2](https://aws.amazon.com/blogs/machine-learning/best-practices-for-building-robust-generative-ai-applications-with-amazon-bedrock-agents-part-2/)

# Créez une image de conteneur Docker personnalisée SageMaker et utilisez-la pour la formation des modèles dans 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 et Mateusz Zaremba, Amazon Web Services*

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

Ce modèle montre comment créer une image de conteneur Docker pour [Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) et l'utiliser comme modèle de formation dans [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html). En regroupant des algorithmes personnalisés dans un conteneur, vous pouvez exécuter presque n'importe quel code de l' SageMaker environnement, quels que soient le langage de programmation, le framework ou les dépendances.

Dans l'exemple de [SageMaker bloc-notes](https://docs.aws.amazon.com/sagemaker/latest/dg/nbi.html) fourni, l'image personnalisée du conteneur Docker est stockée dans [Amazon Elastic Container Registry (Amazon ECR).](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) Step Functions utilise ensuite le conteneur stocké dans Amazon ECR pour exécuter un script de traitement Python pour SageMaker. Le conteneur exporte ensuite le modèle vers [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html).

## Conditions préalables et limitations
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ Un [rôle AWS Identity and Access Management (IAM) pour les utilisateurs disposant SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html) d'autorisations Amazon S3
+ Un [rôle IAM pour 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)
+ Connaissance de Python
+ Connaissance du SDK Amazon SageMaker Python
+ Connaissance de l'interface de ligne de commande AWS (AWS CLI)
+ Connaissance du SDK AWS pour Python (Boto3)
+ Connaissance d'Amazon ECR
+ Connaissance de Docker

**Versions du produit**
+ SDK AWS Step Functions pour la science des données, version 2.3.0
+ Version SageMaker 2.78.0 du SDK Amazon Python

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

Le schéma suivant montre un exemple de flux de travail permettant de créer une image de conteneur Docker pour SageMaker, puis de l'utiliser pour un modèle d'entraînement dans Step Functions :

![\[Flux de travail pour créer une image de conteneur Docker SageMaker à utiliser comme modèle de formation Step Functions.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/7857d57f-3077-4b06-8971-fb5846387693/images/37755e38-0bc4-4dd0-90c7-135d95b00053.png)


Le schéma suivant illustre le flux de travail suivant :

1. Un data scientist ou un DevOps ingénieur utilise un SageMaker bloc-notes Amazon pour créer une image de conteneur Docker personnalisée.

1. Un data scientist ou un DevOps ingénieur stocke l'image du conteneur Docker dans un référentiel privé Amazon ECR qui se trouve dans un registre privé.

1. Un data scientist ou un DevOps ingénieur utilise le conteneur Docker pour exécuter une tâche de SageMaker traitement Python dans un flux de travail Step Functions.

**Automatisation et mise à l'échelle**

Dans ce modèle, l'exemple de SageMaker bloc-notes utilise un type d'instance de `ml.m5.xlarge` bloc-notes. Vous pouvez modifier le type d'instance en fonction de votre cas d'utilisation. Pour plus d'informations sur les types d'instances de SageMaker bloc-notes, consultez [Amazon SageMaker Pricing](https://aws.amazon.com/sagemaker/pricing/).

## Outils
<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)) est un service géré de registre d'images de conteneurs sécurisé, évolutif et fiable.
+ [Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) est un service géré d'apprentissage automatique (ML) qui vous aide à créer et à former des modèles de machine learning, puis à les déployer dans un environnement hébergé prêt pour la production.
+ Le [SDK Amazon SageMaker Python](https://github.com/aws/sagemaker-python-sdk) est une bibliothèque open source pour la formation et le déploiement de modèles d'apprentissage automatique sur. SageMaker
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) est un service d'orchestration sans serveur qui vous permet de combiner les fonctions AWS Lambda et d'autres services AWS pour créer des applications critiques pour l'entreprise.
+ Le [SDK AWS Step Functions Data Science Python](https://aws-step-functions-data-science-sdk.readthedocs.io/en/stable/index.html) est une bibliothèque open source qui vous aide à créer des flux de travail Step Functions qui traitent et publient des modèles d'apprentissage automatique.

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

### Créez une image de conteneur Docker personnalisée et stockez-la dans Amazon ECR
<a name="create-a-custom-docker-container-image-and-store-it-in-amazon-ecr"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez Amazon ECR et créez un nouveau registre privé. | Si ce n'est pas déjà fait, configurez Amazon ECR en suivant les instructions de la section [Configuration avec Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/get-set-up-for-amazon-ecr.html) dans le guide de l'utilisateur *Amazon ECR.* Chaque compte AWS est associé à un registre Amazon ECR privé par défaut. | DevOps ingénieur | 
| Créez un référentiel privé Amazon ECR. | Suivez les instructions de la section [Création d'un référentiel privé](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) dans le *guide de l'utilisateur Amazon ECR.*Le référentiel que vous créez est l'endroit où vous stockerez vos images de conteneur Docker personnalisées. | DevOps ingénieur | 
| Créez un Dockerfile qui inclut les spécifications nécessaires à l'exécution de votre tâche de SageMaker traitement.  | Créez un Dockerfile qui inclut les spécifications nécessaires pour exécuter votre tâche de SageMaker traitement en configurant un Dockerfile. Pour obtenir des instructions, consultez [Adapter votre propre conteneur de formation](https://docs.aws.amazon.com/sagemaker/latest/dg/adapt-training-container.html) dans le manuel *Amazon SageMaker Developer Guide*.Pour plus d'informations sur Dockerfiles, consultez la [référence Dockerfile](https://docs.docker.com/engine/reference/builder/) dans la documentation Docker.**Exemple de cellules de code de bloc-notes Jupyter pour créer un Dockerfile***Cellule 1*<pre># Make docker folder<br />!mkdir -p docker</pre>*Cellule 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 ingénieur | 
| Créez votre image de conteneur Docker et envoyez-la vers Amazon ECR. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions.html)Pour plus d'informations, voir [Création et enregistrement du conteneur](https://sagemaker-examples.readthedocs.io/en/latest/advanced_functionality/scikit_bring_your_own/scikit_bring_your_own.html#Building-and-registering-the-container) dans *Création de votre propre conteneur d'algorithmes* sur GitHub.**Exemple de cellules de code de bloc-notes Jupyter pour créer et enregistrer une image Docker**Avant d'exécuter les cellules suivantes, assurez-vous d'avoir créé un Dockerfile et de l'avoir stocké dans le répertoire appelé. `docker` Assurez-vous également que vous avez créé un référentiel Amazon ECR et que vous remplacez la `ecr_repository` valeur de la première cellule par le nom de votre référentiel.*Cellule 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>*Cellule 2*<pre># Build docker image<br />!docker build -t $image_uri docker</pre>*Cellule 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>*Cellule 4*<pre># Push docker image<br />!docker push $image_uri</pre>Vous devez [authentifier votre client Docker auprès de votre registre privé](https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry_auth.html) afin de pouvoir utiliser les commandes `docker push` et`docker pull`. Ces commandes envoient et extraient des images depuis et vers les référentiels de votre registre. | DevOps ingénieur | 

### Créez un flux de travail Step Functions qui utilise votre image de conteneur Docker personnalisée
<a name="create-a-step-functions-workflow-that-uses-your-custom-docker-container-image"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un script Python qui inclut votre logique de traitement personnalisé et d'entraînement du modèle. | Rédigez une logique de traitement personnalisée à exécuter dans votre script de traitement des données. Ensuite, enregistrez-le sous la forme d'un script Python nommé`training.py`.Pour plus d'informations, voir [Apportez votre propre modèle avec SageMaker le mode Script activé](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-script-mode/sagemaker-script-mode.html) GitHub.**Exemple de script Python incluant un traitement personnalisé et une logique d'entraînement du modèle**<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> | Scientifique des données | 
| Créez un flux de travail Step Functions qui inclut votre tâche de SageMaker traitement comme l'une des étapes.  | Installez et importez le [SDK AWS Step Functions Data Science](https://aws-step-functions-data-science-sdk.readthedocs.io/en/stable/readmelink.html) et chargez le fichier **training.py** sur Amazon S3. Utilisez ensuite le [SDK Amazon SageMaker Python](https://github.com/aws/sagemaker-python-sdk) pour définir une étape de traitement dans Step Functions.Assurez-vous d'avoir [créé un rôle d'exécution IAM pour 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) dans votre compte AWS.**Exemple de configuration d'environnement et de script de formation personnalisé à télécharger sur 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>**Exemple SageMaker de définition d'étape de traitement utilisant une image Amazon ECR personnalisée et un script Python**Assurez-vous d'utiliser le `execution_input` paramètre pour spécifier le nom de la tâche. La valeur du paramètre doit être unique à chaque exécution de la tâche. De plus, le code du fichier **training.py** est transmis en tant que `input` paramètre au`ProcessingStep`, ce qui signifie qu'il sera copié dans le conteneur. La destination du `ProcessingInput` code est la même que celle du deuxième argument contenu dans le`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>**Exemple de flux de travail Step Functions qui exécute une tâche SageMaker de traitement**Cet exemple de flux de travail inclut uniquement l'étape de SageMaker traitement, et non un flux de travail Step Functions complet. Pour un exemple complet de flux de travail, consultez [Example notebooks SageMaker dans](https://aws-step-functions-data-science-sdk.readthedocs.io/en/stable/readmelink.html#example-notebooks-in-sagemaker) la documentation du SDK AWS Step Functions Data Science.<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> | Scientifique des données | 

## Ressources connexes
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions-resources"></a>
+ [Données de traitement](https://docs.aws.amazon.com/sagemaker/latest/dg/processing-job.html) (*Amazon SageMaker Developer Guide*)
+ [Adaptation de votre propre conteneur de formation](https://docs.aws.amazon.com/sagemaker/latest/dg/adapt-training-container.html) (*Amazon SageMaker Developer Guide*)

# Utilisez les agents Amazon Bedrock pour automatiser la création de contrôles d'accès dans Amazon EKS via des instructions textuelles
<a name="using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks"></a>

*Keshav Ganesh et Sudhanshu Saurav, Amazon Web Services*

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

Organisations rencontrent des difficultés en matière de gestion des contrôles d'accès et de mise à disposition des ressources lorsque plusieurs équipes doivent travailler avec un cluster Amazon Elastic Kubernetes Service (Amazon EKS) partagé. Un service Kubernetes géré tel qu'Amazon EKS a simplifié les opérations de cluster. Cependant, la charge administrative liée à la gestion de l'accès des équipes et des autorisations relatives aux ressources reste complexe et chronophage. 

Ce modèle montre comment les agents Amazon Bedrock peuvent vous aider à automatiser la gestion des accès aux clusters Amazon EKS. Cette automatisation permet aux équipes de développement de se concentrer sur le développement de leurs applications principales plutôt que de s'occuper de la configuration et de la gestion du contrôle d'accès. Vous pouvez personnaliser un agent Amazon Bedrock pour effectuer des actions pour une grande variété de tâches à l'aide de simples instructions en langage naturel.

En utilisant AWS Lambda des fonctions sous forme de groupes d'actions, un agent Amazon Bedrock peut gérer des tâches telles que la création d'entrées d'accès utilisateur et la gestion des politiques d'accès. En outre, un agent Amazon Bedrock peut configurer des associations d'identité de pods qui permettent l'accès aux ressources Gestion des identités et des accès AWS (IAM) pour les pods exécutés dans le cluster. Grâce à cette solution, les entreprises peuvent rationaliser l'administration de leur cluster Amazon EKS à l'aide de simples instructions textuelles, réduire les frais manuels et améliorer l'efficacité globale du développement.

## Conditions préalables et limitations
<a name="using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS.
+ [Rôles et autorisations](https://docs.aws.amazon.com/bedrock/latest/userguide/security_iam_id-based-policy-examples.html) IAM établis pour le processus de déploiement. Cela inclut les autorisations pour accéder aux modèles Amazon Bedrock Foundation (FM), créer des fonctions Lambda et toute autre ressource requise sur l'ensemble de la cible. Comptes AWS
+ [Accès activé](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html) en mode actif Compte AWS à ces Amazon Bedrock FMs : Amazon Titan Text Embeddings V2 et Anthropic Claude 3 Haiku.
+ AWS Command Line Interface [(AWS CLI) version 2.9.11 ou ultérieure, [installée et configurée](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html).](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [eksctl 0.194.0 ou version ultérieure, installé.](https://eksctl.io/installation/)

**Limites**
+ Une formation et de la documentation peuvent être nécessaires pour garantir une adoption harmonieuse et une utilisation efficace de ces techniques. L'utilisation d'Amazon Bedrock, Amazon EKS, Lambda, OpenSearch Amazon Service et [OpenAPI](https://www.openapis.org/what-is-openapi) implique une période d'apprentissage importante pour les développeurs et les équipes. DevOps 
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, consultez la section [Services AWS par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

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

Le schéma suivant montre les composants du flux de travail et de l'architecture de ce modèle.

![\[Flux de travail et composants permettant de créer des contrôles d'accès dans Amazon EKS avec les agents Amazon Bedrock.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/2c52b1ba-bbad-4a46-ab1e-10e69a0a66e7/images/c7981a86-f734-4c07-a2f7-63ad38b66ab6.png)


Cette solution exécute les étapes suivantes :

1. L'utilisateur interagit avec l'agent Amazon Bedrock en soumettant une invite ou une requête qui sert de saisie à l'agent pour qu'il puisse traiter et prendre des mesures.

1. Sur la base de l'invite, l'agent Amazon Bedrock vérifie le schéma OpenAPI pour identifier l'API correcte à cibler. Si l'agent Amazon Bedrock trouve le bon appel d'API, la demande est envoyée au groupe d'actions associé à la fonction Lambda qui implémente ces actions.

1. Si aucune API pertinente n'est trouvée, l'agent Amazon Bedrock interroge la OpenSearch collection. La OpenSearch collection utilise le contenu indexé de la base de connaissances provenant du compartiment Amazon S3 qui contient le *guide de l'utilisateur Amazon EKS*.

1. La OpenSearch collection renvoie des informations contextuelles pertinentes à l'agent Amazon Bedrock.

1. Pour les demandes exploitables (celles qui correspondent à une opération d'API), l'agent Amazon Bedrock s'exécute dans un cloud privé virtuel (VPC) et déclenche la fonction Lambda.

1. La fonction Lambda exécute une action basée sur les entrées de l'utilisateur dans le cluster Amazon EKS.

1. Le compartiment Amazon S3 pour le code Lambda stocke l'artefact dans lequel le code et la logique ont été écrits pour la fonction Lambda.

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

**Services AWS**
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) est un service entièrement géré qui met à votre disposition des modèles de base très performants (FMs) issus des principales startups d'IA et d'Amazon via une API unifiée.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)vous aide à configurer les AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie à travers Comptes AWS et Régions AWS.
+ [Amazon Elastic Kubernetes Service (Amazon](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) EKS) vous permet d'exécuter AWS Kubernetes sans avoir à installer ou à gérer votre propre plan de contrôle ou vos propres nœuds Kubernetes.
+ [Gestion des identités et des accès AWS (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos AWS ressources en contrôlant qui est authentifié et autorisé à les utiliser.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/what-is.html) est un service géré qui vous aide à déployer, exploiter et faire évoluer OpenSearch des clusters dans le AWS Cloud. Sa fonctionnalité de collecte vous aide à organiser vos données et à créer des bases de connaissances complètes que les assistants d'intelligence artificielle tels que les agents Amazon Bedrock peuvent utiliser.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.

**Autres outils**
+ [eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html) est un utilitaire de ligne de commande permettant de créer et de gérer des clusters Kubernetes sur Amazon EKS.

**Référentiel de code**

Le code de ce modèle est disponible dans le référentiel GitHub [eks-access-controls-bedrock-agent](https://github.com/aws-samples/eks-access-controls-bedrock-agent.git).

## Bonnes pratiques
<a name="using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks-best-practices"></a>
+ Maintenez le niveau de sécurité le plus élevé possible lors de la mise en œuvre de ce modèle. Assurez-vous que le cluster Amazon EKS est privé, qu'il dispose d'autorisations d'accès limitées et que toutes les ressources se trouvent dans un cloud privé virtuel (VPC). Pour plus d'informations, consultez les [meilleures pratiques en matière de sécurité](https://docs.aws.amazon.com/eks/latest/best-practices/security.html) dans la documentation Amazon EKS.
+ Utilisez des [clés gérées par le AWS KMS client](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html) dans la mesure du possible et accordez-leur des autorisations d'accès limitées.
+ Respectez le principe du moindre privilège et accordez les autorisations minimales requises pour effectuer une tâche. Pour plus d'informations, consultez les sections [Accorder le moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) et [Bonnes pratiques en matière de sécurité](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dans la documentation IAM.

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

### Configuration de l'environnement
<a name="set-up-the-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Pour cloner le référentiel. | Pour cloner le dépôt de ce modèle, exécutez la commande suivante sur votre station de travail locale :<pre>git clone https://github.com/aws-samples/eks-access-controls-bedrock-agent.git</pre> | AWS DevOps | 
| Obtenez la Compte AWS pièce d'identité. | Pour obtenir l' Compte AWS identifiant, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html)Cette commande enregistre votre Compte AWS identifiant dans la `AWS_ACCOUNT` variable. | AWS DevOps | 
| Créez le compartiment S3 pour le code Lambda. | Pour implémenter cette solution, vous devez créer trois compartiments Amazon S3 ayant des objectifs différents, comme indiqué dans le schéma [d'architecture](#using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks-architecture). Les compartiments S3 sont destinés au code Lambda, à une base de connaissances et au schéma OpenAPI.Pour créer le bucket de code Lambda, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html)La commande package crée un nouveau CloudFormation modèle (`eks-access-controls-template.yaml`) qui contient :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html) | AWS DevOps | 
| Créez le compartiment S3 pour la base de connaissances. | Pour créer le compartiment Amazon S3 pour la base de connaissances, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html) | AWS DevOps | 
| Créez le compartiment S3 pour le schéma OpenAPI. | Pour créer le compartiment Amazon S3 pour le schéma OpenAPI, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html) | AWS DevOps | 

### Déployez la CloudFormation pile
<a name="deploy-the-cfnshort-stack"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez la CloudFormation pile.  | Pour déployer la CloudFormation pile, utilisez le fichier CloudFormation modèle `eks-access-controls-template.yaml` que vous avez créé précédemment. Pour des instructions plus détaillées, consultez la section [Créer une pile à partir de la CloudFormation console](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) dans la CloudFormation documentation.Le provisionnement de l' OpenSearch index avec le CloudFormation modèle prend environ 10 minutes.Une fois la pile créée, notez les `VPC_ID` et `PRIVATE_SUBNET ID` s. | AWS DevOps | 
| Créez le cluster Amazon EKS.  | Pour créer le cluster Amazon EKS au sein du VPC, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html)Les résultats attendus sont les suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html) | AWS DevOps | 

### Connect la fonction Lambda et le cluster Amazon EKS
<a name="connect-the-lam-function-and-the-eks-cluster"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une connexion entre le cluster Amazon EKS et la fonction Lambda. | Pour configurer les autorisations réseau et IAM afin de permettre à la fonction Lambda de communiquer avec le cluster Amazon EKS, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html) | AWS DevOps | 

### Tester la solution
<a name="test-the-solution"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Testez l'agent Amazon Bedrock. | Avant de tester l'agent Amazon Bedrock, assurez-vous de suivre les étapes suivantes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html)Pour accéder à l'agent Amazon Bedrock, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/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/fr_fr/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html)Vous pouvez également demander à l'agent d'effectuer des actions pour les associations EKS Pod Identity. Pour plus de détails, consultez la documentation Amazon [EKS pour savoir comment EKS Pod Identity autorise l'accès aux Services AWS pods](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html). | AWS DevOps | 

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


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| nettoyer les ressources. | Pour nettoyer les ressources créées par ce modèle, procédez comme suit. Attendez que chaque étape de suppression soit terminée avant de passer à l'étape suivante.Cette procédure supprimera définitivement toutes les ressources créées par ces piles. Assurez-vous d'avoir sauvegardé toutes les données importantes avant de continuer.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html) | AWS DevOps | 

## Résolution des problèmes
<a name="using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Un code d'erreur différent de zéro est renvoyé lors de la configuration de l'environnement. | Vérifiez que vous utilisez le bon dossier lorsque vous exécutez une commande pour déployer cette solution. Pour plus d'informations, consultez le fichier [First\$1Deploy.md dans le référentiel](https://github.com/aws-samples/eks-access-controls-bedrock-agent/blob/main/FIRST_DEPLOY.md) de ce modèle. | 
| La fonction Lambda n'est pas en mesure d'effectuer cette tâche. | Assurez-vous que la connectivité est correctement configurée entre la fonction Lambda et le cluster Amazon EKS. | 
| Les instructions de l'agent ne reconnaissent pas le APIs. | Redéployez la solution. Pour plus d'informations, consultez le fichier [RE\$1Deploy.md dans le référentiel](https://github.com/aws-samples/eks-access-controls-bedrock-agent/blob/main/RE_DEPLOY.md) de ce modèle. | 
| La pile ne parvient pas à être supprimée. | Une première tentative de suppression de la pile peut échouer. Cet échec peut se produire en raison de problèmes de dépendance avec la ressource personnalisée créée pour la OpenSearch collection qui effectue l'indexation de la base de connaissances. Pour supprimer la pile, réessayez l'opération de suppression en conservant la ressource personnalisée. | 

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

**AWS Blogue**
+ [Présentation approfondie des contrôles de gestion d'accès simplifiés d'Amazon EKS](https://aws.amazon.com/blogs/containers/a-deep-dive-into-simplified-amazon-eks-access-management-controls/) 

**Documentation Amazon Bedrock**
+ [Automatisez les tâches de votre application à l'aide d'agents IA](https://docs.aws.amazon.com/bedrock/latest/userguide/agents.html) 
+ [Comment fonctionne Amazon Bedrock Agents](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-how.html)
+ [Tester et résoudre les problèmes liés au comportement des agents](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-test.html)
+ [Utilisez des groupes d'actions pour définir les actions à exécuter par votre agent](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-action-create.html) 

**Documentation Amazon EKS**
+ [Découvrez le fonctionnement du contrôle d’accès dans Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/cluster-auth.html)

# Déployez un cas d'utilisation de RAG AWS en utilisant Terraform et Amazon Bedrock
<a name="deploy-rag-use-case-on-aws"></a>

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

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

AWS propose diverses options pour créer vos cas d'utilisation de l'IA générative compatibles avec le [Retrieval Augmented Generation (RAG)](https://aws.amazon.com/what-is/retrieval-augmented-generation/). Ce modèle vous fournit une solution pour une application basée sur RAG basée sur Amazon Aurora PostgreSQL LangChain et compatible avec Amazon Aurora en tant que magasin vectoriel. Vous pouvez déployer directement cette solution avec Terraform dans votre Compte AWS et implémenter le cas d'utilisation simple suivant de RAG :

1. L'utilisateur télécharge manuellement un fichier dans un compartiment Amazon Simple Storage Service (Amazon S3), tel qu'un fichier Microsoft Excel ou un document PDF. (Pour plus d'informations sur les types de fichiers pris en charge, consultez la documentation [non structurée](https://docs.unstructured.io/open-source/core-functionality/partitioning).)

1. Le contenu du fichier est extrait et intégré dans une base de connaissances basée sur la compatibilité sans serveur Aurora PostgreSQL, qui prend en charge l'ingestion de documents en temps quasi réel dans le magasin vectoriel. Cette approche permet au modèle RAG d'accéder aux informations pertinentes et de les récupérer pour les cas d'utilisation où les faibles latences sont importantes.

1. Lorsque l'utilisateur utilise le modèle de génération de texte, il améliore l'interaction en récupérant davantage de contenu pertinent à partir des fichiers précédemment téléchargés.

Le modèle utilise [Amazon Titan Text Embeddings v2](https://docs.aws.amazon.com/bedrock/latest/userguide/titan-embedding-models.html) comme modèle d'intégration et [Anthropic Claude 3 Sonnet](https://aws.amazon.com/bedrock/claude/) comme modèle de génération de texte, tous deux disponibles sur Amazon Bedrock.

## Conditions préalables et limitations
<a name="deploy-rag-use-case-on-aws-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS.
+ AWS Command Line Interface (AWS CLI) installé et configuré avec votre Compte AWS. Pour les instructions d'installation, voir [Installer ou mettre à jour vers la dernière version AWS CLI de](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) la AWS CLI documentation. Pour vérifier vos AWS informations d'identification et votre accès à votre compte, consultez la section [Configuration et paramètres des fichiers d'identification](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) dans la AWS CLI documentation.
+ Accès aux modèles activé pour les grands modèles linguistiques requis (LLMs) dans la console Amazon Bedrock de votre Compte AWS. Ce modèle nécessite les éléments suivants LLMs :
  + `amazon.titan-embed-text-v2:0`
  + `anthropic.claude-3-sonnet-20240229-v1:0`

**Limites**
+ Cet exemple d'architecture n'inclut pas d'interface permettant de répondre aux questions par programmation avec la base de données vectorielle. Si votre cas d'utilisation nécessite une API, pensez à ajouter [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide) avec une AWS Lambda fonction qui exécute des tâches de récupération et de réponse aux questions. 
+ Cet exemple d'architecture n'inclut pas de fonctionnalités de surveillance pour l'infrastructure déployée. Si votre cas d'utilisation nécessite une surveillance, pensez à ajouter [AWS des services de surveillance](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/welcome.html).
+ Si vous chargez un grand nombre de documents dans un court laps de temps dans le compartiment Amazon S3, la fonction Lambda peut rencontrer des limites de débit. Comme solution, vous pouvez dissocier la fonction Lambda d'une file d'attente Amazon Simple Queue Service (Amazon SQS) dans laquelle vous pouvez contrôler le taux d'invocations Lambda.
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, voir [Services AWS par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

**Versions du produit**
+ [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) version 2 ou ultérieure
+ [Docker](https://docs.docker.com/get-started/) version 26.0.0 ou ultérieure
+ [Poetry](https://pypi.org/project/poetry/) version 1.7.1 ou ultérieure
+ [Python](https://www.python.org/downloads/) version 3.10 ou ultérieure
+ [Terraform](https://developer.hashicorp.com/terraform/install) version 1.8.4 ou ultérieure

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

Le schéma suivant montre les composants du flux de travail et de l'architecture de ce modèle.

![\[Flux de travail pour créer une application basée sur RAG à l'aide d'Aurora PostgreSQL LLMs et sur Amazon Bedrock.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/8f184945-7f17-4760-8806-6d0eaeef372a/images/3771b7a0-05bd-4eb3-ad5b-199e22f86184.png)


Ce schéma illustre ce qui suit :

1. Lorsqu'un objet est créé dans le compartiment Amazon S3`bedrock-rag-template-<account_id>`, une [notification Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/EventNotifications.html) invoque la fonction `data-ingestion-processor` Lambda.

1. La fonction Lambda `data-ingestion-processor` est basée sur une image Docker stockée dans le référentiel Amazon Elastic Container Registry (Amazon ECR). `bedrock-rag-template`

   La fonction utilise le [LangChain S3 FileLoader](https://python.langchain.com/v0.1/docs/integrations/document_loaders/aws_s3_file/) pour lire le fichier en tant que [LangChain document](https://api.python.langchain.com/en/v0.0.339/schema/langchain.schema.document.Document.html). Ensuite, chaque document [LangChain RecursiveCharacterTextSplitter](https://python.langchain.com/v0.1/docs/modules/data_connection/document_transformers/recursive_text_splitter/)est découpé en un `CHUNK_SIZE` et un `CHUNK_OVERLAP` qui dépendent de la taille maximale du jeton du modèle d'intégration Amazon Titan Text Embedding V2. Ensuite, la fonction Lambda invoque le modèle d'intégration sur Amazon Bedrock pour intégrer les segments dans des représentations vectorielles numériques. Enfin, ces vecteurs sont stockés dans la base de données Aurora PostgreSQL. Pour accéder à la base de données, la fonction Lambda extrait d'abord le nom d'utilisateur et le mot de passe de. AWS Secrets Manager

1. Sur l'[instance de bloc-notes](https://docs.aws.amazon.com/sagemaker/latest/dg/nbi.html) Amazon SageMaker AI`aws-sample-bedrock-rag-template`, l'utilisateur peut rédiger une demande de questions. Le code invoque Claude 3 sur Amazon Bedrock et ajoute les informations de la base de connaissances au contexte de l'invite. Claude 3 fournit donc des réponses en utilisant les informations contenues dans les documents.

L'approche de ce modèle en matière de mise en réseau et de sécurité est la suivante :
+ La fonction Lambda `data-ingestion-processor` se trouve dans un sous-réseau privé au sein du cloud privé virtuel (VPC). La fonction Lambda n'est pas autorisée à envoyer du trafic vers l'Internet public en raison de son groupe de sécurité. Par conséquent, le trafic vers Amazon S3 et Amazon Bedrock est acheminé uniquement via les points de terminaison VPC. Par conséquent, le trafic ne traverse pas l'Internet public, ce qui réduit la latence et ajoute une couche de sécurité supplémentaire au niveau du réseau.
+ Toutes les ressources et données sont chiffrées le cas échéant à l'aide de la clé AWS Key Management Service (AWS KMS) avec l'alias`aws-sample/bedrock-rag-template`.

**Automatisation et mise à l'échelle**

Ce modèle utilise Terraform pour déployer l'infrastructure depuis le référentiel de code dans un. Compte AWS

## Outils
<a name="deploy-rag-use-case-on-aws-tools"></a>

**Services AWS**
+ [Amazon Aurora PostgreSQL Compatible Edition](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) est un moteur de base de données relationnelle entièrement géré et compatible ACID qui vous aide à configurer, exploiter et dimensionner les déploiements PostgreSQL. Dans ce modèle, Aurora PostgreSQL compatible utilise le plugin pgvector comme base de données vectorielle.
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) est un service entièrement géré qui met à votre disposition des modèles de base très performants (FMs) issus des principales startups d'IA et d'Amazon via une API unifiée.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir Services AWS par le biais de commandes dans votre interface de ligne de commande.
+ [Amazon Elastic Container Registry (Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)) est un service géré de registre d'images de conteneurs sécurisé, évolutif et fiable. Dans ce modèle, Amazon ECR héberge l'image Docker pour la fonction Lambda`data-ingestion-processor`.
+ [Gestion des identités et des accès AWS (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos AWS ressources en contrôlant qui est authentifié et autorisé à les utiliser.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) vous aide à créer et à contrôler des clés cryptographiques afin de protéger vos données.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez. Dans ce modèle, Lambda ingère des données dans le magasin vectoriel.
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/?id=docs_gateway) est un service géré d'apprentissage automatique (ML) qui vous aide à créer et à former des modèles de machine learning, puis à les déployer dans un environnement hébergé prêt pour la production.
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) vous aide à remplacer les informations d'identification codées en dur dans votre code, y compris les mots de passe, par un appel d'API à Secrets Manager pour récupérer le secret par programmation.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) vous aide à lancer AWS des ressources dans un réseau virtuel que vous avez défini. Ce réseau virtuel ressemble à un réseau traditionnel que vous pourriez exécuter dans votre propre centre de données et présente l'avantage d'utiliser l'infrastructure évolutive d' AWS. Le VPC inclut des sous-réseaux et des tables de routage pour contrôler le flux de trafic.

**Autres outils**
+ [Docker](https://docs.docker.com/manuals/) est un ensemble de produits de plateforme en tant que service (PaaS) qui utilisent la virtualisation au niveau du système d'exploitation pour fournir des logiciels dans des conteneurs.
+ [HashiCorp Terraform](https://www.terraform.io/docs) est un outil d'infrastructure en tant que code (IaC) qui vous aide à utiliser le code pour provisionner et gérer l'infrastructure et les ressources du cloud.
+ [Poetry](https://pypi.org/project/poetry/) est un outil de gestion des dépendances et d'empaquetage en Python.
+ [Python](https://www.python.org/) est un langage de programmation informatique polyvalent.

**Référentiel de code**

Le code de ce modèle est disponible dans le dépôt GitHub [terraform-rag-template-using-amazon-bedrock](https://github.com/aws-samples/terraform-rag-template-using-amazon-bedrock).

## Bonnes pratiques
<a name="deploy-rag-use-case-on-aws-best-practices"></a>
+ Bien que cet exemple de code puisse être déployé dans n'importe quel environnement Région AWS, nous vous recommandons d'utiliser l'est des États-Unis (Virginie du Nord) `us-east-1` ou l'ouest des États-Unis (Californie du Nord)`us-west-1`. Cette recommandation est basée sur la disponibilité des modèles de base et d'intégration dans Amazon Bedrock au moment de la publication de ce modèle. Pour obtenir la up-to-date liste des modèles Amazon Bedrock Foundation pris en charge dans Régions AWS, consultez la section [Model support by Région AWS](https://docs.aws.amazon.com/bedrock/latest/userguide/models-regions.html) dans la documentation Amazon Bedrock. Pour plus d'informations sur le déploiement de cet exemple de code dans d'autres régions, consultez la section [Informations supplémentaires](#deploy-rag-use-case-on-aws-additional).
+ Ce modèle fournit uniquement une démonstration proof-of-concept (PoC) ou pilote. Si vous souhaitez mettre le code en production, veillez à suivre les meilleures pratiques suivantes :
  + Activez la journalisation des accès au serveur pour Amazon S3.
  + Configurez [la surveillance et les alertes](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html) pour la fonction Lambda.
  + Si votre cas d'utilisation nécessite une API, pensez à ajouter Amazon API Gateway avec une fonction Lambda qui exécute des tâches de récupération et de réponse aux questions.
+ Respectez le principe du moindre privilège et accordez les autorisations minimales requises pour effectuer une tâche. Pour plus d'informations, consultez les sections [Accorder le moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) et [Bonnes pratiques en matière de sécurité](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPracticesAndUseCases.html) dans la documentation IAM.

## Épopées
<a name="deploy-rag-use-case-on-aws-epics"></a>

### Déployez la solution dans un Compte AWS
<a name="deploy-the-solution-in-an-aws-account"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Pour cloner le référentiel. | Pour cloner le GitHub référentiel fourni avec ce modèle, utilisez la commande suivante :<pre>git clone https://github.com/aws-samples/terraform-rag-template-using-amazon-bedrock</pre> | AWS DevOps | 
| Configurez les variables. | Pour configurer les paramètres de ce modèle, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-rag-use-case-on-aws.html) | AWS DevOps | 
| Déployez la solution. | Pour déployer la solution, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-rag-use-case-on-aws.html)Le déploiement de l'infrastructure fournit une instance d' SageMaker IA au sein du VPC et dispose des autorisations nécessaires pour accéder à la base de données Aurora PostgreSQL. | AWS DevOps | 

### Tester la solution
<a name="test-the-solution"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Lancez la démo. | Une fois le déploiement de l'infrastructure précédent réussi, suivez les étapes suivantes pour exécuter la démonstration dans un bloc-notes Jupyter :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-rag-use-case-on-aws.html)Le bloc-notes Jupyter vous guide tout au long du processus suivant :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-rag-use-case-on-aws.html) | AWS général | 

### Nettoyer l'infrastructure
<a name="clean-up-infrastucture"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Nettoyez l'infrastructure. | Pour supprimer toutes les ressources que vous avez créées lorsqu'elles ne sont plus nécessaires, utilisez la commande suivante :<pre>terraform destroy -var-file=commons.tfvars</pre> | AWS DevOps | 

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

**AWS resources**
+ [Création de fonctions Lambda avec Python](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html)
+ [Paramètres d'inférence pour les modèles de base](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters.html)
+ [Accès aux modèles de fondations Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)
+ [Le rôle des bases de données vectorielles dans les applications d'IA générative](https://aws.amazon.com/blogs/database/the-role-of-vector-datastores-in-generative-ai-applications/) (AWS Database Blog)
+ [Utilisation d'Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)

**Autres ressources**
+ [documentation pgvector](https://github.com/pgvector/pgvector)

## Informations supplémentaires
<a name="deploy-rag-use-case-on-aws-additional"></a>

**Mettre en œuvre une base de données vectorielle**

Ce modèle utilise la compatibilité avec Aurora PostgreSQL pour implémenter une base de données vectorielle pour RAG. Comme alternative à Aurora PostgreSQL, il fournit d'autres fonctionnalités et services pour RAG AWS , tels que les bases de connaissances Amazon Bedrock et Amazon Service. OpenSearch Vous pouvez choisir la solution qui répond le mieux à vos besoins spécifiques :
+ [Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/what-is.html) fournit des moteurs de recherche et d'analyse distribués que vous pouvez utiliser pour stocker et interroger de gros volumes de données.
+ [Les bases de connaissances Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html) sont conçues pour créer et déployer des bases de connaissances sous forme d'abstraction supplémentaire afin de simplifier le processus d'ingestion et de récupération de RAG. Les bases de connaissances Amazon Bedrock peuvent fonctionner à la fois avec Aurora PostgreSQL et Amazon Service. OpenSearch 

**Déploiement vers d'autres Régions AWS**

Comme décrit dans [Architecture](#deploy-rag-use-case-on-aws-architecture), nous vous recommandons d'utiliser la région USA Est (Virginie du Nord) `us-east-1` ou USA Ouest (Californie du Nord) `us-west-1` pour déployer cet exemple de code. Cependant, il existe deux manières de déployer cet exemple de code dans des régions autres que `us-east-1` et`us-west-1`. Vous pouvez configurer la région de déploiement dans le `commons.tfvars` fichier. Pour l'accès au modèle de fondation interrégional, considérez les options suivantes :
+ **Traverser l'Internet public** — Si le trafic peut traverser l'Internet public, ajoutez des passerelles Internet au VPC. Ajustez ensuite le groupe de sécurité attribué à la fonction Lambda `data-ingestion-processor` et à l'instance de bloc-notes SageMaker AI pour autoriser le trafic sortant vers l'Internet public.
+ **Ne pas passer par l'Internet public** — Pour déployer cet exemple dans une région autre que `us-east-1` ou`us-west-1`, procédez comme suit :

1. Dans la `us-west-1` région `us-east-1` ou, créez un VPC supplémentaire, y compris un point de terminaison VPC pour. `bedrock-runtime` 

1. Créez une connexion d'appairage en utilisant l'appairage [VPC](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) ou [une passerelle de transit](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-peering.html) vers le VPC de l'application.

1. Lorsque vous configurez le client `bedrock-runtime` boto3 dans une fonction Lambda en dehors de `us-east-1` ou`us-west-1`, transmettez le nom DNS privé du point de terminaison VPC pour in `bedrock-runtime` ou `us-east-1` us-west-1 au client boto3. `endpoint_url`

# Déployez une logique de prétraitement dans un modèle de machine learning sur un seul point de terminaison à l'aide d'un pipeline d'inférence sur 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 et Mateusz Zaremba, Amazon Web Services*

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

Ce modèle explique comment déployer plusieurs objets de modèle de pipeline sur un seul point de terminaison à l'aide d'un [pipeline d'inférence](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipelines.html) dans Amazon SageMaker. L'objet du modèle de pipeline représente différentes étapes du flux de travail d'apprentissage automatique (ML), telles que le prétraitement, l'inférence du modèle et le post-traitement. Pour illustrer le déploiement d'objets de modèle de pipeline connectés en série, ce modèle vous montre comment déployer un conteneur [Scikit-learn](https://docs.aws.amazon.com/sagemaker/latest/dg/sklearn.html) de prétraitement et un modèle de régression basé sur l'algorithme d'apprentissage [linéaire](https://docs.aws.amazon.com/sagemaker/latest/dg/linear-learner.html) intégré. SageMaker Le déploiement est hébergé derrière un seul point de terminaison dans SageMaker.

**Note**  
Le déploiement dans ce modèle utilise le type d'instance ml.m4.2xlarge. Nous vous recommandons d'utiliser un type d'instance adapté à vos exigences en matière de taille de données et à la complexité de votre flux de travail. Pour plus d'informations, consultez [Amazon SageMaker Pricing](https://aws.amazon.com/sagemaker/pricing/). Ce modèle utilise des [images Docker prédéfinies pour Scikit-learn](https://docs.aws.amazon.com/sagemaker/latest/dg/pre-built-docker-containers-scikit-learn-spark.html), mais vous pouvez utiliser vos propres conteneurs Docker et les intégrer dans votre flux de travail.

## Conditions préalables et limitations
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ [Python 3.9](https://www.python.org/downloads/release/python-390/)
+ [SDK Amazon SageMaker Python et bibliothèque](https://sagemaker.readthedocs.io/en/stable/) [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)
+ [Rôle](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) [AWS Identity and Access Management (AWS IAM) avec SageMaker [autorisations de base et autorisations](https://docs.aws.amazon.com/sagemaker/latest/dg/api-permissions-reference.html) Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-policy-language-overview.html)

**Versions du produit**
+ [Kit de développement logiciel Amazon SageMaker Python 2.49.2](https://sagemaker.readthedocs.io/en/v2.49.2/)

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

**Pile technologique cible**
+ Amazon Elastic Container Registry (Amazon ECR)
+ Amazon SageMaker
+ Amazon SageMaker Studio
+ Amazon Simple Storage Service (Amazon S3)
+ Point de terminaison [d'inférence en temps réel](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints.html) pour Amazon SageMaker

**Architecture cible**

Le schéma suivant montre l'architecture pour le déploiement d'un objet de modèle de SageMaker pipeline Amazon.

![\[Architecture pour le déploiement d'un objet modèle de SageMaker pipeline\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/1105d51b-752f-46d7-962c-acef1fb3399f/images/12f06715-b1c2-4de0-b277-99ce87308152.png)


Le schéma suivant illustre le flux de travail suivant :

1. Un SageMaker bloc-notes déploie un modèle de pipeline.

1. Un compartiment S3 stocke les artefacts du modèle.

1. Amazon ECR obtient les images du conteneur source à partir du compartiment S3.

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

**Outils AWS**
+ [Amazon Elastic Container Registry (Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)) est un service géré de registre d'images de conteneurs sécurisé, évolutif et fiable.
+ [Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) est un service de machine learning géré qui vous aide à créer et à former des modèles de machine learning, puis à les déployer dans un environnement hébergé prêt pour la production.
+ [Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) est un environnement de développement intégré (IDE) basé sur le Web pour le ML qui vous permet de créer, de former, de déboguer, de déployer et de surveiller vos modèles de ML.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.

**Code**

Le code de ce modèle est disponible dans le référentiel GitHub [Inference Pipeline with Scikit-learn et Linear](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) Learner.

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

### Préparer le jeu de données
<a name="prepare-the-dataset"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Préparez le jeu de données pour votre tâche de régression. | [Ouvrez un bloc-notes](https://docs.aws.amazon.com/sagemaker/latest/dg/notebooks-create-open.html#notebooks-open) dans Amazon SageMaker Studio.Pour importer toutes les bibliothèques nécessaires et initialiser votre environnement de travail, utilisez l'exemple de code suivant dans votre bloc-notes :<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>Pour télécharger un exemple de jeu de données, ajoutez le code suivant à votre bloc-notes :<pre>! mkdir abalone_data<br />! aws s3 cp s3://sagemaker-sample-files/datasets/tabular/uci_abalone/abalone.csv ./abalone_data</pre>****L'exemple de ce modèle utilise l'[ensemble de données Abalone](https://archive.ics.uci.edu/ml/datasets/abalone) du référentiel UCI Machine Learning. | Scientifique des données | 
| Téléchargez l'ensemble de données dans un compartiment S3. | Dans le bloc-notes dans lequel vous avez préparé votre ensemble de données plus tôt, ajoutez le code suivant pour télécharger vos exemples de données dans un compartiment 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> | Scientifique des données | 

### Créez le préprocesseur de données à l'aide de SKLearn
<a name="create-the-data-preprocessor-using-sklearn"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Préparez le script preprocessor.py. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker.html) | Scientifique des données | 
| Créez l'objet SKLearn préprocesseur. | Pour créer un objet SKLearn préprocesseur (appelé SKLearn Estimator) que vous pouvez intégrer dans votre pipeline d'inférence final, exécutez le code suivant dans votre bloc-notes : 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> | Scientifique des données | 
| Testez l'inférence du préprocesseur. | Pour vérifier que votre préprocesseur est correctement défini, lancez une [tâche de transformation par lots](https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform.html) en saisissant le code suivant dans votre SageMaker bloc-notes :<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> |  | 

### Création d'un modèle d'apprentissage automatique
<a name="create-a-machine-learning-model"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un objet modèle. | Pour créer un objet modèle basé sur l'algorithme d'apprentissage linéaire, entrez le code suivant dans votre SageMaker bloc-notes :<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>Le code précédent extrait l'image Amazon ECR Docker appropriée du registre Amazon ECR public pour le modèle, crée un objet estimateur, puis utilise cet objet pour entraîner le modèle de régression. | Scientifique des données | 

### Déployer le pipeline final
<a name="deploy-the-final-pipeline"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez le modèle de pipeline. | Pour créer un objet de modèle de pipeline (c'est-à-dire un objet préprocesseur) et déployer l'objet, entrez le code suivant dans votre SageMaker bloc-notes :<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>Vous pouvez ajuster le type d'instance utilisé dans l'objet du modèle en fonction de vos besoins. | Scientifique des données | 
| Testez l'inférence. | Pour vérifier que le terminal fonctionne correctement, exécutez l'exemple de code d'inférence suivant dans votre SageMaker bloc-notes :<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> | Scientifique des données | 

## Ressources connexes
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-resources"></a>
+ [Prétraitez les données d'entrée avant de faire des prédictions à l'aide des pipelines SageMaker d'inférence Amazon et de Scikit-learn (](https://aws.amazon.com/blogs/machine-learning/preprocess-input-data-before-making-predictions-using-amazon-sagemaker-inference-pipelines-and-scikit-learn/)AWS Machine Learning Blog)
+ [Machine Learning de bout en bout avec Amazon SageMaker](https://github.com/aws-samples/amazon-sagemaker-build-train-deploy) (GitHub)

# Déployez la validation de la sécurité du codage en temps réel à l'aide d'un serveur MCP avec Kiro et d'autres assistants de codage
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants"></a>

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

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

Ce modèle décrit comment implémenter un serveur MCP (Model Context Protocol) qui intègre trois outils d'analyse de sécurité conformes aux normes du secteur afin de fournir une analyse complète de la sécurité du code. Le serveur permet aux assistants de codage basés sur l'IA (tels que Kiro, Amazon Q Developer et Cline) de scanner automatiquement les extraits de code et les configurations d'infrastructure en tant que code (iAc). Grâce à ces scans, les assistants de codage peuvent aider à identifier les failles de sécurité, les erreurs de configuration et les violations de conformité.

Les générateurs de code basés sur l'IA entraînés sur des millions d'extraits de code créent un angle mort en matière de sécurité. Dans quelle mesure ces données d'entraînement étaient-elles sécurisées ? Ce modèle fournit une validation de sécurité en temps réel lors de la génération du code, aidant ainsi les développeurs à identifier et à comprendre les problèmes de sécurité potentiels lors du codage. Cette approche aide les développeurs à remédier à la fois aux vulnérabilités directes et aux risques hérités des dépendances. En comblant le fossé entre l'efficacité de l'IA et la conformité en matière de sécurité, ce modèle permet d'adopter en toute sécurité les outils de développement basés sur l'IA.

Ce modèle aide les entreprises à améliorer leurs pratiques de sécurité du développement grâce à des outils de codage assistés par l'IA, fournissant des fonctionnalités d'analyse de sécurité continue dans plusieurs langages de programmation et définitions d'infrastructure. La solution combine les fonctionnalités des outils suivants :
+ Vérifiez si vous scannez les fichiers iAC, y compris Terraform et les manifestes AWS CloudFormation Kubernetes
+ Semgrep pour analyser plusieurs langages de programmation tels que Python JavaScript, Java et autres
+ Bandit pour l'analyse de sécurité spécialisée en Python 

Les principales fonctionnalités de cette solution sont les suivantes :
+ Scan delta de nouveaux segments de code, réduisant ainsi les frais de calcul
+ Environnements d'outils de sécurité isolés, empêchant la contamination entre outils
+ Intégration parfaite avec les assistants de codage basés sur l'IA (Kiro, Amazon Q Developer, Cline, etc.)
+ Feedback de sécurité en temps réel pendant la génération du code
+ Règles de numérisation personnalisables pour garantir la conformité de l'organisation

Le modèle fournit une interface unifiée pour l'analyse de sécurité avec des formats de réponse standardisés, ce qui facilite l'intégration des contrôles de sécurité dans les flux de travail de développement. Le modèle utilise Python et le framework MCP pour fournir des informations de sécurité automatisées. Cette approche aide les développeurs à identifier et à résoudre les problèmes de sécurité dès le début du processus de développement tout en découvrant les meilleures pratiques en matière de sécurité grâce à des résultats détaillés.

## Conditions préalables et limitations
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-prereqs"></a>

**Conditions préalables**
+ Un développeur actif Compte AWS ayant accès à Kiro ou Amazon Q Developer, si vous souhaitez utiliser l'un de ces assistants de codage
+ [Python version 3.10 ou ultérieure installée](https://www.python.org/downloads/)
+ `uv`gestionnaire de paquets [installé](https://docs.astral.sh/uv/getting-started/installation/)
+ Connaissance des outils et des concepts d'analyse de sécurité
+ Compréhension de base de l'IAC et de la sécurité des applications

**Limites**
+ L'analyse des bandits est limitée aux fichiers Python uniquement.
+ L'analyse en temps réel peut avoir un impact sur les performances des bases de code volumineuses.
+ Les limitations spécifiques à l'outil sont basées sur les formats de fichiers et les langues pris en charge.
+ Un examen manuel est nécessaire pour valider les résultats de sécurité.
+ Les résultats des analyses de sécurité nécessitent une expertise en matière de sécurité pour une interprétation correcte.
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, consultez la section [AWS Services par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

**Versions du produit**
+ Python version 3.10 ou ultérieure
+ Checkov version 3.0.0 ou ultérieure
+ Semgrep version 1.45.0 ou ultérieure
+ Bandit version 1.7.5 ou ultérieure
+ MCP [cli] version 1.11.0 ou ultérieure
+ Pydantic version 1.10.0 ou ultérieure
+ Loguru version 0.6.0 ou ultérieure

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

Le schéma suivant montre l'architecture de cette solution.

![\[Les assistants IA envoient du code au serveur du scanner de sécurité MCP pour le rediriger vers des scanners spécialisés ; les résultats du scan sont envoyés au développeur.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/fa623544-4d54-48af-a4e4-9b6a0624e776/images/9c881f95-76d0-40f6-983e-d987fd2097b8.png)


Le schéma suivant illustre le flux de travail suivant :

1. Le développeur utilise des assistants d'intelligence artificielle (par exemple, Kiro, Cline, Amazon Q Developer ou Roo Code) pour générer ou analyser du code. L'assistant AI envoie le code pour le scan de sécurité.

1. Le serveur du scanner de sécurité MCP traite la demande en l'acheminant vers le scanner spécialisé approprié : Checkov pour les fichiers IaC, Semgrep pour l'analyse de plusieurs langages de programmation ou Bandit pour le scan de sécurité spécifique à Python.

1. Les résultats du scanner contenant les résultats de sécurité, les niveaux de gravité, les descriptions détaillées et les solutions suggérées sont renvoyés au développeur via l'assistant AI.

1. Une boucle de feedback continue est établie dans le cadre de laquelle le développeur reçoit une validation de sécurité en temps réel, permettant des corrections automatisées par le biais d'assistants IA et promouvant les meilleures pratiques de sécurité pendant le développement.

L'architecture atténue les risques de sécurité courants suivants : 
+ Injection de commandes
+ Injection rapide
+ Traversée du chemin
+ Attaques de dépendance
+ Épuisement des ressources 

L'architecture atténue ces risques de sécurité courants en mettant en œuvre les meilleures pratiques suivantes : 
+ Toutes les entrées des utilisateurs et des modèles d'IA sont écrites dans des fichiers temporaires.
+ Aucune entrée directe n'est fournie aux commandes de l'interface de ligne de commande (CLI).
+ L'accès au système de fichiers est limité aux répertoires et fichiers temporaires uniquement.
+ Les fichiers temporaires sont automatiquement nettoyés.
+ Les réponses de numérisation sont nettoyées.
+ L'isolation des processus qui limite les capacités des processus est appliquée.
+ Toutes les activités de numérisation sont enregistrées.

**Automatisation et mise à l'échelle**

Le modèle prend en charge l'automatisation grâce aux fonctionnalités suivantes :
+ Intégration avec les assistants de codage AI pour la numérisation automatique du code
+ Réponses d'API standardisées pour un traitement automatisé
+ Configuration via les fichiers de configuration MCP
+ Support pour le traitement par lots de plusieurs fichiers
+ Numérisation évolutive dans plusieurs langages de programmation et formats iAc

Le processus de numérisation peut être automatisé via les points de terminaison de l'API fournis :
+ `scan_with_checkov`pour la numérisation iAc
+ `scan_with_semgrep`pour la numérisation de codes multilingues
+ `scan_with_bandit`pour un scan spécifique à Python
+ `get_supported_formats`pour la validation du format

Lorsque vous étendez les outils de numérisation, suivez les principes de conception et les meilleures pratiques décrits plus haut dans cette section. Voir également [Bonnes pratiques](#deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-best-practices). 

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

**Services AWS**
+ [Kiro](https://aws.amazon.com/documentation-overview/kiro/) est un service de codage agentique qui travaille aux côtés des développeurs pour transformer les instructions en spécifications détaillées, puis en code fonctionnel, en documents et en tests. Les agents Kiro aident les développeurs à résoudre des problèmes complexes et à automatiser des tâches telles que la génération de documentation et les tests unitaires.
+ [Amazon Q Developer](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/what-is.html) est un assistant conversationnel génératif alimenté par l'IA qui peut vous aider à comprendre, créer, étendre et exploiter des applications. AWS 

**Autres outils**
+ [Bandit](https://bandit.readthedocs.io/en/latest/) est un outil de scanner de sécurité Python spécialisé. Il détecte les problèmes de sécurité courants liés à Python, tels que les fonctions non sécurisées, les secrets codés en dur et les vulnérabilités d'injection. Bandit fournit des cotes de confiance et de gravité détaillées.
+ [Checkov](https://github.com/bridgecrewio/checkov) est un outil d'analyse de code statique qui vérifie les erreurs de configuration liées à la sécurité et à la conformité dans iAc. En outre, Checkov détecte les violations de conformité et les meilleures pratiques de sécurité.
+ [Cline](https://cline.bot/) est un assistant de codage alimenté par l'IA qui fonctionne dans VS Code.
+ [Loguru](https://loguru.readthedocs.io/en/stable/) est une bibliothèque de validation de données pour Python.
+ [Le Model Context Protocol (MCP)](https://modelcontextprotocol.io/docs/getting-started/intro) est un framework open source permettant de créer des outils de développement assistés par l'IA.
+ [Pydantic](https://docs.pydantic.dev/latest/) est une bibliothèque de validation de données pour Python.
+ [Semgrep](https://semgrep.dev/docs/introduction) analyse le code source pour détecter les failles de sécurité et les bogues. Il prend en charge plusieurs langages de programmation. Semgrep utilise des ensembles de règles axés sur la sécurité pour une analyse complète. Il fournit des cotes de confiance et de gravité détaillées.

**Référentiel de code**

Le code de ce modèle est disponible dans le référentiel GitHub [MCP Security Scanner : Real-Time Protection for AI Code Assistants](https://github.com/aws-samples/sample-mcp-security-scanner). Le référentiel inclut l'implémentation du serveur MCP, des détails sur la configuration MCP pour Kiro, Amazon Q Developer, Cline et d'autres, des exemples de configuration et des utilitaires de test.

La structure du référentiel inclut :
+ `security_scanner_mcp_server/`- Implémentation du serveur principal
+ `docs/`- Documentation et matériel de démonstration
+ `tests/`- Fichiers de test
+ `mcp-config-example.json`- Exemple de configuration MCP
+ `requirements.txt`- Dépendances du projet

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

**Mise en œuvre du scan de sécurité**
+ Passez en revue les résultats de sécurité pour valider et hiérarchiser les problèmes.
+ Maintenez les outils de numérisation (Checkov, Semgrep et Bandit) à jour avec les dernières versions.
+ Utilisez l'outil de sécurité MCP de ce modèle en conjonction avec d'autres mesures et outils de sécurité.
+ Mettez régulièrement à jour les ensembles de règles et les politiques de sécurité.

**Gestion de configuration**
+ Utilisez les fichiers de configuration MCP dans la source de contrôle de version officielle.
+ Documentez les règles et les configurations personnalisées.

**Integration**
+ Intégrez l'analyse de sécurité dès le début du cycle de développement.
+ Configurez le scan automatique dans les hooks de pré-validation ou dans les pipelines d'intégration et de déploiement continus (CI/CD).
+ Configurez des seuils de gravité adaptés à votre environnement.
+ Établissez des procédures claires pour traiter les résultats de sécurité.

**Considérations opérationnelles**
+ Surveillez les performances de numérisation et l'utilisation des ressources.
+ Mettez en œuvre une gestion et une journalisation appropriées des erreurs.
+ Tenez à jour la documentation des configurations personnalisées.
+ Établissez un processus de révision et de mise à jour des règles de sécurité.

Gardez également à l'esprit les meilleures pratiques suivantes :
+ Validez toujours les résultats de sécurité dans votre contexte spécifique.
+ Maintenez les outils de sécurité et les dépendances à jour.
+ Utilisez plusieurs outils de sécurité pour une couverture complète.
+ Suivez les meilleures pratiques de sécurité dans votre processus de développement.

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

### (Utilisateurs de Kiro) Configurer le serveur du scanner de sécurité MCP
<a name="kiro-users-set-up-the-mcp-security-scanner-server"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez les paramètres MCP. | Vous pouvez modifier les fichiers de configuration dans Kiro soit en (Option 1) en localisant manuellement les fichiers de configuration, soit (Option 2) en utilisant l'IDE Kiro.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/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> | Développeur d’applications | 

### (Utilisateurs Amazon Q Developer) Configurer le serveur du scanner de sécurité MCP
<a name="qdevlong-users-set-up-the-mcp-security-scanner-server"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez les paramètres MCP. | Pour configurer les paramètres MCP manuellement, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/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> | Développeur d’applications | 

### (Utilisateurs de Cline) Configurer le serveur du scanner de sécurité MCP
<a name="cline-users-set-up-the-mcp-security-scanner-server"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez les paramètres MCP. | Pour configurer les paramètres MCP manuellement, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/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> | Développeur d’applications | 

### Exemple d'analyse de code à l'aide de Python et Bandit
<a name="example-of-code-analysis-using-python-and-bandit"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Effectuez une analyse de code. | Pour effectuer une analyse de code à l'aide de Python et de Bandit, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | Développeur d’applications | 

### Exemple d'analyse de code à l'aide de Terraform et Checkov
<a name="example-of-code-analysis-using-terraform-and-checkov"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Effectuez une analyse de code. | Pour effectuer une analyse de code à l'aide de Terraform et Checkov, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | Développeur d’applications | 

### Exemple de fonctionnalités de numérisation avancées
<a name="example-of-advanced-scanning-capabilities"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Effectuez une analyse ciblée. | Voici des exemples de demandes que vous pouvez utiliser pour effectuer une analyse ciblée :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | Développeur d’applications | 
| Utilisez le scan de sécurité avec la génération de code. | Pour résoudre les problèmes de sécurité à l'aide de boucles de génération de code, procédez comme suit (cet exemple utilise Kiro comme assistant de codage) :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | Développeur d’applications | 

## Résolution des problèmes
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Problèmes de configuration de l'environnement | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | 
| Problèmes liés au scanner | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | 
| Problèmes d'intégration | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | 
| Support supplémentaire | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | 

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

**AWS documentation**
+ [L'infrastructure en tant que code](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html) (AWS livre blanc, *introduction à DevOps * on) AWS

**Autres AWS ressources**
+ [Bonnes pratiques en matière de sécurité, d'identité et de conformité](https://aws.amazon.com/architecture/security-identity-compliance/)

**Autres ressources**
+ [Documentation sur les bandits](https://aws.amazon.com/architecture/security-identity-compliance/)
+ [Consultez la documentation](https://aws.amazon.com/architecture/security-identity-compliance/)
+ [Documentation du protocole MCP (Model Context Protocol)](https://aws.amazon.com/architecture/security-identity-compliance/)
+ [Pratiques de codage sécurisé de l'OWASP](https://owasp.org/www-project-secure-coding-practices-quick-reference-guide/) (site Web de la Fondation OWASP)
+ [Documentation Semgrep](https://aws.amazon.com/architecture/security-identity-compliance/)

## Informations supplémentaires
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-additional"></a>

**Exemple de configuration MCP avec approbation automatique activée**

Sans `autoApprove` configuration, l'utilisateur doit autoriser l'envoi du code au serveur de sécurité MCP pour analyse. Lorsqu'il `autoApprove` est configuré, l'assistant de code est autorisé à appeler les outils sans l'approbation de l'utilisateur. Ces outils s'exécutent localement sur la machine, aucune donnée n'est envoyée et seul un scan de code est effectué.

La configuration suivante permet l'exécution automatique de toutes les fonctions d'analyse de sécurité :

```
{
  "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"
      ]
    }
  }
}
```

Pour activer la journalisation du débogage, définissez sur`"FASTMCP_LOG_LEVEL"`. `"DEBUG"`

**Formats de fichiers pris en charge par les outils d'analyse de sécurité**

Chaque outil d'analyse de sécurité de cette solution prend en charge les formats de fichiers suivants :

*Checkov (IaC)*
+ Terraforme — .tf, .tfvars, .tfstate
+ CloudFormation — .yaml, .yml, .json, .modèle
+ Kubernetes — .yaml, .yml
+ Dockerfile — Dockerfile
+ ARM — .json (gestionnaire de ressources Azure)
+ Biceps — .biceps
+ Sans serveur : .yml, .yaml
+ Casque — .yaml, .yml, .tpl
+ GitHub Actions : .yml, .yaml
+ GitLab\$1ci — .yml, .yaml
+ Ansible — .yml, .yaml

*Semgrep (Code source)*
+ Python — .py
+ JavaScript — .js
+ TypeScript — .ts
+ Java — .java
+ Allez — .go
+ C — c
+ C\$1\$1 — .cpp
+ C\$1 — .cs
+ Ruby — .rb
+ PHP — .php
+ Scala — .scala
+ Kotlin — .kt
+ Rouille — .rs

*Bandit (Python uniquement)*
+ Python — .py

**Démos**

Pour scanner le code, essayez les exemples d'instructions suivants avec votre assistant AI :
+ « Scannez le script actuel et donnez-moi les résultats. »
+ « Scannez les lignes 20 à 60 et donnez-moi les résultats. »
+ « Scannez cette ressource de table Amazon DynamoDB et indiquez-moi le résultat. »

Pour plus d'informations, consultez cette [démonstration de numérisation de code](https://github.com/aws-samples/sample-mcp-security-scanner/blob/main/docs/demo_code_scan.gif) dans le GitHub référentiel de ce modèle.

Pour générer un code sécurisé, essayez les exemples d'instructions suivants :
+ « Générez une configuration Terraform pour créer une table DynamoDB avec le chiffrement activé et analysez-la pour détecter les problèmes de sécurité. »
+ « Créez une fonction Lambda Python qui écrit dans DynamoDB et scannez-la pour détecter les vulnérabilités. »
+ « Générez un CloudFormation modèle pour un compartiment S3 avec les paramètres de sécurité appropriés et vérifiez qu'il passe les contrôles de sécurité. »
+ « Écrivez un script Python pour interroger DynamoDB à l'aide de la pagination et recherchez les meilleures pratiques en matière de sécurité. »
+ « Créez un manifeste de déploiement Kubernetes pour un microservice avec renforcement de la sécurité et validez-le. »

Pour plus d'informations, consultez cette démonstration de [génération de code avec analyse de sécurité](https://github.com/aws-samples/sample-mcp-security-scanner/blob/main/docs/demo_code_generation.gif) dans le GitHub référentiel de ce modèle.

# Développez des assistants avancés basés sur l'IA générative basés sur le chat en utilisant RAG et des instructions 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 et Kara Yang, Amazon Web Services*

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

En général, 70 % des données d'une entreprise sont bloquées dans des systèmes cloisonnés. Vous pouvez utiliser des assistants basés sur le chat basés sur l'IA générative pour obtenir des informations et établir des relations entre ces silos de données grâce à des interactions en langage naturel. Pour tirer le meilleur parti de l'IA générative, les résultats doivent être fiables, précis et inclure les données d'entreprise disponibles. Le succès des assistants basés sur le chat dépend des éléments suivants :
+ Modèles d'IA génératifs (tels qu'Anthropic Claude 2)
+ Vectorisation des sources de données
+ Techniques de raisonnement avancées, telles que le [ReAct cadre](https://www.promptingguide.ai/techniques/react), pour orienter le modèle

Ce modèle propose des approches de récupération de données à partir de sources de données telles que les buckets Amazon Simple Storage Service (Amazon S3), AWS Glue et Amazon Relational Database Service (Amazon RDS). La valeur est obtenue à partir de ces données en entrelacant la [génération augmentée de récupération (RAG)](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html) avec des méthodes. chain-of-thought Les résultats permettent des conversations d'assistant complexes basées sur le chat qui s'appuient sur l'intégralité des données stockées par votre entreprise.

Ce modèle utilise les SageMaker manuels Amazon et les tableaux de données de tarification comme exemple pour explorer les fonctionnalités d'un assistant génératif basé sur le chat basé sur l'IA. Vous allez créer un assistant basé sur le chat qui aidera les clients à évaluer le SageMaker service en répondant à des questions sur les prix et les fonctionnalités du service. La solution utilise une bibliothèque Streamlit pour créer l'application frontale et le LangChain framework pour développer le backend de l'application basé sur un modèle de langage étendu (LLM).

Les demandes adressées à l'assistant basé sur le chat sont traitées selon une classification d'intention initiale pour être acheminées vers l'un des trois flux de travail possibles. Le flux de travail le plus sophistiqué combine des conseils généraux avec une analyse tarifaire complexe. Vous pouvez adapter le modèle en fonction des cas d'utilisation en entreprise, corporatif et industriel.

## Conditions préalables et limitations
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-prereqs"></a>

**Conditions préalables**
+ [Interface de ligne de commande (AWS CLI) (AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)) installée et configurée
+ [AWS Cloud Development Kit (AWS CDK) Toolkit 2.114.1 ou version ultérieure installée](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html) et configurée
+ Connaissance de base de Python et d'AWS CDK
+ [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) installé
+ [Docker installé](https://docs.docker.com/get-docker/)
+ [Python 3.11 ou version ultérieure](https://www.python.org/downloads/) installé et configuré (pour plus d'informations, consultez la section [Outils](#develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-tools))
+ [Un [compte AWS actif](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-creating.html) démarré à l'aide d'AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html)
+ [Accès aux modèles](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html#add-model-access) Amazon Titan et Anthropic Claude activé dans le service Amazon Bedrock
+ [Informations d'identification de sécurité AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html)`AWS_ACCESS_KEY_ID`, y compris celles correctement configurées dans votre environnement de terminal

**Limites**
+ LangChain ne prend pas en charge tous les LLM pour le streaming. Les modèles Anthropic Claude sont pris en charge, mais pas les modèles de AI21 Labs.
+ Cette solution est déployée sur un seul compte AWS.
+ Cette solution ne peut être déployée que dans les régions AWS où Amazon Bedrock et Amazon Kendra sont disponibles. Pour plus d'informations sur la disponibilité, consultez la documentation d'[Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html#bedrock-regions) et d'[Amazon Kendra](https://docs.aws.amazon.com/general/latest/gr/kendra.html).

**Versions du produit**
+ Python version 3.11 ou ultérieure
+ Streamlit version 1.30.0 ou ultérieure
+ StreamLit-Chat version 0.1.1 ou ultérieure
+ LangChain version 0.1.12 ou ultérieure
+ AWS CDK version 2.132.1 ou ultérieure

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

**Pile technologique cible**
+ Amazon Athena
+ Amazon Bedrock
+ Amazon Elastic Container Service (Amazon ECS)
+ AWS Glue
+ AWS Lambda
+ Amazon S3
+ Amazon Kendra
+ Elastic Load Balancing

**Architecture cible**

Le code AWS CDK déploiera toutes les ressources nécessaires pour configurer l'application d'assistant basée sur le chat dans un compte AWS. L'application d'assistance basée sur le chat illustrée dans le schéma suivant est conçue pour répondre aux questions SageMaker connexes des utilisateurs. Les utilisateurs se connectent via un Application Load Balancer à un VPC contenant un cluster Amazon ECS hébergeant l'application Streamlit. Une fonction Lambda d'orchestration se connecte à l'application. Les sources de données du compartiment S3 fournissent des données à la fonction Lambda via Amazon Kendra et AWS Glue. La fonction Lambda se connecte à Amazon Bedrock pour répondre aux requêtes (questions) des utilisateurs assistants basés sur le chat.

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


1. La fonction Lambda d'orchestration envoie la demande d'invite LLM au modèle Amazon Bedrock (Claude 2).

1. Amazon Bedrock renvoie la réponse LLM à la fonction Lambda d'orchestration.

**Flux logique au sein de la fonction Lambda d'orchestration**

Lorsque les utilisateurs posent une question via l'application Streamlit, celle-ci invoque directement la fonction Lambda d'orchestration. Le schéma suivant montre le flux logique lorsque la fonction Lambda est invoquée.

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

+ Étape 1 — L'entrée `query` (question) est classée dans l'une des trois intentions suivantes :
  + Questions SageMaker d'orientation générales
  + Questions générales SageMaker sur la tarification (formation/inférence)
  + Questions complexes relatives à la tarification SageMaker et à la tarification
+ Étape 2 — L'entrée `query` initie l'un des trois services :
  + `RAG Retrieval service`, qui extrait le contexte pertinent de la base de données vectorielle [Amazon](https://aws.amazon.com/kendra/) Kendra et appelle le LLM [via Amazon](https://aws.amazon.com/bedrock/) Bedrock pour résumer le contexte extrait sous forme de réponse.
  + `Database Query service`, qui utilise le LLM, les métadonnées de la base de données et des exemples de lignes provenant de tables pertinentes pour convertir l'`query`entrée en requête SQL. Le service Database Query exécute la requête SQL par rapport à la base de données de SageMaker tarification via [Amazon Athena](https://aws.amazon.com/athena/) et résume les résultats de la requête sous forme de réponse.
  + `In-context ReACT Agent service`, qui décompose la saisie `query` en plusieurs étapes avant de fournir une réponse. L'agent utilise `RAG Retrieval service` et `Database Query service` comme outils pour récupérer les informations pertinentes au cours du processus de raisonnement. Une fois les processus de raisonnement et d'action terminés, l'agent génère la réponse finale en tant que réponse.
+ Étape 3 — La réponse de la fonction Lambda d'orchestration est envoyée à l'application Streamlit en sortie.

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

**Services AWS**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) est un service de requêtes interactif qui vous permet d'analyser les données directement dans Amazon Simple Storage Service (Amazon S3) à l'aide du langage SQL standard.
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) est un service entièrement géré qui met à votre disposition des modèles de base très performants (FMs) issus des principales startups d'IA et d'Amazon via une API unifiée.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) est un framework de développement logiciel qui vous aide à définir et à provisionner l'infrastructure du cloud AWS sous forme de code.
+ [L'interface de ligne de commande AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir avec les services AWS par le biais de commandes dans votre shell de ligne de commande.
+ [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) est un service de gestion de conteneurs évolutif et rapide, qui facilite l'exécution, l'arrêt et la gestion de conteneurs Docker sur un cluster.
+ [AWS Glue](https://docs.aws.amazon.com/glue/) est un service d'extraction, de transformation et de chargement (ETL) entièrement géré. Il vous aide à classer, nettoyer, enrichir et déplacer les données de manière fiable entre les magasins de données et les flux de données. Ce modèle utilise un robot d'exploration AWS Glue et une table du catalogue de données AWS Glue.
+ [Amazon Kendra](https://docs.aws.amazon.com/kendra/latest/dg/what-is-kendra.html) est un service de recherche intelligent qui utilise le traitement du langage naturel et des algorithmes d'apprentissage automatique avancés pour renvoyer des réponses spécifiques aux questions de recherche à partir de vos données.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous permet d'exécuter du code sans avoir à provisionner ou à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.
+ [Elastic Load Balancing (ELB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) répartit le trafic applicatif ou réseau entrant sur plusieurs cibles. Par exemple, vous pouvez répartir le trafic entre les instances, les conteneurs et les adresses IP Amazon Elastic Compute Cloud (Amazon EC2) dans une ou plusieurs zones de disponibilité.

**Référentiel de code**

Le code de ce modèle est disponible dans le GitHub [genai-bedrock-chatbot](https://github.com/awslabs/genai-bedrock-chatbot)référentiel.

Le référentiel de code contient les fichiers et dossiers suivants :
+ `assets`dossier — Les actifs statiques, le schéma d'architecture et le jeu de données public
+ `code/lambda-container`dossier — Le code Python exécuté dans la fonction Lambda
+ `code/streamlit-app`dossier — Le code Python qui est exécuté en tant qu'image de conteneur dans Amazon ECS
+ `tests`dossier — Les fichiers Python exécutés pour tester unitaires les constructions du kit AWS CDK
+ `code/code_stack.py`— Le CDK AWS construit des fichiers Python utilisés pour créer des ressources AWS
+ `app.py`— Les fichiers Python de pile AWS CDK utilisés pour déployer les ressources AWS dans le compte AWS cible
+ `requirements.txt`— La liste de toutes les dépendances Python qui doivent être installées pour AWS CDK
+ `requirements-dev.txt`— La liste de toutes les dépendances Python qui doivent être installées pour qu'AWS CDK exécute la suite de tests unitaires
+ `cdk.json`— Le fichier d'entrée fournissant les valeurs requises pour faire tourner les ressources


| 
| 
| Remarque : Le code AWS CDK utilise des structures [L3 (couche 3) et des politiques](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html) [AWS Identity and Access Management (IAM) gérées par AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) pour déployer la solution. | 
| --- |

## Bonnes pratiques
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-best-practices"></a>
+ L'exemple de code fourni ici concerne uniquement une démonstration proof-of-concept (PoC) ou pilote. Si vous souhaitez transférer le code en mode de production, veillez à suivre les meilleures pratiques suivantes :
  + La [journalisation des accès Amazon S3 est activée](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html).
  + Les [journaux de flux VPC sont](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) activés.
  + L'[index Amazon Kendra Enterprise Edition est activé](https://docs.aws.amazon.com/whitepapers/latest/how-aws-pricing-works/amazon-kendra.html).
+ Configurez la surveillance et les alertes pour la fonction Lambda. Pour plus d'informations, consultez la section [Surveillance et résolution des problèmes des fonctions Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html). Pour connaître les meilleures pratiques générales relatives à l'utilisation des fonctions Lambda, consultez la documentation [AWS](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html).

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

### Configurer les informations d'identification AWS sur votre machine locale
<a name="set-up-aws-credentials-on-your-local-machine"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Exportez des variables pour le compte et la région AWS où la pile sera déployée. | Pour fournir des informations d'identification AWS pour AWS CDK à l'aide de variables d'environnement, exécutez les commandes suivantes.<pre>export CDK_DEFAULT_ACCOUNT=<12 Digit AWS Account Number><br />export CDK_DEFAULT_REGION=<region></pre> | DevOps ingénieur, AWS DevOps | 
| Configurez le profil de la CLI AWS. | Pour configurer le profil de la CLI AWS pour le compte, suivez les instructions de la [documentation AWS](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/keys-profiles-credentials.html). | DevOps ingénieur, AWS DevOps | 

### Configuration de votre environnement
<a name="set-up-your-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Clonez le dépôt sur votre machine locale. | Pour cloner le dépôt, exécutez la commande suivante dans votre terminal.<pre>git clone https://github.com/awslabs/genai-bedrock-chatbot.git</pre> | DevOps ingénieur, AWS DevOps | 
| Configurez l'environnement virtuel Python et installez les dépendances requises. | Pour configurer l'environnement virtuel Python, exécutez les commandes suivantes.<pre>cd genai-bedrock-chatbot<br />python3 -m venv .venv<br />source .venv/bin/activate</pre>Pour configurer les dépendances requises, exécutez la commande suivante.<pre>pip3 install -r requirements.txt</pre> | DevOps ingénieur, AWS DevOps | 
| Configurez l'environnement AWS CDK et synthétisez le code AWS CDK. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.html) | DevOps ingénieur, AWS DevOps | 

### Configuration et déploiement de l'application d'assistance basée sur le chat
<a name="configure-and-deploy-the-chat-based-assistant-application"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Fournir un accès au modèle Claude. | Pour activer l'accès au modèle Anthropic Claude pour votre compte AWS, suivez les instructions de la documentation [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html#add-model-access). | AWS DevOps | 
| Déployez des ressources dans le compte. | Pour déployer des ressources dans le compte AWS à l'aide du kit AWS CDK, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.html)Une fois le déploiement réussi, vous pouvez accéder à l'application d'assistance basée sur le chat en utilisant l'URL fournie dans la section CloudFormation **Sorties**. | AWS DevOps, DevOps ingénieur | 
| Exécutez le robot d'exploration AWS Glue et créez la table du catalogue de données. | Un [robot d'exploration AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) est utilisé pour maintenir le schéma de données dynamique. La solution crée et met à jour des partitions dans la [table du catalogue de données AWS Glue](https://docs.aws.amazon.com/athena/latest/ug/querying-glue-catalog.html) en exécutant le robot d'exploration à la demande. Une fois les fichiers du jeu de données CSV copiés dans le compartiment S3, exécutez le robot d'exploration AWS Glue et créez le schéma de table du catalogue de données à des fins de test :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.html)Le code AWS CDK configure le robot d'exploration AWS Glue pour qu'il s'exécute à la demande, mais vous pouvez également le [planifier](https://docs.aws.amazon.com/glue/latest/dg/schedule-crawler.html) pour qu'il s'exécute périodiquement. | DevOps ingénieur, AWS DevOps | 
| Lancez l'indexation des documents. | Une fois les fichiers copiés dans le compartiment S3, utilisez Amazon Kendra pour les explorer et les indexer :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.html)[Le code AWS CDK configure la synchronisation de l'index Amazon Kendra pour qu'elle s'exécute à la demande, mais vous pouvez également l'exécuter périodiquement à l'aide du paramètre Schedule.](https://docs.aws.amazon.com/kendra/latest/dg/data-source.html#cron) | AWS DevOps, DevOps ingénieur | 

### Nettoyez toutes les ressources AWS de la solution
<a name="clean-up-all-aws-resources-in-the-solution"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez les ressources AWS. | Après avoir testé la solution, nettoyez les ressources :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.html) | DevOps ingénieur, AWS DevOps | 

## Résolution des problèmes
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| AWS CDK renvoie des erreurs. | Pour obtenir de l'aide concernant les problèmes liés au CDK AWS, consultez la section [Résolution des problèmes courants liés au CDK AWS](https://docs.aws.amazon.com/cdk/v2/guide/troubleshooting.html). | 

## Ressources connexes
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-resources"></a>
+ Amazon Bedrock :
  + [Accès aux modèles](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)
  + [Paramètres d'inférence pour les modèles de base](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters.html)
+ [Création de fonctions Lambda avec Python](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html)
+ [Commencez avec le kit AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)
+ [Utilisation du kit de développement logiciel AWS en Python](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-python.html)
+ [Générateur d'applications d'IA générative sur AWS](https://docs.aws.amazon.com/solutions/latest/generative-ai-application-builder-on-aws/solution-overview.html)
+ [LangChain documentation](https://python.langchain.com/docs/get_started/introduction)
+ [Documentation simplifiée](https://docs.streamlit.io/)

## Informations supplémentaires
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-additional"></a>

**Commandes AWS CDK**

Lorsque vous travaillez avec AWS CDK, gardez à l'esprit les commandes utiles suivantes :
+ Répertorie toutes les piles de l'application

  ```
  cdk ls
  ```
+ Émet le modèle AWS synthétisé CloudFormation 

  ```
  cdk synth
  ```
+ Déploie la pile sur votre compte AWS et votre région par défaut

  ```
  cdk deploy
  ```
+ Compare la pile déployée avec l'état actuel

  ```
  cdk diff
  ```
+ Ouvre la documentation du kit AWS CDK

  ```
  cdk docs
  ```
+ Supprime la CloudFormation pile et retire les ressources déployées par AWS

  ```
  cdk destroy
  ```

# Développez un assistant entièrement automatisé basé sur le chat en utilisant les agents et les bases de connaissances 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 et Kara Yang, Amazon Web Services*

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

De nombreuses entreprises sont confrontées à des défis lorsqu'elles créent un assistant basé sur le chat capable d'orchestrer diverses sources de données afin de proposer des réponses complètes. Ce modèle présente une solution pour développer un assistant basé sur le chat capable de répondre aux requêtes provenant à la fois de la documentation et des bases de données, avec un déploiement simple.

À commencer par [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html), ce service d'intelligence artificielle générative (IA) entièrement géré fournit un large éventail de modèles de base avancés (FMs). Cela facilite la création efficace d'applications d'IA génératives en mettant fortement l'accent sur la confidentialité et la sécurité. Dans le contexte de la récupération de documentation, la [génération augmentée de récupération (RAG)](https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-customize-rag.html) est une fonctionnalité essentielle. Il utilise des [bases de connaissances](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html) pour compléter les instructions FM avec des informations contextuelles pertinentes provenant de sources externes. Un index [Amazon OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-overview.html) sert de base de données vectorielle à l'origine des bases de connaissances d'Amazon Bedrock. Cette intégration est améliorée grâce à une ingénierie rapide et minutieuse afin de minimiser les inexactitudes et de garantir que les réponses sont ancrées dans une documentation factuelle. Pour les requêtes de base FMs de données, Amazon Bedrock transforme les requêtes textuelles en requêtes SQL structurées, en incorporant des paramètres spécifiques. Cela permet de récupérer avec précision les données des bases de données gérées par des bases de [AWS Glue données](https://docs.aws.amazon.com/glue/latest/dg/define-database.html). [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) est utilisé pour ces requêtes.

Pour traiter des requêtes plus complexes, l'obtention de réponses complètes nécessite des informations provenant à la fois de la documentation et des bases de données. [Agents for Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/agents.html) est une fonctionnalité d'intelligence artificielle générative qui vous aide à créer des agents autonomes capables de comprendre des tâches complexes et de les décomposer en tâches plus simples à des fins d'orchestration. La combinaison des informations extraites des tâches simplifiées, facilitée par les agents autonomes d'Amazon Bedrock, améliore la synthèse des informations et permet d'obtenir des réponses plus complètes et exhaustives. Ce modèle montre comment créer un assistant basé sur le chat en utilisant Amazon Bedrock et les services et fonctionnalités d'IA générative associés au sein d'une solution automatisée.

## Conditions préalables et limitations
<a name="develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS
+ [Docker, installé](https://docs.docker.com/engine/install/)
+ AWS Cloud Development Kit (AWS CDK), [installé](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_tools) et [démarré sur le](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_bootstrap) ou `us-east-1` `us-west-2` Régions AWS
+ AWS CDK [Toolkit version 2.114.1 ou ultérieure, installée](https://docs.aws.amazon.com/cdk/v2/guide/cli.html)
+ AWS Command Line Interface (AWS CLI), [installé](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) et [configuré](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [Python version 3.11 ou ultérieure, installée](https://www.python.org/downloads/)
+ Dans Amazon Bedrock, [activez l'accès](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html) à Claude 2, Claude 2.1, Claude Instant et Titan Embeddings G1 — Text

**Limites**
+ Cette solution est déployée sur un seul Compte AWS.
+ Cette solution ne peut être déployée que Régions AWS là où Amazon Bedrock et Amazon OpenSearch Serverless sont pris en charge. Pour plus d'informations, consultez la documentation d'[Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-regions.html) et d'[Amazon OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-overview.html#serverless-regions).

**Versions du produit**
+ LLAMA-Index version 0.10.6 ou ultérieure
+ Sqlalchemy version 2.0.23 ou ultérieure
+ OpenSearch-PY version 2.4.2 ou ultérieure
+ Requests\$1AWS4Auth version 1.2.3 ou ultérieure
+ AWS SDK pour Python (Boto3) version 1.34.57 ou ultérieure

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

**Pile technologique cible**

Il s'[AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)agit d'un framework de développement de logiciels open source permettant de définir l'infrastructure cloud dans le code et de la provisionner via AWS CloudFormation ce dernier. La AWS CDK pile utilisée dans ce modèle déploie les AWS ressources suivantes : 
+ AWS Key Management Service (AWS KMS)
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Glue Data Catalog, pour le composant de AWS Glue base de données
+ AWS Lambda
+ Gestion des identités et des accès AWS (JE SUIS)
+ Amazon OpenSearch sans serveur
+ Amazon Elastic Container Registry (Amazon ECR) 
+ Amazon Elastic Container Service (Amazon ECS)
+ AWS Fargate
+ Amazon Virtual Private Cloud (Amazon VPC)
+ [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) 

**Architecture cible**

![\[Schéma d'architecture utilisant une base de connaissances et un agent Amazon Bedrock\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/15372718-3a5d-4918-9cfa-422c455f288d/images/ff19152e-0bb6-4758-a6dd-4f6140e55113.png)


Le schéma montre une configuration AWS cloud native complète au sein d'une seule installation Région AWS, en utilisant plusieurs Services AWS. L'interface principale de l'assistant basé sur le chat est une application [Streamlit](https://docs.streamlit.io/) hébergée sur un cluster Amazon ECS. Un [Application Load Balancer](https://aws.amazon.com/elasticloadbalancing/application-load-balancer/) gère l'accessibilité. Les requêtes effectuées via cette interface activent la fonction `Invocation` Lambda, qui s'interface ensuite avec les agents d'Amazon Bedrock. Cet agent répond aux demandes des utilisateurs en consultant les bases de connaissances d'Amazon Bedrock ou en invoquant une fonction Lambda`Agent executor`. Cette fonction déclenche un ensemble d'actions associées à l'agent, selon un schéma d'API prédéfini. Les bases de connaissances d'Amazon Bedrock utilisent un index OpenSearch sans serveur comme base de données vectorielle. En outre, la `Agent executor` fonction génère des requêtes SQL qui sont exécutées sur la AWS Glue base de données via Amazon Athena. 

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

**Services AWS**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) est un service de requêtes interactif qui vous permet d'analyser les données directement dans Amazon Simple Storage Service (Amazon S3) à l'aide du langage SQL standard.
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) est un service entièrement géré qui met à votre disposition des modèles de base très performants (FMs) issus des principales startups d'IA et d'Amazon via une API unifiée.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)est un framework de développement logiciel qui vous aide à définir et à provisionner l'infrastructure AWS cloud sous forme de code.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir Services AWS par le biais de commandes dans votre interface de ligne de commande.
+ [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) est un service de gestion de conteneurs évolutif et rapide, qui facilite l'exécution, l'arrêt et la gestion de conteneurs Docker sur un cluster.
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) répartit le trafic applicatif ou réseau entrant sur plusieurs cibles. Par exemple, vous pouvez répartir le trafic entre les instances, les conteneurs et les adresses IP Amazon Elastic Compute Cloud (Amazon EC2) dans une ou plusieurs zones de disponibilité.
+ [AWS Glue](https://docs.aws.amazon.com/glue/)est un service d'extraction, de transformation et de chargement (ETL) entièrement géré. Il vous aide à classer, nettoyer, enrichir et déplacer les données de manière fiable entre les magasins de données et les flux de données. Ce modèle utilise un AWS Glue robot et une AWS Glue Data Catalog table.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [Amazon OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-overview.html) est une configuration sans serveur à la demande pour Amazon OpenSearch Service. Dans ce modèle, un index OpenSearch sans serveur sert de base de données vectorielle pour les bases de connaissances d'Amazon Bedrock.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.

**Autres outils**
+ [Streamlit](https://docs.streamlit.io/) est un framework Python open source permettant de créer des applications de données.

**Référentiel de code**

Le code de ce modèle est disponible dans le GitHub [genai-bedrock-agent-chatbot](https://github.com/awslabs/genai-bedrock-agent-chatbot/)référentiel. Le référentiel de code contient les fichiers et dossiers suivants :
+ `assets`dossier — Les actifs statiques, tels que le schéma d'architecture et le jeu de données public.
+ `code/lambdas/action-lambda`dossier — Le code Python de la fonction Lambda qui agit comme une action pour l'agent Amazon Bedrock.
+ `code/lambdas/create-index-lambda`dossier — Le code Python de la fonction Lambda qui crée l'index OpenSearch Serverless.
+ `code/lambdas/invoke-lambda`dossier — Le code Python de la fonction Lambda qui appelle l'agent Amazon Bedrock, qui est appelé directement depuis l'application Streamlit.
+ `code/lambdas/update-lambda`dossier — Le code Python de la fonction Lambda qui met à jour ou supprime les ressources une fois celles-ci déployées AWS via le. AWS CDK
+ `code/layers/boto3_layer`dossier — La AWS CDK pile qui crée une couche Boto3 partagée entre toutes les fonctions Lambda.
+ `code/layers/opensearch_layer`dossier — La AWS CDK pile qui crée une couche OpenSearch sans serveur qui installe toutes les dépendances pour créer l'index.
+ `code/streamlit-app`dossier — Le code Python qui est exécuté en tant qu'image du conteneur dans Amazon ECS.
+ `code/code_stack.py`— Les fichiers Python de AWS CDK construction qui créent des AWS ressources.
+ `app.py`— Les fichiers Python de AWS CDK pile qui déploient AWS les ressources dans le AWS compte cible.
+ `requirements.txt`— La liste de toutes les dépendances Python qui doivent être installées pour AWS CDK.
+ `cdk.json`— Le fichier d'entrée fournissant les valeurs requises pour créer des ressources. De plus, dans les `context/config` champs, vous pouvez personnaliser la solution en conséquence. Pour plus d'informations sur la personnalisation, consultez la section [Informations supplémentaires](#develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases-additional).

## Bonnes pratiques
<a name="develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases-best-practices"></a>
+ L'exemple de code fourni ici est uniquement destiné à proof-of-concept (PoC) ou à des fins pilotes. Si vous souhaitez mettre le code en production, veillez à suivre les meilleures pratiques suivantes :
  + Activer la [journalisation des accès Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html)
  + Activer les [journaux de flux VPC](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)
+ Configurez la surveillance et les alertes pour les fonctions Lambda. Pour plus d'informations, consultez la section [Surveillance et résolution des problèmes des fonctions Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html). Pour connaître les meilleures pratiques, consultez les [meilleures pratiques d'utilisation des AWS Lambda fonctions](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html).

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

### Configurez les AWS informations d'identification sur votre poste de travail local
<a name="set-up-aws-credentials-on-your-local-workstation"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Exportez les variables du compte et de la région. | Pour fournir des AWS informations d'identification pour AWS CDK le à l'aide de variables d'environnement, exécutez les commandes suivantes.<pre>export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number><br />export CDK_DEFAULT_REGION=<Region></pre> | AWS DevOps, DevOps ingénieur | 
| Configurez le profil AWS CLI nommé. | Pour configurer le profil AWS CLI nommé pour le compte, suivez les instructions de la section [Configuration et paramètres du fichier d'identification](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html). | AWS DevOps, DevOps ingénieur | 

### Configuration de votre environnement
<a name="set-up-your-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Clonez le dépôt sur votre poste de travail local. | Pour cloner le dépôt, exécutez la commande suivante dans votre terminal.<pre>git clone https://github.com/awslabs/genai-bedrock-agent-chatbot.git</pre> | DevOps ingénieur, AWS DevOps | 
| Configurez l'environnement virtuel Python. | Pour configurer l'environnement virtuel Python, exécutez les commandes suivantes.<pre>cd genai-bedrock-agent-chatbot<br />python3 -m venv .venv<br />source .venv/bin/activate</pre>Pour configurer les dépendances requises, exécutez la commande suivante.<pre>pip3 install -r requirements.txt</pre> | DevOps ingénieur, AWS DevOps | 
| Configurez l' AWS CDK environnement. | Pour convertir le code en AWS CloudFormation modèle, exécutez la commande`cdk synth`. | AWS DevOps, DevOps ingénieur | 

### Configuration et déploiement de l'application
<a name="configure-and-deploy-the-application"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez des ressources dans le compte. | Pour déployer des ressources dans le Compte AWS à l'aide du AWS CDK, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases.html)Une fois le déploiement réussi, vous pouvez accéder à l'application d'assistance basée sur le chat en utilisant l'URL fournie dans l'onglet **Sorties** de la CloudFormation console. | DevOps ingénieur, AWS DevOps | 

### Nettoyez toutes les AWS ressources de la solution
<a name="clean-up-all-aws-resources-in-the-solution"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez les AWS ressources. | Après avoir testé la solution, exécutez la commande pour nettoyer les ressources`cdk destroy`. | AWS DevOps, DevOps ingénieur | 

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

**AWS documentation**
+ Ressources Amazon Bedrock :
  + [Accès aux modèles](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)
  + [Paramètres d'inférence pour les modèles de base](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters.html)
  + [Agents pour Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/agents.html)
  + [Bases de connaissances pour Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html)
+ [Création de fonctions Lambda avec Python](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html)
+ AWS CDK ressources :
  + [Commencez avec le AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)
  + [Résolution des AWS CDK problèmes courants](https://docs.aws.amazon.com/cdk/v2/guide/troubleshooting.html)
  + [Travailler avec le AWS CDK en Python](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-python.html)
+ [Générateur d'applications d'IA générative sur AWS](https://docs.aws.amazon.com/solutions/latest/generative-ai-application-builder-on-aws/solution-overview.html)

**Autres AWS ressources**
+ [Moteur vectoriel pour Amazon OpenSearch Serverless](https://aws.amazon.com/opensearch-service/serverless-vector-engine/)

**Autres ressources**
+ [LlamaIndex documentation](https://docs.llamaindex.ai/en/stable/)
+ [Documentation simplifiée](https://docs.streamlit.io/)

## Informations supplémentaires
<a name="develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases-additional"></a>

**Personnalisez l'assistant basé sur le chat avec vos propres données**

Pour intégrer vos données personnalisées dans le cadre du déploiement de la solution, suivez ces directives structurées. Ces étapes sont conçues pour garantir un processus d'intégration fluide et efficace, vous permettant de déployer efficacement la solution avec vos données personnalisées.

*Pour l'intégration des données de la base de connaissances*

**Préparation des données**

1. Localisez le `assets/knowledgebase_data_source/` répertoire.

1. Placez votre ensemble de données dans ce dossier.

**Ajustements de configuration**

1. Ouvrez le fichier `cdk.json`.

1. Accédez au `context/configure/paths/knowledgebase_file_name` champ, puis mettez-le à jour en conséquence.

1. Accédez au `bedrock_instructions/knowledgebase_instruction` champ, puis mettez-le à jour pour refléter avec précision les nuances et le contexte de votre nouveau jeu de données.

*Pour l'intégration des données structurelles*

**Organisation des données**

1. Dans le `assets/data_query_data_source/` répertoire, créez un sous-répertoire, tel que`tabular_data`.

1. Placez votre jeu de données structuré (les formats acceptables incluent CSV, JSON, ORC et Parquet) dans ce sous-dossier nouvellement créé.

1. Si vous vous connectez à une base de données existante, mettez à jour la fonction `code/lambda/action-lambda/build_query_engine.py` pour vous connecter `create_sql_engine()` à votre base de données.

**Mises à jour de configuration et de code**

1. Dans le `cdk.json` fichier, mettez à jour le `context/configure/paths/athena_table_data_prefix` champ pour l'aligner sur le nouveau chemin de données.

1. Révisez `code/lambda/action-lambda/dynamic_examples.csv` en incorporant de nouveaux text-to-SQL exemples correspondant à votre ensemble de données.

1. Révisez `code/lambda/action-lambda/prompt_templates.py` pour refléter les attributs de votre jeu de données structuré.

1. Dans le `cdk.json` fichier, mettez à jour le `context/configure/bedrock_instructions/action_group_description` champ pour expliquer le but et les fonctionnalités de la fonction `Action group` Lambda.

1. Dans le `assets/agent_api_schema/artifacts_schema.json` fichier, expliquez les nouvelles fonctionnalités de votre fonction `Action group` Lambda.

*Mise à jour générale*

Dans le `cdk.json` fichier, dans la `context/configure/bedrock_instructions/agent_instruction` section, fournissez une description complète des fonctionnalités et de l'objectif de conception prévus de l'agent Amazon Bedrock, en tenant compte des données récemment intégrées.

# Documentez les connaissances institutionnelles à partir de saisies vocales à l'aide d'Amazon Bedrock et 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 et Megan Wu, Amazon Web Services*

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

La saisie des connaissances institutionnelles est essentielle pour garantir le succès et la résilience de l'organisation. Le savoir institutionnel représente la sagesse collective, les connaissances et les expériences accumulées par les employés au fil du temps, souvent tacites et transmises de manière informelle. Cette mine d'informations englobe des approches uniques, des meilleures pratiques et des solutions à des problèmes complexes qui pourraient ne pas être documentés ailleurs. En formalisant et en documentant ces connaissances, les entreprises peuvent préserver la mémoire institutionnelle, favoriser l'innovation, améliorer les processus décisionnels et accélérer les cycles d'apprentissage des nouveaux employés. De plus, il favorise la collaboration, responsabilise les individus et cultive une culture d'amélioration continue. En fin de compte, l'exploitation des connaissances institutionnelles aide les entreprises à utiliser leur atout le plus précieux, à savoir l'intelligence collective de leur personnel, pour relever les défis, stimuler la croissance et conserver un avantage concurrentiel dans des environnements commerciaux dynamiques.

Ce modèle explique comment saisir les connaissances institutionnelles par le biais d'enregistrements vocaux d'employés supérieurs. Il utilise [Amazon Transcribe](https://docs.aws.amazon.com/transcribe/latest/dg/what-is.html) et [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) pour une documentation et une vérification systématiques. En documentant ces connaissances informelles, vous pouvez les conserver et les partager avec les cohortes d'employés suivantes. Cette initiative soutient l'excellence opérationnelle et améliore l'efficacité des programmes de formation grâce à l'incorporation de connaissances pratiques acquises grâce à l'expérience directe.

## Conditions préalables et limitations
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ [Docker, installé](https://docs.docker.com/engine/install/)
+ AWS Cloud Development Kit (AWS CDK) version 2.114.1 ou ultérieure, [installé](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_tools) et démarré dans la ou [les régions](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_bootstrap) AWS `us-east-1` `us-west-2`
+ [AWS CDK Toolkit version 2.114.1 ou ultérieure, installé](https://docs.aws.amazon.com/cdk/v2/guide/cli.html)
+ [Interface de ligne de commande AWS (AWS CLI)[, installée et](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) configurée](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [Python version 3.12 ou ultérieure, installée](https://www.python.org/downloads/)
+ Autorisations pour créer des ressources Amazon Transcribe, Amazon Bedrock, Amazon Simple Storage Service (Amazon S3) et AWS Lambda

**Limites**
+ Cette solution est déployée sur un seul compte AWS.
+ Cette solution ne peut être déployée que dans les régions AWS où Amazon Bedrock et Amazon Transcribe sont disponibles. Pour plus d'informations sur la disponibilité, consultez la documentation d'[Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-regions.html) et d'[Amazon Transcribe](https://docs.aws.amazon.com/transcribe/latest/dg/what-is.html#tsc-regions).
+ Les fichiers audio doivent être dans un format pris en charge par Amazon Transcribe. Pour obtenir la liste des formats pris en charge, consultez la section [Formats multimédia](https://docs.aws.amazon.com/transcribe/latest/dg/how-input.html#how-input-audio) de la documentation Transcribe.

**Versions du produit**
+ SDK AWS pour Python (Boto3), version 1.34.57 ou ultérieure
+ LangChain version 0.1.12 ou ultérieure

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

L'architecture représente un flux de travail sans serveur sur AWS. [AWS Step Functions orchestre les fonctions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) Lambda pour le traitement audio, l'analyse de texte et la génération de documents. Le schéma suivant montre le flux de travail Step Functions, également connu sous le nom de *machine à états*.

![\[Schéma d'architecture de la machine à états Step Functions générant un document\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/f1e0106d-b046-4adc-9718-c299efb7b436/images/e90298ca-1b7f-4c3e-97bd-311a9d5a4997.png)


Chaque étape de la machine à états est gérée par une fonction Lambda distincte. Les étapes du processus de génération de documents sont les suivantes :

1. La fonction `preprocess` Lambda valide l'entrée transmise à Step Functions et répertorie tous les fichiers audio présents dans le chemin du dossier d'URI Amazon S3 fourni. Les fonctions Lambda en aval du flux de travail utilisent la liste de fichiers pour valider, résumer et générer le document.

1. La fonction `transcribe` Lambda utilise Amazon Transcribe pour convertir les fichiers audio en transcriptions de texte. Cette fonction Lambda est chargée de lancer le processus de transcription et de transformer avec précision la parole en texte, qui est ensuite stocké pour un traitement ultérieur.

1. La fonction `validate` Lambda analyse les transcriptions de texte afin de déterminer la pertinence des réponses aux questions initiales. En utilisant un modèle linguistique étendu (LLM) via Amazon Bedrock, il identifie et sépare les réponses sur le sujet des réponses hors sujet.

1. La fonction `summarize` Lambda utilise Amazon Bedrock pour générer un résumé cohérent et concis des réponses sur le sujet.

1. La fonction `generate` Lambda assemble les résumés dans un document bien structuré. Il peut formater le document selon des modèles prédéfinis et inclure tout contenu ou donnée supplémentaire nécessaire.

1. Si l'une des fonctions Lambda échoue, vous recevez une notification par e-mail via Amazon Simple Notification Service (Amazon SNS).

Tout au long de ce processus, AWS Step Functions s'assure que chaque fonction Lambda est lancée dans le bon ordre. Cette machine à états a la capacité de traiter en parallèle pour améliorer l'efficacité. Un compartiment Amazon S3 fait office de référentiel de stockage central et soutient le flux de travail en gérant les différents formats de supports et de documents concernés.

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

**Services AWS**
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) est un service entièrement géré qui met à votre disposition des modèles de base très performants (FMs) issus des principales startups d'IA et d'Amazon via une API unifiée.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous permet d'exécuter du code sans avoir à provisionner ou à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [Amazon Simple Notification Service (Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)) vous aide à coordonner et à gérer l'échange de messages entre les éditeurs et les clients, y compris les serveurs Web et les adresses e-mail.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) est un service d'orchestration sans serveur qui vous permet de combiner les fonctions AWS Lambda et d'autres services AWS pour créer des applications critiques pour l'entreprise.  
+ [Amazon Transcribe](https://docs.aws.amazon.com/transcribe/latest/dg/what-is.html) est un service de reconnaissance vocale automatique qui utilise des modèles d'apprentissage automatique pour convertir le son en texte.

**Autres outils**
+ [LangChain](https://python.langchain.com/docs/get_started/introduction/)est un framework pour développer des applications basées sur de grands modèles de langage (LLMs).

**Référentiel de code**

Le code de ce modèle est disponible dans le GitHub [genai-knowledge-capture](https://github.com/aws-samples/genai-knowledge-capture)référentiel.

Le référentiel de code contient les fichiers et dossiers suivants :
+ `assets`dossier — Les actifs statiques de la solution, tels que le schéma d'architecture et le jeu de données public
+ `code/lambdas`dossier — Le code Python pour toutes les fonctions Lambda
  + `code/lambdas/generate`folder - Le code Python qui génère un document à partir des données résumées dans le compartiment S3
  + `code/lambdas/preprocess`dossier - Le code Python qui traite les entrées pour la machine à états Step Functions
  + `code/lambdas/summarize`dossier - Le code Python qui résume les données transcrites à l'aide du service Amazon Bedrock
  + `code/lambdas/transcribe`dossier - Le code Python qui convertit les données vocales (fichier audio) en texte à l'aide d'Amazon Transcribe
  + `code/lambdas/validate`folder - Le code Python qui valide si toutes les réponses concernent le même sujet
+ `code/code_stack.py`— Le fichier Python de construction AWS CDK utilisé pour créer des ressources AWS
+ `app.py`— Le fichier Python de l'application AWS CDK utilisé pour déployer les ressources AWS dans le compte AWS cible
+ `requirements.txt`— La liste de toutes les dépendances Python qui doivent être installées pour le CDK AWS
+ `cdk.json`— Le fichier d'entrée fournissant les valeurs requises pour créer des ressources

## Bonnes pratiques
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-best-practices"></a>

L'exemple de code fourni est uniquement destiné à proof-of-concept (PoC) ou à des fins pilotes. Si vous souhaitez appliquer la solution à la production, appliquez les meilleures pratiques suivantes :
+ Activer la [journalisation des accès Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html)
+ Activer les [journaux de flux VPC](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)

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

### Configurer les informations d'identification AWS sur votre station de travail locale
<a name="set-up-aws-credentials-on-your-local-workstation"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Exportez des variables pour le compte et la région AWS. | Pour fournir des informations d'identification AWS pour le CDK AWS à l'aide de variables d'environnement, exécutez les commandes suivantes.<pre>export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number><br />export CDK_DEFAULT_REGION=<Region></pre> | AWS DevOps, DevOps ingénieur | 
| Configurez le profil nommé de la CLI AWS. | Pour configurer le profil nommé de l'interface de ligne de commande AWS pour le compte, suivez les instructions de la section [Configuration et paramètres du fichier d'identification](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html). | AWS DevOps, DevOps ingénieur | 

### Configuration de votre environnement
<a name="set-up-your-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Clonez le dépôt sur votre poste de travail local. | Pour cloner le [genai-knowledge-capture](https://github.com/aws-samples/genai-knowledge-capture)dépôt, exécutez la commande suivante dans votre terminal.<pre>git clone https://github.com/aws-samples/genai-knowledge-capture</pre> | AWS DevOps, DevOps ingénieur | 
| (Facultatif) Remplacez les fichiers audio. | Pour personnaliser l'exemple d'application afin d'intégrer vos propres données, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.html) | AWS DevOps, DevOps ingénieur | 
| Configurez l'environnement virtuel Python. | Pour configurer l'environnement virtuel Python, exécutez les commandes suivantes.<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 ingénieur | 
| Synthétisez le code AWS CDK. | Pour convertir le code en configuration de CloudFormation pile AWS, exécutez la commande suivante.<pre>cdk synth</pre> | AWS DevOps, DevOps ingénieur | 

### Configuration et déploiement de la solution
<a name="configure-and-deploy-the-solution"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Provisionnez l'accès au modèle de base. | Activez l'accès au modèle Anthropic Claude 3 Sonnet pour votre compte AWS. Pour obtenir des instructions, voir [Ajouter un accès au modèle](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html#model-access-add) dans la documentation de Bedrock. | AWS DevOps | 
| Déployez des ressources dans le compte. | Pour déployer des ressources dans le compte AWS à l'aide du kit AWS CDK, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.html) | AWS DevOps, DevOps ingénieur | 
| Abonnez-vous à la rubrique Amazon SNS. | Pour vous abonner à la rubrique Amazon SNS pour recevoir des notifications, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.html) | AWS général | 

### Tester la solution
<a name="test-the-solution"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Lancez la machine d'état. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.html) | Développeur d'applications, AWS général | 

### Nettoyez toutes les ressources AWS de la solution
<a name="clean-up-all-aws-resources-in-the-solution"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez les ressources AWS. | Après avoir testé la solution, nettoyez les ressources :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.html) | AWS DevOps, DevOps ingénieur | 

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

**Documentation AWS**
+ Ressources Amazon Bedrock :
  + [Accès aux modèles](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)
  + [Paramètres d'inférence pour les modèles de base](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters.html)
+ Ressources AWS CDK :
  + [Commencez avec le kit AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)
  + [Utilisation du kit AWS CDK en Python](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-python.html)
  + [Résolution des problèmes courants liés au kit AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/troubleshooting.html)
  + [commandes du kit d'outils](https://docs.aws.amazon.com/cdk/v2/guide/cli.html#cli-commands)
+ Ressources AWS Step Functions :
  + [Commencer à utiliser AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/getting-started-with-sfn.html)
  + [Résolution des problèmes](https://docs.aws.amazon.com/step-functions/latest/dg/troubleshooting.html)
+ [Création de fonctions Lambda avec Python](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html)
+ [Générateur d'applications d'IA générative sur AWS](https://docs.aws.amazon.com/solutions/latest/generative-ai-application-builder-on-aws/solution-overview.html)

**Autres ressources**
+ [LangChain documentation](https://python.langchain.com/docs/get_started/introduction)

# Générez des recommandations personnalisées et reclassées à l'aide d'Amazon Personalize
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize"></a>

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

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

Ce modèle vous montre comment utiliser Amazon Personalize pour générer des recommandations personnalisées, y compris des recommandations reclassées, pour vos utilisateurs sur la base de l'ingestion de données d'interaction utilisateur en temps réel provenant de ces utilisateurs. L'exemple de scénario utilisé dans ce modèle est basé sur un site Web d'adoption d'animaux de compagnie qui génère des recommandations pour ses utilisateurs en fonction de leurs interactions (par exemple, les animaux qu'un utilisateur visite). En suivant l'exemple de scénario, vous apprendrez à utiliser Amazon Kinesis Data Streams pour ingérer les données d'interaction, AWS Lambda pour générer des recommandations et les reclasser, et Amazon Data Firehose pour stocker les données dans un compartiment Amazon Simple Storage Service (Amazon S3). Vous apprendrez également à utiliser AWS Step Functions pour créer une machine à états qui gère la version de la solution (c'est-à-dire un modèle entraîné) qui génère vos recommandations.

## Conditions préalables et limitations
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-prereqs"></a>

**Conditions préalables**
+ Un [compte AWS](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/) actif avec un kit de développement [cloud AWS (AWS CDK) amorcé](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html)
+ [Interface de ligne de commande AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) avec informations d'identification configurées
+ [Python 3.9](https://www.python.org/downloads/release/python-390/)

**Versions du produit**
+ Python 3.9
+ AWS CDK 2.23.0 ou version ultérieure
+ AWS CLI 2.7.27 ou version ultérieure

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

**Pile technologique**
+ Amazon Data Firehose
+ Amazon Kinesis Data Streams
+ Amazon Personalize
+ Amazon Simple Storage Service (Amazon S3)
+ Kit de développement cloud AWS (AWS CDK)
+ Interface de ligne de commande AWS (AWS CLI)
+ AWS Lambda
+ AWS Step Functions

**Architecture cible**

Le schéma suivant illustre un pipeline permettant d'ingérer des données en temps réel dans Amazon Personalize. Le pipeline utilise ensuite ces données pour générer des recommandations personnalisées et reclassées pour les utilisateurs.

![\[Architecture d'ingestion de données pour Amazon Personalize\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/42eb193b-2347-408a-8b25-46beeb3b29ca/images/786dbd56-7d7f-41bb-90f6-d4485d73fe15.png)


Le schéma suivant illustre le flux de travail suivant :

1. Kinesis Data Streams ingère des données utilisateur en temps réel (par exemple, des événements tels que la visite d'animaux de compagnie) pour les traiter par Lambda et Firehose.

1. Une fonction Lambda traite les enregistrements de Kinesis Data Streams et lance un appel d'API pour ajouter l'interaction utilisateur contenue dans l'enregistrement à un outil de suivi d'événements dans Amazon Personalize.

1. Une règle basée sur le temps invoque une machine d'état Step Functions et génère de nouvelles versions de solutions pour les modèles de recommandation et de reclassement en utilisant les événements du suivi des événements d'Amazon Personalize.

1. Les [campagnes](https://docs.aws.amazon.com/personalize/latest/dg/campaigns.html) Amazon Personalize sont mises à jour par le State Machine pour utiliser la nouvelle [version de la solution](https://docs.aws.amazon.com/personalize/latest/dg/creating-a-solution-version.html).

1. Lambda reclasse la liste des articles recommandés en lançant la campagne de reclassement Amazon Personalize.

1. Lambda récupère la liste des articles recommandés en appelant la campagne de recommandations Amazon Personalize.

1. Firehose enregistre les événements dans un compartiment S3 où ils sont accessibles sous forme de données historiques.

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

**Outils AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) est un framework de développement logiciel qui vous aide à définir et à provisionner l'infrastructure du cloud AWS sous forme de code.
+ [L'interface de ligne de commande AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir avec les services AWS par le biais de commandes dans votre shell de ligne de commande.
+ [Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) vous aide à fournir des [données de streaming](https://aws.amazon.com/streaming-data/) en temps réel à d'autres services AWS, à des points de terminaison HTTP personnalisés et à des points de terminaison HTTP détenus par des fournisseurs de services tiers pris en charge.
+ [Amazon Kinesis Data](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) Streams vous aide à collecter et à traiter de grands flux d'enregistrements de données en temps réel.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous permet d'exécuter du code sans avoir à provisionner ou à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [Amazon Personalize](https://docs.aws.amazon.com/personalize/latest/dg/what-is-personalize.html) est un service d'apprentissage automatique (ML) entièrement géré qui vous aide à générer des recommandations d'articles pour vos utilisateurs en fonction de vos données.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) est un service d'orchestration sans serveur qui vous permet de combiner les fonctions Lambda et d'autres services AWS pour créer des applications critiques pour l'entreprise.

**Autres outils**
+ [pytest](https://docs.pytest.org/en/7.2.x/index.html) est un framework Python pour écrire de petits tests lisibles.
+ [Python](https://www.python.org/) est un langage de programmation informatique polyvalent.

**Code**

Le code de ce modèle est disponible dans le référentiel GitHub [Animal Recommender](https://github.com/aws-samples/personalize-pet-recommendations). Vous pouvez utiliser le CloudFormation modèle AWS de ce référentiel pour déployer les ressources de l'exemple de solution.

**Note**  
Les versions de la solution Amazon Personalize, le suivi des événements et les campagnes sont soutenus par [des ressources personnalisées](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html) (au sein de l'infrastructure) qui s'appuient sur CloudFormation des ressources natives.

## Épopées
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-epics"></a>

### Création de l'infrastructure
<a name="create-the-infrastructure"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un environnement Python isolé. | **Configuration Mac/Linux**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/generate-personalized-and-re-ranked-recommendations-using-amazon-personalize.html)**Configuration de Windows**Pour créer manuellement un environnement virtuel, exécutez la `% .venv\Scripts\activate.bat` commande depuis votre terminal. | DevOps ingénieur | 
| Synthétisez le CloudFormation modèle. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/generate-personalized-and-re-ranked-recommendations-using-amazon-personalize.html)À l'étape 2, `CDK_ENVIRONMENT` fait référence au `config/{env}.yml` fichier. | DevOps ingénieur | 
| Déployez des ressources et créez une infrastructure. | Pour déployer les ressources de la solution, exécutez la `./deploy.sh` commande depuis votre terminal.Cette commande installe les dépendances Python requises. Un script Python crée un compartiment S3 et une clé AWS Key Management Service (AWS KMS), puis ajoute les données de départ pour les créations de modèles initiales. Enfin, le script s'exécute `cdk deploy` pour créer l'infrastructure restante.L'entraînement initial du modèle a lieu lors de la création de la pile. La création de la pile peut prendre jusqu'à deux heures. | DevOps ingénieur | 

## Ressources connexes
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-resources"></a>
+ [Recommandeur pour animaux](https://github.com/aws-samples/personalize-pet-recommendations) () GitHub
+ [Documentation de référence AWS CDK](https://docs.aws.amazon.com/cdk/api/v2/)
+ [Documentation Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)
+ [Optimisez les recommandations personnalisées pour un indicateur commercial de votre choix avec Amazon Personalize](https://aws.amazon.com/blogs/machine-learning/optimize-personalized-recommendations-for-a-business-metric-of-your-choice-with-amazon-personalize/) (AWS Machine Learning Blog)

## Informations supplémentaires
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-additional"></a>

**Exemples de charges utiles et de réponses**

*Fonction Lambda de recommandation*

Pour récupérer des recommandations, soumettez une demande à la fonction Lambda de recommandation avec une charge utile au format suivant :

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

L'exemple de réponse suivant contient une liste de groupes d'animaux :

```
[{"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 vous omettez ce `userId` champ, la fonction renvoie des recommandations générales.

*Re-classement de la fonction Lambda*

Pour utiliser le reclassement, soumettez une demande à la fonction Lambda de reclassement. La charge utile contient tous `userId` les éléments IDs à reclasser et leurs métadonnées. Les exemples de données suivants utilisent les classes Oxford Pets pour `animal_species_id` (1=cat, 2=dog) et des nombres entiers de 1 à 5 pour et : `animal_age_id` `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 fonction Lambda reclasse ces articles, puis renvoie une liste ordonnée qui inclut l'article IDs et la réponse directe d'Amazon Personalize. Il s'agit d'une liste classée des groupes d'animaux auxquels appartiennent les objets et de leur score. Amazon Personalize utilise des recettes de [personnalisation utilisateur](https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-new-item-USER_PERSONALIZATION.html) et de [classement personnalisé](https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-search.html) pour inclure un score pour chaque article dans les recommandations. Ces scores représentent la certitude relative dont dispose Amazon Personalize quant au prochain article que l'utilisateur choisira. Des scores plus élevés représentent une plus grande certitude.

```
{
   "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"
   }
}
```

*Charge utile Amazon Kinesis*

La charge utile à envoyer à Amazon Kinesis est au format suivant :

```
{
    "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"
        
    }
}
```

**Note**  
Le `userId` champ est supprimé pour un utilisateur non authentifié.

# Rationalisez les flux de travail d'apprentissage automatique, du développement local aux expériences évolutives en utilisant l' SageMaker IA et Hydra
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker"></a>

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

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

Ce modèle fournit une approche unifiée pour configurer et exécuter des algorithmes d'apprentissage automatique (ML), des tests locaux à la production sur Amazon SageMaker AI. Les algorithmes ML sont au centre de ce modèle, mais son approche s'étend à l'ingénierie des fonctionnalités, à l'inférence et aux pipelines ML complets. Ce modèle illustre la transition entre le développement de scripts locaux et les tâches de formation à l' SageMaker IA à travers un exemple de cas d'utilisation.

Un flux de travail ML typique consiste à développer et à tester des solutions sur une machine locale, à exécuter des expériences à grande échelle (par exemple, avec différents paramètres) dans le cloud et à déployer la solution approuvée dans le cloud. Ensuite, la solution déployée doit être surveillée et maintenue. Sans approche unifiée de ce flux de travail, les développeurs doivent souvent refactoriser leur code à chaque étape. Si la solution dépend d'un grand nombre de paramètres susceptibles de changer à n'importe quel stade de ce flux de travail, il peut devenir de plus en plus difficile de rester organisé et cohérent. 

Ce modèle répond à ces défis. Tout d'abord, il élimine le besoin de refactoriser le code entre les environnements en fournissant un flux de travail unifié qui reste cohérent, qu'il s'exécute sur des machines locales, dans des conteneurs ou sur SageMaker l'IA. Ensuite, il simplifie la gestion des paramètres grâce au système de configuration d'Hydra, dans lequel les paramètres sont définis dans des fichiers de configuration distincts qui peuvent être facilement modifiés et combinés, avec enregistrement automatique de la configuration de chaque exécution. Pour plus de détails sur la manière dont ce modèle permet de relever ces défis, voir [Informations supplémentaires](#streamline-machine-learning-workflows-by-using-amazon-sagemaker-additional).

## Conditions préalables et limitations
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS
+ Un [rôle d'utilisateur Gestion des identités et des accès AWS (IAM) pour le](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) déploiement et le démarrage des tâches de formation à l' SageMaker IA
+ AWS Command Line Interface (AWS CLI) version 2.0 ou ultérieure [installée](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) et [configurée](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [Poetry](https://python-poetry.org/) version 1.8 ou ultérieure, mais antérieure à 2.0, installée
+ [Docker installé](https://www.docker.com/)
+ [Version 3.10.x](https://www.python.org/downloads/release/python-31011/) de Python

**Limites**
+ Le code cible actuellement uniquement les postes de formation SageMaker liés à l'IA. Il est simple de l'étendre aux tâches de traitement et à l'ensemble des pipelines d' SageMaker IA.
+ Pour une configuration d' SageMaker IA entièrement productive, des détails supplémentaires doivent être mis en place. Il peut s'agir de clés custom AWS Key Management Service (AWS KMS) pour le calcul et le stockage, ou de configurations réseau. Vous pouvez également configurer ces options supplémentaires en utilisant Hydra dans un sous-dossier dédié du `config` dossier.
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, consultez la section [AWS Services par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

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

Le schéma suivant décrit l'architecture de la solution.

![\[Flux de travail pour créer et exécuter des formations sur l' SageMaker IA ou des tâches HPO.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/1db57484-f85c-49a6-b870-471dade02b26/images/d80e7474-a975-4d92-8f66-2d34e33053fd.png)


Le schéma suivant illustre le flux de travail suivant :

1. Le data scientist peut itérer l'algorithme à petite échelle dans un environnement local, ajuster les paramètres et tester rapidement le script d'apprentissage sans avoir besoin de Docker ou SageMaker d'IA. (Pour plus de détails, consultez la tâche « Exécuter localement pour des tests rapides » dans [Epics](#streamline-machine-learning-workflows-by-using-amazon-sagemaker-epics).)

1. Une fois satisfait de l'algorithme, le data scientist crée et envoie l'image Docker vers le référentiel Amazon Elastic Container Registry (Amazon ECR) nommé. `hydra-sm-artifact` (Pour plus de détails, consultez « Exécuter des flux de travail sur l' SageMaker IA » dans [Epics](#streamline-machine-learning-workflows-by-using-amazon-sagemaker-epics).)

1. Le data scientist lance des tâches d'entraînement basées sur l' SageMaker IA ou des tâches d'optimisation des hyperparamètres (HPO) à l'aide de scripts Python. Pour les tâches de formation régulières, la configuration ajustée est écrite dans le bucket Amazon Simple Storage Service (Amazon S3) nommé. `hydra-sample-config` Pour les tâches HPO, le jeu de configuration par défaut situé dans le `config` dossier est appliqué.

1. La tâche de formation basée sur l' SageMaker IA extrait l'image Docker, lit les données d'entrée depuis le compartiment `hydra-sample-data` Amazon S3 et récupère la configuration depuis le compartiment Amazon S3 `hydra-sample-config` ou utilise la configuration par défaut. Après l'entraînement, la tâche enregistre les données de sortie dans le compartiment Amazon S3`hydra-sample-data`.

**Automatisation et mise à l'échelle**
+ [Pour une formation, un recyclage ou une inférence automatisés, vous pouvez intégrer le AWS CLI code à des services tels que [AWS Lambda[AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html), ou Amazon. EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)
+ La mise à l'échelle peut être réalisée en modifiant les configurations relatives à la taille des instances ou en ajoutant des configurations pour la formation distribuée.

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

**Services AWS**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)vous aide à configurer les AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie, de bout Comptes AWS en bout Régions AWS.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir Services AWS par le biais de commandes dans votre interface de ligne de commande. Pour ce modèle, le AWS CLI est utile à la fois pour la configuration initiale des ressources et pour les tests.
+ [Amazon Elastic Container Registry (Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)) est un service géré de registre d'images de conteneurs sécurisé, évolutif et fiable.
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/?id=docs_gateway) est un service géré d'apprentissage automatique (ML) qui vous aide à créer et à former des modèles de machine learning, puis à les déployer dans un environnement hébergé prêt pour la production. SageMaker AI Training est un service de ML entièrement géré au sein de l' SageMaker IA qui permet la formation de modèles de ML à grande échelle. L'outil peut gérer efficacement les exigences informatiques des modèles de formation, en utilisant l'évolutivité intégrée et l'intégration avec d'autres modèles. Services AWS SageMaker AI Training prend également en charge des algorithmes et des conteneurs personnalisés, ce qui le rend flexible pour un large éventail de flux de travail ML.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.

**Autres outils**
+ [Docker](https://www.docker.com/) est un ensemble de produits de plateforme en tant que service (PaaS) qui utilisent la virtualisation au niveau du système d'exploitation pour fournir des logiciels dans des conteneurs. Il a été utilisé dans ce modèle pour garantir des environnements cohérents à différentes étapes, du développement au déploiement, ainsi que pour garantir la fiabilité des dépendances et du code. La conteneurisation de Docker a facilité le dimensionnement et le contrôle des versions dans l'ensemble du flux de travail.
+ [Hydra est un](https://hydra.cc/) outil de gestion de configuration qui offre la flexibilité nécessaire à la gestion de plusieurs configurations et à la gestion dynamique des ressources. Il joue un rôle essentiel dans la gestion des configurations d'environnement, permettant un déploiement fluide dans différents environnements. Pour plus de détails sur Hydra, voir [Informations supplémentaires](#streamline-machine-learning-workflows-by-using-amazon-sagemaker-additional).
+ [Python](https://www.python.org/) est un langage de programmation informatique polyvalent. Python a été utilisé pour écrire le code ML et le flux de travail de déploiement.
+ [Poetry](https://python-poetry.org/) est un outil de gestion des dépendances et d'empaquetage en Python.

**Référentiel de code**

Le code de ce modèle est disponible dans le dépôt GitHub [configuring-sagemaker-training-jobs-with-hydra](https://github.com/aws-samples/configuring-sagemaker-training-jobs-with-hydra).

## Bonnes pratiques
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-best-practices"></a>
+ Choisissez un rôle IAM pour le déploiement et le démarrage des tâches de formation à l' SageMaker IA qui respecte le principe du moindre privilège et accorde les autorisations minimales requises pour effectuer une tâche. Pour plus d'informations, consultez les sections [Accorder le moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) et [Bonnes pratiques en matière de sécurité](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dans la documentation IAM.
+ Utilisez des informations d'identification temporaires pour accéder au rôle IAM dans le terminal.

## Épopées
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-epics"></a>

### Configuration de l'environnement
<a name="set-up-the-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez et activez l'environnement virtuel. | Pour créer et activer l'environnement virtuel, exécutez les commandes suivantes à la racine du référentiel :<pre>poetry install <br />poetry shell</pre> | AWS général | 
| Déployez l'infrastructure.  | Pour déployer l'infrastructure à l'aide de CloudFormation, exécutez la commande suivante :<pre>aws cloudformation deploy --template-file infra/hydra-sagemaker-setup.yaml --stack-name hydra-sagemaker-setup  --capabilities CAPABILITY_NAMED_IAM</pre> | AWS général, DevOps ingénieur | 
| Téléchargez les exemples de données.  | Pour télécharger les données d'entrée d'[openml](https://www.openml.org/) sur votre machine locale, exécutez la commande suivante :<pre>python scripts/download_data.py</pre> | AWS général | 
| Exécutez localement pour des tests rapides. | Pour exécuter le code d'entraînement localement à des fins de test, exécutez la commande suivante :<pre>python mypackage/train.py data.train_data_path=data/train.csv evaluation.base_dir_path=data</pre>Les journaux de toutes les exécutions sont stockés par heure d'exécution dans un dossier appelé`outputs`. Pour plus d'informations, consultez la section « Sortie » du [GitHub référentiel](https://github.com/aws-samples/configuring-sagemaker-training-jobs-with-hydra).Vous pouvez également effectuer plusieurs entraînements en parallèle, avec différents paramètres, en utilisant cette `--multirun` fonctionnalité. Pour plus de détails, consultez la [documentation d'Hydra](https://hydra.cc/docs/tutorials/basic/running_your_app/multi-run/). | Scientifique des données | 

### Exécutez des flux de travail sur l' SageMaker IA
<a name="run-workflows-on-sm"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Définissez les variables d'environnement. | Pour exécuter votre tâche sur l' SageMaker IA, définissez les variables d'environnement suivantes, en indiquant votre identifiant Région AWS et votre Compte AWS identifiant :<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 général | 
| Créez et publiez une image Docker. | Pour créer l'image Docker et la transférer vers le référentiel Amazon ECR, exécutez la commande suivante :<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>Cette tâche suppose que vous disposez d'informations d'identification valides dans votre environnement. L'image Docker est envoyée vers le référentiel Amazon ECR spécifié dans la variable d'environnement de la tâche précédente et est utilisée pour activer le conteneur SageMaker AI dans lequel la tâche de formation sera exécutée. | Ingénieur ML, General AWS | 
| Copiez les données d'entrée sur Amazon S3. | Le poste de formation à l' SageMaker IA doit récupérer les données d'entrée. Pour copier les données d'entrée dans le compartiment Amazon S3 pour les données, exécutez la commande suivante : <pre>aws s3 cp data/train.csv "${INPUT_DATA_S3_PATH}train.csv" </pre> | Ingénieur de données, General AWS | 
| Soumettez des offres de formation en SageMaker IA. | Pour simplifier l'exécution de vos scripts, spécifiez les paramètres de configuration par défaut dans le `default.yaml` fichier. En plus de garantir la cohérence entre les cycles, cette approche offre également la flexibilité nécessaire pour remplacer facilement les paramètres par défaut selon les besoins. Consultez l’exemple suivant:<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 général, ingénieur ML, scientifique des données | 
| Exécutez le réglage des hyperparamètres de l' SageMaker IA. | L'exécution du réglage des hyperparamètres de l' SageMaker IA est similaire à la soumission d'une tâche de formation SageMaker AII. Cependant, le script d'exécution diffère sur certains points importants, comme vous pouvez le voir dans le fichier [start\$1sagemaker\$1hpo\$1job.py](https://github.com/aws-samples/configuring-sagemaker-training-jobs-with-hydra/blob/main/scripts/start_sagemaker_hpo_job.py). Les hyperparamètres à régler doivent être transmis via la charge utile du boto3, et non par un canal vers le poste de formation.Pour démarrer la tâche d'optimisation des hyperparamètres (HPO), exécutez les commandes suivantes :<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> | Scientifique des données | 

## Résolution des problèmes
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Jeton expiré | Exportez de nouvelles AWS informations d'identification. | 
| Absence d'autorisations IAM | Assurez-vous d'exporter les informations d'identification d'un rôle IAM disposant de toutes les autorisations IAM requises pour déployer le CloudFormation modèle et démarrer les tâches de formation à l' SageMaker IA. | 

## Ressources connexes
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-resources"></a>
+ [Entraînez un modèle avec Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html) (AWS documentation)
+ [Qu'est-ce que le réglage des hyperparamètres ?](https://aws.amazon.com/what-is/hyperparameter-tuning/#:~:text=Hyperparameter%20tuning%20allows%20data%20scientists,the%20model%20as%20a%20hyperparameter.)

## Informations supplémentaires
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-additional"></a>

Ce modèle permet de relever les défis suivants :

**Cohérence entre le développement local et le déploiement à grande échelle** : grâce à ce modèle, les développeurs peuvent utiliser le même flux de travail, qu'ils utilisent des scripts Python locaux, qu'ils exécutent des conteneurs Docker locaux, qu'ils mènent des expériences de grande envergure sur l' SageMaker IA ou qu'ils déploient en production sur SageMaker l'IA. Cette cohérence est importante pour les raisons suivantes :
+ **Itération plus rapide** — Cela permet une expérimentation locale rapide sans nécessiter d'ajustements majeurs lors de la mise à l'échelle.
+ **Pas de refactorisation : la** transition vers des expériences de plus grande envergure sur l' SageMaker IA se fait sans difficulté et ne nécessite aucune refonte de la configuration existante.
+ **Amélioration continue** — Le développement de nouvelles fonctionnalités et l'amélioration continue de l'algorithme sont simples car le code reste le même dans tous les environnements.

**Gestion de la configuration** — Ce modèle utilise [Hydra, un](https://hydra.cc/) outil de gestion de configuration, pour offrir les avantages suivants :
+ Les paramètres sont définis dans des fichiers de configuration, distincts du code.
+ Les différents ensembles de paramètres peuvent être facilement échangés ou combinés.
+ Le suivi des expériences est simplifié car la configuration de chaque exécution est enregistrée automatiquement.
+ Les expériences dans le cloud peuvent utiliser la même structure de configuration que les exécutions locales, ce qui garantit la cohérence.

Avec Hydra, vous pouvez gérer efficacement la configuration en activant les fonctionnalités suivantes :
+ **Divisez les configurations : divisez** les configurations de votre projet en éléments plus petits et faciles à gérer qui peuvent être modifiés indépendamment. Cette approche facilite la gestion de projets complexes.
+ **Ajustez facilement les paramètres par défaut** : modifiez rapidement vos configurations de base afin de tester plus facilement de nouvelles idées.
+ **Alignez les entrées CLI et les fichiers de configuration** : combinez facilement les entrées de ligne de commande avec vos fichiers de configuration. Cette approche réduit l'encombrement et la confusion, ce qui rend votre projet plus facile à gérer au fil du temps.

 

# Translate le langage naturel en requêtes DSL pour OpenSearch et requêtes Elasticsearch
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch"></a>

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

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

Ce modèle montre comment utiliser de grands modèles de langage (LLMs) pour convertir des requêtes en langage naturel en langage spécifique au domaine de requête (requête DSL), ce qui permet aux utilisateurs d'interagir plus facilement avec des services de recherche tels qu' OpenSearch Elasticsearch sans connaissance approfondie du langage de requête. Cette ressource est particulièrement utile pour les développeurs et les scientifiques des données qui souhaitent améliorer les applications basées sur la recherche grâce à des fonctionnalités de requête en langage naturel, améliorant ainsi l'expérience utilisateur et les fonctionnalités de recherche.

Le modèle illustre les techniques d'ingénierie rapide, de raffinement itératif et d'incorporation de connaissances spécialisées, qui sont toutes cruciales pour la génération de données synthétiques. Bien que cette approche se concentre principalement sur la conversion des requêtes, elle démontre implicitement le potentiel d'augmentation des données et de production de données synthétiques évolutives. Cette base pourrait être étendue à des tâches de génération de données synthétiques plus complètes, afin de mettre en évidence le pouvoir de relier les entrées LLMs en langage naturel non structurées aux sorties structurées spécifiques à l'application.

Cette solution n'implique pas d'outils de migration ou de déploiement au sens traditionnel du terme. Il se concentre plutôt sur la démonstration d'une preuve de concept (PoC) pour convertir les requêtes en langage naturel en requêtes DSL en utilisant. LLMs
+ Le modèle utilise un bloc-notes Jupyter comme step-by-step guide pour configurer l'environnement et implémenter la text-to-query conversion.
+ Il utilise Amazon Bedrock pour y accéder LLMs, ce qui est crucial pour interpréter le langage naturel et générer des requêtes appropriées.
+ La solution est conçue pour fonctionner avec Amazon OpenSearch Service. Vous pouvez suivre un processus similaire pour Elasticsearch, et les requêtes générées pourraient éventuellement être adaptées à des moteurs de recherche similaires.

[Query DSL](https://opensearch.org/docs/latest/query-dsl/) est un langage de recherche flexible basé sur JSON qui est utilisé pour créer des requêtes complexes à la fois dans Elasticsearch et. OpenSearch Il vous permet de spécifier des requêtes dans le paramètre de requête des opérations de recherche et prend en charge différents types de requêtes. Une requête DSL inclut des requêtes foliaires et des requêtes composées. Les requêtes Leaf recherchent des valeurs spécifiques dans certains champs et incluent le texte intégral, le niveau terminologique, les requêtes géographiques, les requêtes de jointure, les requêtes d'envergure et les requêtes spécialisées. Les requêtes composées agissent comme des enveloppes pour plusieurs clauses foliaires ou composées, et combinent leurs résultats ou modifient leur comportement. Query DSL permet de créer des recherches sophistiquées, allant de simples requêtes assorties à des requêtes complexes comportant plusieurs clauses qui produisent des résultats très spécifiques. Query DSL est particulièrement utile pour les projets qui nécessitent des fonctionnalités de recherche avancées, une construction de requêtes flexible et des structures de requêtes basées sur le langage JSON.

Ce modèle utilise des techniques telles que les instructions en quelques clics, les instructions système, les sorties structurées, le chaînage des invites, la fourniture de contexte et les instructions spécifiques aux tâches pour la conversion DSL. text-to-query Pour obtenir des définitions et des exemples de ces techniques, consultez la section [Informations supplémentaires](#translate-natural-language-query-dsl-opensearch-elasticsearch-additional).

## Conditions préalables et limitations
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch-prereqs"></a>

**Conditions préalables**

Pour utiliser efficacement le bloc-notes Jupyter afin de convertir des requêtes en langage naturel en requêtes DSL, vous devez :
+ **Connaissance des ordinateurs portables Jupyter**. Compréhension de base de la navigation et de l'exécution de code dans un environnement de bloc-notes Jupyter.
+ **Environnement Python**. Un environnement Python fonctionnel, de préférence Python 3.x, avec les bibliothèques nécessaires installées.
+ **Elasticsearch ou Knowledge. OpenSearch ** Connaissances de base d'Elasticsearch ou OpenSearch, notamment, de son architecture et de la manière d'exécuter des requêtes.
+ **Compte AWS**. Un actif Compte AWS pour accéder à Amazon Bedrock et à d'autres services connexes.
+ **Bibliothèques et dépendances**. Installation des bibliothèques spécifiques mentionnées dans le bloc-notes, par exemple `boto3` pour AWS l'interaction, et de toute autre dépendance requise pour l'intégration du LLM.
+ **Accès aux modèles dans Amazon Bedrock.** Ce modèle utilise trois Claude LLMs d'Anthropic. Ouvrez la [console Amazon Bedrock](https://console.aws.amazon.com/bedrock/) et choisissez **Model access**. Sur l'écran suivant, choisissez **Activer des modèles spécifiques** et sélectionnez les trois modèles suivants :
  + Claude 3 Sonnet
  + Sonnet de Claude 3.5
  + Claude 3 Haiku
+ **Politiques IAM et rôle IAM appropriés**. Pour exécuter le bloc-notes dans un Compte AWS, votre rôle Gestion des identités et des accès AWS (IAM) nécessite la `SagemakerFullAccess` politique ainsi que la politique fournie dans la section [Informations supplémentaires](#translate-natural-language-query-dsl-opensearch-elasticsearch-additional), que vous pouvez nommer`APGtext2querydslpolicy`. Cette politique inclut l'abonnement aux trois modèles Claude listés.

La mise en place de ces prérequis garantit une expérience fluide lorsque vous travaillez avec l'ordinateur portable et que vous implémentez les text-to-query fonctionnalités.

**Limites**
+ **Statut de preuve de concept**. Ce projet est principalement conçu comme une preuve de concept (PoC). Il montre le potentiel de l'utilisation LLMs pour convertir des requêtes en langage naturel en requêtes DSL, mais il se peut qu'il ne soit pas entièrement optimisé ou prêt pour la production.
+ **Limites du modèle** :

  **Contraintes liées à la fenêtre contextuelle***.* Lorsque vous utilisez LLMs les fenêtres disponibles sur Amazon Bedrock, tenez compte des limites de la fenêtre contextuelle :

  Modèles Claude (en septembre 2024) :
  + Claude 3 Opus : 200 000 jetons
  + Claude 3 Sonnet : 200 000 jetons
  + Haïku Claude 3 : 200 000 jetons

  D'autres modèles sur Amazon Bedrock peuvent avoir des tailles de fenêtre contextuelles différentes. Consultez toujours la documentation la plus récente pour obtenir les dernières informations.

  **Disponibilité du modèle***.*La disponibilité de certains modèles sur Amazon Bedrock peut varier. Assurez-vous d'avoir accès aux modèles requis avant de mettre en œuvre cette solution.
+ **Restrictions supplémentaires**
  + **Complexité des requêtes**. L'efficacité du langage naturel pour interroger la conversion DSL peut varier en fonction de la complexité de la requête d'entrée.
  + **Compatibilité des versions**. La requête DSL générée peut nécessiter des ajustements en fonction de la version spécifique d'Elasticsearch ou de OpenSearch celle que vous utilisez.
  + **Rendement**. Ce modèle fournit une implémentation PoC, de sorte que la vitesse et la précision de génération des requêtes peuvent ne pas être optimales pour une utilisation en production à grande échelle.
  + **Coût**. L'utilisation LLMs dans Amazon Bedrock entraîne des frais. Soyez au courant de la structure de prix du modèle que vous avez choisi. Pour plus d’informations, consultez [Tarification d’Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-pricing.html).
  + **Entretien**. Des mises à jour régulières des instructions et de la sélection du modèle peuvent être nécessaires pour suivre les avancées de la technologie LLM et les modifications de la syntaxe DSL des requêtes.

**Versions du produit**

Cette solution a été testée sur Amazon OpenSearch Service. Si vous souhaitez utiliser Elasticsearch, vous devrez peut-être apporter quelques modifications pour reproduire exactement les fonctionnalités de ce modèle.
+ **OpenSearch compatibilité des versions**. **OpenSearch **maintient la rétrocompatibilité dans les versions majeures. Par exemple :
  + OpenSearch Les clients 1.x sont généralement compatibles avec les clusters OpenSearch 1.x.
  + OpenSearch Les clients 2.x sont généralement compatibles avec les clusters OpenSearch 2.x.

  Cependant, il est toujours préférable d'utiliser la même version mineure pour le client et le cluster lorsque cela est possible.
+ **OpenSearch Compatibilité avec les API**. **OpenSearch **assure la compatibilité des API avec Elasticsearch OSS 7.10.2 pour la plupart des opérations. Cependant, certaines différences existent, notamment dans les nouvelles versions.
+ **OpenSearch considérations relatives aux mises à niveau** :
  + Les rétrogradations directes ne sont pas prises en charge. Utilisez des instantanés pour revenir en arrière si nécessaire.
  + Lors de la mise à niveau, consultez la [matrice de compatibilité et les notes de version](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/supported-operations.html) pour détecter toute modification importante.

**Considérations relatives à Elasticsearch**
+ **Version d'Elasticsearch**. La version principale d'Elasticsearch que vous utilisez est essentielle, car la syntaxe et les fonctionnalités des requêtes peuvent changer entre les versions principales. Actuellement, la dernière version stable est Elasticsearch 8.x. Assurez-vous que vos requêtes sont compatibles avec votre version spécifique d'Elasticsearch.
+ Version de la bibliothèque **DSL de requêtes Elasticsearch**. Si vous utilisez la bibliothèque Python DSL de requêtes Elasticsearch, assurez-vous que sa version correspond à votre version d'Elasticsearch. Par exemple :
  + Pour Elasticsearch 8.x, utilisez une `elasticsearch-dsl` version supérieure ou égale à 8.0.0 mais inférieure à 9.0.0.
  + Pour Elasticsearch 7.x, utilisez une `elasticsearch-dsl` version supérieure ou égale à 7.0.0 mais inférieure à 8.0.0.
+ **Version de la bibliothèque cliente**. Que vous utilisiez le client Elasticsearch officiel ou un client spécifique à une langue, assurez-vous qu'il est compatible avec votre version d'Elasticsearch.
+ **Demande la version DSL**. Query DSL évolue avec les versions d'Elasticsearch. Certains types de requêtes ou paramètres peuvent être obsolètes ou introduits dans différentes versions.
+ **Version cartographique**. La façon dont vous définissez les mappages pour vos index et passez d'une version à l'autre. Consultez toujours la documentation de mappage correspondant à votre version spécifique d'Elasticsearch.
+ **Versions des outils d'analyse**. Si vous utilisez des analyseurs, des tokeniseurs ou d'autres outils d'analyse de texte, leur comportement ou leur disponibilité peuvent changer d'une version à l'autre.

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

**Architecture cible**

Le schéma suivant illustre l'architecture de ce modèle.

![\[Architecture permettant de traduire le langage naturel pour interroger le DSL dans Amazon Bedrock.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/75296405-2893-4328-9551-9bcc6ec7fd3e/images/ffb1b893-d23c-4e1c-b679-8063b4f85a8a.png)


où :

1. Saisie par l'utilisateur et invite du système avec quelques exemples d'instructions. Le processus commence par un utilisateur qui fournit une requête en langage naturel ou une demande de génération de schéma.

1. Amazon Bedrock. La saisie est envoyée à Amazon Bedrock, qui sert d'interface pour accéder au Claude LLM.

1. Claude 3 Sonnet LLM. Amazon Bedrock utilise le sonnet Claude 3 de la famille Claude 3 LLMs pour traiter les données saisies. Il interprète et génère le DSL Elasticsearch ou OpenSearch de requête approprié. Pour les demandes de schéma, il génère des Elasticsearch synthétiques ou OpenSearch des mappings.

1. Génération de requêtes DSL. Pour les requêtes en langage naturel, l'application prend le résultat du LLM et le formate dans un DSL de requête Elasticsearch ou OpenSearch Service valide.

1. Génération de données synthétiques. L'application utilise également des schémas pour créer un Elasticsearch synthétique ou OpenSearch des données à charger dans une collection OpenSearch sans serveur à des fins de test.

1. OpenSearch ou Elasticsearch. Le Query DSL généré est interrogé par rapport à une collection OpenSearch sans serveur sur tous les index. La sortie JSON contient les données pertinentes et le nombre *de* connexions provenant des données contenues dans la collection OpenSearch Serverless.

**Automatisation et mise à l'échelle**

Le code fourni avec ce modèle est conçu strictement à des fins de PoC. La liste suivante fournit quelques suggestions pour automatiser et étendre davantage la solution, ainsi que pour mettre le code en production. Ces améliorations n'entrent pas dans le cadre de ce modèle.
+ Conteneurisation :
  + Dockerisez l'application pour garantir la cohérence entre les différents environnements.
  + Utilisez des plateformes d'orchestration de conteneurs telles qu'Amazon Elastic Container Service (Amazon ECS) ou Kubernetes pour des déploiements évolutifs.
+ Architecture sans serveur :
  + Convertissez les fonctionnalités de base en AWS Lambda fonctions.
  + Utilisez Amazon API Gateway pour créer des RESTful points de terminaison pour la saisie des requêtes en langage naturel.
+ Traitement asynchrone :
  + Implémentez Amazon Simple Queue Service (Amazon SQS) pour mettre en file d'attente les requêtes entrantes.
  +  AWS Step Functions À utiliser pour orchestrer le flux de travail de traitement des requêtes et de génération de requêtes DSL.
+ Mise en cache :
  + Implémentez un mécanisme pour mettre en cache les invites.
+ Surveillance et journalisation :
  + Utilisez Amazon CloudWatch pour la surveillance et les alertes.
  + Mettez en place une journalisation centralisée avec Amazon CloudWatch Logs ou Amazon OpenSearch Service pour l'analyse des journaux.
+ Améliorations de sécurité :
  + Implémentez des rôles IAM pour un contrôle d'accès précis.
  + Utilisez-le AWS Secrets Manager pour stocker et gérer en toute sécurité les clés d'API et les informations d'identification.
+ Déploiement multirégional :
  + Envisagez de déployer la solution sur plusieurs sites Régions AWS pour améliorer la latence et la reprise après sinistre.
  + Utilisez Amazon Route 53 pour un routage intelligent des demandes.

En mettant en œuvre ces suggestions, vous pouvez transformer ce PoC en une solution robuste, évolutive et prête pour la production. Nous vous recommandons de tester minutieusement chaque composant et l'ensemble du système avant le déploiement complet.

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

**Outils**
+ Les blocs-notes [Amazon SageMaker AI sont des blocs-notes](https://aws.amazon.com/sagemaker/notebooks/) Jupyter entièrement gérés destinés au développement de l'apprentissage automatique. Ce modèle utilise les blocs-notes comme environnement interactif pour l'exploration des données, le développement de modèles et l'expérimentation dans Amazon SageMaker AI. Les ordinateurs portables offrent une intégration parfaite avec d'autres fonctionnalités de SageMaker l'IA et Services AWS.
+ [Python](https://www.python.org/) est un langage de programmation informatique polyvalent. Ce modèle utilise Python comme langage de base pour implémenter la solution.
+ [Amazon Bedrock](https://aws.amazon.com/bedrock/) est un service entièrement géré qui met à votre disposition des modèles de base très performants (FMs) issus des principales startups d'IA et d'Amazon via une API unifiée. Amazon Bedrock permet d'accéder au LLMs traitement du langage naturel. Ce modèle utilise les modèles Anthropic Claude 3.
+ [AWS SDK pour Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)est un kit de développement logiciel qui vous aide à intégrer votre application, bibliothèque ou script Python Services AWS, y compris Amazon Bedrock.
+ [Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/what-is.html) est un service géré qui vous permet de déployer, d'exploiter et de dimensionner des clusters de OpenSearch services dans le cloud AWS. Ce modèle utilise le OpenSearch service comme système cible pour générer le DSL de requête.

**Référentiel de code**

Le code de ce modèle est disponible dans le référentiel GitHub [Prompt Engineering Text-to-QueryDSL Using Claude 3 Models](https://github.com/aws-samples/text-to-queryDSL/blob/main/text2ES_prompting_guide.ipynb). L'exemple utilise une application de réseau social de santé qui crée des publications pour les utilisateurs et des profils d'utilisateurs associés à l'application de santé.

## Bonnes pratiques
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch-best-practices"></a>

Lorsque vous utilisez cette solution, tenez compte des points suivants :
+ Le besoin d' AWS informations d'identification et d'autorisations appropriées pour accéder à Amazon Bedrock
+ Coûts potentiels associés à l'utilisation Services AWS et LLMs
+ L'importance de comprendre le DSL des requêtes pour valider et éventuellement modifier les requêtes générées

## Épopées
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch-epics"></a>

### Configuration de l'environnement et préparation des données
<a name="set-up-the-environment-and-prepare-data"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez l'environnement de développement. | Pour obtenir des instructions détaillées et le code correspondant à cette étape et aux autres étapes de ce modèle, consultez la procédure détaillée dans le [GitHub référentiel](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/fr_fr/prescriptive-guidance/latest/patterns/translate-natural-language-query-dsl-opensearch-elasticsearch.html) | Python, pip, kit SDK AWS | 
| Configurez AWS l'accès. | Configurez le client Amazon Bedrock et la session SageMaker AI. Récupérez l'Amazon Resource Name (ARN) pour le rôle d'exécution SageMaker AI pour une utilisation ultérieure lors de la création de la collection OpenSearch Serverless. | IAM, AWS CLI, Amazon Bedrock, Amazon SageMaker | 
| Chargez les schémas des applications de santé. | Lisez et analysez les schémas JSON pour les publications de santé et les profils utilisateur à partir de fichiers prédéfinis. Convertissez les schémas en chaînes pour une utilisation ultérieure dans les invites. | DevOps ingénieur, AWS général, Python, JSON | 

### Génération de données synthétiques
<a name="generate-synthetic-data"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un générateur de données basé sur le LLM. | Implémentez la fonction **generate\$1data ()** pour appeler l'API Amazon Bedrock Converse avec les modèles Claude 3. Modèle de configuration IDs pour Sonnet, Sonnet 3.5 et 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 Amazon Bedrock, instructions LLM | 
| Créez des postes de santé synthétiques. | Utilisez la fonction **generate\$1data ()** avec une invite de message spécifique pour créer des entrées de santé synthétiques basées sur le schéma fourni. L'appel de fonction ressemble à ceci : <pre>health_post_data = generate_data(bedrock_rt, model_id_sonnet, system_prompt, message_healthpost, inference_config)</pre> | Python, JSON | 
| Créez des profils utilisateur synthétiques. | Utilisez la fonction **generate\$1data ()** avec un message d'invite spécifique pour créer des entrées de profil utilisateur synthétiques basées sur le schéma fourni. Ceci est similaire à la génération de postes de santé, mais utilise une invite différente. | Python, JSON | 

### Configuration OpenSearch et ingestion de données
<a name="set-up-opensearch-and-ingest-data"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez une collection OpenSearch sans serveur. | Utilisez Boto3 pour créer une collection OpenSearch sans serveur avec des politiques de chiffrement, de réseau et d'accès appropriées. La création de la collection ressemble à ceci : <pre>collection = aoss_client.create_collection(name=es_name, type='SEARCH')</pre> Pour plus d'informations sur OpenSearch Serverless, consultez la [AWS documentation](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless.html). | OpenSearch Sans serveur, IAM | 
| Définissez les OpenSearch index. | Créez des index pour les publications de santé et les profils d'utilisateurs à l'aide du OpenSearch client, sur la base des mappages de schéma prédéfinis. La création de l'index se présente comme suit :<pre>response_health = oss_client.indices.create(healthpost_index, body=healthpost_body)</pre> | OpenSearch, JSON | 
| Chargez les données dans OpenSearch. | Exécutez la fonction **ingest\$1data ()** pour insérer en bloc les publications de santé synthétiques et les profils utilisateur dans leurs index respectifs. OpenSearch La fonction utilise l'assistant de masse fourni par `opensearch-py` :<pre>success, failed = bulk(oss_client, actions)</pre> | Python, OpenSearch API, opérations de données en masse | 

### Génération et exécution de requêtes
<a name="generate-and-run-queries"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Concevez quelques exemples rapides. | Générez des exemples de requêtes et des questions en langage naturel correspondantes en utilisant les modèles Claude 3 pour servir d'exemples pour la génération de requêtes. L'invite du système inclut les exemples suivants :<pre>system_prompt_query_generation = [{"text": f"""You are an expert query dsl generator. ... Examples: {example_prompt} ..."""}]</pre> | Demande LLM, requête DSL | 
| Créez un convertisseur text-to-query DSL. | Implémentez l'invite du système, qui inclut des schémas, des données et quelques exemples de plans, pour la génération de requêtes. Utilisez l'invite du système pour convertir les requêtes en langage naturel en requêtes DSL. L'appel de fonction ressemble à ceci :<pre>query_response = generate_data(bedrock_rt, model_id, system_prompt_query_generation, query, inference_config)</pre> | Python, API Amazon Bedrock, instructions LLM | 
| Testez la requête DSL sur. OpenSearch | Exécutez la fonction **query\$1oss ()** pour exécuter la requête DSL générée par rapport à la collection OpenSearch Serverless et renvoyer les résultats. La fonction utilise la méthode de recherche du OpenSearch client :<pre>response = oss_client.search(index="_all", body=temp)</pre> | Python, OpenSearch API, requête DSL | 

### Tester et évaluer
<a name="test-and-evaluate"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un ensemble de requêtes de test. | Utilisez Claude 3 pour générer un ensemble diversifié de questions de test basées sur les données synthétiques et les schémas :<pre>test_queries = generate_data(bedrock_rt, model_id_sonnet, query_system_prompt, query_prompt, inference_config)</pre> | Invitation au LLM | 
| Évaluez la précision de la conversion DSL des requêtes. | Testez le DSL de requête généré en exécutant des requêtes OpenSearch et en analysant les résultats renvoyés pour en vérifier la pertinence et la précision. Cela implique d'exécuter la requête et d'inspecter les résultats :<pre>output = query_oss(response1) print("Response after running query against Opensearch") print(output)</pre> | Python, analyse de données, requête DSL | 
| Modèles de référence Claude 3.  | Comparez les performances de différents modèles Claude 3 (Haiku, Sonnet, Sonnet 3.5) pour la génération de requêtes en termes de précision et de latence. Pour comparer, modifiez le `model_id` moment où vous appelez **generate\$1data ()** et mesurez le temps d'exécution. | Python, analyse comparative des performances | 

### Nettoyage et documentation
<a name="clean-up-and-document"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Développez un processus de nettoyage. | Supprimez tous les index de la collection OpenSearch Serverless après utilisation. | Python, kit SDK AWS, API OpenSearch  | 

## Ressources connexes
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch-resources"></a>
+ [Requête DSL](https://opensearch.org/docs/latest/query-dsl/) (OpenSearch documentation)
+ [Documentation Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/what-is.html)
+ [OpenSearch Collections sans serveur](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-manage.html)
+ [Documentation Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html)
+ [Documentation Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html)
+ [AWS SDK pour Python (Boto3) documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)

## Informations supplémentaires
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch-additional"></a>

**Politique IAM**

Voici la `APGtext2querydslpolicy` politique applicable au rôle IAM utilisé dans ce modèle :

```
{
  "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": "*" 
    } 
  ] 
}
```

**Techniques rapides avec les modèles Anthropic Claude 3**

Ce modèle illustre les techniques d'invite suivantes pour la conversion text-to-query DSL à l'aide des modèles Claude 3.
+ **Guidage en quelques prises : l'invite en** quelques prises est une technique puissante pour améliorer les performances des modèles Claude 3 sur Amazon Bedrock. Cette approche consiste à fournir au modèle un petit nombre d'exemples illustrant le input/output comportement souhaité avant de lui demander d'effectuer une tâche similaire. Lorsque vous utilisez les modèles Claude 3 sur Amazon Bedrock, les instructions en quelques clics peuvent être particulièrement efficaces pour les tâches qui nécessitent un formatage, des modèles de raisonnement ou des connaissances de domaine spécifiques. Pour implémenter cette technique, vous structurez généralement votre invite avec deux composants principaux : la section d'exemple et la requête elle-même. La section d'exemple contient une ou plusieurs input/output paires illustrant la tâche, et la section de requête présente la nouvelle entrée pour laquelle vous souhaitez obtenir une réponse. Cette méthode aide Claude 3 à comprendre le contexte et le format de sortie attendu, et aboutit souvent à une réponse plus précise et cohérente.

  Exemple :

  ```
  "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.
  ```
+ **Instructions du système : en plus des** quelques instructions, les modèles Claude 3 sur Amazon Bedrock prennent également en charge l'utilisation des instructions du système. Les instructions système permettent de fournir un contexte général, des instructions ou des directives au modèle avant de le présenter avec des entrées utilisateur spécifiques. Ils sont particulièrement utiles pour donner le ton, définir le rôle du modèle ou établir des contraintes pour l'ensemble de la conversation. Pour utiliser une invite système avec Claude 3 sur Amazon Bedrock, vous devez l'inclure dans le `system` paramètre de votre demande d'API. Ceci est distinct des messages de l'utilisateur et s'applique à l'ensemble de l'interaction. Des instructions système détaillées sont utilisées pour définir le contexte et fournir des directives pour le modèle.

  Exemple :

  ```
  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.
  ```
+ **Sortie structurée** : vous pouvez demander au modèle de fournir une sortie dans des formats spécifiques, tels que JSON ou dans des balises XML.

  Exemple :

  ```
  Put the query in json tags
  ```
+ **Chainage rapide** : le bloc-notes utilise le résultat d'un appel LLM comme entrée pour un autre, par exemple en utilisant des données synthétiques générées pour créer des exemples de questions.
+ **Fourniture de contexte** : le contexte pertinent, y compris les schémas et les exemples de données, est fourni dans les instructions.

  Exemple :

  ```
  Schemas: [schema details]
  Data: [sample data]
  ```
+ **Invites spécifiques aux tâches : différentes invites** sont conçues pour des tâches spécifiques, telles que la génération de données synthétiques, la création d'exemples de questions et la conversion de requêtes en langage naturel en requêtes DSL.

  Exemple de génération de questions de test :

  ```
  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.
  ```

# Utilisez Amazon Q Developer comme assistant de codage pour augmenter votre productivité
<a name="use-q-developer-as-coding-assistant-to-increase-productivity"></a>

*Ram Kandaswamy, Amazon Web Services*

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

Ce modèle utilise un tic-tac-toe jeu pour montrer comment vous pouvez appliquer Amazon Q Developer à un large éventail de tâches de développement. Il génère le code d'un tic-tac-toe jeu sous la forme d'une application monopage (SPA), améliore son interface utilisateur et crée des scripts pour déployer l' AWS application.

Amazon Q Developer fonctionne comme un assistant de codage pour accélérer les flux de travail de développement logiciel et améliorer la productivité des développeurs et des non-développeurs. Quelle que soit votre expertise technique, il vous aide à créer des architectures et à concevoir des solutions aux problèmes commerciaux, à démarrer votre environnement de travail, à implémenter de nouvelles fonctionnalités et à générer des cas de test à des fins de validation. Il utilise des instructions en langage naturel et des fonctionnalités d'intelligence artificielle pour garantir un code cohérent et de haute qualité et pour atténuer les difficultés de codage, quelles que soient vos compétences en programmation.

Le principal avantage d'Amazon Q Developer est sa capacité à vous libérer des tâches de codage répétitives. Lorsque vous utilisez l'`@workspace`annotation, Amazon Q Developer ingère et indexe tous les fichiers de code, les configurations et la structure de projet dans votre environnement de développement intégré (IDE), et fournit des réponses personnalisées pour vous aider à vous concentrer sur la résolution créative des problèmes. Vous pouvez consacrer plus de temps à la conception de solutions innovantes et à l'amélioration de l'expérience utilisateur. Si vous n'êtes pas technicien, vous pouvez utiliser Amazon Q Developer pour rationaliser les flux de travail et collaborer plus efficacement avec l'équipe de développement. La fonctionnalité Amazon Q Developer **Explain code** propose des instructions détaillées et des résumés, afin que vous puissiez naviguer dans des bases de code complexes.

En outre, Amazon Q Developer propose une approche indépendante de la langue qui aide les développeurs de niveau junior et intermédiaire à développer leurs compétences. Vous pouvez vous concentrer sur les concepts de base et la logique métier plutôt que sur la syntaxe spécifique au langage. Cela réduit la courbe d'apprentissage lorsque vous changez de technologie.

## Conditions préalables et limitations
<a name="use-q-developer-as-coding-assistant-to-increase-productivity-prereqs"></a>

**Conditions préalables**
+ IDE (par exemple, WebStorm ou Visual Studio Code) avec le plug-in Amazon Q Developer installé. Pour obtenir des instructions, consultez [la section Installation de l'extension ou du plugin Amazon Q Developer dans votre IDE](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/q-in-IDE-setup.html) dans la documentation Amazon Q Developer.
+ Une Compte AWS configuration active avec Amazon Q Developer. Pour obtenir des instructions, consultez [Getting started](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/getting-started-q-dev.html) dans la documentation Amazon Q Developer.
+ **npm** installé. Pour obtenir des instructions, consultez la [documentation npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm). Ce modèle a été testé avec la version 10.8 de npm.
+ AWS Command Line Interface (AWS CLI) installé. Pour obtenir des instructions, consultez la [AWS CLI documentation](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

**Limites**
+ Amazon Q Developer ne peut effectuer qu'une seule tâche de développement à la fois.
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, voir [Services AWS par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez la page [Points de terminaison et quotas du service](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien vers le service.

## Outils
<a name="use-q-developer-as-coding-assistant-to-increase-productivity-tools"></a>
+ Ce modèle nécessite un IDE tel que Visual Studio Code ou WebStorm. Pour obtenir la liste des produits pris en charge IDEs, consultez la [documentation Amazon Q Developer](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) est un outil open source qui vous permet d'interagir Services AWS par le biais de commandes dans votre interface de ligne de commande.

## Bonnes pratiques
<a name="use-q-developer-as-coding-assistant-to-increase-productivity-best-practices"></a>

Consultez les [meilleures pratiques de codage avec Amazon Q Developer](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-code-generation/best-practices-coding.html) dans les directives AWS prescriptives. En outre :
+ Lorsque vous envoyez des instructions à Amazon Q Developer, assurez-vous que vos instructions sont claires et sans ambiguïté. Ajoutez des extraits de code et des annotations, par exemple `@workspace` à l'invite, pour fournir plus de contexte à vos invites.
+ Incluez les bibliothèques pertinentes et importez-les pour éviter les conflits ou les suppositions incorrectes du système.
+ Si le code généré n'est pas précis ou ne correspond pas aux attentes, utilisez l'option **Fournir des commentaires et régénérer**. Essayez de diviser les instructions en instructions plus petites.

## Épopées
<a name="use-q-developer-as-coding-assistant-to-increase-productivity-epics"></a>

### Configuration de l'environnement de travail
<a name="set-up-the-working-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Crée un projet. | Pour créer un nouveau projet dans votre environnement de travail, exécutez la commande suivante et acceptez les paramètres par défaut pour toutes les questions :<pre>npx create-next-app@latest</pre> | Développeur d'applications, programmeur, développeur de logiciels | 
| Testez l'application de base. | Exécutez la commande suivante et vérifiez que l'application de base se charge correctement dans le navigateur :<pre>npm run dev </pre> | Développeur d'applications, programmeur, développeur de logiciels | 
| Nettoyez le code de base. | Accédez au `page.tsx` fichier dans le `src/app` dossier et supprimez le contenu par défaut pour obtenir une page blanche. Après suppression, le fichier doit ressembler à ceci :<pre>export default function Home() {<br />  return (<div></div><br />      );<br />}</pre> | Développeur d'applications, programmeur, développeur de logiciels | 

### Utilisez Amazon Q Developer pour concevoir un projet de tic-tac-toe jeu
<a name="use-qdevlong-to-design-a-tic-tac-toe-game-project"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Obtenez une vue d'ensemble des étapes. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/use-q-developer-as-coding-assistant-to-increase-productivity.html) | Développeur d'applications, programmeur, développeur de logiciels | 
| Générez du code pour tic-tac-toe. | Dans le panneau de discussion, lancez une tâche de développement à l'aide de la `/dev` commande suivie de la description de la tâche. Par exemple :<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 génère du code en fonction de vos instructions. | Développeur d'applications, programmeur, développeur de logiciels | 
| Inspectez et acceptez le code généré. | Inspectez visuellement le code, puis choisissez **Accepter le code** pour remplacer automatiquement le `page.tsx` fichier.Si vous rencontrez des problèmes, choisissez **Fournir des commentaires et régénérer** et décrivez le problème que vous avez rencontré. | Développeur d'applications, programmeur, développeur de logiciels | 
| Corrigez les erreurs liées à la peluche. | L'exemple de tic-tac-toe jeu inclut une grille. Le code généré par Amazon Q Developer peut utiliser le type par défaut`any`. Vous pouvez ajouter la sécurité des types en demandant à Amazon Q Developer de la manière suivante :<pre>/dev Ensure proper TypeScript typing for the onSquare Click event handler <br />to resolve any 'any' type issues.</pre> | Développeur d'applications, programmeur, développeur de logiciels | 
| Ajoutez un attrait visuel. | Vous pouvez diviser l'exigence initiale en fragments plus petits. Par exemple, vous pouvez améliorer l'interface utilisateur du jeu en utilisant les instructions suivantes dans les tâches de développement. Cette invite améliore les styles des feuilles de style en cascade (CSS) et exporte l'application en vue de son déploiement.<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> | Développeur d'applications, programmeur, développeur de logiciels | 
| Testez à nouveau. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/use-q-developer-as-coding-assistant-to-increase-productivity.html) | Développeur d'applications, programmeur, développeur de logiciels | 

### Déployez l'application sur AWS Cloud
<a name="deploy-the-application-to-the-aws-cloud"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez des dossiers et des fichiers pour le déploiement. | Dans le projet, dans votre environnement de travail, créez un dossier de déploiement et deux fichiers qu'il contient : `pushtos3.sh` et `cloudformation.yml` :<pre>mkdir deployment && cd deployment<br />touch pushtos3.sh && chmod +x pushtos3.sh<br />touch cloudformation.yml</pre> | Développeur d'applications, programmeur, développeur de logiciels | 
| Générez du code d'automatisation. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/use-q-developer-as-coding-assistant-to-increase-productivity.html) | Administrateur AWS, AWS DevOps, développeur d'applications | 
| Générez du contenu de script. | Pour créer un script de déploiement, utilisez l'invite suivante :<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> | Développeur d'applications, programmeur, développeur de logiciels | 
| Déployez l'application sur AWS Cloud. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/use-q-developer-as-coding-assistant-to-increase-productivity.html) | Administrateur AWS, AWS DevOps, architecte cloud, développeur d'applications | 

## Résolution des problèmes
<a name="use-q-developer-as-coding-assistant-to-increase-productivity-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| La version ne crée pas d'application d'une seule page et ne l'exporte pas vers le dossier de sortie. | Regardez le contenu du `next.config.mjs` fichier.Si le code possède la configuration par défaut suivante :<pre>const nextConfig = {};</pre>modifiez-le comme suit :<pre>const nextConfig = {<br />  output: 'export',<br />  distDir: 'out',<br />};</pre> | 

## Ressources connexes
<a name="use-q-developer-as-coding-assistant-to-increase-productivity-resources"></a>
+ [Création d'un nouveau projet React](https://react.dev/learn/start-a-new-react-project) (documentation React)
+ [Présentation d'Amazon Q Developer](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/what-is.html) (AWS documentation)
+ [Bonnes pratiques pour les développeurs Amazon Q](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-code-generation/introduction.html) (conseils AWS prescriptifs)
+ [Installation, configuration et utilisation d'Amazon Q Developer avec JetBrains IDEs](https://www.youtube.com/watch?v=-iQfIhTA4J0&pp=ygUSYW1hem9uIHEgZGV2ZWxvcGVy) (YouTube vidéo)
+ [Installation d'Amazon Q pour la ligne de commande](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-getting-started-installing.html) (AWS documentation)

# Utiliser SageMaker le traitement pour l'ingénierie des fonctionnalités distribuées d'ensembles de données ML à l'échelle du téraoctet
<a name="use-sagemaker-processing-for-distributed-feature-engineering-of-terabyte-scale-ml-datasets"></a>

*Chris Boomhower, Amazon Web Services*

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

De nombreux ensembles de données de plusieurs téraoctets ou plus se composent souvent d'une structure de dossiers hiérarchique, et les fichiers du jeu de données partagent parfois des interdépendances. C'est pourquoi les ingénieurs en apprentissage automatique (ML) et les scientifiques des données doivent prendre des décisions de conception réfléchies afin de préparer ces données pour l'entraînement et l'inférence des modèles. Ce modèle montre comment vous pouvez utiliser des techniques manuelles de macrosharding et de microsharding en combinaison avec Amazon SageMaker Processing et la parallélisation des processeurs virtuels (vCPU) pour adapter efficacement les processus d'ingénierie des fonctionnalités aux ensembles de données Big Data ML complexes. 

Ce modèle définit le *macrosharding* comme la division de répertoires de données sur plusieurs machines pour le traitement, et le *microsharding* comme le partage des données de chaque machine sur plusieurs threads de traitement. Le modèle illustre ces techniques en utilisant Amazon SageMaker avec des exemples d'enregistrements de formes d'onde de séries chronologiques issus du jeu de données [PhysioNet MIMIC-III](https://physionet.org/content/mimic3wdb/1.0/). En mettant en œuvre les techniques de ce modèle, vous pouvez minimiser le temps de traitement et les coûts liés à l'ingénierie des fonctionnalités tout en maximisant l'utilisation des ressources et l'efficacité du débit. Ces optimisations reposent sur le SageMaker traitement distribué sur les instances Amazon Elastic Compute Cloud EC2 (Amazon) et v CPUs pour des ensembles de données volumineux similaires, quel que soit le type de données.

## Conditions préalables et limitations
<a name="use-sagemaker-processing-for-distributed-feature-engineering-of-terabyte-scale-ml-datasets-prereqs"></a>

**Conditions préalables**
+ Accès aux instances de SageMaker bloc-notes ou à SageMaker Studio, si vous souhaitez implémenter ce modèle pour votre propre ensemble de données. Si vous utilisez Amazon SageMaker pour la première fois, consultez la section [Commencer avec Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/gs.html) dans la documentation AWS.
+ SageMaker Studio, si vous souhaitez implémenter ce modèle avec les exemples de données [PhysioNet MIMIC-III](https://physionet.org/content/mimic3wdb/1.0/). 
+ Le modèle utilise le SageMaker traitement, mais ne nécessite aucune expérience dans l'exécution de tâches SageMaker de traitement.

**Limites**
+ Ce modèle convient parfaitement aux ensembles de données ML qui incluent des fichiers interdépendants. Ces interdépendances tirent le meilleur parti du macrosharding manuel et de l'exécution en parallèle de plusieurs SageMaker tâches de traitement en instance unique. Pour les ensembles de données où de telles interdépendances n'existent pas, la `ShardedByS3Key` fonctionnalité de SageMaker Processing peut constituer une meilleure alternative au macrosharding, car elle envoie des données fragmentées à plusieurs instances gérées par la même tâche de traitement. Cependant, vous pouvez implémenter la stratégie de microsharding de ce modèle dans les deux scénarios afin d'utiliser au mieux l'instance v. CPUs

**Versions du produit**
+ Kit de développement logiciel Amazon SageMaker Python version 2

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

**Pile technologique cible**
+ Amazon Simple Storage Service (Amazon S3)
+ Amazon SageMaker

**Architecture cible**

*Macrosharding et instances distribuées EC2 *

Les 10 processus parallèles représentés dans cette architecture reflètent la structure du jeu de données MIMIC-III. (Les processus sont représentés par des ellipses pour simplifier les diagrammes.) Une architecture similaire s'applique à n'importe quel ensemble de données lorsque vous utilisez le macrosharding manuel. Dans le cas de MIMIC-III, vous pouvez utiliser la structure brute de l'ensemble de données à votre avantage en traitant chaque dossier de groupe de patients séparément, avec un minimum d'effort. Dans le schéma suivant, le bloc des groupes d'enregistrements apparaît sur la gauche (1). Compte tenu de la nature distribuée des données, il est logique de les partager par groupe de patients.

![\[Architecture pour le microsharding et les instances distribuées EC2\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/e7a90b31-de8f-41fd-bb3f-c7c6100fc306/images/c19a8f87-ac59-458e-89cb-50be17ca4a0c.png)


Toutefois, le découpage manuel par groupe de patients signifie qu'une tâche de traitement distincte est requise pour chaque dossier de groupe de patients, comme vous pouvez le voir dans la partie centrale du diagramme (2), au lieu d'une tâche de traitement unique avec plusieurs EC2 instances. Étant donné que les données de MIMIC-III incluent à la fois des fichiers de formes d'onde binaires et des fichiers d'en-tête textuels correspondants, et que l'extraction de données binaires nécessite une dépendance à la [bibliothèque wfdb](https://wfdb.readthedocs.io/en/latest/), tous les dossiers d'un patient spécifique doivent être disponibles sur la même instance. La seule façon de s'assurer que le fichier d'en-tête associé à chaque fichier de forme d'onde binaire est également présent est d'implémenter le sharding manuel pour exécuter chaque partition dans le cadre de sa propre tâche de traitement, et de spécifier `s3_data_distribution_type='FullyReplicated'` quand vous définissez l'entrée de la tâche de traitement. Sinon, si toutes les données étaient disponibles dans un seul répertoire et qu'aucune dépendance n'existait entre les fichiers, une option plus appropriée pourrait être de lancer une seule tâche de traitement avec plusieurs EC2 instances `s3_data_distribution_type='ShardedByS3Key'` spécifiées. Spécifier `ShardedByS3Key ` comme le type de distribution de données Amazon S3 indique SageMaker de gérer automatiquement le partitionnement des données entre les instances. 

Le lancement d'une tâche de traitement pour chaque dossier est un moyen rentable de prétraiter les données, car l'exécution simultanée de plusieurs instances permet de gagner du temps. Pour économiser du temps et des coûts supplémentaires, vous pouvez utiliser le microsharding dans chaque tâche de traitement. 

*Microsharding et parallel v CPUs*

Au sein de chaque tâche de traitement, les données groupées sont ensuite divisées afin de maximiser l'utilisation de tous les v disponibles CPUs sur l' EC2 instance SageMaker entièrement gérée. Les blocs situés dans la partie centrale du diagramme (2) décrivent ce qui se passe dans le cadre de chaque tâche de traitement principale. Le contenu des dossiers des patients est aplati et divisé de manière égale en fonction du nombre de v disponibles CPUs sur l'instance. Une fois le contenu du dossier divisé, l'ensemble de fichiers de taille uniforme est réparti sur tous les v CPUs pour être traité. Une fois le traitement terminé, les résultats de chaque vCPU sont combinés dans un seul fichier de données pour chaque tâche de traitement. 

Dans le code joint, ces concepts sont représentés dans la section suivante du `src/feature-engineering-pass1/preprocessing.py` fichier.

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

Une fonction est d'abord définie pour consommer une liste donnée en la divisant en morceaux de taille égale `n ` et en renvoyant ces résultats sous forme de générateur. `chunks` Ensuite, les données sont aplaties dans les dossiers des patients en compilant une liste de tous les fichiers de formes d'onde binaires présents. Une fois cela fait, le nombre de v CPUs disponibles sur l' EC2 instance est obtenu. [La liste des fichiers de formes d'onde binaires est répartie uniformément sur ces v CPUs par appel`chunks`, puis chaque sous-liste de formes d'onde est traitée sur son propre vCPU en utilisant la classe Parallel de joblib.](https://joblib.readthedocs.io/en/latest/generated/joblib.Parallel.html) Les résultats sont automatiquement combinés dans une liste unique de dataframes par la tâche de traitement, qui poursuit SageMaker ensuite le traitement avant de les écrire dans Amazon S3 une fois la tâche terminée. Dans cet exemple, 10 fichiers ont été écrits sur Amazon S3 par les tâches de traitement (un pour chaque tâche).

Lorsque toutes les tâches de traitement initiales sont terminées, une tâche de traitement secondaire, illustrée dans le bloc à droite du diagramme (3), combine les fichiers de sortie produits par chaque tâche de traitement principale et écrit la sortie combinée sur Amazon S3 (4).

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

**Outils**
+ [Python](https://www.python.org/) — L'exemple de code utilisé pour ce modèle est Python (version 3).
+ [SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) — Amazon SageMaker Studio est un environnement de développement intégré (IDE) basé sur le Web pour l'apprentissage automatique qui vous permet de créer, de former, de déboguer, de déployer et de surveiller vos modèles d'apprentissage automatique. Vous exécutez SageMaker des tâches de traitement en utilisant des blocs-notes Jupyter dans Studio. SageMaker 
+ [SageMaker Traitement](https://docs.aws.amazon.com/sagemaker/latest/dg/processing-job.html) — Amazon SageMaker Processing fournit un moyen simplifié d'exécuter vos charges de travail de traitement des données. Dans ce modèle, le code d'ingénierie des fonctionnalités est implémenté à grande échelle à l'aide de tâches SageMaker de traitement.

**Code**

Le fichier .zip joint fournit le code complet de ce modèle. La section suivante décrit les étapes à suivre pour créer l'architecture de ce modèle. Chaque étape est illustrée par un exemple de code extrait de la pièce jointe.

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

### Configuration de votre environnement SageMaker Studio
<a name="set-up-your-sagemaker-studio-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Accédez à Amazon SageMaker Studio. | Accédez à SageMaker Studio depuis votre compte AWS en suivant les instructions fournies dans la [ SageMaker documentation Amazon](https://docs.aws.amazon.com/sagemaker/latest/dg/onboard-quick-start.html). | Scientifique des données, ingénieur ML | 
| Installez l'utilitaire wget. | Installez *wget* si vous avez intégré une nouvelle configuration de SageMaker Studio ou si vous n'avez jamais utilisé ces utilitaires dans SageMaker Studio auparavant. Pour l'installer, ouvrez une fenêtre de terminal dans la console SageMaker Studio et exécutez la commande suivante :<pre>sudo yum install wget</pre> | Scientifique des données, ingénieur ML | 
| Téléchargez et décompressez l'exemple de code. | Téléchargez le `attachments.zip` fichier dans la section *Pièces jointes*. Dans une fenêtre de terminal, accédez au dossier dans lequel vous avez téléchargé le fichier et extrayez son contenu :<pre>unzip attachment.zip</pre>Accédez au dossier dans lequel vous avez extrait le fichier .zip et extrayez le contenu du `Scaled-Processing.zip` fichier.<pre>unzip Scaled-Processing.zip</pre> | Scientifique des données, ingénieur ML | 
| Téléchargez l'exemple de jeu de données sur physionet.org et chargez-le sur Amazon S3. | Exécutez le bloc-notes `get_data.ipynb` Jupyter dans le dossier contenant les `Scaled-Processing` fichiers. Ce bloc-notes télécharge un exemple de jeu de données MIMIC-III depuis [physionet.org](https://physionet.org) et le charge dans votre SageMaker compartiment de session Studio dans Amazon S3. | Scientifique des données, ingénieur ML | 

### Configuration du premier script de prétraitement
<a name="configure-the-first-preprocessing-script"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Aplatissez la hiérarchie des fichiers dans tous les sous-répertoires. | Dans les grands ensembles de données tels que MIMIC-III, les fichiers sont souvent répartis dans plusieurs sous-répertoires, même au sein d'un groupe parent logique. Votre script doit être configuré pour aplatir tous les fichiers de groupe dans tous les sous-répertoires, comme le montre le code suivant.<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>    Les exemples d'extraits de code présentés dans cette épopée proviennent du `src/feature-engineering-pass1/preprocessing.py` fichier fourni en pièce jointe. | Scientifique des données, ingénieur ML | 
| Divisez les fichiers en sous-groupes en fonction du nombre de vCPU. | Les fichiers doivent être divisés en sous-groupes ou en morceaux de taille égale, en fonction du nombre de v CPUs présents sur l'instance qui exécute le script. Pour cette étape, vous pouvez implémenter un code similaire au suivant.<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> | Scientifique des données, ingénieur ML | 
| Paralléliser le traitement des sous-groupes dans v. CPUs | La logique du script doit être configurée pour traiter tous les sous-groupes en parallèle. Pour ce faire, utilisez la `Parallel ` classe et la `delayed ` méthode de la bibliothèque Joblib comme suit. <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> | Scientifique des données, ingénieur ML | 
| Enregistrez la sortie d'un seul groupe de fichiers sur Amazon S3. | Lorsque le traitement parallèle des vCPU est terminé, les résultats de chaque vCPU doivent être combinés et téléchargés dans le chemin du compartiment S3 du groupe de fichiers. Pour cette étape, vous pouvez utiliser un code similaire au suivant.<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> | Scientifique des données, ingénieur ML | 

### Configuration du deuxième script de prétraitement
<a name="configure-the-second-preprocessing-script"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Combinez les fichiers de données produits dans toutes les tâches de traitement qui ont exécuté le premier script. | Le script précédent génère un fichier unique pour chaque tâche de SageMaker traitement qui traite un groupe de fichiers de l'ensemble de données.  Ensuite, vous devez combiner ces fichiers de sortie en un seul objet et écrire un ensemble de données de sortie unique sur Amazon S3. Cela est démontré dans le `src/feature-engineering-pass1p5/preprocessing.py` fichier, qui est fourni en pièce jointe, comme suit.<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> | Scientifique des données, ingénieur ML | 

### Exécuter des tâches de traitement
<a name="run-processing-jobs"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Exécutez la première tâche de traitement. | Pour effectuer le macrosharding, exécutez une tâche de traitement distincte pour chaque groupe de fichiers. Le microsharding est effectué dans chaque tâche de traitement, car chaque tâche exécute votre premier script. Le code suivant montre comment lancer une tâche de traitement pour chaque répertoire de groupe de fichiers dans l'extrait suivant (inclus dans`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> | Scientifique des données, ingénieur ML | 
| Exécutez le deuxième travail de traitement. | Pour combiner les sorties générées par le premier ensemble de tâches de traitement et effectuer des calculs supplémentaires pour le prétraitement, vous devez exécuter votre deuxième script à l'aide d'une seule tâche de SageMaker traitement. Le code suivant illustre cela (inclus dans`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> | Scientifique des données, ingénieur ML | 

## Ressources connexes
<a name="use-sagemaker-processing-for-distributed-feature-engineering-of-terabyte-scale-ml-datasets-resources"></a>
+ [Intégration à Amazon SageMaker Studio à l'aide de Quick Start](https://docs.aws.amazon.com/sagemaker/latest/dg/onboard-quick-start.html) (SageMaker documentation)
+ [Données de processus](https://docs.aws.amazon.com/sagemaker/latest/dg/processing-job.html) (SageMaker documentation) 
+ [Traitement des données avec scikit-learn (documentation](https://docs.aws.amazon.com/sagemaker/latest/dg/use-scikit-learn-processing-container.html)) SageMaker  
+ [Documentation 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 données de formes d'onde MIMIC-III](https://doi.org/10.13026/c2607m) (version 1.0). *PhysioNet*.
+ Johnson, A.E.W., Pollard, T.J., Shen, L., Lehman, L.H., Feng, M., Ghassemi, M., Moody, B., Szolovits, P., Celi, L.A., et Mark, R.G. (2016). [MIMIC-III, une base de données sur les soins intensifs accessible gratuitement](https://dx.doi.org/10.1038/sdata.2016.35). Données scientifiques, 3, 160035.
+ [Licence de base de données de formes d'onde MIMIC-III](https://physionet.org/content/mimic3wdb/1.0/LICENSE.txt)

## Pièces jointes
<a name="attachments-e7a90b31-de8f-41fd-bb3f-c7c6100fc306"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/e7a90b31-de8f-41fd-bb3f-c7c6100fc306/attachments/attachment.zip)

# Visualisez les résultats AI/ML du modèle à l'aide de Flask et d'AWS Elastic Beanstalk
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk"></a>

*Chris Caudill et Durga Sury, Amazon Web Services*

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

La visualisation des résultats des services d'intelligence artificielle et d'apprentissage automatique (AI/ML) nécessite souvent des appels d'API complexes qui doivent être personnalisés par vos développeurs et ingénieurs. Cela peut s'avérer un inconvénient si vos analystes souhaitent explorer rapidement un nouveau jeu de données.

Vous pouvez améliorer l'accessibilité de vos services et proposer une forme d'analyse de données plus interactive en utilisant une interface utilisateur (UI) Web qui permet aux utilisateurs de télécharger leurs propres données et de visualiser les résultats du modèle dans un tableau de bord.

Ce modèle utilise [Flask](https://flask.palletsprojects.com/en/2.0.x/) et [Plotly](https://plotly.com/) pour intégrer Amazon Comprehend à une application Web personnalisée et visualiser les sentiments et les entités à partir des données fournies par les utilisateurs. Le modèle indique également les étapes à suivre pour déployer une application à l'aide d'AWS Elastic Beanstalk. Vous pouvez adapter l'application en utilisant les services d'[intelligence artificielle d'Amazon Web Services (AWS)](https://aws.amazon.com/machine-learning/ai-services/) ou avec un modèle entraîné personnalisé hébergé sur un point de terminaison (par exemple, un point de [ SageMaker terminaison Amazon](https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html)).

## Conditions préalables et limitations
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif. 
+ Interface de ligne de commande AWS (AWS CLI), installée et configurée sur votre machine locale. Pour plus d'informations à ce sujet, consultez la section [Principes de base de la configuration](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) dans la documentation de l'AWS CLI. Vous pouvez également utiliser un environnement de développement intégré (IDE) AWS Cloud9 ; pour plus d'informations à ce sujet, consultez le [didacticiel Python pour AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/sample-python.html) [et la prévisualisation des applications en cours d'exécution dans l'IDE AWS Cloud9 dans la documentation AWS](https://docs.aws.amazon.com/cloud9/latest/user-guide/app-preview.html) Cloud9.

  **Remarque** : n' AWS Cloud9 est plus disponible pour les nouveaux clients. Les clients existants de AWS Cloud9 peuvent continuer à utiliser le service normalement. [En savoir plus](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)
+ Compréhension du framework d'applications Web de Flask. Pour plus d'informations sur Flask, consultez le [Quickstart](https://flask.palletsprojects.com/en/1.1.x/quickstart) dans la documentation de Flask.
+ Python version 3.6 ou ultérieure, installé et configuré. Vous pouvez installer Python en suivant les instructions de la section [Configuration de votre environnement de développement Python](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/python-development-environment.html) dans la documentation AWS Elastic Beanstalk.
+ Interface de ligne de commande Elastic Beanstalk (EB CLI), installée et configurée. Pour plus d'informations à ce sujet, consultez [Installer l'interface de ligne de commande EB et configurer l'interface](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-install.html) [de ligne de commande EB](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-configuration.html) dans la documentation AWS Elastic Beanstalk.

**Limites**
+ L'application Flask de ce modèle est conçue pour fonctionner avec des fichiers .csv qui utilisent une seule colonne de texte et sont limités à 200 lignes. Le code de l'application peut être adapté pour gérer d'autres types de fichiers et volumes de données.
+ L'application ne prend pas en compte la conservation des données et continue d'agréger les fichiers utilisateur téléchargés jusqu'à ce qu'ils soient supprimés manuellement. Vous pouvez intégrer l'application à Amazon Simple Storage Service (Amazon S3) pour le stockage d'objets persistants ou utiliser une base de données telle qu'Amazon DynamoDB pour le stockage clé-valeur sans serveur.
+ L'application ne prend en compte que les documents en anglais. Cependant, vous pouvez utiliser Amazon Comprehend pour détecter la langue principale d'un document. Pour plus d'informations sur les langues prises en charge pour chaque action, consultez la [référence des API](https://docs.aws.amazon.com/comprehend/latest/dg/API_Reference.html) dans la documentation Amazon Comprehend.
+ Une liste de résolution des problèmes contenant les erreurs courantes et leurs solutions est disponible dans la section *Informations supplémentaires*.

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

**Architecture d'application Flask**

Flask est un framework léger pour développer des applications Web en Python. Il est conçu pour combiner le puissant traitement des données de Python avec une interface utilisateur Web riche. L'application Flask du modèle vous montre comment créer une application Web qui permet aux utilisateurs de télécharger des données, d'envoyer les données à Amazon Comprehend pour inférence, puis de visualiser les résultats.   La structure de l'application est la suivante :
+ `static`— Contient tous les fichiers statiques compatibles avec l'interface utilisateur Web (par exemple JavaScript, le CSS et les images)
+ `templates`— Contient toutes les pages HTML de l'application
+ `userData`— Stocke les données utilisateur téléchargées
+ `application.py`— Le fichier d'application Flask
+ `comprehend_helper.py`— Fonctions permettant de passer des appels d'API à Amazon Comprehend
+ `config.py`— Le fichier de configuration de l'application
+ `requirements.txt`— Les dépendances Python requises par l'application

Le `application.py` script contient les fonctionnalités de base de l'application Web, qui se composent de quatre routes Flask. Le schéma suivant montre ces itinéraires Flask.

![\[Les quatre routes Flask qui constituent les fonctionnalités de base de l'application Web.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/03d80cf1-ec97-43f7-adb5-2746a9ec70e6/images/9ca6bad1-26e2-4262-98d0-d54c172336bf.png)


 
+ `/`est la racine de l'application et dirige les utilisateurs vers la `upload.html` page (stockée dans le `templates` répertoire).
+ `/saveFile`est une route qui est invoquée après qu'un utilisateur télécharge un fichier. Cette route reçoit une `POST` demande via un formulaire HTML, qui contient le fichier téléchargé par l'utilisateur. Le fichier est enregistré dans le `userData` répertoire et l'itinéraire redirige les utilisateurs vers l'`/dashboard`itinéraire.
+ `/dashboard`renvoie les utilisateurs vers la `dashboard.html` page. Dans le code HTML de cette page, il exécute le JavaScript code `static/js/core.js` qui lit les données de l'`/data`itinéraire, puis crée des visualisations pour la page.
+ `/data`est une API JSON qui présente les données à visualiser dans le tableau de bord. Cet itinéraire lit les données fournies par l'utilisateur et utilise les fonctions incluses `comprehend_helper.py` pour envoyer les données utilisateur à Amazon Comprehend à des fins d'analyse des sentiments et de reconnaissance d'entités nommées (NER). La réponse d'Amazon Comprehend est formatée et renvoyée sous forme d'objet JSON.

**Architecture de déploiement**

![\[Schéma d'architecture permettant d'utiliser Flask et Elastic AI/ML Beanstalk pour visualiser les résultats du modèle.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/03d80cf1-ec97-43f7-adb5-2746a9ec70e6/images/d691bfd2-e2ec-4830-8bff-ffa1e3a95c4a.png)


[Considérations relatives à la conception](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.concepts.design.html)

 Pour plus d'informations sur les considérations relatives à la conception des applications déployées à l'aide d'Elastic Beanstalk sur le cloud AWS, consultez la documentation d'AWS Elastic Beanstalk.

**Pile technologique**
+ Amazon Comprehend 
+ Elastic Beanstalk 
+ Flask 

**Automatisation et mise à l'échelle**

Les déploiements d'Elastic Beanstalk sont automatiquement configurés à l'aide d'équilibreurs de charge et de groupes de dimensionnement automatique. Pour plus d'options de configuration, consultez la [section Configuration des environnements Elastic Beanstalk dans la documentation d'AWS Elastic](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers.html) Beanstalk.

## Outils
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-tools"></a>
+ [L'interface de ligne de commande AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil unifié qui fournit une interface cohérente pour interagir avec toutes les parties d'AWS.
+ [Amazon Comprehend](https://docs.aws.amazon.com/comprehend/latest/dg/comprehend-general.html) utilise le traitement du langage naturel (NLP) pour extraire des informations sur le contenu des documents sans nécessiter de prétraitement spécial.
+ [AWS Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html) vous permet de déployer et de gérer rapidement des applications dans le cloud AWS sans avoir à vous renseigner sur l'infrastructure qui exécute ces applications.
+ [Elastic Beanstalk CLI (EB CLI](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3.html)) est une interface de ligne de commande pour AWS Elastic Beanstalk qui fournit des commandes interactives pour simplifier la création, la mise à jour et la surveillance d'environnements à partir d'un référentiel local.
+ Le framework [Flask](https://flask.palletsprojects.com/en/2.0.x/) effectue le traitement des données et les appels d'API à l'aide de Python et propose une visualisation Web interactive avec Plotly.

**Code**

Le code de ce modèle est disponible dans les [résultats du AI/ML modèle GitHub Visualize à l'aide de Flask et du référentiel AWS Elastic Beanstalk](https://github.com/aws-samples/aws-comprehend-elasticbeanstalk-for-flask).

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

### Configurer l'application Flask
<a name="set-up-the-flask-application"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Clonez le GitHub dépôt. | Extrayez le code de l'application à partir des [résultats du AI/ML modèle GitHub Visualize à l'aide de Flask et du référentiel AWS Elastic Beanstalk](https://github.com/aws-samples/aws-comprehend-elasticbeanstalk-for-flask) en exécutant la commande suivante :`git clone git@github.com:aws-samples/aws-comprehend-elasticbeanstalk-for-flask.git`Assurez-vous de configurer vos clés SSH avec GitHub. | Developer | 
| Installez les modules Python. | Une fois le dépôt cloné, un nouveau `aws-comprehend-elasticbeanstalk-for-flask` répertoire local est créé. Dans ce répertoire, le `requirements.txt` fichier contient les modules Python et les versions qui exécutent l'application. Utilisez les commandes suivantes pour installer les modules :`cd aws-comprehend-elasticbeanstalk-for-flask``pip install -r requirements.txt` | Développeur Python | 
| Testez l'application localement. | Démarrez le serveur Flask en exécutant la commande suivante :`python application.py`Cela renvoie des informations sur le serveur en cours d'exécution. Vous devriez pouvoir accéder à l'application en ouvrant un navigateur et en vous rendant sur http://localhost:5000Si vous exécutez l'application dans un IDE AWS Cloud9, vous devez remplacer la `application.run()` commande du `application.py` fichier par la ligne suivante :`application.run(host=os.getenv('IP', '0.0.0.0'),port=int(os.getenv('PORT', 8080)))`Vous devez annuler cette modification avant le déploiement. | Développeur Python | 

### Déployez l'application sur Elastic Beanstalk
<a name="deploy-the-application-to-elastic-beanstalk"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Lancez l'application Elastic Beanstalk. | Pour lancer votre projet en tant qu'application Elastic Beanstalk, exécutez la commande suivante depuis le répertoire racine de votre application :`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/fr_fr/prescriptive-guidance/latest/patterns/visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.html)Exécutez la `eb init -i` commande pour obtenir d'autres options de configuration de déploiement. | Architecte, développeur | 
| Déployez l'environnement Elastic Beanstalk. | Exécutez la commande suivante depuis le répertoire racine de l'application :`eb create comprehend-flask-env``comprehend-flask-env`est le nom de l'environnement Elastic Beanstalk et peut être modifié selon vos besoins. Le nom ne peut contenir que des lettres, des chiffres et des tirets. | Architecte, développeur | 
| Autorisez votre déploiement à utiliser Amazon Comprehend. | Bien que votre application soit déployée avec succès, vous devez également fournir à votre déploiement un accès à Amazon Comprehend. `ComprehendFullAccess`est une politique gérée par AWS qui fournit à l'application déployée les autorisations nécessaires pour effectuer des appels d'API à Amazon Comprehend.Attachez la `ComprehendFullAccess` politique à `aws-elasticbeanstalk-ec2-role` (ce rôle est automatiquement créé pour les instances Amazon Elastic Compute Cloud (Amazon EC2) de votre déploiement) en exécutant la commande suivante :`aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/ComprehendFullAccess --role-name aws-elasticbeanstalk-ec2-role``aws-elasticbeanstalk-ec2-role`est créé lors du déploiement de votre application. Vous devez terminer le processus de déploiement avant de pouvoir joindre la politique AWS Identity and Access Management (IAM). | Développeur, architecte de sécurité | 
| Accédez à l'application que vous avez déployée. | Une fois votre application déployée avec succès, vous pouvez la visiter en exécutant la `eb open` commande.Vous pouvez également exécuter la `eb status` commande pour recevoir des informations sur votre déploiement. L'URL de déploiement est répertoriée ci-dessous`CNAME`. | Architecte, développeur | 

### (Facultatif) Personnalisez l'application en fonction de votre modèle ML
<a name="optional-customize-the-application-to-your-ml-model"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Autorisez Elastic Beanstalk à accéder au nouveau modèle. | Assurez-vous qu'Elastic Beanstalk dispose des autorisations d'accès requises pour votre nouveau modèle de point de terminaison. Par exemple, si vous utilisez un point de SageMaker terminaison Amazon, votre déploiement doit être autorisé à appeler le point de terminaison. Pour plus d'informations à ce sujet, consultez [InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html)la SageMaker documentation Amazon. | Développeur, architecte de sécurité | 
| Envoyez les données utilisateur vers un nouveau modèle. | Pour modifier le modèle de machine learning sous-jacent dans cette application, vous devez modifier les fichiers suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.html) | Scientifique des données | 
| Mettez à jour les visualisations du tableau de bord. | Généralement, l'incorporation d'un nouveau modèle de machine learning signifie que les visualisations doivent être mises à jour pour refléter les nouveaux résultats. Ces modifications sont apportées dans les fichiers suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.html) | Développeur Web | 

### (Facultatif) Déployez l'application mise à jour
<a name="optional-deploy-the-updated-application"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Mettez à jour le fichier d'exigences de votre application. | Avant d'envoyer des modifications à Elastic Beanstalk, `requirements.txt` mettez à jour le fichier pour qu'il reflète les nouveaux modules Python en exécutant la commande suivante dans le répertoire racine de votre application :`pip freeze > requirements.txt` | Développeur Python | 
| Redéployez l'environnement Elastic Beanstalk. | Pour vous assurer que les modifications apportées à votre application sont reflétées dans votre déploiement d'Elastic Beanstalk, accédez au répertoire racine de votre application et exécutez la commande suivante :`eb deploy`Cela envoie la version la plus récente du code de l'application à votre déploiement Elastic Beanstalk existant. | Administrateur système, architecte | 

## Ressources connexes
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-resources"></a>
+ [Appelez un point de terminaison SageMaker modèle Amazon à l'aide d'Amazon API Gateway et d'AWS Lambda](https://aws.amazon.com/blogs/machine-learning/call-an-amazon-sagemaker-model-endpoint-using-amazon-api-gateway-and-aws-lambda/)
+ [Déploiement d'une application Flask sur Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-flask.html)
+ [Référence de commande EB CLI](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-cmd-commands.html)
+ [Configuration de votre environnement de développement Python](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/python-development-environment.html)

## Informations supplémentaires
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-additional"></a>

**Liste de résolution des problèmes**

Voici six erreurs courantes et leurs solutions.

***Erreur 1***

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

**Solution** : Si cette erreur se produit lors de l'exécution`eb create`, créez un exemple d'application sur la console Elastic Beanstalk pour créer le profil d'instance par défaut. Pour plus d'informations à ce sujet, consultez la section [Création d'un environnement Elastic Beanstalk dans la documentation d'AWS Elastic](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.environments.html) Beanstalk.

***Erreur 2***

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

**Solution :** Cette erreur se produit dans les journaux de déploiement car Elastic Beanstalk s'attend à ce que le code Flask soit nommé. `application.py` Si vous avez choisi un autre nom, exécutez-le `eb config` et WSGIPath modifiez-le comme indiqué dans l'exemple de code suivant :

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

Assurez-vous de le remplacer `application.py` par le nom de votre fichier.

Vous pouvez également utiliser Gunicorn et un Procfile. Pour plus d'informations sur cette approche, consultez [la section Configuration du serveur WSGI avec un Procfile](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/python-configuration-procfile.html) dans la documentation AWS Elastic Beanstalk.

***Erreur 3***

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

**Solution :** Elastic Beanstalk s'attend à ce que la variable représentant votre application Flask soit nommée. `application` Assurez-vous que le `application.py` fichier utilise `application` comme nom de variable :

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

***Erreur 4***

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

**Solution :** utilisez l'interface de ligne de commande EB pour spécifier la paire de clés à utiliser ou pour créer une paire de clés pour les instances EC2 de votre déploiement. Pour résoudre l'erreur, lancez `eb init -i` et l'une des options vous demandera :

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

Répondez par `Y` pour créer une paire de clés ou pour spécifier une paire de clés existante.

***Erreur 5***

*J'ai mis à jour mon code et je l'ai redéployé, mais mon déploiement ne reflète pas mes modifications.*

**Solution** : Si vous utilisez un dépôt Git pour votre déploiement, assurez-vous d'ajouter et de valider vos modifications avant de redéployer.

***Erreur 6***

*Vous êtes en train de prévisualiser l'application Flask à partir d'un IDE AWS Cloud9 et vous rencontrez des erreurs.*

**Solution :** pour plus d'informations à ce sujet, consultez la section [Aperçu des applications en cours d'exécution dans l'IDE AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/app-preview.html) dans la documentation AWS Cloud9.

 

 

**Traitement du langage naturel à l'aide d'Amazon Comprehend**

En choisissant d'utiliser Amazon Comprehend, vous pouvez détecter des entités personnalisées dans des documents texte individuels en exécutant une analyse en temps réel ou des tâches par lots asynchrones. Amazon Comprehend vous permet également de former des modèles personnalisés de reconnaissance d'entités et de classification de texte qui peuvent être utilisés en temps réel en créant un point de terminaison.

Ce modèle utilise des tâches par lots asynchrones pour détecter les sentiments et les entités d'un fichier d'entrée contenant plusieurs documents. L'exemple d'application fourni par ce modèle est conçu pour que les utilisateurs puissent télécharger un fichier .csv contenant une seule colonne avec un document texte par ligne. Le `comprehend_helper.py` fichier contenu dans les [résultats du AI/ML modèle GitHub Visualize à l'aide de Flask et du référentiel AWS Elastic](https://github.com/aws-samples/aws-comprehend-elasticbeanstalk-for-flask) Beanstalk lit le fichier d'entrée et l'envoie à Amazon Comprehend pour traitement.

*BatchDetectEntities*

Amazon Comprehend inspecte le texte d'un lot de documents à la recherche d'entités nommées et renvoie l'entité détectée, l'emplacement, le [type d'entité](https://docs.aws.amazon.com/comprehend/latest/dg/how-entities.html), ainsi qu'un score indiquant le niveau de confiance d'Amazon Comprehend. Un maximum de 25 documents peuvent être envoyés en un seul appel d'API, chaque document ayant une taille inférieure à 5 000 octets. Vous pouvez filtrer les résultats pour n'afficher que certaines entités en fonction du cas d'utilisation. Par exemple, vous pouvez ignorer le type d'`‘quantity’`entité et définir un score de seuil pour l'entité détectée (par exemple, 0,75). Nous vous recommandons d'étudier les résultats correspondant à votre cas d'utilisation spécifique avant de choisir une valeur de seuil. Pour plus d'informations à ce sujet, consultez [BatchDetectEntities](https://docs.aws.amazon.com/comprehend/latest/dg/API_BatchDetectEntities.html)la documentation Amazon Comprehend.

*BatchDetectSentiment*

Amazon Comprehend inspecte un lot de documents entrants et renvoie le sentiment dominant pour chaque document (`POSITIVE`, `NEUTRAL``MIXED`, ou). `NEGATIVE` Un maximum de 25 documents peuvent être envoyés en un seul appel d'API, chaque document ayant une taille inférieure à 5 000 octets. L'analyse du sentiment est simple et vous choisissez le sentiment ayant le score le plus élevé à afficher dans les résultats finaux. Pour plus d'informations à ce sujet, consultez [BatchDetectSentiment](https://docs.aws.amazon.com/comprehend/latest/dg/API_BatchDetectSentiment.html)la documentation Amazon Comprehend.

 

 

**Gestion de la configuration des flasques**

Les serveurs Flask utilisent une série de [variables de configuration](https://flask.palletsprojects.com/en/1.1.x/config/) pour contrôler le fonctionnement du serveur. Ces variables peuvent contenir des résultats de débogage, des jetons de session ou d'autres paramètres d'application. Vous pouvez également définir des variables personnalisées accessibles pendant que l'application est en cours d'exécution. Il existe plusieurs approches pour définir les variables de configuration.

Dans ce modèle, la configuration est définie `config.py` et héritée dans`application.py`.
+ 
**Note**  
`config.py`contient les variables de configuration définies au démarrage de l'application. Dans cette application, une `DEBUG` variable est définie pour indiquer à l'application d'exécuter le serveur en [mode débogage](https://flask.palletsprojects.com/en/1.1.x/config/#DEBUG). : le mode Debug ne doit pas être utilisé lors de l'exécution d'une application dans un environnement de production. `UPLOAD_FOLDER`est une variable personnalisée qui est définie pour être référencée ultérieurement dans l'application et indiquer où les données utilisateur téléchargées doivent être stockées.
+ `application.py`lance l'application Flask et hérite des paramètres de configuration définis dans. `config.py` Cela s'effectue à l'aide du code suivant :

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

# Plus de modèles
<a name="machinelearning-more-patterns-pattern-list"></a>

**Topics**
+ [Accélérez MLOps avec Backstage et les modèles Amazon SageMaker AI en libre-service](accelerate-mlops-with-backstage-and-sagemaker-templates.md)
+ [Automatisez AWS les opérations d'infrastructure en utilisant Amazon Bedrock](automate-aws-infrastructure-operations-by-using-amazon-bedrock.md)
+ [Déployez des systèmes agentic sur Amazon Bedrock avec le framework CrewAI en utilisant Terraform](deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.md)
+ [Déployez une ChatOps solution pour gérer les résultats du scan SAST en utilisant Amazon Q Developer dans les applications de chat, les actions personnalisées et CloudFormation](deploy-chatops-solution-to-manage-sast-scan-results.md)
+ [Générez des informations sur les données AWS Mainframe Modernization en utilisant Amazon Q dans Quick Sight](generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.md)
+ [Générez des informations sur z/OS les données DB2 en utilisant AWS Mainframe Modernization Amazon Q dans Quick Sight](generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.md)
+ [Donnez aux instances de SageMaker bloc-notes un accès temporaire à un CodeCommit référentiel dans un autre compte AWS](give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account.md)
+ [Gérez AWS Organizations les politiques sous forme de code en utilisant AWS CodePipeline Amazon Bedrock](manage-organizations-policies-as-code.md)
+ [Modernisez l'application CardDemo mainframe en utilisant AWS Transform](modernize-carddemo-mainframe-app.md)
+ [Modernisez et déployez des applications mainframe à l'aide de AWS Transform Terraform](modernize-mainframe-app-transform-terraform.md)
+ [Effectuez des analyses avancées à l'aide d'Amazon Redshift ML](perform-advanced-analytics-using-amazon-redshift-ml.md)
+ [Simplifiez EC2 la gestion de la conformité d'Amazon avec les agents Amazon Bedrock et AWS Config](streamline-amazon-ec2-compliance-management-with-amazon-bedrock-agents-and-aws-config.md)
+ [Simplifiez le développement et le déploiement des robots Amazon Lex à l'aide d'un flux de travail automatisé](streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow.md)
+ [Résoudre les problèmes liés aux états en AWS Step Functions utilisant Amazon Bedrock](troubleshooting-states-in-aws-step-functions.md)