Re Reference AI

エージェント

Code Interpreterとは

Advanced Data Analysis / コードインタープリタ

LLMがコードを生成し、その場で実行して結果を確認しながら回答を組み立てる機能

エージェントツール利用

ひとことで言うと

AIがその場でプログラムを書いて実際に動かし、その実行結果を見ながら答えを作る機能。

概要

Code Interpreterは、LLMが単に自然文で答えるだけでなく、Pythonなどのコードをその場で生成する機能。 サンドボックス化された実行環境の中でそのコードを実際に実行し、得られた実行結果(計算結果、グラフ、エラーメッセージなど)を踏まえて回答を組み立てる。 複雑な数値計算やデータ集計、グラフの描画、ファイルの読み込みと加工といった、LLMが内部知識だけで正確に処理することが難しいタスクを、実際にコードを実行して検証しながらこなせるようにする。 生成したコードがエラーになった場合、エラーメッセージを踏まえてコードを修正し再実行するというサイクルを繰り返すことで、最初の1回では動かないコードも試行錯誤を経て正しい結果にたどり着けることが多い。 OpenAIのChatGPTにおけるCode Interpreter(後にAdvanced Data Analysisと改称)がこの機能を広めた代表例で、以降多くのAIアシスタントやAIエージェントのフレームワークが類似のコード実行機能を提供するようになった。

背景

LLMは大規模な言語知識を持つ一方、正確な数値計算や大量データの集計といったタスクは、内部の確率的な推論だけでは誤りを起こしやすい。 Code Interpreterは、実際にコードを実行させて計算過程を計算機に委ねることで、この種のタスクにおける正確性を高める目的で導入された。

歴史

2023年: OpenAIがChatGPTのプラグインとしてCode Interpreterを公開。 2023年: 機能をAdvanced Data Analysisへ改称し、ファイルアップロードやデータ分析用途を強化。 2023年以降: 他のAIアシスタントやエージェントフレームワークにも、類似のコード実行機能が広く実装される。

ワークフロー

ユーザーからの質問やタスクを受け取り、LLMが必要なPythonコードを生成する。 生成したコードをサンドボックス化された実行環境で実行し、標準出力やエラーメッセージ、生成されたファイル(グラフ等)を取得する。 実行結果を踏まえて、必要であればコードを修正して再実行し、最終的な結果を自然文とともにユーザーへ提示する。

利点

  • 数値計算やデータ集計など、LLMの内部知識だけでは誤りやすいタスクの正確性を高められる
  • エラーが出た場合にコードを修正・再実行するサイクルを経て、試行錯誤しながら正しい結果にたどり着ける
  • グラフの描画やファイルの加工など、実際にプログラムを動かす必要があるタスクに直接対応できる

欠点

  • サンドボックス環境の用意や維持など、追加のインフラコストが必要になる
  • コードの生成・実行・修正を繰り返すため、単純な質問応答よりレイテンシとコストが増加する
  • 実行環境に用意されていないライブラリや、外部ネットワークへのアクセスが必要な処理には対応しにくい

比較

  • サンドボックス化Code Interpreterは、サンドボックス化された実行環境を利用してコードを安全に実行する代表的な機能
  • ツールコーリングCode Interpreterは、コード実行という特定のツールをLLMに使わせるツールコーリングの一形態と捉えられる
  • ReActCode Interpreterのコード生成・実行・修正のサイクルは、ReActの思考・行動・観察のループと類似した構造を持つ

関連用語

サンドボックス化ツールコーリングReActコーディングエージェントAI IDE

よくある質問

Code Interpreterはどんなタスクが得意?

数値計算、統計処理、グラフの描画、ファイルの読み込みと加工など、実際にプログラムを実行して確認する必要があるタスクを得意とする。

生成したコードが失敗したらどうなる?

多くの実装では、エラーメッセージを踏まえてLLMがコードを修正し、再実行するというサイクルを自動的に繰り返すことで、最終的に正しく動くコードへたどり着けるよう設計されている。

関連Zenn記事