BioErrorLog Tech Blog

試行錯誤の記録

Code interpreter/Advanced Data Analysisの仕組みを理解する | ChatGPT

ChatGPTのCode interpreterの仕組みを、自分の理解で整理します。

※ 追記:「Code interpreter」は、現在「Advanced Data Analysis」に改名されました。 中身の機能に変更はありません。

はじめに

先日、ChatGPTのCode interpreterがbetaリリースされました。

非常に有用な機能で、世間的にもお祭り状態ですね。
私も色々試して遊んでいます。

一方で、「どう活用できるのか」ではなく、「どういう仕組みなのか」という観点は、Code interpreterを実際に触ってみるまで私も良く分かっていませんでした。

今回は、Code interpreterの仕組みに焦点を当てて、自分の理解を整理します。

Code interpreterの仕組みを理解する

Code interpreterの仕組み

Code interpreterは、Pythonを実行できるサンドボックス環境がChatGPTに割り当てられる機能です。

Code interpreterの仕組み概要

三人の登場人物を意識すると、この仕組みを理解しやすいでしょう。

  • ChatGPT:
    ユーザーからの入力に対して実行計画を立て、Pythonコードを生成する。
  • Python実行環境:
    ChatGPTが生成したPythonコードを実行できる。
  • ディスクスペース:
    実行されるPythonコードは、この領域にアクセスできる。
    ユーザーはここにファイルをアップロード/ダウンロードできる。
    このディスクスペースは一時的なもので、一定時間経過するとリセットされる(ephemeral/一時的な領域である)。

つまり、ユーザーの指示に応えるためのPythonコードが生成&実行される、その実行対象データたるファイルもアップロードできる、という訳ですね。

ChatGPTに出す指示はPythonが対応できる範囲(Pythonからコマンドも実行できるので範囲は非常に広いです)であればなんでも対応してくれますし、アップロードするファイルもPythonで扱えるファイルであればなんでも対応できます。

これまではChatGPTにコードを生成させることはできても、それをコピペして実行するのはあくまでユーザーの責務でした。 それが、ChatGPT側でコード実行までできるようになったのは嬉しいアップデートですね。

ケーススタディ:Code interpreter実行時の流れ

では例として、「ある動画ファイルをTwitterアップロード用に変換する」というケースを取り上げ、どのような処理がどこで起きているのかを追いかけてみます。

1. ユーザーからのファイルアップロードと指示

まず、動画ファイルをアップロードして指示を出します。

この段階では、ファイルが一時ディスクスペースにアップロードされ、ChatGPTに指示が飛んでいる状態です。

ファイルがアップロードされ、promptが送信された

2. ChatGPTによる計画の立案

この指示対して、ChatGPTは「こういう処理を実行しようと思います。よろしいですか?」と計画を立案してきます。

今回は、下記のようにして実行計画を立ててきました。

  1. Twitterアップロード用の最適なフォーマットの整理
  2. アップロードされた動画ファイルのフォーマットを確認 (Python実行)
  3. Twitterアップロード用の最適なフォーマットと、現状の動画ファイルのフォーマットの差分から、どんな変換を行えば良いかを立案

ChatGPTからのレスポンス

3. 処理の実行と実行結果のダウンロード

提案された計画に対してユーザーがGOサインを出すと、ChatGPTはPythonコードを生成して実行します。

Python実行結果がエラーになったときは、そのエラーを解析して勝手に試行錯誤してくれます。 面白いですね。

処理結果のファイルは、ダウンロードリンクが提示されてユーザーがダウンロードできます。

ファイル処理のPythonコードが実行される様子


以上、ユーザーからの指示を実現する処理(Python)を、ChatGPTがCode interpreterサンドボックス環境上で実行していく、という流れを追いました。

Code interpreterサンドボックス環境の詳細

最後に、Code interpreterで割り当てられるサンドボックス環境の詳細を調べます。
(全て執筆時2023/07時点の調査結果です)

カレントディレクトリ

カレントディレクトリは、作業開始時点で /home/sandbox です。

Disk容量

  • 全容量:約 133 GB
  • 使用中:約 75 GB
  • 利用可能:約 57 GB

思った以上のdisk容量が割り当てられていました。

Pythonバージョン

Pythonのバージョンは 3.8.10 です。

少し古くも感じますが、GPTが2021年までの情報で学習されていることを考えると妥当ですね。

OS情報

Linuxで、アーキテクチャはx86_64でした。

ちなみにplatform.linux_distribution()がPython3.8から使えなくなっていることもあり、何のディストリビューションなのかまで辿り着けませんでした。 (わかったら是非教えてください)

おわりに

以上、Code interpreterの仕組みを整理しました。

止まる気配のないLLM界隈のアップデートを見ていると、まさに時代の変わり目といった機運で面白いですね。

どなたかの参考になれば幸いです。

[関連記事]

www.bioerrorlog.work

www.bioerrorlog.work

www.bioerrorlog.work

参考

ChatGPT — Release Notes | OpenAI Help Center

ChatGPT plugins