コーディング不要? テキストからアプリを生成するGPT Engineerを触ってみた
作成したいソフトウェアの要件をテキスト入力するだけで、GPTが勝手に開発してソースコードを出力してくれる「GPT Engineer」がTwitterで話題になっていたので触ってみました。
概要は次のTweetが分かりやすいです。
GPT Engineerとは?
ChatGPTさんにGPT Engineerの説明をしてもらいました。
実際に使ってみた
何はともあれ、使ってみないことには、そのポテンシャルが分からないので、実際に使ってみました。
使うだけならば、GitHubのReadmeの手順に従えば簡単に使えます。
上記ページには、2種類の使用方法が記載されていますが、pipでインストールする方は、どうやらバグがあるらしく、起動することができませんでした。
そのため、下記のgit cloneする方法で起動させました。([your api key]にはChatGPT4のAPIキーを入力してください)
git clone git@github.com:AntonOsika/gpt-engineer.git
cd gpt-engineer
make install
source venv/bin/activate
export OPENAI_API_KEY=[your api key]
// プロジェクトを作成
mkdir projects/my-new-project
// プロジェクト内にプロンプトを配置
touch projects/my-new-project/main_prompt
// GPT Engineerを実行
gpt-engineer projects/my-new-project
projectsフォルダには、exampleというサンプルが用意されていますが、それを実行しても面白くないので、自分でプロジェクトを作成して、自分が作成したいアプリの要件を書いたプロンプトを用意しました。
プロンプトの内容は下記になります。
この要件でGPT Engineerを実行してみました。
下記が出力結果です。
まず、アプリケーションのアーキテクチャを概説します。次に、各ファイルの内容を記述します。
アーキテクチャ:
1. Djangoを使用してバックエンドAPIを構築します。
2. Reactを使用してフロントエンドを構築します。
バックエンドAPIは以下の機能を持つ必要があります。
- ユーザー認証(サインイン、サインアップ、ログイン、ログアウト)
- 記事のCRUD操作(投稿、いいね、お気に入り登録、コメント)
- レッスン情報のCRUD操作(登録、閲覧、一覧表示、参加登録、参加者表示、担当者表示)
フロントエンドは以下の機能を持つ必要があります。
- ユーザー認証のUI(サインイン、サインアップ、ログイン、ログアウト)
- 記事のUI(投稿、いいね、お気に入り登録、コメント)
- レッスン情報のUI(登録、閲覧、一覧表示、参加登録、参加者表示、担当者表示)
それでは、各ファイルの内容を記述します。
requirements.txt
```txt
Django==3.2.9
djangorestframework==3.12.4
django-cors-headers==3.10.0
```
package.json
```json
{
"name": "frontend",
"version": "1.0.0",
"description": "React frontend for the web application",
"main": "index.js",
"scripts": {
.......
なかなか良い感じで出力しています。
しかし、出力を続けていくと…
frontend/src/components/SignUp.js
```javascript
import React, { useState } from 'react';
import axios from 'axios';
function SignUp() {
const [username, setUsername] = useState('');
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const handleSubmit = async (e) => {
e.preventDefault();
try {
const response = await axios.post('http://localhost:8000/api/users/', {
username,
email,
password,
});
console.log(response.data);
} catch (error) {
console.error(error);
}
};
return (
<div>
<h1>Sign Up</h1>
<form onSubmit={handleSubmit}>
<label>Username:</label>
<input
type="text"
value={username}
onChange={(e) => setUsername(e.target.value)}
/>
<label>Email:</label>
<input
type="email"
value={email}
onChange={(e) => setEmail(e.target.value)}
/>
<label>Password:</label>
<input
type="password"
value={password}
onChange={(e) => setPassword(e.target.value)}
/>
Traceback (most recent call last):
File "/Users/yasuhiro/Documents/Development/GitHub/others/gpt-engineer/venv/lib/python3.9/site-packages/urllib3/response.py", line 710, in _error_catcher
yield
File "/Users/yasuhiro/Documents/Development/GitHub/others/gpt-engineer/venv/lib/python3.9/site-packages/urllib3/response.py", line 1077, in read_chunked
self._update_chunk_length()
File "/Users/yasuhiro/Documents/Development/GitHub/others/gpt-engineer/venv/lib/python3.9/site-packages/urllib3/response.py", line 1012, in _update_chunk_length
raise InvalidChunkLength(self, line) from None
urllib3.exceptions.InvalidChunkLength: InvalidChunkLength(got length b'', 0 bytes read)
コードの出力途中でエラーが発生してしまいました。
何度か試したのですが、やはり同じエラーで停止してしまいました。
このエラーがGitHub上にIssueとして上がっているか確認したところ、同様のエラーが発生しているようで、下記のメッセージを発見。
直近のメッセージとしては、5分間実行すると、このエラーが起きるようです。(これが原因かどうかは確証できないですが)
もしかしたら、大量のアウトプットには、まだ対応できていないのかもしれないです。
現状は未完成だが、ポテンシャルは高い!
結果的に、求めていたアプリを生成できなかったが、途中経過を見る限り、エラーが解消されれば、しっかりしたコードを出力してくれる可能性を感じました。
私と同様にGPT Engineerを試してみた方の結果としては、コードは出力されたが、実行時にエラーが発生したようです。
これらのエラーを解消できたら、そのままコードを使用できなかったとしても、かなりコーディングの手間を省けるのではないでしょうか。
今後の進捗に期待です!