世界を変えるテクノロジー、人達を追う(本サイトでは、「アフィリエイト広告」を使用しています)

テクノロジーの羅針盤

AI ChatGPT GPT4 python プログラミング

GPT-4 AIプログラミング アシスタント、コード自動生成 Pythonプログラム(Discordボット)

投稿日:

GPT-4のDeveloperライブストリームが公開された。この中で、Pythonコードの自動生成について紹介している部分(Discordボットを作成)を取り上げてみました。

GPT-4のPlaygroundにあるAI Programming assistantが使われます。

生成したいプログラムの詳細と情報を入力すると、コードが自動生成されます。凄い。さらに驚きなのは、そのプログラムのエラーを、エラーコードを入力するだけで正しいコード生成。まさにマジック

の6分20秒あたりから。

スポンサーリンク

GPT-4のPlaygroundにあるAI Programming assistant

Playgroundの中に、作りたいプログラムの詳細を書いていく。ここでは、以下と記述。及び、その下の2週間前のブログ投稿からコピー&ペーストした(後述)の画像にあるインフォメーションを入力。

Write me a Discord bot with each of these requirements:

  • Accepts message containing image and text inputs.
  • No need special text to trigger the bot; should read & respond to every message.
  • Use the 'gpt-4 model in the API(just released Mar 14!) rather than 'gpt-3.5-turbo', and then posts the results
  • Reads credentials from the DISCORD_TOKEN and OPENAI_API_KEY env vars

スポンサーリンク

GPT-4 APIを使用して「画像」と「テキスト」を読み込むDiscordボットを依頼

Discordボットを依頼するプロンプトを用意することにしました。これは、3.5のような以前のモデルでは完全に対応できないものですが、GPT-4 APIを使用して画像とテキストを読み込むDiscordボットを依頼します。ただし、このモデルの学習のカットオフは2021年であり、新しいチャット完了形式をまだ見ていないため、私は2週間前のブログ投稿からコピー&ペースト(下にある画像)しました。新しい画像拡張子も見ていないため、画像を含める方法については非常に簡単な説明しかしていません。これにより、モデルは実際には記憶していないドキュメンテーションを活用することができます。一般的に、これらのモデルは、新しい方法で学習された情報を活用し、新しいコンテンツを合成する能力が非常に高いことがわかります。実際、このモデルは完全に新しいボットを書きました。

 

 

Jupyter Notebookで、動作確認

コードが自動生成されてきたので、このボットが実際に動作するかどうかを確認してみましょう。実際に何をしているかを把握するために常にコードを確認する必要があります。人間やAIから信頼できないコードを実行しないように注意してください。また、Discord APIは時間の経過とともに大幅に変更されています。特に、このモデルがトレーニングされた以降に大幅に変更された機能が1つあります。

試してみましょう。実際、2020年に導入されたintenseキーワードがないことに気付きました。モデルは存在することは知っていますが、使用しているDiscord APIのバージョンを知らないため、どうすればいいのでしょうか。幸いなことに、単純にエラーメッセージをモデルに貼り付けるだけで済みますあなたがコードを実行したということさえ言わなくても、モデルは「ああ、そうだった、intense引数が必要だった」と言って、正しいコードを提供してくれます。これで再度試してみましょう。コードが何をしているか理解するようにしましょう。

 

エラーメッセージを貼り付けて教えてあげるだけで、正しいコードが生成

エラーメッセージを、貼り付けて、Submitを押すだけ

繰り返します。
単純にエラーメッセージをモデルに貼り付けるだけで済みます
あなたがコードを実行したということさえ言わなくても、モデルは「ああ、そうだった、intense引数が必要だった」と言って、正しいコードを提供してくれます。

そして、自動生成されたコードが出てくるので、再度、Jupyterへ。入れると、2つ目の問題が発生。

次に、環境が何であるかを知らないという問題が発生することがあります。注意してみると、「不可解なエラーメッセージが表示されました。Jupyter Notebookでasync IOを頻繁に使用したことがない場合は、意味がわからないかもしれません。」と表示されていますが、幸いなことに、モデルに「Jupyterを使用しており、これを動作させたい」と伝えるだけで修正してくれます。具体的な問題は、すでにイベントループが実行されているため、Nest async i o Libraryを使用する必要があります。Net Nest I sync IO dot applyを呼び出す必要があります。モデルはこれらのすべてを正しく知っており、これらの部品をボットにインスタンス化し、Jupyterで実行していることを伝え、必要な場合は「!pip install」を使用してパッケージをインストールするように指示してくれます。非常に助かります。

スポンサーリンク

エラーコードを貼り、Juptyerを使ってることを教えてあげるだけ

 

正しいコードが、自動生成されてくる。「!pip install」を使用してパッケージをインストールするように指示してくれます

Discordにつながる。

そして、次は、Discordに。そして、GPT4が、言語モデルだけでなく、イメージ画像も扱えることの説明が始まる。

 

ChatGPT Mar 14 Versionによる回答

Write me a Discord bot with each of these requirements:

  • Accepts message containing image and text inputs.
  • No need special text to trigger the bot; should read & respond to every message.
  • Use the 'gpt-4 model in the API(just released Mar 14!) rather than 'gpt-3.5-turbo', and then posts the results
  • Reads credentials from the DISCORD_TOKEN and OPENAI_API_KEY env vars

という指示にしたところ、ChatGPT Mar 14 Versionによる回答は以下のものだった。

 

Sure, I can provide you with a basic implementation of a Discord bot that meets these requirements in Python using the discord.py library and the OpenAI API. Please note that this implementation assumes that you have already set up your Discord bot and obtained your credentials from the OpenAI API.

 

import os
import discord
import openai

# Set up OpenAI API client
openai.api_key = os.environ.get('OPENAI_API_KEY')

# Set up Discord client
client = discord.Client()

@client.event
async def on_ready():
print(f'Logged in as {client.user.name} ({client.user.id})')

@client.event
async def on_message(message):
# Ignore messages sent by the bot itself
if message.author == client.user:
return

# Check if message contains image and text inputs
if message.attachments and message.content:
# Use GPT-4 model to generate response
response = openai.Completion.create(
engine='davinci-codex',
prompt=f'Image: {message.attachments[0].url}\nText: {message.content}',
max_tokens=1024
)

# Post response in the same channel as the original message
await message.channel.send(response.choices[0].text)

# Run Discord bot using credentials from DISCORD_TOKEN environment variable
client.run(os.environ.get('DISCORD_TOKEN'))

 

This implementation sets up the OpenAI API client and Discord client using the credentials from the OPENAI_API_KEY and DISCORD_TOKEN environment variables, respectively. It then defines event handlers for when the bot is ready to run and when it receives a message. The on_message event handler checks if the message contains both an image attachment and text content, and if so, uses the GPT-4 model to generate a response based on the prompt that includes the image and text inputs. Finally, the bot posts the response in the same channel as the original message using the send method.

 

Discord(ディスコード)とは?

Discordは、主にオンラインゲームコミュニティのためのテキスト、音声、ビデオチャットなどのコミュニケーションツールを提供するアプリケーションです。Discordは、ゲーム関連のディスカッションや活動をするために、友人やチームメイトとオンラインでコミュニケーションを取り合うことができます。Discordは、チャット、音声通話、ビデオ通話、ファイル共有、統合ボット、スクリーン共有など、多数の機能を備えています。また、コミュニティやサーバーの管理者は、カスタム絵文字、ロール、チャンネル、パーミッションなど、細かい設定を行うことができます。

 

英文スクリプト

it also makes it very interpretable because you can see exactly what the model was thinking and you can even provide Corrections if you'd like so here is the prompt that we're going to ask it this is the kind of thing that 3.5 would totally choke on if you've tried anything like it but so we're
going to ask for a Discord bot that uses the gpd4 API to read images and texts now there's one problem here which is this model's training cutoff is in 2021 which means it has not seen our new chat completions format so I literally just went to the blog post from two weeks ago copy pasted from the blog post including
the response format it has not seen the new image extension to that and so I just kind of wrote that up and you know just very minimal detail about how to include images so and now the model can actually leverage the doc that documentation that
it did not have memorized that it does not know okay and in general these models are very good at using information that it's been trained on in new ways and synthesizing new content and you can see that right here that it actually wrote an entirely new bot

 

now let's actually see if this bot is going to work in practice so you should always look through the code to get a sense of what it does don't run untrusted code from humans or from AIS and one thing to note is that the Discord API has changed a lot over time and particularly that there's one feature that has changed a lot since this model was trained
give it a try in fact yes we are missing the intense keyword this is something that came out in 2020. so the model does know it exists but it doesn't know which version of the Discord API we're using so are we out of luck well not quite we can just simply paste to the model exactly the error message not even going to say hey this
is from running your code could you please fix it we'll just let it run and the model says oh yeah whoops the intense argument here's the correct here's the correct code now let's give this a try once again kind of making sure that we understand what the code is doing
now a second issue that can come up is it doesn't know what environment I'm running in and if you notice it says hey here's this inscrutable error message which if you've not used jupyter notebook a lot with async IO before you probably have no idea what this means but fortunately
once again you can just sort of say to the model hey I am using Jupiter and would like to make this work can you fix it and the specific problem is that there's already an event Loop running so you
need to use this Nest async i o Library you need to call Net Nest I sync IO dot apply the model knows all of this correctly instantiates all of these
these pieces into the bot it even helps hopefully tells you oh you're running in Jupiter well you can do this bang pip install in order to install the package
if you don't already have it that was very helpful

 

出典:OpenAI

-AI, ChatGPT, GPT4, python, プログラミング

Copyright© テクノロジーの羅針盤 , 2024 All Rights Reserved.