ChatGPTのCode Interpreterを使ってみた。

Twitterを眺めていたらトレンドにCode Interpreterとありました。

2023年7月7日、ChatGPTのGPT-4のpluginで「Code interpreter」機能が使えるようになったという事で早速、触ってみました。

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

```
An experimental ChatGPT model that can use Python, handle uploads and downloads
We provide our models with a working Python interpreter in a sandboxed, firewalled execution environment, along with some ephemeral disk space. Code run by our interpreter plugin is evaluated in a persistent session that is alive for the duration of a chat conversation (with an upper-bound timeout) and subsequent calls can build on top of each other. We support uploading files to the current conversation workspace and downloading the results of your work.

JW
```

pythonがChatGPT内部で実行されるイメージでしょうか？


# 使う設定
まずはプラグインを有効します。

![スクリーンショット 2023-07-08 14.28.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/f5d22953-8f1b-f82b-dff9-61ee2403265d.png)

GPT-4のタブのところでCode Interpreterが使える様になりました。

![スクリーンショット 2023-07-08 14.30.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/ac9fd6e6-e302-8f48-0679-8c672264365d.png)

# 使ってみる
とりあえず、1/sin(x)のグラフを描画してみる

![スクリーンショット 2023-07-08 14.33.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/b22fe279-86a6-0288-5408-b5472e54402d.png)

pythonのコードが生成されて、

```python
import numpy as np
import matplotlib.pyplot as plt

# 定義域を指定（-2π から 2π まで）
x = np.linspace(-2 * np.pi, 2 * np.pi, 1000)

# 関数を定義
y = 1 / np.sin(x)

# 非積分可能な点（0, π, 2π, etc）での値を無限大にする
y[np.abs(y) > 10] = np.inf

plt.figure(figsize=(12, 6))
plt.plot(x, y)
plt.ylim(-10, 10)  # y軸の範囲を制限
plt.title(r'$y = \frac{1}{\sin(x)}$', fontsize=15)
plt.xlabel('x', fontsize=15)
plt.ylabel('y', fontsize=15)
plt.grid(True)
plt.show()
```

グラフも生成されました。
![スクリーンショット 2023-07-08 14.34.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/13aa25a5-8c96-0caa-cc8c-14c5b27e378c.png)

「Code Interpreter」を使うと、pythonのソースコードが生成されて、実行結果も返されます。
インタープリターのGoogleのColaboratoryやJupyter Notebook等の対抗になるのでしょうか。

# アップロード機能を試してみた

```csvs
% cat aaa.csv 
番号,名前,身長,体重
0001,morikawa,170,55
0002,yamamoto,180,90
0003,suzuki,175,60
```

体重と身長のグラフを作成して下さい
![スクリーンショット 2023-07-08 14.43.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/03460678-88ca-a5bb-69ca-b92ff1490251.png)

![スクリーンショット 2023-07-08 14.43.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/30bf6d9d-181c-18a8-5eea-8918a1b87953.png)
![スクリーンショット 2023-07-08 14.44.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/31ec8b5b-55c8-38e3-f4ee-ed69ae723cf9.png)

体重と身長の因果関係を聞いてみた

![スクリーンショット 2023-07-08 14.46.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/c2160e67-591a-b99f-05f5-fcaa96f839d5.png)

すみません、言葉の間違いです。。。相関関係ですね。

ソースコードもちゃんと表示できます。

```python
# ピアソンの相関係数を計算
correlation = data['身長'].corr(data['体重'])

correlation
```

身長と体重の相関関係を調べて下さいと言い直すと

![スクリーンショット 2023-07-08 14.49.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/a70ba9d2-a673-8b66-d993-a09ce188cacd.png)
![スクリーンショット 2023-07-08 14.49.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/f43bc55c-f552-fd60-dca5-d3b5357e6b0e.png)

素晴らしいですね。
更に散布図上に回帰直線まで引いてくれました。

# ダウンロード機能をみてみる
![スクリーンショット 2023-07-08 14.51.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/76669df0-d1c1-ac4f-3e7b-9067cea7d2b0.png)
![スクリーンショット 2023-07-08 14.51.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/d0d7a876-5251-9d22-a5f1-0175571c2f0c.png)
ダウンロードリンクが生成されました。

# まとめ
ChatGPTのCode Interpreterの主な特徴と利点は以下の通りです：

## 多様性:
ChatGPTはPythonコードを記述、解釈、実行する能力を持っており、さまざまなコーディング問題に対応できます。また、他のプログラミング言語やアルゴリズムについての理論的な質問にも答えることができます。

## 自然言語処理: 
ChatGPTは自然言語処理 (NLP) の能力を持っており、ユーザーの質問や指示を理解し、それに基づいてコードを記述、修正、または実行することができます。これにより、ユーザーは自分の意図を自然な言葉で表現することができます。

## 対話型インターフェース: 
ChatGPTは対話型のインターフェースを持っており、ユーザーとの対話を通じてコードの問題を解決します。これにより、ユーザーは自分の思考プロセスをChatGPTに説明し、具体的なフィードバックや提案を得ることができます。

## 教育的価値: 
ChatGPTはプログラミングの学習ツールとしての価値があります。ユーザーは具体的なコードの問題を解決するだけでなく、新しい概念を学び、理解を深めるための質問をすることができます。

## 実行結果の表示: 
Pythonコードの実行結果は、ユーザーが直接見て理解できる形で表示されます。これはデバッグやコードの結果を確認する際に非常に便利です。

## ファイルアップロード機能: 
ユーザーは自分のデバイスから直接ファイルをアップロードすることができます。アップロードされたファイルは、Pythonコードを実行するための状態を保持するJupyterノートブック環境に保存されます。この機能は、データ分析や機械学習のモデルトレーニングなど、特定のデータセットを必要とするコーディングタスクに特に有用です。

## ファイルダウンロード機能: 
Pythonコードによって生成されたファイルは、ユーザーによってダウンロードされ、ローカルデバイスに保存することができます。これにより、ユーザーはコードの実行結果を永続的に保存したり、他のデバイスやプログラムで利用することが可能になります。

これらの機能は、ChatGPTを完全なコーディング環境として機能させ、ユーザーが自分のコードとデータをより自由に操作できるようにします。

これらの特徴は、ChatGPTを柔軟でパワフルなコーディングアシスタントにしています。

データサイエンティストの仕事が捗りそうな予感プンプンです！

# 最後に
エンジニアの皆さん、エンジニア未経験の皆さん、若手エンジニアの皆さん、勉強方法について悩みがあればなんでも気軽に質問して下さい！
これからも記事を書いていきますので、モチベーションアップのためフォロー、イイねお願いします。