Introducción
Requisitos previos
Pila de tecnología de destino
Despliegue
Comandos CDK útiles
Estructura del código
Personaliza el chatbot con tus propios datos
Esta aplicación GenAI ChatBot se creó con Amazon Bedrock, que incluye KnowledgeBase, Agent y soluciones GenAI adicionales sin servidor de AWS. La solución proporcionada muestra un Chatbot que hace uso de su conocimiento de las instancias EC2 y el precio de las instancias EC2. Este chatbot funciona como una ilustración de las capacidades de Amazon Bedrock para convertir el lenguaje natural en consultas de Amazon Athena y para procesar y utilizar conjuntos de datos complejos. Se utilizan herramientas de código abierto, como LLamaIndex, para aumentar las capacidades del sistema para el procesamiento y la recuperación de datos. La solución también destaca la integración de varios recursos de AWS. Estos recursos constan de Amazon S3 para almacenamiento, Amazon Bedrock KnowledgeBase para facilitar la recuperación de generación aumentada (RAG), el agente de Amazon Bedrock para ejecutar tareas de varios pasos en fuentes de datos, AWS Glue para preparar datos, Amazon Athena para ejecutar consultas eficientes, Amazon Lambda para administrar contenedores y Amazon ECS para supervisar los contenedores. La utilización combinada de estos recursos permite al Chatbot recuperar y administrar de manera eficiente contenido de bases de datos y documentos, demostrando así las capacidades de Amazon Bedrock en el desarrollo de aplicaciones avanzadas de Chatbot.
Estibador
AWS CDK Toolkit 2.114.1+, instalado, instalado y configurado. Para obtener más información, consulte Introducción a AWS CDK en la documentación de AWS CDK.
Python 3.11+, instalado y configurado. Para obtener más información, consulte Guía para principiantes/Descarga en la documentación de Python.
Una cuenta de AWS activa
Una cuenta de AWS iniciada mediante AWS CDK en us-east-1 o us-west-2. Habilite el acceso al modelo Claude y al modelo Titan Embedding en el servicio Bedrock.
Roca Amazónica
Amazon OpenSearch sin servidor
Amazon ECS
Pegamento AWS
AWS Lambda
amazon s3
Atenea amazónica
Balanceador de carga elástico
Para ejecutar la aplicación localmente, primero agregue un archivo .env a la carpeta 'code/streamlit-app' que contenga lo siguiente
ACCOUNT_ID =AWS_REGION = LAMBDA_FUNCTION_NAME = invokeAgentLambda # Establece el nombre de elección para la función lambda llamada por streamlit para obtener una respuesta. Actualmente invoca a un agente.
El archivo cdk.json
le indica al CDK Toolkit cómo ejecutar su aplicación.
Este proyecto está configurado como un proyecto Python estándar. El proceso de inicialización también crea un virtualenv dentro de este proyecto, almacenado en el directorio .venv
. Para crear virtualenv, se supone que hay un ejecutable python3
(o python
para Windows) en su ruta con acceso al paquete venv
. Si por algún motivo falla la creación automática del virtualenv, puede crear el virtualenv manualmente.
Para crear manualmente un virtualenv en MacOS y Linux:
$ python3 -m venv .venv
Una vez que se completa el proceso de inicio y se crea el virtualenv, puede utilizar el siguiente paso para activar su virtualenv.
$ fuente .venv/bin/activate
Si tiene una plataforma Windows, activaría virtualenv de esta manera:
% .venvScriptsactivate.bat
Una vez que virtualenv esté activado, puede instalar las dependencias necesarias.
$ pip instalar -r requisitos.txt
Para agregar dependencias adicionales, por ejemplo otras bibliotecas CDK, simplemente agréguelas a su archivo setup.py
y vuelva a ejecutar el comando pip install -r requirements.txt
.
En este punto, ahora puede sintetizar la plantilla de CloudFormation para este código.
sintetizador $ cdk
Para agregar dependencias adicionales, por ejemplo otras bibliotecas CDK, simplemente agréguelas a su archivo setup.py
y vuelva a ejecutar el comando pip install -r requirements.txt
.
Deberá iniciarlo si es la primera vez que ejecuta cdk en una cuenta y región en particular.
$ arranque cdk
Una vez que se haya iniciado, puede proceder a implementar cdk.
$ implementación de cdk
Si es la primera vez que lo implementa, el proceso puede tardar aproximadamente entre 30 y 45 minutos para crear varias imágenes de Docker en ECS (Amazon Elastic Container Service). Tenga paciencia hasta que esté completo. Luego, comenzará a implementar la pila de chatbot, lo que normalmente demora entre 5 y 8 minutos.
Una vez que se complete el proceso de implementación, verá la salida del cdk en la terminal y también podrá verificar el estado en su consola de CloudFormation.
Puede probar el agente en la consola de AWS o mediante la URL de la aplicación optimizada que figura en los resultados de chatbot-stack en CloudFormation.
Para eliminar el cdk una vez que haya terminado de usarlo para evitar costos futuros, puede eliminarlo a través de la consola o ejecutar el siguiente comando en la terminal.
$ cdk destruir
Es posible que también deba eliminar manualmente el depósito S3 generado por el cdk. Asegúrese de eliminar todos los recursos generados para evitar incurrir en costos.
cdk ls
enumera todas las pilas en la aplicación
cdk synth
emite la plantilla de CloudFormation sintetizada
cdk deploy
implemente esta pila en su cuenta/región de AWS predeterminada
cdk diff
compara la pila implementada con el estado actual
cdk docs
abre la documentación de CDK
cdk destroy
destruye una o más pilas especificadas
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
Para integrar sus datos personalizados para implementar la solución, siga estas pautas estructuradas adaptadas a sus requisitos:
Localice el directorio assets/knowledgebase_data_source/
.
Coloque su conjunto de datos dentro de esta carpeta.
Accede al archivo cdk.json
.
Navegue hasta el campo context/configure/paths/knowledgebase_file_name
y actualícelo en consecuencia.
Además, modifique el campo bedrock_instructions/knowledgebase_instruction
en el archivo cdk.json
para reflejar con precisión los matices y el contexto de su nuevo conjunto de datos.
Dentro del directorio assets/data_query_data_source/
, cree un subdirectorio, por ejemplo, tabular_data.
Deposite su conjunto de datos estructurados (los formatos aceptables incluyen CSV , JSON , ORC y Parquet ) en esta subcarpeta recién creada.
Si se está conectando a su base de datos existente , actualice la función create_sql_engine()
en code/lambda/action-lambda/build_query_engine.py
para conectarse a su base de datos.
Actualice el campo context/configure/paths/athena_table_data_prefix
del archivo cdk.json
para alinearlo con la nueva ruta de datos.
Revise code/lambda/action-lambda/dynamic_examples.csv
incorporando texto nuevo a los ejemplos de SQL que correspondan con su conjunto de datos.
Revise code/lambda/action-lambda/prompt_templates.py
para reflejar los atributos de sus nuevos datos tabulares.
Modifique el campo context/configure/bedrock_instructions/action_group_description
del archivo cdk.json
para dilucidar el propósito y la funcionalidad de la acción lambda adaptada a su conjunto de datos.
Refleje las nuevas funcionalidades de su acción lambda en el archivo assets/agent_api_schema/artifacts_schema.json
.
En el archivo cdk.json
, en la context/configure/bedrock_instructions/agent_instruction section
, proporcione una descripción completa de la funcionalidad prevista y el propósito del diseño de Amazon Bedrock Agent, teniendo en cuenta los datos recién integrados.
Estos pasos están diseñados para garantizar un proceso de integración fluido y eficiente, lo que le permitirá implementar la solución de manera efectiva con sus datos personalizados.