GPT Engineerとは、2023年6月にオープンソースソフトウェアとして公開されたコード生成AIソフトウェアです。
欲しいアプリのイメージを伝えるだけで必要なソースコードを生成してアプリを作ってくれます。
この記事ではGPT Engineerを使ったアプリ開発の方法を解説します。
GPT Engineerのインストール(pipを使う場合)
GPT Engineerは、pipコマンドを使って簡単にインストールできます。
ターミナルやコマンドプロンプトで以下のコマンドを実行します。
pip install gpt-engineer
※Pythonをインストールされていない方は事前にこちらのサイトからインストールしておきましょう。
上記のコマンドを実行するとインストールが始まります。
最終的にこんな表示になればOKです。
Windowsの場合
Macの場合
OpenAIのAPI Keyの設定
GPT Engineerを使い始める前にOpenAIのAPI Keyの設定が必要です。
OpenAIのAPI Keyを用意してからコマンドプロンプトやターミナルで次のコマンドを実行します。
Windowsの場合
set OPENAI_API_KEY=[OpenAIのAPI Key]
Macの場合
export OPENAI_API_KEY=[OpenAIのAPI Key]
これでGPT EngineerがOpenAIのAPIを使えるようになります。
フォルダ作成とメインプロンプトの準備
次にアプリ作成のための下準備をします。
コマンドプロンプトまたはターミナルを開きます。
任意の場所でprojectsという名前のフォルダを作ります。
ここではWindowsでCドライブ直下にprojectsフォルダを作成しました。
mkdir projects
さらにprojectsフォルダに移動してexampleという名前のフォルダを作ります。
cd projects
mkdir example
さらにexampleフォルダの中にmain_promptという名前のファイルを作成します。
このファイルにアプリを生成するためのプロンプトを書きます。
たとえば、公式のサンプルでは以下のプロンプトを書いています(ヘビのゲームを作るプロンプトです)。
We are writing snake in python. MVC components split in separate files. Keyboard control.
これをコピペしてもいいですし、自分が作りたいアプリ用に好きなプロンプトを書いてもかまいません。
ただし現状のGPT Engineerは完ぺきではないため、あまり凝った指示をするとバグだらけのアプリができる場合があります。
最初はサンプルのプロンプトか、簡単なアプリで試した方がよさそうです。
ここでは次のようにしました。
Space invaders game using python
スペースインベーダーゲームです。
これをprojects/example
フォルダにmain_promptという名前で保存します。
これで下準備は完了です。
GPT Engineerの実行
コマンドプロンプトまたはターミナルで先ほど作成したprojectsフォルダがある場所に移動します。
ここではWindowsのCドライブ直下にprojectsフォルダを作成したのでCドライブに移動します。
以下のコマンドを実行します。
gpt-engineer projects/example
実行すると、以下のようにアプリ仕様が生成されます。
※GPT-4のAPIキーが使えないため代わりにgpt-3.5-turboを使う、と書かれていますが特に問題はありません。
また、アプリ仕様の後にソースコードが生成されます(テストコードが先に作られています)。
コードの生成が完了するとコードの使い方に関する説明がなされ、最後に「Do you want to execute this code?(コードを実行しますか?)」と聞かれます。
「yesと入力してEnterを押すとコードが実行されます」と言いたかったのですが、私の環境では以下のように表示されて実行されませんでした。
代わりに次のようにして、作成されたコードを実行できます。
cd projects/example/workspace
pip install pygame
python main.py
projects/example/workspace
というフォルダにソースコードが生成されているので、コマンドプロンプトやターミナルでそこに移動します。
移動したら必要なモジュールをインストールし、python main.py
とコマンドを実行するだけです。
これで動くはず、と思ったのですが次のエラーが発生しました。
spaceship.pngという画像ファイルがないといわれています。
確認すると、たしかにそのようなファイルはなかったので適当な画像を用意してspaceship.pngと名付けて保存しました。
そのうえでpython main.py
を再実行するとゲームの画面が開きました!!
しかし、いざ「Press SPACE to start」してみるとまったく動作しません。
最終的に「応答なし」になってしまいました。
どこかに無限ループを書いてしまっているのかもしれません。
というわけで、生成されたアプリは動作しなかったのですが、失敗例だけを見ても面白くないということで、公式のサンプルプロンプトでやり直してみました。
We are writing snake in python. MVC components split in separate files. Keyboard control.
こちらもコードの生成までは上手くいきました。
あとはpython snake.pyを実行すれば動くはずと思ったのですが、肝心のsnake.pyのファイル名がバックスラッシュで囲まれており、これを外す必要がありました。
バックスラッシュ外した後に実行すると次のエラーに遭遇しました。
AttributeError: 'Controller' object has no attribute 'snake'
Controllerオブジェクトにない属性snakeを呼び出そうとしているようです。
生成されたコードを読んでみると、たしかにそんな属性はありませんでした。
どうやら正しく動かすには、細かくデバッグして足りないものを実装する必要がありそうです。
今回の目的には沿わないので、このあたりでやめておきましょう。
GPT-4のAPIを使わないと、十分な精度では作れないのかもしれません。
まとめ
この記事では発表されたばかりの「GPT Engineer」を使ったアプリ作成を試してみました。
2023年6月21日時点では、バージョン0.0.3ということもあり上手く動いてくれませんでした。
生成されるアプリについても自力でデバッグできる知識がなければ使うのは難しいでしょう(GPT-4のAPIであればマシな結果になるかもしれません)。
とはいえ、アプリ仕様やコードの構造はある程度作ってくれるので上手く使えば開発効率を上げるのに使えそうです。
今後より進化して、便利なツールになってくれるといいなと思います。
記事の内容にわからないことがある方は以下のアカウントに気軽にDMしてください!
また、最新の技術の活用方法など役に立つツイートを心がけているので、ぜひフォローしてもらえると嬉しいです!
以下にGPT Engineerのセットアップでつまづいた点を補足しています。その他、不明点や質問があればぜひ上記のツイッターアカウントにメンションしてください。
補足1:KeyError: ‘generate’が出てソースコードを作れない場合
※2023年6月20日0:22時点ではgpt-engineerコマンドの実行時に「KeyError: ‘generate’」と表示されて実行できません。このIssueで議論されています。すぐに修正されるものと思われますが、うまくいかない場合は後述のGPT Engineerのソースをダウンロードするに従ってソースコードをcloneした後、cloneしたフォルダにあるproject/example/main_promptを編集して、同様のことを試してみてください。
gpt-engineerフォルダ直下でgpt-engineer projects/example
を実行するとエラーなく実行できます(pip installも必要です)。
補足:2GPT Engineerのソースをダウンロードする場合
GPT EngineerはオープンソースソフトウェアとしてGitHubに公開されています。
これを手元のパソコンにインストールすればGPT Engineerが使えるようになります。
上記のURLにアクセスしたら、緑色の「Code」のボタンの右横にある下矢印をクリックします。
するとURLが出てくるのでこれをコピーします。右横の□が2つ並んだボタンを押すとコピーできます。
次に、手元のパソコンでターミナルまたはコマンドプロンプトを開きます。
黒い画面で次のコマンドを入力します。
git clone https://github.com/AntonOsika/gpt-engineer.git
※パソコンにGit(ギット)がインストールされていない場合は事前にこちらのサイトからダウンロード・インストールしましょう。
上記のコマンドを入力すると、手元のパソコンにGPT Engineerのソースコードがダウンロードされます。
※ソースコードって何?という方は「プログラミングの「コード」とは?コードリーディングのやり方をわかりやすく解説!」をご参照ください。