En este repositorio, presentamos una solución que aprovecha el poder de la IA generativa para agilizar el proceso de incorporación de usuarios a servicios financieros a través de un asistente digital. La incorporación de nuevos clientes a la banca es un paso crucial en el recorrido del cliente, que implica una serie de actividades diseñadas para cumplir con los requisitos de Conozca a su cliente (KYC), realizar las verificaciones necesarias y presentarles los productos o servicios del banco. Tradicionalmente, la incorporación de usuarios ha sido un proceso tedioso y muy manual. Nuestra solución proporciona orientación práctica para abordar este desafío aprovechando un asistente de IA generativa en AWS.
Amazon Bedrock es un servicio totalmente administrado que ofrece una selección de modelos básicos (FM) de alto rendimiento de empresas líderes en inteligencia artificial como AI21 Labs, Anthropic, Cohere, Meta, Mistral AI, Stability AI y Amazon a través de una única API, junto con una amplio conjunto de capacidades que necesita para crear aplicaciones de IA generativa con seguridad, privacidad e IA responsable. Utilizando Anthropic Claude 3.5 Sonnet en Amazon Bedrock, creamos un asistente digital que automatiza el papeleo, las verificaciones de identidad e involucra a los clientes a través de interacciones conversacionales, llamado Amazon Penny. Como resultado, los clientes pueden incorporarse en cuestión de minutos a través de flujos de trabajo seguros y automatizados.
El flujo de la aplicación es el siguiente:
Los usuarios acceden al sitio web front-end alojado en AWS Amplify.
El sitio web invoca un punto final de Amazon CloudFront para interactuar con el asistente digital, Penny, que está en contenedores e implementado en AWS Fargate.
El asistente digital utiliza un Langchain Agent personalizado para responder preguntas sobre los productos y servicios del banco y organizar el flujo de incorporación. El modelo de lenguaje grande (LLM) utilizado por el agente es Anthropic Claude 3.5 Sonnet, proporcionado por Amazon Bedrock.
Si el usuario hace una pregunta general relacionada con los productos o servicios del banco, el agente utilizará una herramienta Langchain personalizada llamada Herramienta de búsqueda de productos. Esta herramienta utiliza Amazon Kendra vinculado con una fuente de datos S3 que contiene los datos del banco.
Si el usuario indica que le gustaría abrir una nueva cuenta, el agente le solicitará su correo electrónico. Una vez que el usuario responda, utilizará una herramienta Langchain personalizada llamada herramienta de validación de correo electrónico. Esta herramienta verifica si existe una cuenta en la base de datos de Amazon DynamoDB del banco llamando a un punto final implementado en Amazon API Gateway.
Después de la validación del correo electrónico, se recopila información KYC, como el nombre y apellido. Luego, se solicita al usuario un documento de identidad. Esto se carga en Amazon S3.
El agente utilizará una herramienta Langchain personalizada llamada herramienta de verificación de identidad. Esta herramienta comprueba si los detalles del usuario ingresados durante la sesión coinciden con el ID, llamando a un punto final implementado en Amazon API Gateway. Los detalles se verifican extrayendo el texto del documento mediante Amazon Textract.
Después de la verificación de identidad, se le pide al usuario una selfie. La imagen se carga en Amazon S3. Luego, el agente utilizará una herramienta Langchain personalizada llamada Herramienta de verificación de selfies. Esta herramienta verifica si la selfie cargada coincide con la cara en la identificación llamando a un punto final implementado en Amazon API Gateway. La coincidencia de rostros se detecta mediante Amazon Rekognition.
Una vez que la verificación facial sea exitosa, el agente utilizará una herramienta Langchain personalizada llamada Herramienta de creación de cuentas. Esta herramienta crea una nueva cuenta en la base de datos de Amazon DynamoDB del banco llamando a un punto final implementado en Amazon API Gateway.
Se notifica al usuario que su nueva cuenta se creó correctamente mediante Amazon Simple Email Service (SES).
Identifique la cuenta de AWS donde le gustaría implementar esta solución y asegúrese de especificar los detalles de esa cuenta donde sea necesario en los pasos siguientes. Tenga lo siguiente listo en su línea de comando local:
cdk bootstrap
desde la línea de comando.En la cuenta de AWS elegida, complete los siguientes pasos:
sudo docker info
. Si Docker se está ejecutando, se muestra información sobre Docker.Nota: Según un conjunto de suposiciones realizadas mensualmente, ejecutar esta carga de trabajo tendría un costo por hora estimado de alrededor de $1,34. Asegúrese de verificar los detalles de precios de cada servicio individual para comprender los costos que se le pueden cobrar por los diferentes niveles de uso y configuraciones de recursos.
Para implementar el agente en su cuenta de AWS, siga las instrucciones a continuación:
./api/llm
chmod +x script.sh
./script.sh
y se creará su nuevo repositorio en ECR y se implementará la imagen.Para implementar la infraestructura de herramientas en su cuenta de AWS, siga las instrucciones a continuación:
./infra
npm i
para instalar módulos de nodonpm run build
para compilar mecanografiado en javascriptLLMImageTag
es la etiqueta de la imagen de la ventana acoplable que se puede encontrar en la consola de AWS dentro del servicio ECR. Ingrese los valores de sus parámetros. Se creará una pila de CloudFormation en su cuenta de AWS. cdk deploy --parameters SesBankEmail={email} --parameters SesCustomerEmail={email} --parameters LLMImageTag={tag}
Uso de ejemplo:
cdk deploy --parameters [email protected] --parameters [email protected] --parameters LLMImageTag=20240307_123456
SesBankEmail
y SesCustomerEmail
que hayas proporcionado para verificar las nuevas identidades de SES creadas. Asegúrese de hacer clic en el enlace de verificación proporcionado en el correo electrónico.CloudFrontDomainName
generado por CloudFormation StackNota: Si CloudFormation Stack se atasca mientras espera que se complete LLMDeployment, es posible que su tarea de ECS haya fallado. Esto puede deberse a que la arquitectura de la máquina en la que creó la imagen no coincide con la que hemos configurado para usar en nuestro proyecto (ARM64). En ese caso, actualice manualmente la arquitectura que utiliza la definición de tarea de ECS (para posiblemente usar X86 en su lugar).
Para implementar la aplicación de demostración en su cuenta de AWS, siga las instrucciones a continuación:
LLM_API_ENDPOINT
en App.js
dentro de ./penny-ui/src/
con CloudFrontDomainName
generado por CloudFormation Stack../penny-ui
npm i
amplify init
amplify add hosting
amplify publish
Asegúrese de haber completado el paso Deploy the Tools Infrastructure to AWS Account
Vaya a ./api/llm
os.environ["kendraIndexId"]
con el ID del índice Kendra que le gustaría usar, en tools.py
os.environ["apiEndpoint"]
con el punto final de API Gateway generado por CloudFormation Stack, en tools.py
os.environ["idBucketName"]
con el nombre del depósito de ID de S3 creado por CloudFormation Stack, en main.py
Ejecute python3 -m uvicorn main:app --reload
. La API LLM estará disponible en http://127.0.0.1:8000/
Navega a ./penny-ui
Ejecute npm i
para instalar dependencias
Ejecute npm run start
para iniciar el servidor de desarrollo/la aplicación de demostración estará disponible en http://localhost:3000/
Complete los siguientes pasos para limpiar y eliminar el entorno de su cuenta:
PennyInfraStack
localmente ejecutando los siguientes comandos. Esto eliminará automáticamente todas las pilas y recursos asociados con PennyInfraStack
en su cuenta de AWS. cd ./infra
cdk destroy
Elimine los siguientes depósitos de S3: depósito de ID y depósito de catálogo de AnyBank. Asegúrese de vaciar el depósito antes de eliminarlo. Encuentre estos depósitos buscando los prefijos pennyinfrastack-idbucket
y pennyinfrastack-anybankcatalogbucket
.
Elimine la aplicación frontend alojada en Amplify ejecutando amplify delete
.
Elimine los artefactos de imagen y el repositorio privado en ECR con el nombre penny-workshop
.
Consulte CONTRIBUCIÓN para obtener más información.
Esta biblioteca tiene la licencia MIT-0. Ver el archivo de LICENCIA.