Développez un assistant entièrement automatisé basé sur le chat en utilisant les agents et les bases de connaissances Amazon Bedrock - Recommandations AWS

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éférentiel de code : genai-bedrock-agent-chatbot

Environnement : PoC ou pilote

Technologies : apprentissage automatique et intelligence artificielle ; sans serveur

Services AWS : Amazon Bedrock ; AWS CDK ; AWS Lambda

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 (FM). 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 de données, les FM d'Amazon Bedrock transforment 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

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)

  • Application Load Balancer

Architecture cible

Schéma d'architecture utilisant une base de connaissances et un agent Amazon Bedrock

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 Streamlit hébergée sur un cluster Amazon ECS. Un 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 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 (FM) très performants 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 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-chatbotréférentiel. Le référentiel de code contient les fichiers et dossiers suivants :

  • 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 les ressources AWS déployées via le CDK AWS.

  • code/layers/boto3_layerdossier — La pile AWS CDK qui crée une couche Boto3 partagée entre toutes les fonctions Lambda.

  • code/layers/opensearch_layerdossier — 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-appdossier — Le code Python qui est exécuté en tant qu'image de conteneur dans Amazon ECS

  • code/code_stack.py— Le kit AWS CDK crée des fichiers Python qui créent des ressources AWS.

  • app.py— Le kit AWS CDK empile 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 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.

Bonnes pratiques

Épopées

TâcheDescriptionCompé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.

export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number> export CDK_DEFAULT_REGION=<Region>
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.

AWS DevOps, DevOps ingénieur
TâcheDescriptionCompé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.

git clone https://github.com/awslabs/genai-bedrock-agent-chatbot.git
DevOps ingénieur, AWS DevOps

Configurez l'environnement virtuel Python.

Pour configurer l'environnement virtuel Python, exécutez les commandes suivantes.

cd genai-bedrock-agent-chatbot python3 -m venv .venv source .venv/bin/activate

Pour configurer les dépendances requises, exécutez la commande suivante.

pip3 install -r requirements.txt
DevOps ingénieur, AWS DevOps

Configurez l'environnement AWS CDK.

Pour convertir le code en CloudFormation modèle AWS, exécutez la commandecdk synth.

AWS DevOps, DevOps ingénieur
TâcheDescriptionCompé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 :

  1. À la racine du référentiel cloné, dans le cdk.json fichier, entrez les paramètres de journalisation. Les valeurs d'exemple sont INFODEBUG,WARN, etERROR.

    Ces valeurs définissent les messages au niveau du journal pour les fonctions Lambda et l'application Streamlit.

  2. Le cdk.json fichier situé à la racine du référentiel cloné contient le nom de la CloudFormation pile AWS utilisée pour le déploiement. Le nom de la pile par défaut estchatbot-stack. Le nom de l'agent Amazon Bedrock par défaut estChatbotBedrockAgent, et l'alias de l'agent Amazon Bedrock par défaut est. Chatbot_Agent

  3. Pour déployer des ressources, exécutez la commandecdk deploy.

    La cdk deploy commande utilise des structures de couche 3 pour créer plusieurs fonctions Lambda permettant de copier des documents et des fichiers de jeux de données CSV dans des compartiments S3. Il déploie également l'agent Amazon Bedrock, les bases de connaissances et la fonction Action group Lambda pour l'agent Amazon Bedrock.

  4. Connectez-vous à l'AWS Management Console, puis ouvrez la CloudFormation console à l'adresse https://console.aws.amazon.com/cloudformation/.

  5. Vérifiez que la pile a été déployée avec succès. Pour obtenir des instructions, consultez la section Révision de votre stack sur la CloudFormation console AWS.

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âcheDescriptionCompétences requises

Supprimez les ressources AWS.

Après avoir testé la solution, exécutez la commande pour nettoyer les ressourcescdk destroy.

AWS DevOps, DevOps ingénieur

Ressources connexes

Documentation AWS

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

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

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

Ajustements de configuration

  1. Ouvrez le fichier cdk.json.

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

  3. 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 quetabular_data.

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

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

  2. Révisez code/lambda/action-lambda/dynamic_examples.csv en incorporant de nouveaux exemples de conversion de texte en SQL correspondant à votre ensemble de données.

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

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

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