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.
Desarrollo de un asistente basado en el chat totalmente automatizado con los agentes y las bases de conocimiento de Amazon Bedrock
Jundong Qiao, Shuai Cao, Noah Hamilton, Kiowa Jackson, Praveen Kumar Jeyarajan y Kara Yang, Amazon Web Services
Resumen
Muchas organizaciones se enfrentan a desafíos a la hora de crear un asistente basado en el chat que sea capaz de organizar diversos orígenes 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 por recuperación (RAG) es una característica fundamental. Utiliza bases de conocimiento para complementar las peticiones de FM con información relevante desde el punto de vista contextual procedente de orígenes externos. 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 de peticiones cuidadosa para minimizar las imprecisiones y garantizar que las respuestas se basen 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.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. Agentes para Amazon Bedrock es una característica de IA generativa que lo ayuda a crear agentes autónomos que puedan entender tareas complejas y dividirlas en tareas más sencillas para su orquestació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 el chat mediante Amazon Bedrock y los servicios y características de IA generativa relacionados dentro de una solución automatizada.
Requisitos previos y limitaciones
Requisitos previos
Un activo Cuenta de AWS
Docker instalado
AWS Cloud Development Kit (AWS CDK), instalado y arrancado en el o
us-east-1us-west-2Regiones de AWSAWS CDK Kit de herramientas, versión 2.114.1 o posterior, instalado
AWS Command Line Interface (AWS CLI), instalado y configurado
La versión 3.11 o posterior de Python instalada
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 sola unidad Cuenta de AWS.
Esta solución solo se puede implementar en Regiones de AWS lugares donde Amazon Bedrock y Amazon OpenSearch Serverless sean compatibles. 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
AWS Cloud Development Kit (AWS CDK)Se trata de un marco de desarrollo de software de código abierto para definir la infraestructura de nube en el código y aprovisionarla mediante ella. AWS CloudFormation La AWS CDK pila utilizada en este patrón emplea los siguientes recursos: AWS
AWS Key Management Service (AWS KMS)
Amazon Simple Storage Service (Amazon S3)
AWS Glue Data Catalog, para el componente de AWS Glue base de datos
AWS Lambda
AWS Identity and 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 AWS nativa de la nube dentro de una sola Región de AWS, usando múltiples. Servicios de AWS La interfaz principal del asistente basado en el chat es una aplicación de StreamlitInvocation, que luego interactúa con los agentes para Amazon Bedrock. Este agente responde a las consultas de los usuarios consultando las bases de conocimiento de Amazon Bedrock o invocando una función de Lambda Agent 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 AWS Glue base de datos a través de Amazon Athena.
Tools (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 AWS la infraestructura de la nube en código.
AWS Command Line Interface (AWS CLI) es una herramienta de código abierto que te ayuda a interactuar Servicios de AWS mediante comandos en tu 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 permite distribuir el tráfico entrante de las aplicaciones o de la red entre varios destinos. Así, por ejemplo, puede distribuir el tráfico a través de instancias de Amazon Elastic Compute Cloud (Amazon EC2), contenedores y direcciones IP de una o varias 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 utiliza un AWS Glue rastreador y una tabla. AWS Glue Data Catalog
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 lo 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
Carpeta
assets: los activos estáticos, como el diagrama de arquitectura y el conjunto de datos público.Carpeta
code/lambdas/action-lambda: el código de Python de la función de Lambda que actúa como una acción para el agente de Amazon Bedrock.code/lambdas/create-index-lambdafolder: el código de Python de la función Lambda que crea el índice OpenSearch Serverless.Carpeta
code/lambdas/invoke-lambda: el código de Python de la función de Lambda que invoca el agente de Amazon Bedrock, al que se llama directamente desde la aplicación Streamlit.code/lambdas/update-lambdacarpeta: el código de Python de la función Lambda que actualiza o elimina los recursos después de desplegarlos a AWS través de. AWS CDKcode/layers/boto3_layerfolder: la AWS CDK pila que crea una capa de Boto3 que se comparte entre todas las funciones de Lambda.code/layers/opensearch_layercarpeta: la AWS CDK pila que crea una capa OpenSearch sin servidor que instala todas las dependencias para crear el índice.code/streamlit-appfolder: el código de Python que se ejecuta como imagen del contenedor en Amazon ECS.code/code_stack.py— AWS CDK Construyen archivos de Python que crean AWS recursos.app.py— La AWS CDK pila de archivos Python que despliegan AWS recursos en la AWS cuenta de destino.requirements.txt— La lista de todas las dependencias de Python que se deben instalar para. AWS CDKcdk.json: el archivo de entrada que proporciona los valores necesarios para crear los recursos. Además, en los camposcontext/config, puede personalizar la solución en consecuencia. Para 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 producción, asegúrese de seguir las siguientes prácticas recomendadas:
Habilitación del registro de acceso a Amazon S3
Habilitación de 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 AWS Lambda funciones.
Epics
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Exporte las variables de cuenta y región. | Para proporcionar AWS las credenciales AWS CDK mediante variables de entorno, ejecute los siguientes comandos.
| AWS DevOps, DevOps ingeniero |
Configure el AWS CLI perfil indicado. | Para configurar el perfil AWS CLI designado para la cuenta, siga las instrucciones de los ajustes de configuración y del archivo de credenciales. | AWS DevOps, DevOps ingeniero |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Clone el repositorio en su estación de trabajo local. | Para clonar el repositorio, ejecute el siguiente comando en el terminal.
| DevOps ingeniero, AWS DevOps |
Configure un entorno de Python virtual. | 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 AWS CDK entorno. | Para convertir el código en una AWS CloudFormation plantilla, ejecute el comando | AWS DevOps, DevOps ingeniero |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Implementar recursos en la cuenta. | Para implementar recursos en el Cuenta de AWS mediante el AWS CDK, 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 AWS recursos. | Después de probar la solución, limpie los recursos y ejecute el comando | AWS DevOps, DevOps ingeniero |
Recursos relacionados
AWS documentación
Recursos de Amazon Bedrock:
AWS CDK recursos:
Otros recursos AWS
Otros recursos
Información adicional
Personalización del 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 directorio
assets/knowledgebase_data_source/.Coloque el conjunto de datos en esta carpeta.
Ajustes de configuración
Abra el archivo
cdk.json.Navegue hasta el campo
context/configure/paths/knowledgebase_file_namey, a continuación, actualícelo en consecuencia.Navegue hasta el campo
bedrock_instructions/knowledgebase_instructiony, 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
En el directorio
assets/data_query_data_source/, cree un subdirectorio, comotabular_data.Coloque su 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()encode/lambda/action-lambda/build_query_engine.pypara conectarse a su base de datos.
Actualizaciones de configuración y código
En el archivo
cdk.json, actualice el campocontext/configure/paths/athena_table_data_prefixpara alinearlo con la nueva ruta de datos.Realice
code/lambda/action-lambda/dynamic_examples.csvla revisión incorporando nuevos text-to-SQL ejemplos que se correspondan con su conjunto de datos.Revise
code/lambda/action-lambda/prompt_templates.pypara reflejar los atributos de su conjunto de datos estructurado.En el archivo
cdk.json, actualice el campocontext/configure/bedrock_instructions/action_group_descriptionpara explicar el propósito y la funcionalidad de la función de LambdaAction group.En el archivo
assets/agent_api_schema/artifacts_schema.json, explique las nuevas funcionalidades de la función de LambdaAction group.
Actualización general
En el archivo cdk.json, en la sección context/configure/bedrock_instructions/agent_instruction, 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.