Agent Runtime と Code Interpreter:AIアプリに必要なのはどちらか?

Agent Runtime と Code Interpreter:AIアプリに必要なのはどちらか?

コードインタプリタは、コードを実行して結果を返し、そのすべてを破棄する、隔離された短命な実行タスクを処理します。エージェントランタイムは、永続的な状態、ツールアクセス、ブラウザ制御、ファイル I/O、長時間実行セッションを必要とするマルチステップのワークフローを処理します。適切な選択は、製品が使用するラベルではなく、ワークロードに依存します。

目標が一般的なアプリアーキテクチャの決定ではなく、限定された自動化ワークフローである場合は、AI でタスクを自動化する方法 を参照してください。

コードインタプリタが実際に行うこと

コードインタプリタは、言語モデルにコードを実行し、出力を確認する手段を提供します。モデルが Python スクリプトを作成し、インタプリタがそれを隔離環境で実行し、結果がテキスト、ファイル、またはレンダリングされたチャートとして返されます。セッションが終了するか、実装によってはターン間でも、環境はリセットされます。何も引き継がれません。

この設計は意図的なものです。コードインタプリタは、継続性よりも安全性とシンプルさを優先します。分離の境界は厳格です。なぜなら、必要なのは「このコードを実行し、この結果を返す」ことだけだからです。

実際のフットプリントは小さいものです。サンドボックス化された Python(または類似の)ランタイム、セッションにスコープされたファイルシステム、ユースケースに応じてライブラリや外部データを取得するための十分なネットワークアクセス、そしてアーティファクトを返すメカニズムです。セッションの寿命は 30 秒か 10 分かもしれませんが、アプリはそれを基本的に一時的なものとして扱います。

これは、いくつかの価値の高いワークロードに明確に適合します。

  • 単一スクリプトの実行: ユーザーがモデルに計算を依頼し、結果が数値、テーブル、またはファイルとして返されます。
  • データ分析: CSV をアップロードし、サマリーを生成し、チャートを作成します。作業は1回のインタラクション内で開始および終了します。
  • クイック計算: 数学、データ変換、フォーマット変換など、単一のコードブロックに収まるタスク。
  • 教育環境: 各演習が隔離されており、セッションの継続性が期待されない場合。

コードインタプリタがうまく処理できないのは、環境が何かを記憶したり、サンドボックス外でアクションを実行したり、ユーザーが監視しなくなった後も動作を続けたりする必要があるものすべてです。

エージェントランタイムが追加するもの

エージェントランタイムは、複数のステップにまたがり、外部ツールを伴い、数秒ではなく数分または数時間かかる可能性のある作業向けに設計された実行環境です。セッションはステップ間で破棄されません。エージェントが目標に向かって構築するために使用するワークスペースです。

単純なインタプリタに比べて、実際の追加機能は重要です。

永続的なワークスペース: あるステップで書き込まれたファイルは、次のステップでもそのまま残ります。コーディングエージェントは、ブランチを作成し、ファイルを編集し、テストを実行し、障害を修正し、コミットをプッシュできます。これらすべてを1つのセッション内で、最初からやり直すことなく行えます。

インストール済みパッケージとシステムツール: エージェントランタイムは通常、依存関係のインストール、シェルコマンドの実行、CLI の呼び出し、バックグラウンドプロセスの開始、ロックダウンされた Python サンドボックスではなく実際の開発環境での作業をサポートします。

ブラウザとウェブアクセス: ドキュメントを読んだり、ウェブアプリと対話したり、フォームを入力したり、ウェブワークフローを自動化したりする必要があるエージェントは、実行環境にブラウザを必要とします。コードインタプリタには、永続的なブラウザセッションという概念がありません。

ファイルストレージとアーティファクトの永続化: 単一実行を超えて存続する必要がある出力(生成されたコード、中間データ、ダウンロードされたファイル、スクリーンショット)には、ステップ間、場合によってはセッション間で永続化するファイルシステムが必要です。

長時間実行セッション: 一部のエージェントタスクは20分かかります。それ以上かかるものもあります。エージェントランタイムは、関数呼び出しごとに起動および破棄するのではなく、ワークフローの期間中存続するように設計されています。

マルチツールオーケストレーション: 実際のエージェントワークフローには、複数のツールを順番に呼び出すことが含まれます。ウェブ検索、ファイル編集、テスト実行、git プッシュなどです。エージェントランタイムは、そのチェーンを確実に調整するように構築されています。

トレードオフは現実に存在します。エージェントランタイムは、運用がより複雑で、軽量なインタプリタよりもセッションあたりのコストが高く、慎重なポリシー設定を必要とするより大きな攻撃対象領域を露出させます。インタプリタモデルに適合するワークロードの場合、この複雑さをすべて追加することは無駄です。

主要な決定次元

以下の表は、実際の決定基準を示しています。ほとんどのアプリは明らかにどちらかの側に分類されます。ハイブリッドパターンについては、両方にまたがるケースのために次のセクションで説明します。

次元 コードインタプリタ エージェントランタイム
セッション寿命 秒から分、一時的 分から時間、永続的
ステップ間の状態 破棄または制限あり 保持される
ツールアクセス コード実行のみ CLI、ブラウザ、ファイル I/O、API、サブプロセス
パッケージインストール 固定イメージまたは制限付き 動的、ポリシー制御付き
ブラウザ/ウェブ操作 利用不可 サポート対象
ファイルストレージ セッションスコープのみ ステップ間で永続的
セッションあたりのコスト 低い 高い
インフラストラクチャの複雑さ 低い 高い
ヒューマンインザループチェックポイント 一般的ではない 一般的 — デプロイ、マージ、または外部アクションの前に承認
並行性モデル 多数の並列短セッション 少数のより長いセッション

セッション寿命と状態要件は、最も迅速なフィルターです。ワークロードがターン間でリセットされる場合は、インタプリタを使用します。ワークロードが複数のターンにわたって目標に向かって構築される場合は、ランタイムを使用します。

ツールの広さは2番目のフィルターです。ブラウザ制御、git 操作、CLI ツール、外部 API 呼び出しにはランタイムが必要です。唯一のツールがコード実行である場合、インタプリタで十分です。

ヒューマンインザループチェックポイントは、ほとんどの場合、ランタイムを示します。承認を待つためにセッションを一時停止し、その後再開するには、永続的な状態と再開可能なセッションが必要です。インタプリタはこのように設計されていません。

コードインタプリタが最適なケース

コードインタプリタは、実行が境界付けられ、自己完結型である場合に適切な選択です。最も強力なユースケースは次のとおりです。

データ分析アシスタント: ユーザーがファイルをアップロードし、質問をし、チャートとサマリーを受け取ります。モデルが出力を返した時点で作業は完了です。前のステップの記憶に依存する次のステップはありません。

計算および計算ツール: 電卓、単位変換、統計分析、数値シミュレーション。これらはシングルパスです。入力が入り、出力が出ます。

自動レポート作成: データソースからレポートを生成し、メールで送信または保存するスケジュールジョブ。ジョブが実行され、アーティファクトを生成し、終了します。

チャートおよび可視化生成: モデルが matplotlib または類似のコードを作成し、インタプリタがそれを実行し、ユーザーが画像を受け取ります。永続的な環境は必要ありません。

サンドボックス化された LLM ツールの使用: モデルがデータを推論したり、計算を検証したり、出力をフォーマットしたりするために code_interpreter ツールを必要とし、それ以外は何も必要としない場合、コードインタプリタはまさに API が設計されたものです。

これらのシナリオにおけるインタプリタの魅力は実用的です。セッションあたりのコストが安く、運用が容易で、セキュリティ保護が簡単です。管理すべき永続的な状態がなく、追跡すべきセッションライフサイクルもなく、コードが1回実行されて環境が消えるため、攻撃対象領域は狭くなります。

エージェントランタイムが最適なケース

エージェントランタイムは、タスクを完了するために、時間をかけて複数のツールを調整し、ステップ間で状態を維持し、コード実行サンドボックスの外部でアクションを実行する必要がある場合に適切な選択です。

コーディングエージェント: コードベースを読み、変更を書き、テストスイートを実行し、障害を修正し、プルリクエストを開くエージェントには、git、ターミナル、ファイルシステムを備えた永続的なワークスペースが必要です。これはアーキテクチャ的に一時的なインタプリタとは互換性がありません。

ブラウザおよびウェブ自動化エージェント: 動的コンテンツのスクレイピング、フォームへの入力、マルチステップのウェブフローのナビゲート、ビジュアルインターフェースからの構造化データの抽出 — これらすべてには、ワークフローを完了するのに十分な期間存続する実際のブラウザセッションが必要です。

リサーチおよびデータ収集パイプライン: 複数のソースからドキュメントを取得し、情報を相互参照し、中間結果をディスクに書き込み、最終的な合成出力を生成するエージェントには、これらすべてのステップにわたって永続化するワークスペースが必要です。

評価および RL ワークロード: 多数のエージェントエピソードを並行して実行し、それぞれが独自の状態を維持し、スコアを追跡し、チェックポイントを書き込むには、大規模な並行性とセッション分離のために設計されたランタイムが必要です。

長時間実行インフラストラクチャエージェント: リソースをプロビジョニングし、デプロイを実行し、出力を監視し、数分から数時間のウィンドウにわたって変更に反応するエージェントには、一時停止、再開、およびチェックポイントが可能なセッションモデルが必要です。

エージェンティックコーディングツール: Codex スタイルのエージェントや IDE 接続エージェントなど、実際のプロジェクトでアクションを実行するものには、サンドボックス化されたインタプリタではなく、開発環境の完全な表面が必要です。

ランタイムのコストは、状態管理、ツール調整、セッション永続性を手動で配線する代わりとなる場合に正当化されます。ランタイムはそのインフラストラクチャを提供します。ポリシーを設定するのはユーザーです。

ハイブリッドパターン:1つのアプリで両方を使用する

多くの実際のアプリケーションは、両方のパターンを組み込んでいます。コーディングアシスタントは、全体的なセッション(リポジトリコンテキストの維持、変更されたファイルの追跡、ブランチの管理)にエージェントランタイムを使用し、テストの実行やサンドボックス化されたユーザー提供スクリプトの実行を、より大きなエージェントワークフロー内のサブ操作として、コードインタプリタを具体的に呼び出す場合があります。

データ分析製品は、エージェントランタイムを使用してワークフロー全体(データのダウンロード、クリーニング、複数ソースの結合)を調整し、厳格なサンドボックス化が重要で状態を永続化する必要がない個々の計算ステップには、分離されたインタプリタ呼び出しを使用する場合があります。

実際のパターンは次のようになります。

  1. 外側のレイヤーはエージェントランタイムです。セッションを保持し、ツールを調整し、状態を管理します。
  2. 厳格な分離を必要とする内部操作では、多数のツールの1つとして短命なコードインタプリタ呼び出しを使用します。
  3. エージェントランタイムは、インタプリタをいつ呼び出すか、どの入力を渡すか、出力をどうするかを決定します。

これは複雑なアーキテクチャパターンではありません。各レイヤーをその設計目的に使用しているだけです。エージェントランタイムはワークフローを管理し、インタプリタは必要に応じてサンドボックス化された実行を処理します。

各モデル向けのサンドボックスインフラストラクチャの評価

マネージドサンドボックスプロバイダーを評価する場合でも、独自に設計する場合でも、回答する必要がある質問は、構築しているモデルによって大きく異なります。

コードインタプリタのワークロードの場合、評価基準は比較的狭いです。

  • 起動レイテンシはどのくらいですか? インタラクティブな使用にはサブ秒の起動が重要です。
  • デフォルトイメージで利用可能な言語とパッケージは何ですか?
  • ユーザーは追加のパッケージをインストールできますか?また、それはセキュリティモデルで許可されていますか?
  • リソース制限(CPU、メモリ、実行時間)は何ですか?
  • セッションアーティファクトはどのように返されますか? 同期応答、ファイルダウンロード、署名付き URL?
  • 永続的なファイルシステムオプションはありますか?それとも、終了時にすべてが破棄されますか?

エージェントランタイムのワークロードの場合、基準は大幅に拡大します。

  • 環境は、セッション内のステップ間で存続する永続的なファイルシステムをサポートしていますか?
  • セッションを一時停止および再開できますか? ヒューマンインザループワークフローやコスト管理のため?
  • ブラウザサポートはありますか?また、どのように設定されますか?
  • どのようなシェルツールと CLI が利用可能ですか?
  • ネットワークアクセスはどのように制御されますか? 出力ポリシー、DNS フィルタリング、発信許可リスト?
  • セッションの並行性モデルは何ですか?また、どのようにスケーリングしますか?
  • シークレットはどのように注入され、スコープされますか?
  • どのような可観測性がありますか? コマンドログ、ファイル変更追跡、リソースメトリクス?
  • プラットフォームは、通常のリクエスト-レスポンスサイクルを超える長時間実行セッションをどのように処理しますか?

Novita Agent Sandbox は、エージェントランタイムのワークロード(コーディングエージェント、ブラウザ自動化、データ分析パイプライン、永続的な状態、ツールアクセス、セッション制御を必要とする評価/RL ワークロード)向けに設計されています。microVM 分離を使用し、Pause/Resume をサポートし、Novita のモデル API プラットフォームと統合されているため、LLM 推論に Novita を使用するチームは、同じプラットフォームでサンドボックスワークロードを実行できます。エージェントワークフロー向けのサンドボックスインフラストラクチャを評価しているチームは、Novita Agent Sandbox ドキュメント で、分離モデル、ライフサイクル API、およびリソース設定を確認できます。

純粋にインタプリタのみ(単一スクリプト、一時的、ステートレス)のワークロードの場合、完全なエージェントランタイムは不要なオーバーヘッドです。よりシンプルなツールを使用してください。

実用的なテスト:モデルのターンごとに実行環境が破棄されて再構築された場合でも、ワークフローは正しく完了できますか? はいの場合、インタプリタで十分な可能性があります。いいえの場合(状態、ツールアクセス、またはセッションの継続性が重要であるため)、ランタイムが必要です。

FAQ

コードインタプリタとエージェントランタイムの主な違いは何ですか?

コードインタプリタは、サンドボックス化された環境でコードを実行し、セッションが終了すると環境を破棄します。エージェントランタイムは、ファイル、インストール済みツール、ブラウザアクセス、セッション状態を含む永続的なワークスペースを、ワークフローの複数のステップにわたって維持します。インタプリタは「このコードを実行して結果を返す」ことに答え、ランタイムは「必要に応じて何ステップでもかけて、この目標に向けて作業する」ことに答えます。

コードインタプリタは、ウェブ検索やファイルアクセスなどのツールを使用できますか?

一部のコードインタプリタ実装は、限定的なツール使用(ファイルアップロード、サンドボックス内のネットワーク呼び出し、アーティファクトの返却)をサポートしています。しかし、ターン間で状態を引き継ぐ永続的なワークスペースや、単一の関数呼び出しを超えて存続するブラウザセッションはサポートしていません。アプリがウェブページを読み取り、ファイルを書き込み、後続のステップでそのファイルを参照する必要がある場合は、ランタイムが必要です。

エージェントランタイムは常にコードインタプリタよりも高価ですか?

セッションあたりでは、はい。エージェントランタイムには、より多くのインフラストラクチャ(永続的なファイルシステム、より長寿命のプロセス、ブラウザまたは CLI アクセス)が含まれ、これらのコンポーネントは短命なインタプリタサンドボックスよりもコストがかかります。真にマルチステップの調整を必要とするワークロードの場合、ランタイムコストは正当化されます。シングルパスターゲットの場合、それはオーバーヘッドです。

同じアプリケーションで両方をいつ使用すべきですか?

外部ワークフローが永続的な状態を必要とするが、個々のサブ操作が厳格な分離の恩恵を受ける場合。テストスイートをサンドボックス化されたインタプリタで実行するコーディングエージェントや、計算ステップを一時的なインタプリタに委任しながら、オーケストレーションレイヤーが全体的な状態を保持するデータパイプラインは、両方とも一般的なハイブリッドパターンです。

Novita Agent Sandbox は両方のモデルをサポートしていますか?

Novita Agent Sandbox は、エージェントランタイムのワークロード(永続的なワークスペース、Pause/Resume、ブラウザアクセス、マルチステップセッション制御)向けに設計されています。分離された一時的なインタプリタ呼び出しの場合、ユースケースによっては、より軽量な実行の方が適切な場合があります。現在の機能の詳細については、Novita Agent Sandbox ドキュメント を参照してください。

ワークロードにランタイムが必要かどうかを判断するにはどうすればよいですか?

実用的なテスト:モデルのターンごとに実行環境が破棄されて再構築された場合でも、ワークフローは正しく完了できますか? はいの場合、インタプリタで十分です。いいえの場合(状態、ツールアクセス、ブラウザ制御、またはセッションの継続性が重要であるため)、ランタイムが必要です。

おすすめ記事