見出し画像

初心者でも安心!ChatGPTのコードインタープリターで簡単プログラミング体験をしてみよう

ChatGTPを有料で使用していると、コードインタープリターという機能が使えます。これはChatGPTがコード(プログラム)を実行してくれる機能です。今までプログラミングをやったことがない人にとっても、コードの作成から実行までChatGPTがやってくれるようになったので、ますますプログラミングへの敷居が低くなったと感じます。またプログラミングをやってきた人にとっても簡単にできるおもしろさを理解いただけるでしょう。
本記事では、ChatGPTでコードインタープリターを使うとどんなことができるのか、またどうやって使いこなすのかを説明いたします。また、無料版のユーザーの方にとっては、有料版の機能の1つであるコードインタープリターを使いたいと思えるかどうか、こちらの記事を見ていただいて確認いただければと思います。


ChatGPTのコードインタープリター

まず、コードインタープリターにどんな機能があるのか、ChatGPTに聞いてみました。

ChatGPTのコードインタープリターとはどんな機能ですか?
-------------------------------------------------------------------------------------
ChatGPTのコードインタープリター機能は、ユーザーが入力したコードを実行し、その結果をリアルタイムで提供する機能です。この機能は、Python言語で記述されたコードに対応しており、さまざまな計算やデータ分析、シンプルなアルゴリズムのテスト、グラフやチャートの生成などを行うことができます。

具体的な使用例としては、数学的な問題の解決、データセットの分析、画像処理、シンプルな機械学習モデルの試行などが挙げられます。ユーザーはコードを入力し、ChatGPTがそのコードを解釈して実行結果を返します。インターネットアクセスは無いため、外部のAPIやデータベースへのアクセスはできませんが、多くの標準的なPythonライブラリを利用することが可能です。

この機能は、特にプログラミングやデータサイエンスに関心のあるユーザーにとって有用ですが、プログラミングに不慣れなユーザーでも、簡単な指示に従ってコードを実行し、その結果を確認することができます。

ChatGPT-4

以下のようなことができるようですね。

  • 数学的な問題の解決

  • データセットの分析

  • 画像処理

  • シンプルな機械学習モデルの試行

これらはChatGPTが直接実行するのではなく、コードを作成し、そのコードを実行するということです。以前からChatGPTは、コード生成まではやってくれたのですが、実行は自分でやらなければいけなかったんですよね。プログラミングを経験した方はご存じかもしれませんが、実行環境を作るのってけっこう大変なんですよね。。今やコードインタープリターの機能があるので、プログラムを実行するためにパソコンにいろいろダウンロードして、実行環境を整えていくといった面倒なことをしなくても、簡単に実行できるようになりました。プログラミングをやったことがないという方にもこちらの機能を使って、ちょっとの努力で自分で何を進めることができるということをぜひ体験していただきたいです。

設定

以前はChatGPTの設定(Settings)のBeta Featuresから設定を行っていましたが、2024年1月現在では設定を行う必要がなくなりました。デフォルトでコードインタープリターが使える状態になっています。

GPT選択画面

ChatGPTでモデルを選択する際に書かれている以下の文言があります。

With DALL-E, browsing and analysis Limit 40 messages / 3 hours

この中のDALL-Eとは画像生成の機能ですね。browsing(検索)の機能はWebpilotと呼ばれて、学習にないことについて聞かれた場合にChatGPTが検索してくれます。そして、analysis(分析)に該当するのがコードインタープリターの機能です。コードインタープリターはanalysis(分析)だけではなく、もっと幅広いことができますが、ここではわかりやすくanalysis(分析)とだけまとめられているのでしょう。ちなみに「Limit 40 messages / 3 hours」は、3時間ごとに40メッセージというアクセス制限のことです。

GPTsのコードインタープリター設定

GPTsを作成するときには、このコードインタープリターをオンにするかどうか、チェックを入れて決めることが可能です。GPTs作成の際は、明示的にコードを実行させる必要がなければ、セキュリティの面を考えるとオフにしておいた方がいいと言えるでしょう。

では、以下からコードインタープリターの使用例と使い方を説明していきます。

画像処理

まずは画像処理です。カラー画像を白黒画像にしたり、画像を左右反転させたり、これらは対話ではないのでChatGPTの適応できる範囲を超えているんです。ですから、コードを使って画像を変換します。
今回の例では、画像から特徴を抽出してヒートマップで表示する処理をやってみました。ヒートマップとは特徴の大きさを画像の明るさや色で表現したものです。

プロンプトを実行する前に特徴抽出したい画像を「+」ボタンから添付してください。ちなみにサングラスの猫の画像は事前にChatGPTに生成してもらったものです。

添付の画像について機械学習による特徴抽出の途中結果を得るためのヒートマップを作成したい

プロンプト
ヒートマップを作製

ChatGPTの返答結果の最後の[>_]と書かれているところをクリックすると、ヒートマップを作成するのに使用されたコードが確認できます。

import matplotlib.pyplot as plt
import cv2
import numpy as np

# Load the image
image_path = '/mnt/data/CAT.png'
image = cv2.imread(image_path)

# Convert it to grayscale
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Apply gradient X
grad_x = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=3)
abs_grad_x = cv2.convertScaleAbs(grad_x)

# Apply gradient Y
grad_y = cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=3)
abs_grad_y = cv2.convertScaleAbs(grad_y)

# Combine the two gradients
combined = cv2.addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0)

# Display the image and the gradient heatmap
plt.figure(figsize=(10, 5))

plt.subplot(1, 2, 1)
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.title('Original Image')
plt.axis('off')

plt.subplot(1, 2, 2)
plt.imshow(combined, cmap='hot')
plt.title('Gradient Heatmap')
plt.axis('off')

plt.show()

今回の特徴量抽出という処理は、AI発展の歴史で説明したディープラーニングの自動特徴抽出の途中経過を確認するためのものです。また、実際の機械学習モデルを使ってコードを生成してみたのですが、特徴量抽出をする処理の実行は、処理が重すぎてできませんでした。コードインタープリターを使った処理もなんでもできるわけではなくて制限があるということですね。
もし興味がある場合は、コードだけはChatGPTに作成してもらって実行環境は自身のPCやGoogleのGolabなどを使って実行してみるのもありですね。

数学的な問題の解決

ChatGPTは言語モデルであるため、あくまで対話を想定して学習されています。そのため、数学についてはちょっと苦手なんです。例えば、ChatGPTは小学生の算数の問題を間違ったり、比較的単純な数論の問題でミスをするということもあります。(英語で質問するとミスが減るということもあります。)
そこで、Pythonの出番です。Pythonでは方程式も解くことができますので、ChatGPTに解かせるよりもはるかに効率的で確実です。
今回は3次元グラフを描いてもらいました。

以下の関数をグラフで表して
3*x~2+y~2-z2=x-3*y+2*z-5

入力したプロンプト

※「~」となっているのはべき乗を表します。

出力結果

中学生や高校生が数学の方程式や関数を行うときは視覚的にグラフを描いてもらうことができるのでけっこう役に立つかと思います。
数学の問題についてChatGPT-4に尋ねるときは、ChatGPT-4が方程式を立ててくれて、方程式の計算はPythonに任せるということがけっこうあります。

データセットの分析

おそらくコードインタープリターの機能として、このデータセット分析が業務ではもっとも使いやすいところになっていくのかなと考えています。

データセット分析をする元データはKaggleのデータベースから、グロッサリーストアのデータをダウンロードして使用します。Kaggleでは公表されているデータをダウンロードすることができますので、機能を実践で使ってみたいけど、そもそもデータがないというときに便利です。
社内データをお持ちで使用したい場合は、ChatGPTに学習されないようになっているかどうかに注意してご使用ください。

データセットの取得

ダウンロードしたデータを与えて、ChatGPTに分析の処理を依頼します。

このデータから特徴分析して3Dでグラフ化して。3次元軸はこの特徴をもっともよく表すものを選んで。

プロンプト
分析を3次元グラフ化

実は、今回のグラフを出力する際にエラーなく一度で成功したわけではないです。何度かグラフの作成を依頼しましたが、元データに問題があり思ったように表示されませんでした。それは元の価格データに「$30~$55」のように商品の価格そのままではなく、価格幅が書かれている項目があったからです。このような問題も起こりますので、入力するデータはあらかじめ規則に沿って成形しておきましょう。

さらにこれら分析について文章で説明してもらうこともできます。関連性についてもプログラムを組んで調べてくれるわけですね。ここまでくるとコードインタープリターを使おうという意識さえ必要なく、知りたいことを尋ねたら勝手にコードインタープリターを使ってくれているという感じになります。

このデータからそれぞれのデータ項目にどんな関連性がありますか?

プロンプト
データの関連性についての質問

関連性を調べるためのPythonコード

import seaborn as sns

# Correlation matrix for quantitative variables
correlation_matrix = features[['Price', 'Numeric Rating', 'Number of Reviews']].corr()

# Plotting the correlation matrix
plt.figure(figsize=(8, 6))
heatmap = sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', fmt=".2f")
plt.title('Correlation Matrix of Price, Numeric Rating, and Number of Reviews')
plt.show()

# Summary statistics of quantitative variables by 'Sub Category'
category_summary = dataset.groupby('Sub Category')[['Price', 'Numeric Rating', 'Number of Reviews']].mean()

category_summary

もちろんすぐに日本語化できます。

データの関連性について日本語で説明

さらにさらに、これらをグラフとデータからパワーポイントにまとめてもらうこともできます。

上記の3D分析結果と分析したデータ項目間の関連性についてパワーポイントにまとめて出力して

プロンプト

パワーポイントへのまとめに関しては、なんどか処理を失敗し、作成されたパワーポイントを見てもできがよくなかったため、今のところはChatGPTから取得してデータを自分でパワーポイントへコピペした方が早そうです。私が知らないだけで、何か他に方法があるのかもしれません。ですが、そのうちこれらの問題も改善されていくでしょう。
また、コードインタープリターを介して資料を作ってもらうときに、日本語のフォントがうまく表示されないことがあります。その際は、Google Fontsなどから、Noto Sans Japaneseなどのフォントをzipファイルでダウンロードし、ChatGPTにアップロードして上げるとよいでしょう。

まとめ

ChatGPTのコードインタープリター機能により、プログラミングの経験がない人々でもPythonコードの生成と実行が可能になりました。この記事では、画像処理、数学問題の解決、データセットの分析など、様々な用途での活用方法を紹介しました。ChatGPTのコードインタープリターは、プログラミングの敷居を低くし、幅広いユーザーに有益なツールとなっています。
これからはプログラミングをどう書くかよりも、プログラミングで何ができるのかが重要になってくると思います。Pythonを使ってどんなことができるのか楽しみながら探っていただけたらとうれしいです。


いいね!やフォローで、ぜひ応援よろしくお願いします!
励みになります!

また、X(旧Twitter)でAIについての雑談を不定期に行っておりますのでフォローをお願いいたします。

この記事が気に入ったらサポートをしてみませんか?