在此存储库中,我们提出了一个解决方案,该解决方案利用生成式人工智能的力量,通过数字助理简化金融服务的用户入门流程。银行业新客户的入职是客户旅程中的关键一步,涉及一系列旨在满足“了解您的客户”(KYC) 要求、进行必要的验证并向他们介绍银行产品或服务的活动。传统上,用户引导是一个繁琐且大量手动的过程。我们的解决方案提供了利用 AWS 上的生成式 AI 助手应对这一挑战的实用指导。
Amazon Bedrock 是一项完全托管的服务,通过单个 API 提供来自 AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI 和 Amazon 等领先 AI 公司的高性能基础模型 (FM) 选择,以及构建具有安全性、隐私性和负责任的人工智能的生成式人工智能应用程序所需的广泛功能。我们使用 Amazon Bedrock 上的 Anthropic Claude 3.5 Sonnet 构建了一个名为 Amazon Penny 的数字助理,可以自动执行文书工作、身份验证并通过对话交互吸引客户。因此,客户可以通过安全、自动化的工作流程在几分钟内加入。
申请流程如下:
用户访问 AWS Amplify 中托管的前端网站。
该网站调用 Amazon CloudFront 终端节点与数字助理 Penny 进行交互,该助理已容器化并部署在 AWS Fargate 中。
数字助理使用定制的 Langchain Agent 来回答有关银行产品和服务的问题并协调入职流程。代理使用的大型语言模型 (LLM) 是 Anthropic Claude 3.5 Sonnet,由 Amazon Bedrock 提供。
如果用户询问与银行产品或服务相关的一般性问题,代理将使用名为“产品搜索工具”的自定义 Langchain 工具。该工具使用与包含银行数据的 S3 数据源链接的 Amazon Kendra。
如果用户表示他们想开设一个新帐户,代理将提示用户输入电子邮件。一旦用户做出响应,它将使用一个名为电子邮件验证工具的自定义 Langchain 工具。该工具通过调用部署在 Amazon API Gateway 中的终端节点来检查银行的 Amazon DynamoDB 数据库中是否存在现有账户。
电子邮件验证后,将收集 KYC 信息,例如名字和姓氏。然后,系统会提示用户输入身份证明文件。该文件已上传到 Amazon S3。
代理将使用名为 ID 验证工具的自定义 Langchain 工具。该工具通过调用 Amazon API Gateway 中部署的终端节点来检查会话期间输入的用户详细信息是否与 ID 匹配。通过使用 Amazon Textract 提取文档文本来验证详细信息。
身份验证后,系统会要求用户拍摄自拍照。该图像已上传到 Amazon S3。然后,代理将使用名为“自拍验证工具”的自定义 Langchain 工具。该工具通过调用 Amazon API Gateway 中部署的终端节点来检查上传的自拍照是否与 ID 上的脸部匹配。使用 Amazon Rekognition 检测人脸匹配。
人脸验证成功后,代理将使用名为帐户创建工具的自定义 Langchain 工具。该工具通过调用部署在 Amazon API Gateway 中的终端节点,在银行的 Amazon DynamoDB 数据库中创建一个新账户。
用户会收到通知,他们的新账户已使用 Amazon Simple Email Service (SES) 成功创建。
确定您想要部署此解决方案的 AWS 账户,并确保在以下步骤中需要的地方指定该账户的详细信息。在本地命令行中准备好以下内容:
cdk bootstrap
来完成。在您选择的 AWS 账户中,完成以下步骤:
sudo docker info
来完成。如果Docker正在运行,则会显示有关Docker的信息。注意:根据按月进行的一组假设,运行此工作负载的每小时成本预计约为 1.34 美元。请务必检查每项服务的定价详细信息,以了解不同使用层和资源配置可能收取的费用
要将代理部署到您的 AWS 账户,请按照以下说明操作:
./api/llm
chmod +x script.sh
./script.sh
,您的新存储库将在 ECR 中创建,并且映像将被部署。要将工具基础设施部署到您的 AWS 账户,请按照以下说明操作:
./infra
npm i
安装节点模块npm run build
将 typescript 编译为 javascriptLLMImageTag
是 docker 镜像的标签,可以在 ECR 服务的 AWS 控制台中找到。输入您的参数值。将在您的 AWS 账户中创建 CloudFormation Stack。 cdk deploy --parameters SesBankEmail={email} --parameters SesCustomerEmail={email} --parameters LLMImageTag={tag}
用法示例:
cdk deploy --parameters [email protected] --parameters [email protected] --parameters LLMImageTag=20240307_123456
SesBankEmail
和SesCustomerEmail
发送一封电子邮件,以验证创建的新 SES 身份。请务必点击电子邮件中提供的验证链接。CloudFrontDomainName
注意:如果 CloudFormation Stack 陷入等待 LLMDeployment 完成的状态,则您的 ECS 任务可能已失败。这可能是因为您构建映像的机器的体系结构与我们配置为在项目中使用的体系结构 (ARM64) 不匹配。在这种情况下,请手动更新 ECS 任务定义使用的架构(可能改为使用 X86)。
要将演示应用程序部署到您的 AWS 账户,请按照以下说明操作:
./penny-ui/src/
内App.js
中的LLM_API_ENDPOINT
常量值替换为 CloudFormation Stack 输出的CloudFrontDomainName
。./penny-ui
npm i
amplify init
amplify add hosting
amplify publish
确保您已完成Deploy the Tools Infrastructure to AWS Account
步骤
导航到./api/llm
tools.py
中将os.environ["kendraIndexId"]
替换为您要使用的 Kendra 索引 IDtools.py
中的os.environ["apiEndpoint"]
替换为 CloudFormation Stack 输出的 API 网关端点main.py
中的os.environ["idBucketName"]
替换为 CloudFormation Stack 创建的 S3 ID 存储桶名称运行python3 -m uvicorn main:app --reload
。 LLM API 将于http://127.0.0.1:8000/
上线
导航到./penny-ui
运行npm i
安装依赖项
运行npm run start
启动开发服务器/演示应用程序将在http://localhost:3000/
上运行
请完成以下步骤以清理并从您的帐户中删除环境:
PennyInfraStack
。这将自动删除与您的 AWS 账户中的PennyInfraStack
关联的所有堆栈和资源。 cd ./infra
cdk destroy
删除以下 S3 存储桶 - ID 存储桶和 AnyBank 目录存储桶。确保在删除存储桶之前清空它。通过搜索前缀pennyinfrastack-idbucket
和pennyinfrastack-anybankcatalogbucket
来查找这些存储桶。
通过运行amplify delete
删除 Amplify 上托管的前端应用程序。
删除 ECR 上名为penny-workshop
的映像工件和私有存储库。
请参阅贡献以获取更多信息。
该库根据 MIT-0 许可证获得许可。请参阅许可证文件。