#概要
ー ポイ活サイトにおける、キャラクターごとに話し方・性格を切り替えるチャット機能の実装プロジェクト。会話メモリ管理の仕組みづくりと、Vertex AI(Agent Platform)との連携実装を、4名体制の中でSEとしてメイン担当。
#担当
ー SEとして、キャラクター会話機能における記憶管理システムの設計・実装、およびVertex AI(Agent Platform)との連携部分の実装を担当。
#使用技術
ー TypeScript, Next.js, Hono, Prisma, PostgreSQL, Sentry, GCP(Cloud Run, Agent Platform), Claude, Codex
#課題
ー以下のような課題があり、対応が必要だった。
ーー キャラクターとの会話が長くなるにつれて文脈が失われる課題があった。会話全体を毎回AIに送信するのは非現実的なため、要約した記憶を保持し次のセッションに引き継ぐ仕組みが必要だったが、参考となる情報がほとんどなく、セッションの区切り方や何を記憶として残すべきかを自分で判断しながら設計する必要があった。
ーー Vertex AI(Agent Platform)はプレビュー機能のため情報が少なく、「どこまでの会話履歴を保持するのか」「セッションIDがどのタイミングで発行されるのか」「セッションをどのタイミングで切るべきか」といった挙動が、公式ドキュメントだけでは判断しづらかった。
#取り組み
ー Next.js/Prismaを用いて、セッションを50会話で区切り、区切りのタイミングで会話内容を要約した「中期記憶」と、ユーザーの好みや傾向を蓄積する「プロファイル記憶」を生成・保存する機能を実装。Mermaidで記憶生成〜次セッションへの受け渡しまでの処理フローを可視化して設計を整理し、記憶を保存するテーブルをPrismaで設計してPostgreSQLに永続化、Honoで記憶データの生成・取得APIを実装した。境界値(ちょうど50会話目・51会話目など)を含めた処理分岐を網羅するテストコードを自分で用意し、記憶生成・受け渡しの漏れを防止した。
ー Vertex AI(Agent Platform)との連携部分では、公式ドキュメントをClaudeやCodexにも読み込ませて要点を整理させながら、実際にAPIを動かしてセッションの挙動を検証。不明点や調査事項はMarkdown形式で都度整理・蓄積し、確認事項を明確にした上で実装を進めた。GCPのCloud Run上にAPIをホスティングし、キャラクターごとにプロンプトを切り替えるロジックとAgent Platformとの連携処理を実装した。
ー これらの取り組みにより、複数の機能開発とAgent Platformの実装を短納期の中でも期限内に完了させ、納品まで対応することができた。
# 工夫した点
ー 情報の少ない領域が多かったため、公式ドキュメントを自分でも読み込みつつ、ClaudeやCodexなどのAIコーディングツールにも読み込ませて要点を整理させながら、技術調査・設計整理・テスト観点の洗い出しなど開発工程全体で活用し、未知の技術でも効率的にキャッチアップしながら実装を進めた。
ー 会話メモリの受け渡し処理では、境界値(ちょうど50件目など)を含めたテストコードを自作し、実装漏れを防止した。また、各会話が中期記憶に反映済みかどうかを示すフラグを持たせ、フラグがtrueになっていない会話は次回の中期記憶生成時に必ず取り込む仕組みとすることで、何らかの理由で生成に失敗した場合でも記憶の生成漏れが発生しない設計にした。