📝

ChatGPTのCode Interpreterはどこまでできるのか

2023/07/09に公開

先日(2023/07/07)、OpenAIの公式Twitterアカウントから以下のアナウンスがあった。

https://twitter.com/OpenAI/status/1677015057316872192

そこで自分のアカウントの設定画面を見てみると、どうもすでにCode Interpreterがすでに利用できるようだったので、何ができて何が出来ないのか遊んでみた。

https://twitter.com/Yuhei_FUJITA/status/1677222860975394817

ChatGPTのCode Interpreterとは

そもそもこのCode Interpreterは何ができるのか、さきほどのツイートには以下のように書かれている。

It lets ChatGPT run code, optionally with access to files you've uploaded. You can ask ChatGPT to analyze data, create charts, edit files, perform math, etc.

僕は英語が読めないのでGhatGPTに翻訳してもらった。

それにより、ChatGPTはコードを実行し、オプションであなたがアップロードしたファイルにアクセスすることができます。あなたはChatGPTにデータを分析させたり、チャートを作成したり、ファイルを編集したり、数学的な計算を行わせることができます等。
https://chat.openai.com/share/0e130d2e-2cfc-4f61-935b-26ea6a48b3d6

ようは、ChatGPTにテキストではなく入力としてファイルをアップロードできるようになるということだ。他にも任意のソースコードを実行することができる。

実はこれ、機能としてはChatGPT Pluginと一緒にアナウンスされていたので「やっと来たか」という感じだった。

https://openai.com/blog/chatgpt-plugins#code-interpreter

有効にする方法

このCode Interpreterを利用するには、以下の上限が必要となる。

  • ChatGPT Plusに課金していること
  • 設定で有効にしていること
  • waitlistに登録していること(?)

まず大前提として、この機能はChatGPT Pluginと同様、ChatGPT Plus(20USD/month)に課金している必要がある。また、これはまだBeta機能ということもあってか設定画面から手動で有効にしないと利用できない。

Code Interpreterを有効にするための設定画面のスクリーンショット

さらに、さきほどのツイートにもある通り、Code Interpreterが使えるようになるのは来週中(2023/07/10〜2023/07/16)とのことなので、ChatGPT Plusに課金している人全員がまだ使えるわけではないらしい。おそらく以前あったwaitlistに登録していたため、先行して利用できているような気がする。

実際にやってみた

というわけで、せっかく先行利用できるので何ができるのか試してみた。

QRコードの生成

まずはさきほどのツイートなどにもあったPythonのソースコードの実行を試してみた。

なるほど、動作としてはこういう流れになるようだ。

  1. Pythonのソースコードを出力
  2. Code InterpreterがPythonのソースコードを実行
  3. 実行結果(画像)を出力

ChatGPTにQRコードを出力させたチャット

https://chat.openai.com/share/0dc61efe-b581-41cc-bf55-70644f29a1a7

文字列以外でも出力可能なのはありがたい。

Pythonによる計算

次に試してみたのはOpenAIの記事にあったプロンプト。

Code Interpreterによる計算

https://chat.openai.com/share/6f407e0b-7a8a-447c-a41f-9740d33c305f

以前からChatGPTは計算が苦手と言われてきたが、これで計算もできるようになったみたいだ。

グラフの出力

他にもOpenAIの記事の動画内で登場していたグラフの出力も試してみた。

y = 1/sin(x)のグラフを出力

https://chat.openai.com/share/c5a8f90b-2722-4296-8ba8-03e18ac4cce9

なるほど、numpyのような有名なライブラリは利用できるらしい。

Pythonファイルの実行

試しに、ChatGPTが出力したソースコードをそのままアップロードしてみた。

アップロードしたPythonのソースコードを実行

https://chat.openai.com/share/4803fcc2-f3de-4515-b118-2a2b7d1e94c7

CSVファイルからグラフ描画

次に試してみたのはCSVファイル。今回はe-Statで公開されている人口データを利用させてもらった。

CSVファイルをアップロードし、グラフを出力

https://chat.openai.com/share/7a248e54-fb17-43c2-bd69-27b5b0161c0a

スクリーンショットを見ると手こずっていることに気づくかもしれないが、なんとかグラフを出力することができた(グラフの正確性までは未検証)。

ちなみに今回利用したCSVファイルこのチャットでもChatGPTに指摘されているとおりCSVとして正しくないのだ(そういうところだぞ)。それにもかかわらず、内容を理解して読み込めているのは素直にすばらしい。

なお、画像(グラフ)の描画日本語を利用することはサポートしているフォントの都合上、現状ではできないようだ。

PDFファイルの読み込み

もう少し複雑なファイルとして、PDFファイルを読み込んでみた。

今回は厚生労働省が公開しているPDFファイルを読み込ませた。

PDFの要約

https://chat.openai.com/share/d3b46ec1-2c29-432b-804d-a0fd1c3ca9b7

テキスト部分であれば読み込むことができていそうだ。ただし、画像やグラフ部分まで読み込めているわけではなさそうだ。仕様書や取り扱い説明書を読み込ませて回答させるみたいなことはある程度はできそうだが、レイアウトに依存する。

ファイル変換

CSVの読み込みができることはわかったので、今度はそれを別のファイル形式に変換してみた。

今回はさきほど利用したe-Statで公開されている人口データから特定のデータのみをExcelファイルとして出力してもらった。

CSVファイルからExcelファイルを出力

https://chat.openai.com/share/aa599ba0-ce7d-492b-995d-ddf8e4d5e919

細かい検証はしていないが、Excelファイルとして出力できた。先ほども述べた通り、このCSVファイルは注意書きをCSVファイル内に記述するという正気の沙汰とは思えないことをしている。それでも欠損値として理解し、処理できているのはやはりすごい。

CSVファイルから出力させたExcelファイル

スライドの作成

ExcelがいけるならPowerPointもいけるだろうということで、OpenAIの紹介スライドを作成してもらった。

https://chat.openai.com/share/5c065cb9-c17a-4648-a6da-105bc7613bb3

問題なくできた。完成度はそこまで高くないが、これはどちらかというとライブラリに依存するのでChatGPTの能力というわけではない。

画像出力ができていないが、これはプロンプトを工夫すればいけるような気がする。

画像ファイルの処理

次はOpenAIの記事の動画にもあった画像処理を試してみた。

画像に対してフィルター処理を実施

https://chat.openai.com/share/7d8968a2-277d-4b52-9cf6-79d5c2ba02ff

読み込んだ画像に対してPythonを実行することでフィルター処理なども可能だ(最後触れてはいけなさそう画像が出力されているがそっとしておこう)。

今回興味深かったのが、処理に失敗しても自らトライ&エラーで解決を試みているところだ。

動画ファイルの処理

画像がいけるなら動画もいけるだろうということで、適当な動画をアップロードして写真同様に処理を試してみた。

動画の変換

https://chat.openai.com/share/84df0b6a-2127-4104-9879-ce278e536c22

結果から言うと、メモリ不足になりがちだが工夫次第でそれなりのことはできた。

また、今回試行錯誤していてわかったのが、条件は不明だが実行環境が途中で破棄されることがあるらしい。

参考までに、元動画と出力した動画をYouTubeにアップロードしておいた。

https://youtu.be/nRUo8awOQlQ

https://youtu.be/JRo2gj1aSVU

https://youtu.be/1Btej1d3CfU

Code Interpreterの限界

この記事を書く上で紹介し切れていないいろいろなプロンプトを試していったところ、現段階でのCode Interpreterの限界も見えてきた。

実行できるのはPythonのみ

Code Interpreterで実行できるのはあくまでPythonのみ。

また、numpyのような有名なライブラリは利用できるが、すべてのライブラリを利用できるというわけではない。Code Interpreterは外部のネットワークから隔離されたサンドボックス環境下でソースコードを実行する。そのため、以下のような処理が必要なPythonのソースコードは実行出来ない。

  • pip installなど外部ライブラリのインストールが必要なソースコード
  • Web APIを呼び出すソースコード

これは外部ライブラリを利用してOCR処理を試みてみた例。

https://chat.openai.com/share/c4ef918e-d30a-487c-9f1b-29963a037c7a

内容を理解できるのはあくまでテキストのみ

今回のファイルアップロードで「ついにマルチモーダルにも対応したのか」と思っていたが、どうやらそういうわけではなさそうだった。

試しにアップロードした画像の説明やテキスト抽出(OCR)を試してみたが、できなかった。前述した通り画像や動画を処理することはできるが、あくまでPythonを介しての処理であり、画像や動画の内容を理解しているわけではない。

https://chat.openai.com/share/323b1df8-d4a0-44d6-aecc-06db4bcf543d

また、PDFファイルの読み込みは可能だが「テキストベースのPDF」に限定されるようだ。画像だらけだったり、スライドをPDF出力したようなPDFファイルは読み込みに失敗する傾向にある。

大量のファイルやサイズの大きなでファイルは扱えない

当たり前といえば当たり前だが、Pythonの実行環境に与えられるリソースには限界がある。そのため、大量のファイルやサイズの大きなファイルを処理しようとするとエラーになってしまう。

また、実行環境は条件は不明だがある程度で破棄されるため、あまり長いやり取りをすると途中で破棄されてしまうこともある。

実行環境は維持されない

以下のツイートで指摘されたので追記。

Pythonの実行環境は一定時間経過したりセッションが切れると破棄されてしまう。Code Interpreterで出力したファイルが必要であれば、ダウンロードしておく必要がある。

https://twitter.com/msmt_kny/status/1678240508752302080

まとめ

まだBeta版ということで発展途上ではあるが、Code InterpreterによってChatGPTがさらに進化した。

今までもChatGPTにソースコードを出力してもらってそれを手元で実行して…みたいなことでできていたが、これがすべてChatGPT上で完結できるのは思考との速度感的にはかなり嬉しい。素Python+αでできることはこれでほぼできるということなので、利用の幅もかなり広がったように思う。

余談だが、僕が個人的に開発していたQRコードを出力できるChatGPT Pluginはこれにて役目を完全に終えた。

GitHubで編集を提案

Discussion