Introduction
Conditions préalables
Pile technologique cible
Déploiement
Commandes CDK utiles
Structure du code
Personnalisez le chatbot avec vos propres données
Cette application GenAI ChatBot a été créée avec Amazon Bedrock, qui comprend KnowledgeBase, Agent et des solutions GenAI sans serveur AWS supplémentaires. La solution fournie présente un Chatbot qui utilise sa compréhension des instances EC2 et la tarification des instances EC2. Ce chatbot fonctionne comme une illustration des capacités d'Amazon Bedrock à convertir le langage naturel en requêtes Amazon Athena et à traiter et utiliser des ensembles de données complexes. Des outils open source, tels que LLamaIndex, sont utilisés pour augmenter les capacités du système en matière de traitement et de récupération de données. L'intégration de plusieurs ressources AWS est également mise en avant dans la solution. Ces ressources comprennent Amazon S3 pour le stockage, Amazon Bedrock KnowledgeBase pour faciliter la génération augmentée de récupération (RAG), l'agent Amazon Bedrock pour exécuter des tâches en plusieurs étapes sur plusieurs sources de données, AWS Glue pour préparer les données, Amazon Athena pour exécuter des requêtes efficaces, Amazon Lambda pour gérer les conteneurs et Amazon ECS pour superviser les conteneurs. L'utilisation combinée de ces ressources permet au Chatbot de récupérer et d'administrer efficacement le contenu des bases de données et des documents, démontrant ainsi les capacités d'Amazon Bedrock dans le développement d'applications Chatbot avancées.
Docker
AWS CDK Toolkit 2.114.1+, installé, installé et configuré. Pour plus d'informations, consultez Démarrage avec AWS CDK dans la documentation AWS CDK.
Python 3.11+, installé et configuré. Pour plus d'informations, consultez Guide du débutant/Téléchargement dans la documentation Python.
Un compte AWS actif
Un compte AWS démarré à l'aide d'AWS CDK dans us-east-1 ou us-west-2. Activez l’accès aux modèles Claude et Titan Embedding dans le service Bedrock.
Substrat amazonien
Amazon OpenSearch sans serveur
AmazonECS
Colle AWS
AWS Lambda
Amazone S3
Amazone Athéna
Équilibreur de charge élastique
Pour exécuter l'application localement, ajoutez d'abord un fichier .env au dossier « code/streamlit-app » contenant les éléments suivants
ACCOUNT_ID =AWS_REGION = LAMBDA_FUNCTION_NAME = InvoqueAgentLambda # Définit le nom de choix pour la fonction lambda appelée par streamlit pour une réponse. Appelle actuellement un agent.
Le fichier cdk.json
indique au CDK Toolkit comment exécuter votre application.
Ce projet est configuré comme un projet Python standard. Le processus d'initialisation crée également un virtualenv au sein de ce projet, stocké sous le répertoire .venv
. Pour créer le virtualenv, cela suppose qu'il existe un exécutable python3
(ou python
pour Windows) dans votre chemin avec accès au package venv
. Si, pour une raison quelconque, la création automatique du virtualenv échoue, vous pouvez créer le virtualenv manuellement.
Pour créer manuellement un virtualenv sur MacOS et Linux :
$ python3 -m venv .venv
Une fois le processus d'initialisation terminé et le virtualenv créé, vous pouvez utiliser l'étape suivante pour activer votre virtualenv.
$ source .venv/bin/activer
Si vous êtes une plateforme Windows, vous activeriez le virtualenv comme ceci :
% .venvScriptsactivate.bat
Une fois le virtualenv activé, vous pouvez installer les dépendances requises.
$ pip install -r exigences.txt
Pour ajouter des dépendances supplémentaires, par exemple d'autres bibliothèques CDK, ajoutez-les simplement à votre fichier setup.py
et réexécutez la commande pip install -r requirements.txt
.
À ce stade, vous pouvez désormais synthétiser le modèle CloudFormation pour ce code.
$ synthétiseur cdk
Pour ajouter des dépendances supplémentaires, par exemple d'autres bibliothèques CDK, ajoutez-les simplement à votre fichier setup.py
et réexécutez la commande pip install -r requirements.txt
.
Vous devrez l'amorcer si c'est la première fois que vous exécutez cdk sur un compte et une région particuliers.
$ cdk d'amorçage
Une fois démarré, vous pouvez procéder au déploiement de cdk.
$ cdk déployer
Si c'est la première fois que vous le déployez, le processus peut prendre environ 30 à 45 minutes pour créer plusieurs images Docker dans ECS (Amazon Elastic Container Service). Veuillez être patient jusqu'à ce qu'il soit terminé. Ensuite, il commencera à déployer la pile de chatbot, ce qui prend généralement environ 5 à 8 minutes.
Une fois le processus de déploiement terminé, vous verrez la sortie du cdk dans le terminal et vous pourrez également vérifier l'état dans votre console CloudFormation.
Vous pouvez tester l'agent dans la console AWS ou via l'URL de l'application simplifiée répertoriée dans les sorties de chatbot-stack dans CloudFormation.
Pour supprimer le cdk une fois que vous avez fini de l'utiliser afin d'éviter des coûts futurs, vous pouvez soit le supprimer via la console, soit exécuter la commande suivante dans le terminal.
$ cdk détruire
Vous devrez peut-être également supprimer manuellement le compartiment S3 généré par le cdk. Veuillez vous assurer de supprimer toutes les ressources générées pour éviter d'engager des coûts.
cdk ls
répertorie toutes les piles de l'application
cdk synth
émet le modèle CloudFormation synthétisé
cdk deploy
déployez cette pile sur votre compte/région AWS par défaut
cdk diff
compare la pile déployée avec l'état actuel
cdk docs
ouvre la documentation CDK
cdk destroy
détruit une ou plusieurs piles spécifiées
code # Root folder for code for this solution ├── lambdas # Root folder for all lambda functions │ ├── action-lambda # Lambda function that acts as an action for the Amazon Bedrock Agent │ ├── create-index-lambda # Lambda function that create Amazon Opensearch serverless index as Amazon Bedrock Knowlege base's vector database │ ├── invoke-lambda # Lambda function that invokes Amazon Bedrock Agent, which is called diretly from the streamlit app │ └── update-lambda # Lambda function that update/delete resources after AWS resources deployed via AWS CDK. ├── layers # Root folder for all lambda layers │ ├── boto3_layer # Boto3 layer that is shared across all lambdas │ └── opensearch_layer # opensearh layer that installs all dependencies for create Amazon Opensearch serverless index. ├── streamlit-app # Steamlit app that interacts with the Amazon Bedrock Agent └── code_stack.py # Amazon CDK stack that deploys all AWS resources
Pour intégrer vos données personnalisées afin de déployer la solution, veuillez suivre ces directives structurées adaptées à vos besoins :
Localisez le répertoire assets/knowledgebase_data_source/
.
Placez votre ensemble de données dans ce dossier.
Accédez au fichier cdk.json
.
Accédez au champ context/configure/paths/knowledgebase_file_name
et mettez-le à jour en conséquence.
De plus, modifiez le champ bedrock_instructions/knowledgebase_instruction
dans le fichier cdk.json
pour refléter avec précision les nuances et le contexte de votre nouvel ensemble de données.
Dans le répertoire assets/data_query_data_source/
, créez un sous-répertoire, par exemple tabular_data.
Déposez votre ensemble de données structurées (les formats acceptables incluent CSV , JSON , ORC et Parquet ) dans ce sous-dossier nouvellement créé.
Si vous vous connectez à votre base de données existante , mettez à jour la fonction create_sql_engine()
dans code/lambda/action-lambda/build_query_engine.py
pour vous connecter à votre base de données.
Mettez à jour le champ context/configure/paths/athena_table_data_prefix
du fichier cdk.json
pour l'aligner sur le nouveau chemin de données.
Révisez code/lambda/action-lambda/dynamic_examples.csv
en incorporant du nouveau texte aux exemples SQL qui correspondent à votre ensemble de données.
Révisez code/lambda/action-lambda/prompt_templates.py
pour refléter les attributs de vos nouvelles données tabulaires.
Modifiez le champ context/configure/bedrock_instructions/action_group_description
du fichier cdk.json
pour élucider l'objectif et la fonctionnalité de l'action lambda adaptée à votre ensemble de données.
Reflétez les nouvelles fonctionnalités de votre action lambda dans le fichier assets/agent_api_schema/artifacts_schema.json
.
Dans le fichier cdk.json
, sous la context/configure/bedrock_instructions/agent_instruction section
, fournissez une description complète de la fonctionnalité prévue et de l'objectif de conception de l'agent Amazon Bedrock, en tenant compte des données nouvellement intégrées.
Ces étapes sont conçues pour garantir un processus d'intégration transparent et efficace, vous permettant de déployer efficacement la solution avec vos données sur mesure.