3
1

More than 1 year has passed since last update.

ChatGPTにコードを書かせてみた。

Posted at

はじめに

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にコードのみ出力させることにより、コード内でコードを生成させ、実行させることができました。

今回は初歩的なコードのみとしましたが、これを応用すれば、複雑なコードもコード内で生成させることもできるのではないかと思います。そうしますと、コード内で日本語のたいだいの指示のみでコードがつくられるようなこともできるかもしれません。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1