ChatGPTを見たら左にPythonと書いてあるのでクリックして使ってみた。
ChatGPTは無料で使ってます。
Pythonは何かというとGPTsの1サービスみたいです。Explore GPTsに同じのがありました。
恐らく私がよくPythonコードをChatGPTに聞くので、
おすすめみたいな感じでExplore GPTsのPythonへのリンクが表示されたようです。
結果的にGPTsのサービスとCode Interpreterを試せました。
しかし結局Chatとの違いがわからない。
いずれにしろ無料だとすぐ制限にひかかってあまり使えないし、
ちゃんと評価できなかった。
GPTsとCode Interpreter
何が起きたのか調べた結果GPTsとCode Interpreterというものがあることがわかった。
無料ユーザーの私にはなじみがなかったものなので調べました。
GPTsとは
ChatGPTのGPTsは、ユーザーが特定の目的に合わせてChatGPTをカスタマイズできる新機能です。プログラミングスキルが不要で、GPT Builderを使用して独自のGPTを作成し、公開することが可能になります。これにより、誰でも簡単にChatGPTを自分のニーズに合わせて調整し、新しいアプリケーションやサービスを開発できるようになります。さらに、作成したGPTは収益化も可能で、多くのユーザーに利用されています。(Bing談)
ということでGPTsのPythonを見るとBy 作者が出てました。
なのでChatGPTの新機能というわけではなさそうです。
Code Interpreterとは
ChatGPTのCode Interpreterは、ユーザーがChatGPT上でPythonコードを実行したり、ファイルをアップロード・ダウンロードすることを可能にする公式プラグインです。このプラグインを利用することで、プログラミングの知識がなくても、日本語での指示だけでコードを生成し実行することができます。また、データ分析やファイル変換、グラフ作成など、多岐にわたる機能を提供しており、ビジネスや学習において非常に便利なツールとなっています。(Bing談)
もしかしたら制限に引っかかる(後述)のは、
GPTsのサービス(Python)が有料プランの人(Code Interpreter利用可能者)が対象のサービスで
お試し版的に無料ユーザーにも使えて、すぐに制限に引っかかるのかもしれない。
OpenAI側も有料プランのChatGPT Plusユーザーになってくれるかもしれないので
使わせてくれてるのかもしれない。→(後で分かったこと)Chatでも使えた。
その辺をクリアにするため
普通のChatで無料ユーザーがPython(Code Interpreter)を実行できるか
確認するところから始めます。
GPTsのPythonとChatでPythonのサンプルコードを実行してみた
Bingに聞いた以下のPythonのサンプルコードを貼ってみます。
a = 10
if a > 5:
print(f"{a}は、5より大きい")
結果の表示はコードブロック(背景黒のブロック)の左上の文字が異なっていた。
GPTsのPythonが
STDOUT/STDERR
10は、5より大きい
Chatは
plaintext
10は、5より大きい
答えは同じだが
GPTsのPythonのほうはSTDOUT(標準出力)/STDERR(標準エラー)になっている。
「STDOUT/STDERR」とは、プログラムが標準的な出力とエラーメッセージを表示する場所を指します。(Bing談)
Chatはplaintext
plaintext は、コードブロック内のテキストがプレーンテキスト(特定のプログラム言語に属さないテキスト)であることを示します。(Bing談)
なのでGPTsのPythonはコードを実行したけど
Chatはコードを実行せず言語モデルの回答かもしれない。
テキストファイルをデータフレームにして
それではGPTsのPythonを使ってみます。
下のようなブログのアクセスログ(2.33M4000行44907343文字のテキストファイル)を
データフレームを使って解析する。
DataFrame(データフレーム)は、PandasというPythonのライブラリで提供されるExcelみたいに表にできるものです。
IPは*.*.*.*にしてある。
*.*.*.* - - [31/May/2024:16:42:39 +0900] "GET /wp-content/uploads/2020/12/%E3%83%95%E3%82%A1%E3%83%93%E3%82%B3%E3%83%B3.jpg HTTP/1.1" 200 37584 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" "-"
*.*.*.* - - [01/Jun/2024:00:46:49 +0900] "GET /category/programing/python/page/6/ HTTP/1.1" 200 108493 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36" "-"
*.*.*.* - - [31/May/2024:21:35:06 +0900] "GET /category/side-business/ HTTP/1.1" 200 109511 "-" "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)" "-"
略
やったこと
ChatGPT(既にsigin upしてある)→TryChatGPT→左にあるPythonをクリック
私:
(クリップマーク📎をクリックしてパソコンからファイルをアップロードした状態で)
→データフレームにして
ChatGPT:
ファイルが大きすぎます。
私:
4000行のテキストファイルがあります。100行抽出したい
ChatGPT:
[python]: To extract 100 lines from a 4000-line text file, you can use the following Python code. This example assumes you want to randomly select 100 lines from the file.
以下のようなコードがでてきた。そのままでは使えないので赤字で修正しておきました。
import random
# Path to the text file
file_path = '/path/to/your/textfile.txt'
file_path =には対象のファイルが存在するところを指定する。
Windowsの場合対象のファイルを右クリック→「パスをコピー」
file_path = に貼り付けるがrをつけないと
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escapeになる。
パスの前にrを付ける。理由は\が特殊文字なので""全体をrで囲むことで特殊文字を普通の文字(エスケープ文字)として扱えるようになります。
具体的には以下のように修正する必要がある。
file_path =r"C:\Users\user\Downloads\対象のファイル"
# Read all lines from the file
with open(file_path, 'r', encoding='utf-8') as file:
lines = file.readlines()
# Ensure the file has at least 100 lines
if len(lines) < 100:
raise ValueError("The file has less than 100 lines.")
# Randomly select 100 lines
sampled_lines = random.sample(lines, 100)
連続ではなくランダムに抽出してくれとは頼んでないのに・・・
でもこんなこともできるのか、すごい。
# Path to save the sampled lines
output_file_path = '/path/to/save/sample.txt'
ここは実際に存在するパスがないと
FileNotFoundError: [Errno 2] No such file or directory: '/path/to/save/sample.txt'のエラーがでる。
ファイルは存在しない場合、新しく作られる。
具体的には以下のように修正する必要がある。
output_file_path = r"C:\Users\user\Downloads\sample.txt"
# Write the sampled lines to a new file
with open(output_file_path, 'w', encoding='utf-8') as output_file:
output_file.writelines(sampled_lines)
print(f"100 lines have been sampled and saved to {output_file_path}")
私:心の声(JupiterNotebookでこのコードを貼って実行してからアップロードするか。お、待てよアップロードして、お願いしたらやってくれるかもしれない)
クリップマーク📎をクリックしてファイルをアップロード。
ChatGPT:
無反応。
クリップマークの上にカーソルを持っていくと
日本語訳「ChatGPT Plusにアップデートするか、明日の3:58AM移行にトライアゲインしてね!」
チーン・・・😢
さらなるチャレンジ
私:(データを数行だけで貼り付けた状態で質問追加)→データフレームにして
ChatGPT:[python]: It seems there was an internal error while processing the log data. Let me try again with a slightly different approach.
I’ll reattempt parsing the log data and converting it into a DataFrame:
import pandas as pd
import re
# Sample log data
log_data = """
略(この後も続くがカット)
チーン・・・😢
実行してデータフレームになるか確認したかったがコードが出てきた。
これは今までのChatGPTに聞くのと同じ。
以降、Pythonをクリックして新しく入力しても何も反応しなくなった。
リミットが解除される明日まで何もできなそうです。
次の日、再チャレンジ
今度はサイズを(4k15行2419330文字)に縮小したものを使っらうまくいった。
ファイルをアップデートして「データフレームにして」Enter
コードともに以下が表示された。
「methodがgetの行だけ抽出して」とお願いするとHeadの行がないGETだけが表示された。
もとのファイルはテキストファイルでcsvみたいに,で区切られていないので
データフレームにはしにくいが、ちゃんとデータフレームになっている。
「csvファイルにして」とお願いすると
Download the CSV file とあるのでクリックしすると
Analyzedを見ると
# Define the path to save the CSV file
csv_file_path = '/mnt/data/filtered_log.csv'
# Save the filtered DataFrame to a CSV file
df_get.to_csv(csv_file_path, index=False)
csv_file_path
Result
'/mnt/data/filtered_log.csv'
実行したけど'/mnt/data/filtered_log.csv'にアップロードできなかったということだと思う。
'/mnt/data/filtered_log.csv'はChatGPTに個人のドライブがマウントされていないと
実行結果ファイルを保存することができないのではないかと思う。
そもそもChatGPTにドライブをマウントできるのか。
GoogleColaboratoryみたいに一時的に使えるドライブがないのではないか。
でも、もしかしたらアップロードするときに「Conect to Gooledrive」「Connect to Microsoftdrive」とあるので、
パソコンではなくて最初にそっちからアップロードするとそこに保存されるのかも。(未確認)
「Download the CSV fileをクリックするとfailed to get upload status for ‘/mnt/data/filtered_log.csv’」と聞くと
csvファイルを表示してくれて、これをメモ帳に貼り付けてコピペしろという指示だった。
ChatGPTでPython実行できるか聞いた。
GPTsのPythonが制限に引っかかったあと、Chatを新しく初めて
「pythonコードを実行できるか」聞いたら、「はい、Pythonコードを実行できます。実行したいPythonコードを教えてください。」と答えたので以下を貼って実行したら例の「リミットまで使い切ったので、できません」メッセージが出た。
import pandas as pd
# サンプルデータ
temperature_data = [25.5, 26.0, 24.8, 23.2, 27.3]
humidity_data = [60, 58, 62, 65, 55]
# データフレームを作成
df = pd.DataFrame({
'気温 (℃)': temperature_data,
'湿度 (%)': humidity_data
})
# データフレームを表示
print(df)
次の日、GPTsのPythonは実行せず最初からChatで同じことを実行したら。
「以下が作成したデータフレームです」といいながらコードブロックがscssだった。
GPTsのPythonでは上述したようにデータフレームが表示されていた。
その後、グラフにしてとお願いしたら、コードと
STDOUT/STDERRでエラーコードを吐き出しつつ最終的に以下がでてきた。
その後、上の気温と湿度の簡単なデータをファイルにして
アップデートして「データフレームにして」とお願いしたら
「You’ve reached your data analysis limit.」メッセージが出た。
Pythonのときは「You’ve reached your GPT-4o limit.」だった。
どうやら無料ChatでもPythonが実行できているようだ。そしてすぐリミットに引っかかる。
また上記エラーコードを調べたらIPython(Pythonの拡張された対話型シェル)というものが使われているようだ。
Bingに聞いたら「Anacondaを利用している場合は、IPythonは標準装備されているため、追加のインストールは不要です。」ということなので
私はパソコンでAnaconda使っているが、
恐らく対話型といのはpythonコードをファイルにしないで実行できることだと思う。
多分Anacondaの場合はJupiterNotebookのことだろう。
対話型ではないものは*.pyというファイルにして
コマンドラインで*.py+Enterで実行しなければならない面倒くさいタイプのもののことだと思います。
GPTsのPythonと何が違うのか結局、よくわからなかった。
無料で、すぐ制限に引っかかる状態での評価は大変なのでここまでにします。
まとめ
PythonはGPTsの個人が作ったサービスみたいです。
PythonのCodeInterpritorはChatでも動いてそうです。
GPTsのサービスとChatGPTに質問するのと何が違うのか。
ただ、無料だとすぐにリミットに達して使えなくなります。
CodeInterpritorを使えたものとして
今回わかったこと
GPTsのPythonは無料ユーザーも使えるが
サイズが大きいデータを処理してもらおうとすると有料プランをすすめられる。
パソコン内にあるファイル操作は当然できない。
パソコンからアップロードして処理して作ってもらったファイルは多分ダウンロードできない。
コピペするしかない。
GoogledriveやMicrosoftdriveからアップロードした場合はどうなるか未確認。
疑問点
CodeInterpritorを使うときライブラリは追加(pip)できるのか。
Python実行はGoogleColaboratoryのように
高性能GPUが使えたりメモリもいっぱいあるのか。
いいと思う点
1か所で完結してるので、何をやっているかChatGPTに把握してもらえる。
実行を別のところでやっていると、このコード実行したら、
こういうエラー出たんだけどって、いちいち貼るのが大変だし
ChatGPTに状況を把握してもらうのが大変。
ということで今まで通りChatGPTに質問して
実行は自分のパソコンやGoogleColaboratoryでやるのがいいかなと思ってます。
使っていて気づいたら更新します。
イチゲをOFUSEで応援する(御質問でもOKです)Vプリカでのお支払いがおすすめです。
MENTAやってます(ichige)