AIハーネスとは、AIモデルの周囲にあるソフトウェアであり、モデルが何を受け取り、出力に何が起こり、モデルがアプリケーションの他の部分とどのように接続するかを制御します。チャット履歴を管理する小さなコードの場合もあれば、ツール、メモリ、権限、再試行、長時間実行される処理を管理するランタイムの場合もあります。

標準的な定義はありません。AIハーネスエージェントハーネスは、多くの場合、ツールを使用するモデルの周囲にあるランタイムを指します。モデル自体を除くAIアプリケーションのほぼすべてを指す、より広い用語として使う開発者もいます。

AIハーネスの仕組み

モデルは入力を受け取り、出力を生成します。しかし、モデル単体では、アプリケーションが会話をどのように保存するか、要求されたアクションを許可するか、ツールが失敗した後に何をするかを決めません。これらの仕事を担うのがハーネスです。

一般的なハーネスは、次の4つのステップを繰り返します。

  1. モデルへの入力を準備する。ハーネスは、ユーザーの要求に指示と今回の処理に必要な情報を組み合わせます。会話の状態を読み込んだり、ドキュメントを検索・取得したり、モデルが要求できるツールを説明したりすることがあります。
  2. モデルを呼び出す。ハーネスはその入力をモデルプロバイダーに送り、テキストまたは構造化された要求を受け取ります。
  3. 出力を解釈し、制御する。モデルがツールを要求した場合、ハーネスはそのツールが存在することを確認し、引数を検証し、権限や承認のルールを適用します。出力に特定の形式が必要な場合は、それも検証します。
  4. 返す、実行する、または続行する。ハーネスは最終回答を表示したり、許可されたアクションを実行したり、ツールの結果をモデルに返して次のターンに進めたりできます。また、ターン数の上限やタイムアウトなど、停止条件も適用します。

すべてのハーネスがすべての機能を備えているわけではありません。単純な要約サービスでは、入力を組み立て、モデルを呼び出し、回答を検証して返すだけかもしれません。コーディング用ハーネスでは、ファイル、コマンド実行ツール、永続状態、テスト結果、人間による承認、すべてのアクションのログも提供することがあります。

重要な区分は次のとおりです。モデルは出力を提案し、ハーネスはその出力が何を実行できるかを決めます。モデルがメール送信の要求を生成することはあっても、ハーネス内の通常のアプリケーションコードがユーザーを認証し、宛先を確認し、必要に応じて承認を求め、メールサービスを呼び出し、結果を報告します。

例:返金アシスタント

顧客が「注文4812のヘッドホンを返金してください」と書いたとします。

まずハーネスは、指示と、利用可能な2つのツールの説明、つまりget_orderissue_refundを添えて、その要求をモデルに送ります。モデルは注文番号4812を指定してget_orderの呼び出しを要求します。

ハーネスは、引数が想定された形式であることと、顧客がその注文にアクセスできることを確認します。次に照会を実行し、その結果をモデルに渡します。結果には、ヘッドホンの価格が80ドルで、まだ返金対象であることが示されています。

続いてモデルは、80ドルのissue_refundを要求します。実際にお金が動く前に、ハーネスは返金ポリシーと顧客の本人確認をチェックします。会社のポリシーで承認が必要な場合、処理を一時停止し、提案されたアクションを従業員に表示します。承認後に初めて、ハーネスは決済システムを呼び出します。

モデルは手順の選択を支援しました。一方、データアクセス、検証、ポリシーの適用、承認、実行、何が起きたかの記録といった、結果に重大な影響を及ぼす部分はハーネスが担いました。

この分離により、失敗にも対処しやすくなります。注文サービスがタイムアウトした場合、ハーネスは一度だけ再試行し、その後、明確なエラーを出して停止できます。安全な復旧計画をモデルが作り出すことに期待する必要はありません。

ハーネスが重要な理由

同じモデルでも、2つのハーネスでは挙動が大きく異なることがあります。一方のハーネスは、明確なツールの説明、関連性の高いコンテキスト、厳格な権限、有用なエラーメッセージをモデルに提供するかもしれません。もう一方は、無関係な情報を過剰に与え、リスクのあるツールを公開し、失敗を隠すかもしれません。モデルの品質は重要ですが、完全なシステムの挙動をモデルの品質だけで説明することはできません。

ハーネスは、単にルールを要求するのではなく、開発者がルールを強制できる場所でもあります。「承認なしに100ドルを超える返金を決して行わない」という指示はモデルに影響を与えられますが、信頼できる制御ではありません。決済呼び出しをブロックするコードレベルのチェックなら、モデルがミスをした場合や、信頼できないテキストがモデルの誘導先を変えようとした場合でも強制できます。

適切に定義されたハーネスは、アプリケーションの検査や変更も容易にします。ログには、実行時の入力、ツール要求、承認、結果、停止理由を記録できます。モデル固有のプロンプトやツールの挙動についてはテストが必要ですが、周囲のすべての統合を作り直さずにモデルを置き換えられる場合もあります。

ハーネスは必ずしもエージェントではない

ハーネスはシステムの一つの層です。エージェントは通常、モデルを使って1つ以上のステップにわたるアクションを選択する、システム全体を指します。

つまり、ハーネスは高度な自律性がなくても存在できます。基本的なチャットインターフェースの背後にあるソフトウェアも、指示、メッセージ履歴、モデル呼び出し、表示される出力を管理します。モデルがツールを使えず、自律的にタスクを遂行できない場合でも、これらはハーネスの機能です。

デプロイされたエージェントについては、その逆は成り立ちません。モデルは、データベースに直接認証したり、承認ポリシーを適用したり、プロセスの再起動後もタスクの状態を保持したりできません。開発者がそのソフトウェアをハーネスと呼ぶかどうかにかかわらず、モデルの周囲にあるソフトウェアがこれらの機能を提供する必要があります。

この用語は評価ハーネスという形でも使われます。この場合、ハーネスは一貫したテストタスクのセットでモデルを実行し、スコアを記録します。これはテストシステムであり、必ずしもエージェントのランタイムではありません。どの意味が意図されているかは、通常、文脈から判断できます。

次に読むもの

AIエージェントとは?」を読めば、モデルとハーネスが、複数のステップを選択して実行するシステムをどのように形成できるかがわかります。「LLMにおけるツール使用とは?」では、ハーネスが制御する、提案、検証、実行、観測のループを扱います。主要な層の境界については、「AIモデル vs. チャットボット vs. ハーネス vs. エージェント」を参照してください。