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
Jundong Qiao, Shuai Cao, Noah Hamilton, Kiowa Jackson, Praveen Kumar Jeyarajan et Kara Yang, Amazon Web Services
Résumé
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 des bases de AWS Glue données. 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
Conditions préalables
Un actif Compte AWS
AWS Cloud Development Kit (AWS CDK), installé et démarré sur le ou
us-east-1us-west-2Régions AWSDans 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 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 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
AWS SDK pour Python (Boto3) version 1.34.57 ou ultérieure
Architecture
Pile technologique cible
Il s'AWS Cloud Development Kit (AWS CDK)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)
Architecture cible

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 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 AWS Glue base de données 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 AWS cloud sous forme de code.
AWS Command Line Interface (AWS CLI) 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) 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 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 Glueest 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 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 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
assetsdossier — Les actifs statiques, tels que le schéma d'architecture et le jeu de données public.code/lambdas/action-lambdadossier — Le code Python de la fonction Lambda qui agit comme une action pour l'agent Amazon Bedrock.code/lambdas/create-index-lambdadossier — Le code Python de la fonction Lambda qui crée l'index OpenSearch Serverless.code/lambdas/invoke-lambdadossier — Le code Python de la fonction Lambda qui appelle l'agent Amazon Bedrock, qui est appelé directement depuis l'application Streamlit.code/lambdas/update-lambdadossier — 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 CDKcode/layers/boto3_layerdossier — La AWS CDK pile qui crée une couche Boto3 partagée entre toutes les fonctions Lambda.code/layers/opensearch_layerdossier — 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-appdossier — 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 lescontext/configchamps, 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 AWS Lambda fonctions.
Épopées
| 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.
| 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. | AWS DevOps, DevOps ingénieur |
| 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.
| 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' AWS CDK environnement. | Pour convertir le code en AWS CloudFormation modèle, exécutez la commande | AWS DevOps, DevOps ingénieur |
| 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 :
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 |
| 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 | AWS DevOps, DevOps ingénieur |
Ressources connexes
AWS documentation
Ressources Amazon Bedrock :
AWS CDK ressources :
Autres AWS ressources
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_namechamp, puis mettez-le à jour en conséquence.Accédez au
bedrock_instructions/knowledgebase_instructionchamp, 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.pypour vous connectercreate_sql_engine()à votre base de données.
Mises à jour de configuration et de code
Dans le
cdk.jsonfichier, mettez à jour lecontext/configure/paths/athena_table_data_prefixchamp pour l'aligner sur le nouveau chemin de données.Révisez
code/lambda/action-lambda/dynamic_examples.csven incorporant de nouveaux text-to-SQL exemples correspondant à votre ensemble de données.Révisez
code/lambda/action-lambda/prompt_templates.pypour refléter les attributs de votre jeu de données structuré.Dans le
cdk.jsonfichier, mettez à jour lecontext/configure/bedrock_instructions/action_group_descriptionchamp pour expliquer le but et les fonctionnalités de la fonctionAction groupLambda.Dans le
assets/agent_api_schema/artifacts_schema.jsonfichier, expliquez les nouvelles fonctionnalités de votre fonctionAction groupLambda.
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.