ブログ | CTO オフィス

コンテキストに基づいて生成型AIアプリケーションを制御する

ジェームズ・ヘンダーガート サムネイル
ジェームズ・ヘンダーガート
2025年10月13日公開

EYの最新AI Pulse Surveyによると、87%の経営幹部が、サイバーセキュリティやデータの問題からポリシーやガバナンスの欠如まで様々な導入の壁を挙げています。 生成AI(GenAI)をビジネスに取り入れるには、実現したいという意志とそれを実行する能力の両方が求められます。 そのギャップを埋めるのは運用の複雑さと新技術への信頼の必要性です。

企業は何十年にもわたりソフトウェアを開発・展開してきましたが、GenAIは新たな課題として「制御」をもたらします。 従来のソフトウェアと異なり、GenAIアプリケーションは自主性を持ち、結果が一律ではありません。 つまり、現時点ではGenAIアプリケーションが意図した動作だけを行い、意図しないことを絶対にしないとは保証できません。 制御の欠如が、本格的な利用拡大を妨げています。 制御の課題はコンテキストの力を理解することで明確になり、その理解が企業に従来のソフトウェア設計をGenAI対応に進化させる道筋を示します。

十分なコンテキストを持てば、GenAIアプリケーションの不確実性は制御可能です。コンテキストがGenAIアプリケーションの機能とビジネスの意図の間をつなげるからです。 コンテキストはGenAIアプリケーション、環境、ビジネスという3つの領域から取得できます。

アプリケーション コンテキストの比較

GenAIアプリケーション内で扱うコンテキストは、従来のアプリケーションとは大きく異なります。 従来のアプリケーションは、事前に定義された操作のパラメータとして許可される入力を固定します。 同じ入力は常に同じ結果を生み出します。 一方で、GenAIアプリケーションは、設計上、その出力が非決定論的である大規模言語モデル(LLM)に対し、はるかに多様な入力を受け入れます。 同じ入力でも結果が毎回同じとは限りません。

従来型アプリケーション決定論の例:

このPythonのサンプルは、生年月日と現在の日付から年齢を計算します。 簡潔にするため、型の処理や今年の誕生日が過ぎているかの判断は省いています。

datetimeモジュールからdatetimeをインポートします

typing から Union をインポート

def calculate_age(生年月日:str, 現在日付:str) -> int

年齢 = current_dt.year - birth_dt.year

年齢を返します

誕生日:1972年6月30日、現在の日付:2025年8月31日

年齢は53歳です。  

GenAIアプリケーションの非決定性の例:

このアプリケーションは、人物の生年月日や現在の日付を知らなくても、より一般的な情報を基に推定年齢を示せます。

CASIリーダーボード

生成型AIアプリケーションは、多様な入力を受け入れてLLMの推論を行います。

プロンプト: ディスコ音楽が好きで、バルセロナ五輪女子100メートルの金メダリストを覚えている方は何歳くらいでしょうか?

この正確なプロンプトを3回入力すると、それぞれの回答は以下の通りでした。

回答1: 55歳

回答2: 40歳から60歳

回答3: 40代、50代、60代

従来のアプリケーション内のPython関数は、2つの入力(生年月日と現在の日付)を受け取り、年数の差を計算します。 この関数は推論や結論を導き出せないため、人の年齢を判断したり、好みや習慣などの詳細を解釈したりすることはできません。

比較して、GenAIアプリケーションは、子供のころに人気だった音楽ジャンルや主要なスポーツイベントの一般知識をもとに応答を導き出せますが、質問の言い回しや温度設定(LLM応答のランダム性に影響)など、入力の微妙な違いで回答が変わることがあります。 アプリケーションコードが変わらなくても、応答内容が異なる場合があります。 この差は、プロンプトの複雑さや追加の入力ソースの有無、推論インフラストラクチャ内のルーティング要素の動きに伴って大きくなります。

この自由度を考えれば、追加のコンテキストがなければGenAIアプリケーションが意図した動作から大きく外れるケースは容易に想像できます。 この2つのコンテキスト例は、従来ソフトウェアの極めて決定論的な性質と、GenAIアプリケーションの非決定論的な性格を鮮明に示しています。 従来のソフトウェアは、コンテキストから人の年齢を推測したり予測したりすることは原則として行いませんが、GenAIアプリケーションはそうした非決定論的な問題に日常的に対応します。 アプリケーションに十分なコンテキストが含まれていなければ、次にアプリケーション環境を確認してください。

環境の状況はアプリケーションの外部から情報を提供します

環境はアプリケーションを取り巻くインフラストラクチャとサービスで構成されています。 1982年7月のコンピュータ業界セミナー「CreativeThink」で、アラン・ケイは「ソフトウェアに真剣に取り組む人は、自分でハードウェアを作るべきだ」と話しました。彼はハードとソフト間の密接な結びつきを強く信じていたからです。 その考えを拡張し、導入環境も含めたいと思います。

アプリケーションは孤立して存在しません。 さまざまなインフラストラクチャ サービスが連携して、アプリケーションの実行環境を提供しています。 これらのサービスはアプリケーションの外部にありながら、ハードウェアと同様にその正常な機能に不可欠です。 さらに踏み込んで言えば、こうしたインフラストラクチャ サービスは、多様な可観測性ソリューションを使って細かく監視し、時間をかけて豊富なテレメトリ データを収集・追跡しています。 このデータはアプリケーションの動作状況や、周囲の環境がどのように影響するかを示します。

環境コンテキストは受動的と能動的の2種類に分類できます。 ログ、メトリクス、トレース、イベントなどあらゆるテレメトリは、インフラやアプリケーションが稼働している間、継続的に発信され収集されるため受動的と見なせます。 アラート、通知、ダッシュボードは能動的です。 私たちはルールを使ってテレメトリを解析し、運用の状況を伝えます。 ルールの調整によって情報に運用上の意味を与え、環境全体のどこかで許容範囲に近づくまたは超過している状況を判断します。

GenAI アプリケーションは、自律コンポーネントの無数の振る舞いをカバーする信頼できるテレメトリがまだ整っていないため、ルールベースのアプローチでは対応が難しくなっています。 しかし、イノベーションが止まっているわけではありません。 現在、2つの方法が試されています。 ドメインベースの指標による GenAI の成果評価と、LLM を審査役とする方法です。 前者は代替手段で実際の真実を判断し、その後 GenAI の結果と比較して成功率と失敗率を把握します。 後者は、1つの LLM が別の LLM の精度を評価します。 環境コンテキストを活用して GenAI を真にコントロールできるか、この分岐する手法がどこまで進むかは、時間が示してくれるでしょう。

ビジネスの意図が状況の全体像を明確にします

ビジネスの意図とは、「ビジネスが望むすべてを実現し、不要なものは排除する」という考え方です。 アプリケーションや環境だけでは見落としがちな状況もカバーします。

最近のニュースで、あるアプリケーションのGenAIコンポーネントに、データベースからすべての顧客記録を削除するなど、過剰に損害を与える操作を行う権限を与えてしまった事例が報告されました。 ここでは、その状況からビジネスの意図とGenAIアプリケーションの可能な行動とのギャップを示すいくつかのデータポイントをご紹介します。

何が起こったのですか 欠落しているビジネスの背景
AIコーディングツールがコードフリーズ中に本番データベースを誤って削除しました。
  • コードフリーズ中は、コンポーネントが可能でも一切変更しないでください。
  • AIコーディングツールは、データベース全体の削除やコードフリーズ中の変更などの重要な操作を行う前に、必ずあなたの許可を求めて一時停止します。 重要な操作は、人間の承認なしには決して実行しません。
AI コーディングツールはデータベースのロールバックをサポートせず、復元用のインスタンスもないと伝えましたが、実際には手動でロールバックを実行すると正常に動作しました。
  • AIコーディングツールは決して誤った情報を出してはいけません。
  • AIコーディングツールは、バックアップやロールバックなどの重要な運用業務の状況や実行能力について誤った情報を決して伝えてはいけません。

このケーススタディは、GenAIに許可される範囲と企業が期待する役割との間に生まれる多くのギャップのいくつかを示しています。

レコードを削除する機能をアプリケーションに設計するのは当然ですが、AIが許可なくすべてのレコードを削除することは許されません。 従来のソフトウェアでは、ビジネス損失のリスクを減らすためにレコード削除の権限を制限していますが、GenAIはロールベースのアクセス制御だけでは十分に管理できない自律性を持ち込みます。 ビジネスの文脈がここで役立ち、期待される行動と予期しない行動を明確に区別して、禁止すべき操作や人間の介入が必要なポイントなど具体的な要件に落とし込めます。 こうした制御を可能にするのは、全体の文脈です。

GenAIが登場する前に考案されたアプリケーション アーキテクチャでは、もはや対応しきれません。 GenAIの登場によって、アプリケーション、その環境、ビジネス インテントという3つのコンテキスト領域を統合した新たなアーキテクチャ パターンが求められています。 Google DeepMindのシニアAIリレーションエンジニア、Phil Schmidによる解説は、GenAIアプリケーションがもたらす本質的な違いを理解するうえでとても役立ちます。 その解説は、LLMが入力の一部としてコンテキストを利用することを示し、各GenAIアプリケーション コンポーネントがそれぞれ独自のコンテキスト定義と活用方法を持つことを描いています。

GenAIアプリケーションのアーキテクチャと設計では、3つのコンテキストドメインすべてを活用して、常にビジネスの意図に沿った成果を出す必要があります。 完全なコンテキストの全体像がなければ、制御は形だけになり、信頼は生まれず、全面展開は実現できません。