Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Desarrolle un asistente totalmente automatizado basado en el chat con los agentes y las bases de conocimiento de Amazon Bedrock
Creado por Jundong Qiao (AWS), Kara Yang (AWS), Kiowa Jackson (AWS), Noah Hamilton (AWS), Praveen Kumar Jeyarajan (AWS) y Shuai Cao (AWS)
Resumen
Muchas organizaciones se enfrentan a desafíos a la hora de crear un asistente basado en el chat que sea capaz de organizar diversas fuentes de datos para ofrecer respuestas integrales. Este patrón presenta una solución para desarrollar un asistente basado en el chat que sea capaz de responder a consultas tanto de la documentación como de las bases de datos, con una implementación sencilla.
Empezando por Amazon Bedrock, este servicio de inteligencia artificial generativa (IA) totalmente gestionado ofrece una amplia gama de modelos básicos avanzados (FMs). Esto facilita la creación eficiente de aplicaciones de IA generativa con un fuerte enfoque en la privacidad y la seguridad. En el contexto de la recuperación de documentación, la generación aumentada de recuperación (RAG) es una característica fundamental. Utiliza bases de conocimiento para complementar las solicitudes de FM con información relevante desde el punto de vista contextual procedente de fuentes externas. Un índice de Amazon OpenSearch Serverless sirve como base de datos vectorial detrás de las bases de conocimiento de Amazon Bedrock. Esta integración se mejora mediante una ingeniería cuidadosa y rápida para minimizar las imprecisiones y garantizar que las respuestas estén ancladas en la documentación fáctica. Para las consultas de bases FMs de datos, Amazon Bedrock transforma las consultas textuales en consultas SQL estructuradas, incorporando parámetros específicos. Esto permite la recuperación precisa de los datos de las bases de datos administradas por las bases de datos de AWS Glue. Para estas consultas se utiliza Amazon Athena.
Para gestionar consultas más complejas, lograr respuestas integrales exige información procedente tanto de la documentación como de las bases de datos. Agents for Amazon Bedrock es una función de IA generativa que le ayuda a crear agentes autónomos que puedan entender tareas complejas y dividirlas en tareas más sencillas para su organización. La combinación de información obtenida de las tareas simplificadas, facilitada por los agentes autónomos de Amazon Bedrock, mejora la síntesis de la información y permite obtener respuestas más completas y exhaustivas. Este patrón demuestra cómo crear un asistente basado en chat mediante Amazon Bedrock y los servicios y funciones de IA generativa relacionados dentro de una solución automatizada.
Requisitos previos y limitaciones
Requisitos previos
Una cuenta de AWS activa
Kit de desarrollo en la nube de AWS (AWS CDK), instalado y arrancado en las regiones o
us-east-1
regiones de AWSus-west-2
Interfaz de la línea de comandos de AWS (AWS CLI) instalada y configurada
En Amazon Bedrock, habilite el acceso a Claude 2, Claude 2.1, Claude Instant y Titan Embeddings G1 — Text
Limitaciones
Esta solución se implementa en una única cuenta de AWS.
Esta solución solo se puede implementar en las regiones de AWS en las que se admiten Amazon Bedrock y Amazon OpenSearch Serverless. Para obtener más información, consulte la documentación de Amazon Bedrock y Amazon OpenSearch Serverless.
Versiones de producto
LLAMA-index versión 0.10.6 o posterior
Sqlalchemy versión 2.0.23 o posterior
OpenSearch-py versión 2.4.2 o posterior
Requests_AWS4Auth versión 1.2.3 o posterior
AWS SDK para Python (Boto3) versión 1.34.57 o posterior
Arquitectura
Pila de tecnología de destino
El AWS Cloud Development Kit (AWS CDK) es un marco de desarrollo de software de código abierto para definir la infraestructura de nube en el código y aprovisionarla a través de AWS. CloudFormation La pila de CDK de AWS utilizada en este patrón implementa los siguientes recursos de AWS:
AWS Key Management Service (AWS KMS)
Amazon Simple Storage Service (Amazon S3)
Catálogo de datos de AWS Glue, para el componente de base de datos de AWS Glue
AWS Lambda
AWS Identity y Access Management (IAM)
Amazon OpenSearch Serverless
Amazon Elastic Container Registry (Amazon ECR)
Amazon Elastic Container Service (Amazon ECS)
AWS Fargate
Amazon Virtual Private Cloud (Amazon VPC)
Arquitectura de destino

El diagrama muestra una completa configuración nativa de la nube de AWS en una sola región de AWS, que utiliza varios servicios de AWS. La interfaz principal del asistente basado en chat es una aplicación StreamlitInvocation
Lambda, que luego interactúa con los agentes de Amazon Bedrock. Este agente responde a las consultas de los usuarios consultando las bases de conocimiento de Amazon Bedrock o invocando una función LambdaAgent executor
. Esta función desencadena un conjunto de acciones asociadas al agente, siguiendo un esquema de API predefinido. Las bases de conocimiento de Amazon Bedrock utilizan un índice OpenSearch sin servidor como base de base de datos vectorial. Además, la Agent executor
función genera consultas SQL que se ejecutan en la base de datos de AWS Glue a través de Amazon Athena.
Herramientas
Servicios de AWS
Amazon Athena es un servicio interactivo de consultas que le permite analizar datos directamente en Amazon Simple Storage Service (Amazon S3) usando SQL estándar.
Amazon Bedrock es un servicio totalmente gestionado que pone a su disposición modelos básicos de alto rendimiento (FMs) de las principales empresas emergentes de IA y Amazon a través de una API unificada.
AWS Cloud Development Kit (AWS CDK) es un marco de desarrollo de software que le ayuda a definir y aprovisionar la infraestructura de la nube de AWS en código.
AWS Command Line Interface (AWS CLI) es una herramienta de código abierto que le ayuda a interactuar con los servicios de AWS mediante comandos en su shell de línea de comandos.
Amazon Elastic Container Service (Amazon ECS) es un servicio de administración de contenedores escalable y rápido que ayuda a ejecutar, detener y administrar contenedores en un clúster.
Elastic Load Balancing (ELB) distribuye el tráfico entrante de aplicaciones o redes entre varios destinos. Por ejemplo, puede distribuir el tráfico entre instancias, contenedores y direcciones IP de Amazon Elastic Compute Cloud (Amazon EC2) en una o más zonas de disponibilidad.
AWS Glue es un servicio de extracción, transformación y carga (ETL) completamente administrado. Ayuda a clasificar, limpiar, enriquecer y mover datos de forma fiable entre almacenes de datos y flujos de datos. Este patrón emplea un rastreador de AWS Glue y una tabla del catálogo de datos de AWS Glue.
AWS Lambda es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.
Amazon OpenSearch Serverless es una configuración sin servidor bajo demanda para Amazon OpenSearch Service. En este patrón, un índice OpenSearch sin servidor sirve como base de datos vectorial para las bases de conocimiento de Amazon Bedrock.
Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos basado en la nube que le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.
Otras herramientas
Streamlit
es un marco de Python de código abierto para crear aplicaciones de datos.
Repositorio de código
El código de este patrón está disponible en el GitHub genai-bedrock-agent-chatbot
assets
carpeta: los activos estáticos, como el diagrama de arquitectura y el conjunto de datos público.code/lambdas/action-lambda
folder: el código de Python de la función Lambda que actúa como una acción para el agente de Amazon Bedrock.code/lambdas/create-index-lambda
folder: el código de Python de la función Lambda que crea el índice OpenSearch Serverless.code/lambdas/invoke-lambda
folder: el código de Python de la función Lambda que invoca al agente Amazon Bedrock, al que se llama directamente desde la aplicación Streamlit.code/lambdas/update-lambda
folder: el código de Python de la función Lambda que actualiza o elimina los recursos después de que los recursos de AWS se hayan implementado a través de la CDK de AWS.code/layers/boto3_layer
folder: la pila de CDK de AWS que crea una capa de Boto3 que se comparte entre todas las funciones de Lambda.code/layers/opensearch_layer
folder: la pila de CDK de AWS que crea una capa OpenSearch sin servidor que instala todas las dependencias para crear el índice.code/streamlit-app
folder: el código Python que se ejecuta como imagen del contenedor en Amazon ECScode/code_stack.py
— La CDK de AWS crea archivos de Python que crean recursos de AWS.app.py
— Las CDK de AWS apilan archivos Python que implementan los recursos de AWS en la cuenta de AWS de destino.requirements.txt
— La lista de todas las dependencias de Python que se deben instalar para la AWS CDK.cdk.json
— El archivo de entrada para proporcionar los valores necesarios para crear los recursos. Además, en loscontext/config
campos, puede personalizar la solución en consecuencia. Para obtener más información sobre la personalización, consulte la sección Información adicional.
Prácticas recomendadas
El ejemplo de código que se proporciona aquí es únicamente para fines proof-of-concept (PoC) o piloto. Si desea llevar el código a la fase de producción, asegúrese de seguir las siguientes prácticas recomendadas:
Habilitar el registro de acceso a Amazon S3
Habilitar los registros de flujo de VPC
Configure la supervisión y las alertas para las funciones de Lambda. Para obtener más información, consulte Supervisión y solución de problemas de funciones de Lambda. Para obtener información sobre las prácticas recomendadas, consulte las prácticas recomendadas para trabajar con las funciones de AWS Lambda.
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Exporte variables para la cuenta y la región. | Para proporcionar las credenciales de AWS para la CDK de AWS mediante variables de entorno, ejecute los siguientes comandos.
| AWS DevOps, DevOps ingeniero |
Configure el perfil con nombre de la CLI de AWS. | Para configurar el perfil con nombre de la CLI de AWS para la cuenta, siga las instrucciones de Configuración y configuración del archivo de credenciales. | AWS DevOps, DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Clona el repositorio en tu estación de trabajo local. | Para clonar el repositorio, ejecute el siguiente comando en su terminal.
| DevOps ingeniero, AWS DevOps |
Configure el entorno virtual de Python. | Para configurar y activar el entorno virtual de Python, ejecute el siguiente comando.
Para configurar las dependencias necesarias, ejecute el siguiente comando.
| DevOps ingeniero, AWS DevOps |
Configure el entorno AWS CDK. | Para convertir el código en una CloudFormation plantilla de AWS, ejecute el comando | AWS DevOps, DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Implementar recursos en la cuenta. | Para implementar recursos en la cuenta de AWS mediante la CDK de AWS, haga lo siguiente:
Tras una implementación correcta, puede acceder a la aplicación de asistente basada en el chat mediante la URL proporcionada en la pestaña Resultados de la CloudFormation consola. | DevOps ingeniero, AWS DevOps |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Elimine los recursos de AWS. | Después de probar la solución, ejecute el comando para limpiar los recursos | AWS DevOps, DevOps ingeniero |
Recursos relacionados
Documentación de AWS
Recursos de Amazon Bedrock:
Recursos de AWS CDK:
Otros recursos de AWS
Otros recursos
Información adicional
Personalice el asistente basado en el chat con sus propios datos
Para integrar sus datos personalizados para implementar la solución, siga estas pautas estructuradas. Estos pasos están diseñados para garantizar un proceso de integración eficiente y fluido, lo que le permitirá implementar la solución de manera efectiva con sus datos personalizados.
Para la integración de datos de la base de conocimientos
Preparación de datos
Localice el
assets/knowledgebase_data_source/
directorio.Coloque el conjunto de datos en esta carpeta.
Ajustes de configuración
Abra el archivo
cdk.json
.Navegue hasta el
context/configure/paths/knowledgebase_file_name
campo y, a continuación, actualícelo en consecuencia.Navegue hasta el
bedrock_instructions/knowledgebase_instruction
campo y, a continuación, actualícelo para que refleje con precisión los matices y el contexto de su nuevo conjunto de datos.
Para la integración de datos estructurales
Organización de datos
Dentro del
assets/data_query_data_source/
directorio, cree un subdirectorio, comotabular_data
.Coloque el conjunto de datos estructurado (los formatos aceptables incluyen CSV, JSON, ORC y Parquet) en esta subcarpeta recién creada.
Si se está conectando a una base de datos existente, actualice la función
create_sql_engine()
code/lambda/action-lambda/build_query_engine.py
para conectarse a su base de datos.
Actualizaciones de configuración y código
En el
cdk.json
archivo, actualice elcontext/configure/paths/athena_table_data_prefix
campo para alinearlo con la nueva ruta de datos.Realice
code/lambda/action-lambda/dynamic_examples.csv
la revisión incorporando nuevos text-to-SQL ejemplos que se correspondan con su conjunto de datos.Revise
code/lambda/action-lambda/prompt_templates.py
para reflejar los atributos de su conjunto de datos estructurado.En el
cdk.json
archivo, actualice elcontext/configure/bedrock_instructions/action_group_description
campo para explicar el propósito y la funcionalidad de la funciónAction group
Lambda.En el
assets/agent_api_schema/artifacts_schema.json
archivo, explique las nuevas funcionalidades de la funciónAction group
Lambda.
Actualización general
En el cdk.json
archivo, en la context/configure/bedrock_instructions/agent_instruction
sección, proporcione una descripción completa de la funcionalidad y el propósito de diseño previstos por el agente de Amazon Bedrock, teniendo en cuenta los datos recién integrados.