はじめに
本記事は any Advent Calendar #2 「マルチテナントSaaSにおけるエンジニアリング大全」 Day11 の記事です。 弊社anyのアドベントカレンダーをひとつ丸ごと占有して、ひとりアドベントカレンダーとして、筆者の「マルチテナントSaaSのエンジニアリング」への経験をすべてアウトプットしていくカレンダーです。
本日は生成AIとマルチテナント特有の事情について、アプリケーション観点から紹介していきます。
生成AIとマルチテナントのかかわり
マルチテナントに限らず生成AIとアプリケーションの取り扱いは、非常に変化が激しい領域ですよね。生成AI特有の非決定論的な振る舞いを制御する方法、MCPなどの新規格やプロトコルが目まぐるしく登場してきました。さらにAI Agentの普及に伴って、Agenticな振る舞いを考慮したアプリケーション設計が求められるようになってきました。
マルチテナント(B2B SaaS)文脈においては、生成AIの挙動は非常に厄介です。決定論的に一意に処理が確定しないため、ユーザからすれば、「出力結果が正しいか正しくないか」といったことに対して敏感になりがちです。業務によっては間違いが許されにくい領域でもあることもあります。
そういった変化のなかで同時にマルチテナントの考慮をすることは不確実性も高いです。そのため、今回の記事はマルチテナントに限らず、一般的なアプリケーションに関する内容と混ざりながらの解説になることをご了承ください。
モデル選定 / プロンプトにかかわる諸問題
もっともシンプルな例からはじめていきましょう。それはいわゆるLLMのモデルやプロンプトに関わる諸問題です。
テナントごとにチューニングする必要性
その最たる例が、テナントごとに、モデルを切り替えたい や プロンプトを微調整したい といった要望ではないでしょうか。
QastではAI機能の一つとして、社内ドキュメントをRAGで検索できる「こましりchat」という機能を提供しています。そのなかでの大きな要望として「社内用語を認識させたい」という声をよくいただきます。さらに突き詰めれば、会社ごとに参照するナレッジが「変数」である以上、それに応じたFine Tuningを行いたいといった声があがることもあります。
これまでは自前で実装せざるをえませんでしたが、この辺りの諸問題はマネージドサービスに吸収されていく流れもあります。AWSであればBedrockはナレッジベースをテナントごとに分離でき、チャンキング戦略などを可変にすることができます。Lambdaのテナント分離モードやSQSの公平キューのようにマルチテナントのニーズが高いゆえでしょう。
テナントのデータ分離とセキュリティ
セキュリティ観点では、生成AIのコンテキストウィンドウは、過去の会話履歴を含むため、適切に管理しないとテナント間でコンテキストが混在するリスクがあります。また、AI Agentの実装によっては、処理時間が長時間に及ぶため、処理中のデータを永続化しておく必要があります。
こういったデータに関する処理は、これまでのようにどのレベルでデータを分離するかを検討する必要があります。データ分離に限らずではありますが、ナレッジワークさんの資料はアプリケーション全体の設計として非常に参考になります。
MCP(外部ツール呼び出し)認可に関する問題
外部ツール呼び出しは、マルチテナントというよりも、B2B観点での懸念の方が強くなります。その代表格であるMCPについて触れましょう。MCPが提供する機能のなかでも「認可にかかわる処理」の難易度が高いでしょう。マイクロサービス(API)に伴う認証認可の問題がより派生し、社外のMCPサーバに対しても類似の問題が発生します。つまり 「どの粒度で権限セットをユーザに渡すか」 が重要になります。
B2Cのサービスであればユーザ自身が権限について管理すれば十分ですが、実際のB2Bでは管理者がその制限をかけたいことが多いはずです。エンドユーザ(従業員)ひとりひとりがその権限の大きさを確認することは事実上難しく、管理者が一律で設定をしたいです。このあたりの諸問題については、下記のLayerXさんの記事が非常に参考になります。
さらに、とある主体(ユーザやエージェント)から呼び出す別の主体に依頼をすることで、呼び出し元の主体が呼び出せる権限を越境できることをConfused Deputy Problem と呼ばれます。これは生成AIにかぎった権限不備ではないのですが、Agent to Agent通信が増えるため、より高度化する流れになります。
Confused Deputy Problemについては、MCPの規格においての認可フローの箇所でも触れられています。いわゆる取得したトークンをそのまま後続のエージェントに引き渡した場合、不必要な権限が後続のエージェントに引き渡されてしまいます。そのため同じトークンをそのまま引き渡さないことを重要とされています。
オンライン/オフライン評価
生成AI、もといAI Agentの実装においては、精度向上の検証は欠かせません。LangSmithやLangFuseといったSaaS上で評価できるツールも増えてきました。 マルチテナントという観点では、テナントごとに評価軸が異なる場合があるという点を組み込む必要があります。
しかしながら、評価といった文脈においては、既存の情報検索(全文検索や機械学習)などの、いまとなってはレガシーな領域の知見が大きく活きる領域のように感じます。
Qastにおける事例も紹介しましょう。LangSmithによるオフライン評価の仕組みを導入しており、Findy Toolsに寄稿しているので、ぜひこちらもご覧になって下さい。
まとめ
生成AIにまつわる諸問題は未知の問題のように見えがちですが、これまでのデータ分離や認証認可の知識を応用することで、ある程度予測できることも多いと考えています。非常に変化の激しい領域でもありますが、今後のプロダクトに欠かせない要素ばかりなので、これからもウォッチを続けていきましょう💪
