### プロジェクト経験概要
会話履歴を記憶として活用し、一人ひとりに合わせた対話を行うパーソナルAIエージェントのバックエンド開発。Wikipediaの知識グラフによる話題の拡張と、チャット履歴を参照するRAGによるパーソナライズ回答生成。
### チーム情報・自分の担当
チーム規模:約5名。
自身の担当:AWS CDKによるインフラ構築、Python/FastAPIによるバックエンドの詳細設計・実装、データ構造の設計・構築。以下の構成変更、並列化、知識グラフ・RAG・要約機能の実装を担当。
### 開発・実装内容A:構成変更と性能改善
**【機能・背景】**
AIエージェントのリクエストを処理するバックエンド。当初はAPI Gateway+Lambdaで構成。顧客要求の変更により、750TPSへの対応が必要な状況。
**【課題・問題点】**
Lambda構成のクォータ制約により、750TPSの要求に対応できないことが判明。要求性能を満たすための実行基盤の見直し。ECS Fargateへの移行後も、コンテナに割り当てたリソースを十分に活用できていない状態。
**【判断・工夫/自身の実装】**
API Gateway+LambdaからECS Fargateへ構成を変更。未活用のリソースを使うため、コンテナ内の並列化に着目。gunicornとuvicornを用いたマルチプロセス・マルチスレッド構成の導入。AWS CDKによるインフラ構築とPythonアプリケーションの両面からの対応。
**【成果】**
コンテナ内のリソース活用の改善による顧客の要求性能への対応。高負荷試験で750TPSを達成。
### 開発・実装内容B:記憶を活用した回答生成と知識グラフ
**【機能・背景】**
ユーザーごとの過去の会話を回答に反映する機能と、Wikipediaの知識を利用した話題拡張機能。
**【取り組む課題】**
チャット履歴を回答生成に利用するための検索・参照処理と、大規模なWikipediaデータの加工・知識グラフ化。
**【打ち手/自身の実装】**
OpenSearchによる類似会話の検索とRAGによる回答生成ロジックの実装。LangChain、LlamaIndexによるWikipediaデータの加工・解析と知識グラフ構築。Snowflake、DynamoDB、Neptune、OpenSearchを利用したデータ構造の設計・構築。
**【成果】**
チャット履歴を参照したパーソナライズ回答生成と、知識グラフを利用した話題拡張の実装。
### 開発・実装内容C:チャット履歴の要約
**【取り組む課題】**
記憶として利用するチャット履歴の容量圧縮と、要約精度の向上。
**【打ち手/自身の実装】**
要約機能の実装と要約プロンプトのチューニング。
**【成果】**
要約精度の向上とチャット履歴の容量圧縮。
### 主な技術
Python、FastAPI、AWS CDK、ECS Fargate、Lambda、Bedrock AgentCore、gunicorn、uvicorn、OpenSearch、Snowflake、DynamoDB、Neptune、LangChain、LlamaIndex。