ChatGPTのCode Interpreterを試してみた
ChatGPTにCode Interpreter機能が実装されたので早速試してみた。
今は限定的に有料のChatGPT Plusプランのみで利用できる。
ちなみにこのリリースと併せて、APIのgpt-4もPlusユーザに開放されたので使える人は試して欲しい。
プログラムに縁のない人こそ使うべき機能である!
文章の読み書きしかできなかったChatGPTが、プログラムの実行までできるようになったと言うことだ!
……観音に手が千本ついたようなイメージですかね。。。
無双感がすごい。。。
Code Interpreterとは?
そもそもInterpreterとは通訳の意味。それにCodeがついてるので、自然言語とCodeの通訳という意味だ。
インタプリタとは
「通訳者」の意味。コンピューターでプログラムを実行する方法の1つ。ソースコードを1命令ずつ解釈して実行するプログラムを指す。プログラミング言語で書かれたソースコードを、機械語プログラム(オブジェクトプログラム)に解釈・変換しながら処理・実行する。代表的なプログラミング言語には、BASIC、Lisp、JavaScript、Python、Rubyなどがある。
https://mypage.otsuka-shokai.co.jp/cmp/contents/business-oyakudachi/words/interpreter.html
エンジニア以外縁のなさそうな用語だが、改めて言おう。ChatGPT Code Interpreterはプログラムに縁のない人こそ使うべき機能である!
使い方
まずはじめに、限定的に公開されているので有料のChatGPT Plusに加入する必要がある。
それでもデフォルトでは使えないので、設定を変更する必要がある。
ログイン後に表示される左のメニューを開いた状態で、左下のログイン名をクリックしてSettingを開く。
そこからBeta featuresを開き、Code Interpreterのチェックを有効にする。

新しいチャットを始めて、上部のタブからgpt-4を選び、その中のCode Interpreterをせんたくする。
これでChatGPT内でプログラムが実行できる。

ChatGPT上でpythonコード実行
まずは手っ取り早いところから始めてみる。中学生でもわかる二次関数のグラフ描画だ。
コードインタープリターで二次関数のサンプルを実行してください。
もちろんです。二次関数は一般的に \(f(x) = ax^2 + bx + c\) の形式で表現されます。ここで \(a\), \(b\), \(c\) は定数です。
ここでは、例として \(a=1\), \(b=-3\), \(c=2\) という値を使って二次関数 \(f(x) = x^2 - 3x + 2\) をプロットしてみましょう。この関数のグラフを描くために、まずは \(x\) の範囲を定義し、その範囲に対する \(f(x)\) の値を計算します。
Pythonのmatplotlibとnumpyライブラリを使ってグラフを描いてみましょう。
以下のグラフは二次関数 \(f(x) = x^2 - 3x + 2\) を表しています。この関数は \(x = 1\) と \(x = 2\) で \(0\) となり、それ以外の値では正または負の値をとります。これらのポイントは、二次関数の根またはゼロ点と呼ばれます。
また、この関数は開き上がった放物線(\(a > 0\) のため)を形成し、頂点は \(x = -\frac{b}{2a}\) で求められます。
どのような二次関数をプロットしたいのか、または他に何か質問がある場合はお知らせください。
グラフ描画も可能
こんな雑な指示でもグラフ書いてくれるのか。。。

実行したコードが見れる
しかもShow Workをクリックすると実行したコードまで見れる。
プログラムが分からない人には見せる必要がないのは当然なのでクリックしないと表示されないのだが、裏を返せばプログラムが分からなくても実行可能なプログラムを書けるようになったと言うことである。

セッションが途切れるとデータが消える
実行したやりとりを下記の通りURLで共有しておく。
がしかし、何やらエラーが出る。

You may continue the conversation, but previous files, links, and code blocks below may not work as expected.
このコード・インタープリタ(ベータ)チャットはタイムアウトしました。
会話を続けることはできますが、以下のファイル、リンク、コードブロックは期待通りに動作しないかもしれません。
他のエラーも確認できたので共有しておきます。
実行結果の画像出力の共有はできないみたい。
スクリーンショットや出力画像を保存しておくのがおすすめです。

Interpreter which are not yet visible in Shared Chats.
このチャットには、Code
インタープリタによって生成されたファイルや画像が含まれています。

画像出力は共有チャットではサポートされていません
Code Interpreterができること
こんな投稿を見つけた。
使用できるライブラリがバージョン付きで分かるんか!
これはありがたい。
ChatGPTのCode interpreterでのPython環境に入っているライブラリの一覧。
— カレーちゃん🍮 (@currypurin) July 8, 2023
absl-py==1.4.0
affine==2.4.0
aiohttp==3.8.1
aiosignal==1.3.1
analytics-python==1.4.post1
anyio==3.7.1
anytree==2.8.0
argcomplete==1.10.3
argon2-cffi==21.3.0
argon2-cffi-bindings==21.2.0
arviz==0.15.1… pic.twitter.com/s5QqtMAx5t
色々できそうだけど、当然制限事項もあるのね。
ちなみに同じコマンドを実行してみたらできなくなっていた。リリースから2日しか経ってないのに対応早いね。。。

改めてできることを聞いてみた。
Code InterpreterはPythonコードを実行し、その結果をユーザーに返すことができます。この機能を使うと、様々な数学的な計算、データ分析、データのビジュアライゼーション、機械学習のモデル訓練と評価などが可能です。
以下は、Code Interpreterが提供する主な機能の一部です:
1. **数学的な計算:** 算術、代数、統計学、確率論などの問題を解くことができます。例えば、方程式の解を求めたり、統計的な分析を行ったりできます。
2. **データ分析:** Pythonのデータ分析ライブラリ(pandas, numpyなど)を使ってデータセットを操作し、分析することができます。
3. **データビジュアライゼーション:** matplotlib, seaborn, plotlyなどのライブラリを使ってデータを視覚的に表現することができます。
4. **機械学習:** scikit-learn, TensorFlow, PyTorchなどのライブラリを使って、機械学習モデルの訓練と評価を行うことができます。
5. **テキスト操作:** Pythonの文字列操作機能を使ってテキストデータを処理したり、正規表現を用いたパターンマッチングを行ったりできます。
ただし、以下の制限があります:
- Code InterpreterはPythonのみをサポートしています。他のプログラミング言語のコードは実行できません。
- インターネットアクセスは無効化されています。そのため、外部APIへのリクエストやWebスクレイピングなどは行えません。
- 一部のライブラリや機能は利用できません。例えば、GUIライブラリ(Tkinterなど)やマルチプロセッシングなどは使用できません。
これらの機能を活用して、あなたの問題解決や学習に役立ててください。
もはやできること多すぎて書けないよね。。。
制限事項
セキュリティの懸念は当然あるので制限事項も多いようだ。何ができないか確認してみた。
このCode Interpreter(または、Code Execution Environment)は、Jupyterノートブック環境でPythonのコードを実行するためのもので、一部の制限が設けられています。以下に、主な制限事項を列挙します:
1. **インターネットアクセス**: インターネットへのアクセスは無効化されています。これは、外部APIへのリクエストやウェブスクレイピング、外部データベースへの接続、外部リソースのダウンロードなどができないことを意味します。
2. **システムコマンド**: システムレベルのコマンド(例:`os.system()`, `subprocess.run()`, etc.)は制限されています。これにより、シェルコマンドの実行や、システムファイルの読み書きなどが制限されます。
3. **長時間の実行**: 一つのコードセルの実行時間は最大120秒(2分)に制限されています。この時間を超えると、実行は自動的に停止されます。
4. **大量のメモリ使用**: 大量のメモリを消費する処理は制限されています。メモリ使用量が多すぎると、コードの実行が停止される可能性があります。
5. **特定のPythonライブラリ**: 一部のPythonライブラリは利用できません。これには、特定のシステム依存のライブラリや、ネットワーク機能を使用するライブラリなどが含まれます。
6. **データ永続性**: データの永続性は保証されていません。セッションが終了すると、そのセッション中に生成されたすべてのデータは消去されます。
以上の制限は、ユーザーとシステムのセキュリティを保護し、リソースの公平な使用を確保するためのものです。これらの制限により、多くの一般的なデータ分析や機械学習のタスクは実行可能で、安全にコードを実行できます。
安全性が優先されていることが非常によく分かる。
このスピード感で制限されたことを考えると、セキュリティは自然言語で定義してるんだろうと予測もできる。
csvからグラフを作成する方法
こちらは別記事にまとめたのでこちらもご参照あれ!
今後期待できること
先月アップデートされたOpenAI APIのfunctions機能やPlugin開発があれば、自然言語をインターフェースとした多くのことを実装できる。
だがプログラマー向けで一般の人にはかなり敷居が高かった。やはりChatGPTの GUIの敷居の低さは素晴らしい。
Code Interpreterの登場でFunctionsやPlugin開発に必要な機能を実装できれば、開発者でない人に自然言語でシステム開発できるようになる。
発注者と受注者の垣根はどんどん滑らかになっていく。
感動できる!
喜びを共有しよう!!
