ChatGPTのCode interpreterの仕組みを、自分の理解で整理します。
※ 追記:「Code interpreter」は、現在「Advanced Data Analysis」に改名されました。中身の機能に変更はありません。
先日、ChatGPTのCode interpreterがbetaリリースされました。
非常に有用な機能で、世間的にもお祭り状態ですね。
私も色々試して遊んでいます。
一方で、「どう活用できるのか」ではなく、「どういう仕組みなのか」という観点は、Code interpreterを実際に触ってみるまで私も良く分かっていませんでした。
今回は、Code interpreterの仕組みに焦点を当てて、自分の理解を整理します。
ChatGPTのCode interpreter、裏側の仕組みを整理しました.
— BioErrorLog (@bioerrorlog)July 9, 2023
Code interpreterの仕組みを理解する | ChatGPT - BioErrorLog Tech Bloghttps://t.co/7xFRezLnbtpic.twitter.com/cDqA849CGw
Code interpreterは、Pythonを実行できるサンドボックス環境がChatGPTに割り当てられる機能です。

三人の登場人物を意識すると、この仕組みを理解しやすいでしょう。
つまり、ユーザーの指示に応えるためのPythonコードが生成&実行される、その実行対象データたるファイルもアップロードできる、という訳ですね。
ChatGPTに出す指示はPythonが対応できる範囲(Pythonからコマンドも実行できるので範囲は非常に広いです)であればなんでも対応してくれますし、アップロードするファイルもPythonで扱えるファイルであればなんでも対応できます。
これまではChatGPTにコードを生成させることはできても、それをコピペして実行するのはあくまでユーザーの責務でした。それが、ChatGPT側でコード実行までできるようになったのは嬉しいアップデートですね。
では例として、「ある動画ファイルをTwitterアップロード用に変換する」というケースを取り上げ、どのような処理がどこで起きているのかを追いかけてみます。
まず、動画ファイルをアップロードして指示を出します。
この段階では、ファイルが一時ディスクスペースにアップロードされ、ChatGPTに指示が飛んでいる状態です。

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


提案された計画に対してユーザーがGOサインを出すと、ChatGPTはPythonコードを生成して実行します。
Python実行結果がエラーになったときは、そのエラーを解析して勝手に試行錯誤してくれます。面白いですね。
処理結果のファイルは、ダウンロードリンクが提示されてユーザーがダウンロードできます。

以上、ユーザーからの指示を実現する処理(Python)を、ChatGPTがCode interpreterサンドボックス環境上で実行していく、という流れを追いました。
最後に、Code interpreterで割り当てられるサンドボックス環境の詳細を調べます。
(全て執筆時2023/07時点の調査結果です)

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

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

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

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


以上、Code interpreterの仕組みを整理しました。
止まる気配のないLLM界隈のアップデートを見ていると、まさに時代の変わり目といった機運で面白いですね。
どなたかの参考になれば幸いです。
[関連記事]
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。