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.
Développez un assistant entièrement automatisé basé sur le chat en utilisant les agents et les bases de connaissances Amazon Bedrock
Créée par Jundong Qiao (AWS), Kara Yang (AWS), Kiowa Jackson (AWS), Noah Hamilton (AWS), Praveen Kumar Jeyarajan (AWS) et Shuai Cao (AWS)
Récapitulatif
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, 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) est une fonctionnalité essentielle. Il utilise des bases de connaissances pour compléter les instructions FM avec des informations contextuelles pertinentes provenant de sources externes. Un index Amazon OpenSearch Serverless 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 les bases de données AWS Glue. Amazon Athena 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 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
Prérequis
Un compte AWS actif
AWS Cloud Development Kit (AWS CDK), installé et démarré dans la ou
us-east-1
les régions AWSus-west-2
Interface de ligne de commande AWS (AWS CLI), installée et configurée
Dans Amazon Bedrock, activez l'accès à 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 dans les régions AWS où Amazon Bedrock et Amazon OpenSearch Serverless sont pris en charge. Pour plus d'informations, consultez la documentation d'Amazon Bedrock et d'Amazon OpenSearch Serverless.
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_AWS4Auth version 1.2.3 ou ultérieure
SDK AWS pour Python (Boto3), version 1.34.57 ou ultérieure
Architecture
Pile technologique cible
L'AWS Cloud Development Kit (AWS CDK) est un framework de développement logiciel open source permettant de définir l'infrastructure cloud dans le code et de la provisionner via AWS. CloudFormation La pile AWS CDK utilisée dans ce modèle déploie les ressources AWS suivantes :
AWS Key Management Service (AWS KMS)
Amazon Simple Storage Service (Amazon S3)
Catalogue de données AWS Glue, pour le composant de base de données AWS Glue
AWS Lambda
AWS Identity and Access Management (IAM)
Amazon OpenSearch sans serveur
Amazon Elastic Container Registry (Amazon ECR)
Amazon Elastic Container Service (Amazon ECS)
AWS Fargate
Amazon Virtual Private Cloud (Amazon VPC)
Architecture cible

Le schéma montre une configuration cloud native complète d'AWS au sein d'une seule région AWS, en utilisant plusieurs services AWS. L'interface principale de l'assistant basé sur le chat est une application StreamlitInvocation
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 LambdaAgent 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 base de données AWS Glue via Amazon Athena.
Outils
Services AWS
Amazon Athena 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 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) 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) 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) 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 (ELB) 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 d'Amazon Elastic Compute Cloud (Amazon EC2) dans une ou plusieurs zones de disponibilité.
AWS 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.
AWS Lambda 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 OpenSearch Serverless 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) 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
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
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 les ressources AWS déployées via le CDK AWS.code/layers/boto3_layer
dossier — La pile AWS CDK qui crée une couche Boto3 partagée entre toutes les fonctions Lambda.code/layers/opensearch_layer
dossier — La pile AWS CDK 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 de conteneur dans Amazon ECScode/code_stack.py
— Le kit AWS CDK crée des fichiers Python qui créent des ressources AWS.app.py
— Le CDK AWS accumule des fichiers Python qui déploient 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. De plus, dans lescontext/config
champs, vous pouvez personnaliser la solution en conséquence. Pour plus d'informations sur la personnalisation, consultez la section Informations supplémentaires.
Bonnes pratiques
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
Activer les journaux de flux VPC
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. Pour connaître les meilleures pratiques, consultez les meilleures pratiques d'utilisation des fonctions AWS Lambda.
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Exportez les variables du compte et de la région. | Pour fournir des informations d'identification AWS pour le CDK AWS à l'aide de variables d'environnement, exécutez les commandes suivantes.
| AWS DevOps, DevOps ingénieur |
Configurez le profil nommé de l'interface de ligne de commande 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. | AWS DevOps, DevOps ingénieur |
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.
| DevOps ingénieur, AWS DevOps |
Configurez l'environnement virtuel Python. | Pour configurer l'environnement virtuel Python, exécutez les commandes suivantes.
Pour configurer les dépendances requises, exécutez la commande suivante.
| DevOps ingénieur, AWS DevOps |
Configurez l'environnement AWS CDK. | Pour convertir le code en CloudFormation modèle AWS, exécutez la commande | AWS DevOps, DevOps ingénieur |
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 kit AWS CDK, procédez comme suit :
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 |
Tâche | Description | Compétences requises |
---|---|---|
Supprimez les ressources AWS. | Après avoir testé la solution, exécutez la commande pour nettoyer les ressources | AWS DevOps, DevOps ingénieur |
Ressources connexes
Documentation AWS
Ressources Amazon Bedrock :
Ressources du kit AWS CDK :
Autres ressources AWS
Autres ressources
Informations supplémentaires
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
Localisez le
assets/knowledgebase_data_source/
répertoire.Placez votre ensemble de données dans ce dossier.
Ajustements de configuration
Ouvrez le fichier
cdk.json
.Accédez au
context/configure/paths/knowledgebase_file_name
champ, puis mettez-le à jour en conséquence.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
Dans le
assets/data_query_data_source/
répertoire, créez un sous-répertoire, tel quetabular_data
.Placez votre jeu de données structuré (les formats acceptables incluent CSV, JSON, ORC et Parquet) dans ce sous-dossier nouvellement créé.
Si vous vous connectez à une base de données existante, mettez à jour la fonction
code/lambda/action-lambda/build_query_engine.py
pour vous connectercreate_sql_engine()
à votre base de données.
Mises à jour de configuration et de code
Dans le
cdk.json
fichier, mettez à jour lecontext/configure/paths/athena_table_data_prefix
champ pour l'aligner sur le nouveau chemin de données.Révisez
code/lambda/action-lambda/dynamic_examples.csv
en incorporant de nouveaux text-to-SQL exemples correspondant à votre ensemble de données.Révisez
code/lambda/action-lambda/prompt_templates.py
pour refléter les attributs de votre jeu de données structuré.Dans le
cdk.json
fichier, mettez à jour lecontext/configure/bedrock_instructions/action_group_description
champ pour expliquer le but et les fonctionnalités de la fonctionAction group
Lambda.Dans le
assets/agent_api_schema/artifacts_schema.json
fichier, expliquez les nouvelles fonctionnalités de votre fonctionAction 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.