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 asistentes avanzados de IA generativa basados en el chat mediante el uso RAG y las solicitudes ReAct
Creada por Praveen Kumar Jeyarajan (AWS), Jundong Qiao (), Kara Yang (AWS), Kiowa Jackson (), Noah AWS Hamilton () y Shuai Cao () AWS AWS AWS
Repositorio de código: genai-bedrock-chatbot | Entorno: PoC o piloto | Tecnologías: aprendizaje automático e inteligencia artificial; bases de datos DevOps; sin servidor |
AWSservicios: Amazon Bedrock; Amazon; Amazon AWS KendraECS; Lambda |
Resumen
Una empresa típica tiene el 70 por ciento de sus datos atrapados en sistemas aislados. Puede utilizar asistentes generativos basados en el chat y basados en la inteligencia artificial para obtener información y relaciones entre estos silos de datos mediante interacciones en lenguaje natural. Para aprovechar al máximo la IA generativa, los resultados deben ser fiables, precisos e incluir los datos corporativos disponibles. El éxito de los asistentes basados en el chat depende de lo siguiente:
Modelos de IA generativa (como Anthropic Claude 2)
Vectorización de fuentes de datos
Técnicas de razonamiento avanzadas, como el ReAct marco
, para impulsar el modelo
Este patrón proporciona enfoques de recuperación de datos de fuentes de datos como los buckets de Amazon Simple Storage Service (Amazon S3), AWS Glue y Amazon Relational Database Service (Amazon). RDS El valor se obtiene de esos datos intercalando Retrieval Augmented Generation () con métodos. RAG chain-of-thought Los resultados permiten conversaciones complejas con asistentes por chat que se basan en la totalidad de los datos almacenados en su empresa.
Este patrón utiliza los SageMaker manuales de Amazon y las tablas de datos de precios como ejemplo para explorar las capacidades de un asistente generativo basado en el chat de IA. Crearás un asistente basado en el chat que ayude a los clientes a evaluar el SageMaker servicio respondiendo a preguntas sobre los precios y las capacidades del servicio. La solución utiliza una biblioteca Streamlit para crear la aplicación frontend y el LangChain marco para desarrollar el backend de la aplicación con un gran modelo de lenguaje (). LLM
Las consultas al asistente basado en el chat se responden con una clasificación inicial de intenciones para redirigirlas a uno de los tres posibles flujos de trabajo. El flujo de trabajo más sofisticado combina una orientación de asesoramiento general con un análisis de precios complejo. Puede adaptar el patrón para que se adapte a los casos de uso empresariales, corporativos e industriales.
Requisitos previos y limitaciones
Requisitos previos
AWSInterfaz de línea de comandos (AWSCLI) instalada y configurada
Familiaridad básica con Python y AWS CDK
Git
instalado Python 3.11 o posterior
instalado y configurado (para obtener más información, consulte la sección Herramientas) Se inició una AWS cuenta activa mediante AWSCDK
El acceso a los modelos Amazon Titan y Anthropic Claude está habilitado en el servicio Amazon Bedrock
AWScredenciales de seguridad
AWS_ACCESS_KEY_ID
, incluidas las correctamente configuradas en su entorno de terminal
Limitaciones
LangChain no es compatible con todas LLM las transmisiones. Los modelos Anthropic Claude son compatibles, pero los modelos de AI21 Labs no.
Esta solución se implementa en una sola AWS cuenta.
Esta solución solo se puede implementar en AWS las regiones en las que Amazon Bedrock y Amazon Kendra estén disponibles. Para obtener información sobre la disponibilidad, consulte la documentación de Amazon Bedrock y Amazon Kendra.
Versiones de producto
Python versión 3.11 o posterior
Streamlit, versión 1.30.0 o posterior
Streamlit-Chat versión 0.1.1 o posterior
LangChain versión 0.1.12 o posterior
AWSCDKversión 2.132.1 o posterior
Arquitectura
Pila de tecnología de destino
Amazon Athena
Amazon Bedrock
Amazon Elastic Container Service (AmazonECS)
AWS Glue
AWSLambda
Amazon S3
Amazon Kendra
Elastic Load Balancing
Arquitectura de destino
El AWS CDK código desplegará todos los recursos necesarios para configurar la aplicación de asistente basada en el chat en una AWS cuenta. La aplicación de asistente basada en el chat que se muestra en el siguiente diagrama está diseñada para responder a las consultas SageMaker relacionadas de los usuarios. Los usuarios se conectan a través de un Application Load Balancer a un ECS clúster de Amazon VPC que aloja la aplicación Streamlit. Una función Lambda de orquestación se conecta a la aplicación. Las fuentes de datos de bucket de S3 proporcionan datos a la función Lambda a través de Amazon Kendra y Glue. AWS La función Lambda se conecta a Amazon Bedrock para responder a las consultas (preguntas) de los usuarios asistentes basados en el chat.
La función Lambda de orquestación envía LLM la solicitud rápida al modelo Amazon Bedrock (Claude 2).
Amazon Bedrock devuelve la LLM respuesta a la función Lambda de orquestación.
Flujo lógico dentro de la función Lambda de orquestación
Cuando los usuarios hacen una pregunta a través de la aplicación Streamlit, esta invoca directamente la función Lambda de orquestación. El siguiente diagrama muestra el flujo lógico cuando se invoca la función Lambda.
Paso 1: La entrada
query
(pregunta) se clasifica en una de las tres intenciones:Preguntas de SageMaker orientación general
Preguntas generales SageMaker sobre precios (formación/inferencia)
Preguntas complejas relacionadas con los precios SageMaker
Paso 2: La entrada
query
inicia uno de los tres servicios:RAG Retrieval service
, que recupera el contexto relevante de la base de datos vectorial de AmazonKendra y llama LLM a Amazon Bedrock para resumir el contexto recuperado como respuesta. Database Query service
, que utiliza los metadatos de la LLM base de datos y las filas de muestra de las tablas relevantes para convertir la entradaquery
en una consulta. SQL El servicio Database Query ejecuta la SQL consulta en la base de datos de SageMaker precios a través de Amazon Athenay resume los resultados de la consulta como respuesta. In-context ReACT Agent service
, que divide la entradaquery
en varios pasos antes de proporcionar una respuesta. El agente utilizaRAG Retrieval service
yDatabase Query service
como herramientas para recuperar información relevante durante el proceso de razonamiento. Una vez completados los procesos de razonamiento y acción, el agente genera la respuesta final como respuesta.
Paso 3: La respuesta de la función Lambda de orquestación se envía a la aplicación Streamlit como salida.
Herramientas
AWSservicios
Amazon Athena es un servicio de consultas interactivo que le ayuda a analizar los datos directamente en Amazon Simple Storage Service (Amazon S3) mediante el uso estándar. SQL
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 para su uso de forma unificada. API
AWSCloud Development Kit (AWSCDK) es un marco de desarrollo de software que le ayuda a definir y aprovisionar AWS la infraestructura de nube en código.
AWSLa interfaz de línea de comandos (AWSCLI) es una herramienta de código abierto que te ayuda a interactuar con AWS los servicios mediante comandos en tu consola de línea de comandos.
Amazon Elastic Container Service (AmazonECS) es un servicio de administración de contenedores rápido y escalable que le ayuda a ejecutar, detener y administrar contenedores en un clúster.
AWSGlue es un servicio de extracción, transformación y carga (ETL) totalmente gestionado. Ayuda a clasificar, limpiar, enriquecer y mover datos de forma fiable entre almacenes de datos y flujos de datos. Este patrón utiliza un rastreador de AWS Glue y una tabla del catálogo de datos de AWS Glue.
Amazon Kendra es un servicio de búsqueda inteligente que utiliza el procesamiento del lenguaje natural y algoritmos avanzados de aprendizaje automático para devolver respuestas específicas a las preguntas de búsqueda a partir de sus datos.
AWSLambda es un servicio informático que le ayuda a ejecutar código sin necesidad de aprovisionar o 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 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.
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 (AmazonEC2) en una o más zonas de disponibilidad.
Repositorio de código
El código de este patrón está disponible en el GitHub genai-bedrock-chatbot
El repositorio de código contiene los siguientes archivos y carpetas:
assets
carpeta: los activos estáticos, el diagrama de arquitectura y el conjunto de datos públicocode/lambda-container
folder: el código de Python que se ejecuta en la función Lambdacode/streamlit-app
folder: el código Python que se ejecuta como imagen del contenedor en Amazon ECStests
carpeta: los archivos de Python que se ejecutan para probar unitariamente las AWS CDK construccionescode/code_stack.py
— Los archivos Python de AWS CDK construcción que se utilizan para crear AWS recursosapp.py
— La AWS CDK pila de archivos Python que se utilizan para implementar AWS recursos en la AWS cuenta de destinorequirements.txt
— La lista de todas las dependencias de Python que se deben instalar para AWS CDKrequirements-dev.txt
— La lista de todas las dependencias de Python que se deben instalar AWS CDK para ejecutar la suite de pruebas unitariascdk.json
– El archivo de entrada que proporciona los valores necesarios para activar los recursos
Nota: El AWS CDK código utiliza estructuras de nivel 3 (capa 3) y políticas de AWS Identity and Access Management (IAM) administradas por ella AWS para implementar la solución. |
Prácticas recomendadas
El ejemplo de código que se proporciona aquí es únicamente para una proof-of-concept demostración (PoC) o piloto. Si desea llevar el código a producción, asegúrese de seguir las siguientes prácticas recomendadas:
Configure la supervisión y las alertas para las funciones de Lambda de AWS. 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 generales al trabajar con funciones Lambda, consulte la AWS documentación.
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Exporte las variables de la cuenta y AWS la región en las que se implementará la pila. | Para proporcionar AWS credenciales AWS CDK mediante variables de entorno, ejecute los siguientes comandos.
| DevOps ingeniero, AWS DevOps |
Configure el AWS CLI perfil. | Para configurar el AWS CLI perfil de la cuenta, siga las instrucciones de la AWSdocumentación. | DevOps ingeniero, AWS DevOps |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Clone el repositorio en su máquina local. | Para clonar el repositorio, ejecuta el siguiente comando en tu terminal.
| DevOps ingeniero, AWS DevOps |
Configure el entorno virtual de Python e instale las dependencias necesarias. | 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 y sintetice el AWS CDK código. |
| DevOps ingeniero, AWS DevOps |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Proporcione el acceso al modelo Claude. | Para habilitar el acceso al modelo Anthropic Claude en su AWS cuenta, siga las instrucciones de la documentación de Amazon Bedrock. | AWS DevOps |
Implementar recursos en la cuenta. | Para implementar recursos en la AWS cuenta mediante el AWSCDK, haga lo siguiente:
Tras una implementación correcta, puede acceder a la aplicación de asistente basada en el chat mediante el uso de la URL información proporcionada en la sección de CloudFormation resultados. | AWS DevOps, DevOps ingeniero |
Ejecute el rastreador AWS Glue y cree la tabla del catálogo de datos. | Se utiliza un rastreador AWS Glue para mantener el esquema de datos dinámico. La solución crea y actualiza las particiones en la tabla del catálogo de datos de AWS Glue ejecutando el rastreador bajo demanda. Una vez copiados los archivos del CSV conjunto de datos en el depósito de S3, ejecute el rastreador AWS Glue y cree el esquema de la tabla del catálogo de datos para probarlo:
Nota: El AWS CDK código configura el rastreador AWS Glue para que se ejecute bajo demanda, pero también puede programarlo para que se ejecute periódicamente. | DevOps ingeniero, AWS DevOps |
Inicie la indexación de documentos. | Una vez copiados los archivos en el bucket de S3, utilice Amazon Kendra para rastrearlos e indexarlos:
Nota: El AWS CDK código configura la sincronización de índices de Amazon Kendra para que se ejecute bajo demanda, pero también puede ejecutarse periódicamente mediante el parámetro Schedule. | AWS DevOps, ingeniero DevOps |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Elimine los AWS recursos. | Después de probar la solución, limpie los recursos:
| DevOps ingeniero, AWS DevOps |
Resolución de problemas
Problema | Solución |
---|---|
AWSCDKdevuelve errores. | Para obtener ayuda con AWS CDK los problemas, consulta Solución de AWS CDK problemas comunes. |
Recursos relacionados
Información adicional
AWSCDKcomandos
Al trabajar con AWS CDK ellos, tenga en cuenta los siguientes comandos útiles:
Muestra todas las pilas de la aplicación
cdk ls
Emite la plantilla sintetizada AWS CloudFormation
cdk synth
Despliega la pila en tu AWS cuenta y región predeterminadas
cdk deploy
Compara la pila implementada con el estado actual
cdk diff
Abre la documentación AWS CDK
cdk docs
Elimina la CloudFormation pila y elimina los recursos AWS desplegados
cdk destroy