はじめに
ChatGPTはコードも生成できますので、人間がだいたいの指示を与えて、ChatGPTにコードを書かせて実行すればよいのではないかと考え、試してみました。
やること
「この文章を出力するコードはChatGPTが書きました」というコードを問い合わせるコードをコード内に設けて、ChatGPTから回答があったコードを実行するというコードを作成します。
プログラム
ChatGPTのAPIを使用します。
メッセージは、{"role": "user", "content": "「この文章を出力するコードはChatGPTが書きました」という文を出力するコードを教えてください。コードのみの記載で結構です。"}]としました。
「コードのみの記載で結構です。」と一言加えませんと、余計な文章も生成され、エラーとなりました。
# パッケージのインストール
! pip install openai
import openai
#import os
# Google Driveに接続する
from google.colab import drive
drive.mount('/content/drive')
# テキストファイルからAPI_KEYを読み込む
with open('/content/drive/MyDrive/OpenAI API KEY.txt', 'r') as f:
openai.api_key = f.read().strip()
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "「この文章を出力するコードはChatGPTが書きました」という文を出力するコードを教えてください。コードのみの記載で結構です。"}],
temperature=0.50, # ランダム性 高いと多様 0から1
max_tokens=1000, # レスの最大トークン数
#top_p=1.0, # 多様性制御 1が最大 temperatureとの併用は推奨されない
frequency_penalty=0, # 低いと多様 -2から2
presence_penalty=0, # 低いと多様 -2から2
)
print(response["choices"][0]["message"]["content"])
ChatGPTの回答は以下となります。文書出力に必要なコードのみが出力されました。
print("この文章を出力するコードはChatGPTが書きました")
exec関数の実行
次に、chatGPTが生成したコードをexec関数により取り出し実行します。
コードの説明は以下の通りです。
・response["choices"][0]["message"]["content"]から取り出したコードを変数code_to_executeに代入します。
・exec()関数を使用して、code_to_executeに格納されたコードを実行します。
・exec()関数はPythonのビルトイン関数で、引数に与えられた文字列をPythonコードとして評価・実行します。
・実行する前に、コードが信頼できるものであることを確認することが重要です。悪意のあるコードを実行すると、システムに深刻な問題を引き起こす可能性があります。
code_to_execute = response["choices"][0]["message"]["content"]
exec(code_to_execute)
出力は以下となりました。「この文章を出力するコードはChatGPTが書きました」という文を出力することができました。
この文章を出力するコードはChatGPTが書きました
感想
ChatGPTにコードのみ出力させることにより、コード内でコードを生成させ、実行させることができました。
今回は初歩的なコードのみとしましたが、これを応用すれば、複雑なコードもコード内で生成させることもできるのではないかと思います。そうしますと、コード内で日本語のたいだいの指示のみでコードがつくられるようなこともできるかもしれません。