GPT-エンジニア:あなたの新しいAIコーディングアシスタント
GPT-エンジニア:AIコーディングアシスタント
はじめに
コードのパートナーが疲れることなく、24時間働き続け、単一のプロジェクトの説明から完全なコードベースを生成できたら素晴らしいですよね。これが新しいプロジェクト「GPT-Engineer」の目的です。GPT-Engineerは、新興のAIパワードコーダーの1つで、アプリケーションを構築するためにGPTのパワーを利用するAIパワードのアプリケーションビルダーです。Anton Osikaによって開発されたGPT-Engineerは、AI支援開発の世界で革新的な存在です。GPT-Engineerの動作を確認するには、こちらのGPT-Engineer GitHubリポジトリをご覧ください。
GPT-EngineerはただのAIツールではありません。あなたのコーディングアシスタントです。シンプルなアプリケーションからゲームなどのより複雑なものまで、GPT-Engineerはお手伝いします。それはまるであなたのそばにいるジュニア開発者であり、プロジェクトの要件を完全に理解するために質問をします。
GPT-Engineerのセットアップ
GPT-Engineerを使ってコーディングを始める前に、インストールする必要があります。そのためには、プロジェクトのGitHubページからGPT-Engineerリポジトリをクローンします。次に、Pythonの最新バージョンで新しい環境を作成し、必要なモジュールをインストールします。ステップバイステップのガイドについては、GPT-EngineerのGitHubページを参照してください。
デザインドキュメントのプロンプトにGPT-4を活用する
GPT-Engineerのプロンプティングは、デザインドキュメントの提供に基づいています。しかし、どのように有用なデザインドキュメントを作成すれば良いのでしょうか?GPT-4を使用して作成するのはどうでしょうか?
GPT-4を使用して詳細なプロジェクトの設計説明を生成し、それをGPT-Engineerに入力します。これにより、AIコーディングパートナーがアプリケーションを構築するために必要な情報をすべて持っていることを確認できます。
例えば、以下のようなプロンプトでGPT-4を使用してデザインドキュメントを作成しましょう。
Pythonを使って、ゲームのスネークを実装したいです。ゲームはクラシックなルールとゲームプレイを使用し、外部ライブラリを使用しても構いません。このプロジェクトのための設計ドキュメントを生成してください。
以下は生成されたデザインドキュメントの最初の数行です。全体として、これは必要な作業内容をうまくアウトラインしています。
はじめに この設計ドキュメントの目的は、Pythonでクラシックなスネークゲームを作成するための実装の詳細をアウトラインすることです。このゲームは、プレイヤーが自身とゲームの境界との衝突を避けながら、食べ物を食べて長くなるスネークを制御する伝統的なルールとゲームプレイに従います。グラフィックスとユーザー入力を容易にするために、外部ライブラリを使用してゲームを開発します。
ゲームのコンポーネント スネークゲームには以下のコンポーネントが含まれます:a)スネーク:食べ物を食べて長くなり、自身またはゲームの境界と衝突するとゲームに負けることがある移動可能なオブジェクト。b)食べ物:スネークが長さとスコアを増やすために食べられるランダムに配置されたオブジェクト。…
これでデザインドキュメントのプロンプトができたので、それをGPT-Engineerと一緒に使用できます。
ChatGPTを使ったデザインドキュメントの作成
GPT-Engineerの素晴らしいところの1つは、その汎用性です。単純なスネークゲームを実装するだけでなく、Pythonの標準ライブラリモジュールのみを使用して、シンプルなキーバリューデータベースなど、さまざまなアプリケーションを構築するのにも役立ちます。プロジェクトをmain.prompt
ファイルに記述し、GPT-Engineerが必要な明確化を求めることができます。詳細を提供したら、GPT-Engineerがコードベースを生成する様子を見守ってください。
まず、ChatGPT-4を使ってデザインドキュメントを生成しましょう。覚えておいてください、これを達成するためにChatGPTを使用する必要はありません。構築するソフトウェアの詳細な説明があれば、それを使用することができます。ただし、デザインノートをGPT-Engineerが簡単に読み込める形式に包括的に変換するには、この方法が適しています。
以下は、ChatGPT-4がデザイン文書を生成するために使用したプロンプトです:
以下に示すソフトウェアを設計するために、プロジェクトチームが使用できる高品質なデザイン文書を生成してください。これは、プロジェクトを完了するための唯一の設計文書として、チームが使用できるように完全で利用可能なものであるべきです。
— 標準ライブラリモジュールのみを使用してPythonで書かれたシンプルなキーバリューデータベースエンジン(以下で言及するものを除く)。
エンジンが動作している場合、データベースエンジンとの基本的な対話は、明確で簡潔なライブラリAPIを持つPythonモジュールを介して行われるべきです。
また、データベースエンジンおよびデータベースとの対話のための独立したコンソールも実行できるようにする必要があります。
対話の追加の方法には、Fast API(外部ライブラリ)を使用したAPIの作成が含まれます。
設計仕様:
キーバリューデータベースは、データをキーバリューペアのコレクションとして格納するNoSQLデータベースの一種です。従来の関係データベースとは異なり、キーバリューデータベースは厳格なスキーマを強制しないため、特定のユースケースにおいて柔軟性と拡張性を提供します。キーバリューデータベースの設計には、いくつかの重要な仕様を考慮する必要があります。
アクセス可能なコマンド:- データベースへの接続- データベースの削除- キーの取得- データの挿入- データの更新- データの削除- キーと値の存在の検索
データモデル:各レコードは一意のキーと関連する値で構成されます。値は単純なスカラ値または複雑なデータ構造(JSONやXMLなど)である場合があります。
キー構造:キーは各データエントリの主要な識別子として機能し、データベース内で一意である必要があります。キーは英数字の文字列、整数、または複合キー(複数の値を組み合わせて単一のキーを形成する)である場合があります。
値構造:各キーに関連付けられた値は、任意のデータ型である場合があります。それは基本的なデータ型(文字列、数値、ブール値)から、ネストされたオブジェクトや配列などのより複雑な構造まで、さまざまなものです。
パフォーマンスとキャッシュ:読み取り操作の高速化とレイテンシの低減のために、インメモリキャッシング技術を使用する必要があります。
以下はChatGPT-4が生成したデザイン文書です:
概要 このプロジェクトの主な目標は、
Pythonで書かれた軽量なキーバリューデータベースエンジンを、標準ライブラリモジュールとFastAPIを使用して設計および開発することです。このアプリケーションは、データベースへの接続、データの挿入、更新、削除、および取得、キーと値の検索機能を含む、キーバリューデータベースの基本的な機能を提供します。
データベースは、以下の3つの方法でインターフェースされます:1. 他のPythonプログラムからインポートできるPythonモジュール。2. 手動での対話のためのコマンドラインREPLコンソール。3. リモートでの対話のために作成されたFastAPIを使用したAPI。
コンポーネント データベースエンジンには、次の主な
コンポーネントがあります:
1. **データストア**:キーバリューペアの実際のストレージ。単純なPythonの実装として、これはキーが一意の識別子であり、値は任意のデータ型である辞書である場合があります。データストアは、データへのアクセス、追加、更新、削除のための効率的なメソッドを持つ必要があります。2. **データベースエンジン**:データストアとの対話を提供するエンジン。これには、データベースに接続するためのメソッド、データの挿入、更新、削除、およびキーごとの値の取得が含まれます。また、データストア内の特定のキーまたは値の存在を確認するメソッドも含まれるべきです。3. **インメモリキャッシュ**:頻繁にアクセスされるデータを保持するキャッシュレイヤー。これはPythonの`functools.lru_cache`デコレータまたはカスタムのキャッシュソリューションを使用して実装することができます。4. **CLI**:データベースエンジンとの手動の対話のためのコマンドラインインターフェース。これには、Pythonの標準ライブラリから`cmd`または`argparse`モジュールを使用してREPLインターフェースを作成します。5. **HTTP API**:データベースエンジンのメソッドをHTTP APIとして公開するFastAPIアプリケーション。これにより、データベースとリモートでの対話が可能になります。
データモデル データベースエンジンは、シンプルなキーバリューデータ
モデルに従います。データベースの各レコードは、一意のキーと関連する値で構成されます。
### キー構造 キーは英数字の文字列、整数、または複合キーである場合があります。データベース内で一意である必要があり、各データエントリの主要な識別子として機能します。
### 値の構造 各キーに関連付けられた値は、任意のPythonのデータ型である場合があります。それは基本的なデータ型(文字列、数値、ブール値)から、ネストされたオブジェクトや配列などのより複雑な構造まで、さまざまなものです。
APIデザイン PythonのライブラリAPI、CLI、およびFastAPIは、
以下の関数を提供する必要があります:- `connect(database_name: str)`: データベースに接続します。データベースが存在しない場合は、データベースを作成します。- `delete_database(database_name: str)`: データベースを削除します。- `insert(key: str, value: Any)`: 新しいキーバリューペアをデータベースに挿入します。- `update(key: str, value: Any)`: 既存のキーの値を更新します。- `delete(key: str)`: キーバリューペアをデータベースから削除します。- `get(key: str)`: キーの値をデータベースから取得します。- `exists_key(key: str)`: キーがデータベースに存在するかどうかをチェックします。- `exists_value(value: Any)`: 値がデータベースに存在するかどうかをチェックします。
パフォーマンスとキャッシュ インメモリキャッシング技
それで以上です。残された唯一のことは、GPT-Engineerを実行し、これらの基準に指示することでした。
結論
では、どうすれば生成されたコードに存在していた問題を修正できるのでしょうか?最近、著者はGPT-EngineerをAiderと共に使用し、結果を調整する別のGPTベースのソフトウェア生成プロジェクトと組み合わせていました。しかし、最近公開されたChatGPT Code Generatorプラグインの利用可能性により、コードの生成と修正の両方を試すことは良い考えのようです。
まとめると、GPT-Engineerは単なるツール以上であり、アプリケーションの構築方法における潜在的な革命です。それはAIとLLMの力を証明し、おそらくコーディングの未来を示しています。経験豊富な開発者であろうと初心者であろうと、GPT-Engineerは間違いなく一見の価値があります。
Happy coding prompting!
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles