このリポジトリでは、Generative AI の力を利用して、デジタル アシスタントを通じて金融サービスのユーザー オンボーディング プロセスを合理化するソリューションを紹介します。銀行における新規顧客のオンボーディングはカスタマー ジャーニーの重要なステップであり、顧客確認 (KYC) 要件を満たし、必要な検証を実施し、銀行の商品やサービスを顧客に紹介するために設計された一連の活動が含まれます。従来、ユーザーのオンボーディングは退屈で手作業の多いプロセスでした。私たちのソリューションは、AWS の Generative AI アシスタントを活用して、この課題に対処するための実践的なガイダンスを提供します。
Amazon Bedrock は、単一の API を介して、AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI、Amazon などの大手 AI 企業の高性能基盤モデル (FM) の選択肢を提供するフルマネージド サービスです。セキュリティ、プライバシー、責任ある AI を備えた生成 AI アプリケーションを構築するために必要な幅広い機能セット。 Amazon Bedrock の Anthropic Claude 3.5 Sonnet を使用して、事務処理や本人確認を自動化し、会話型の対話を通じて顧客と関わるデジタル アシスタント (Amazon Penny と呼ばれます) を構築します。その結果、顧客は安全で自動化されたワークフローを通じて数分でオンボーディングできます。
申請の流れは以下の通りです。
ユーザーは、AWS Amplify 内でホストされているフロントエンド Web サイトにアクセスします。
ウェブサイトは Amazon CloudFront エンドポイントを呼び出して、AWS Fargate にコンテナ化されてデプロイされているデジタル アシスタントの Penny と対話します。
デジタル アシスタントはカスタム Langchain エージェントを使用して、銀行の商品やサービスに関する質問に答え、オンボーディング フローを調整します。エージェントが使用する Large Language Model (LLM) は、Amazon Bedrock によって提供される Anthropic Claude 3.5 Sonnet です。
ユーザーが銀行の商品またはサービスに関連する一般的な質問をした場合、エージェントは商品検索ツールと呼ばれるカスタム Langchain ツールを利用します。このツールは、銀行のデータを含む S3 データソースにリンクされた Amazon Kendra を使用します。
ユーザーが新しいアカウントの開設を希望していることを示すと、エージェントはユーザーに電子メールの入力を求めます。ユーザーが応答すると、電子メール検証ツールと呼ばれるカスタム Langchain ツールが利用されます。このツールは、Amazon API Gateway にデプロイされたエンドポイントを呼び出して、銀行の Amazon DynamoDB データベースに既存のアカウントがあるかどうかを確認します。
電子メールの検証後、姓名などの KYC 情報が収集されます。次に、ユーザーは身分証明書の入力を求められます。これは Amazon S3 にアップロードされます。
エージェントは、ID 検証ツールと呼ばれるカスタム Langchain ツールを利用します。このツールは、Amazon API Gateway にデプロイされたエンドポイントを呼び出して、セッション中に入力されたユーザーの詳細が ID と一致するかどうかを確認します。詳細は、Amazon Textract を使用してドキュメントのテキストを抽出することで確認されます。
本人確認の後、ユーザーは自撮り写真を求められます。画像は Amazon S3 にアップロードされます。次に、エージェントは Selfie Verification Tool と呼ばれるカスタム 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 時間あたりのコストは約 1.34 ドルになります。個々のサービスの料金詳細を必ず確認して、さまざまな使用レベルやリソース構成に対して請求される可能性のあるコストを理解してください。
エージェントを AWS アカウントにデプロイするには、以下の手順に従ってください。
./api/llm
に移動しますchmod +x script.sh
./script.sh
を実行すると、ECR に新しいリポジトリが作成され、イメージがデプロイされます。ツール インフラストラクチャを AWS アカウントにデプロイするには、以下の手順に従ってください。
./infra
に移動しますnpm i
実行してノードモジュールをインストールしますnpm run build
実行して typescript を javascript にコンパイルしますLLMImageTag
は、ECR サービス内の AWS コンソールにある Docker イメージのタグです。パラメータ値を入力します。 CloudFormation スタックが AWS アカウントに作成されます。 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
に電子メールが送信されます。メールに記載されている確認リンクをクリックしてください。CloudFrontDomainName
をコピーします。注: CloudFormation スタックが LLMDeployment の完了を待機中にスタックした場合は、ECS タスクが失敗した可能性があります。これは、イメージをビルドしたマシンのアーキテクチャが、プロジェクトで使用するように構成したもの (ARM64) と一致しないことが原因である可能性があります。その場合は、ECS タスク定義が使用するアーキテクチャを手動で更新します (代わりに X86 を使用する可能性があります)。
デモ アプリケーションを AWS アカウントにデプロイするには、以下の手順に従ってください。
./penny-ui/src/
内のApp.js
のLLM_API_ENDPOINT
定数の値を、CloudFormation スタックによって出力された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 インデックス ID に置き換えます。tools.py
内のos.environ["apiEndpoint"]
、CloudFormation スタックによって出力された API ゲートウェイ エンドポイントに置き換えます。main.py
内のos.environ["idBucketName"]
、CloudFormation スタックによって作成された 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 ライセンスに基づいてライセンスされています。 LICENSE ファイルを参照してください。