FastAPI プロジェクト ジェネレーター は何をしますか?
クリーンで検証済みの FastAPI プロジェクトを生成します。ユーザーに簡単なインタビューを行い、適切なデフォルト値を推奨し、スキャフォールディングした後、実際のコマンドで検証します。
ステップ 1 - インタビュー
エージェントに構造化質問ツール(ユーザーへの質問や多肢選択プロンプトツールなど)があればそれを使用します。ない場合は、同じ質問をチャットで短い番号付きリストとして、選択肢には英文字を付け、推奨オプションをマークしてから、返信を待ちます。
最大 2 ラウンドで質問します。ユーザーがメッセージですでに回答した質問はスキップします。推奨オプションには常に "(推奨)" と最初にマークします。安全なデフォルト値がある項目については質問しません。
ラウンド 1 - 必須項目(1 バッチ、最大 4 問):
- プロジェクト名 - 自由記述(「その他」を使用)。ディレクトリ名に基づいて短い提案を提供します。フォルダ名はケバブケース、Python 名はスネークケースに正規化します。
- ターゲットフォルダ - 選択肢: カレントディレクトリ
./<name>(推奨)、カスタムパス(その他)。 - アーキテクチャ - モジュール階層型 (推奨)、最小限、クリーンアーキテクチャ、ヘキサゴナル。マイクロサービスは「その他」を選択した場合のみ表示されます。選択された場合は理由を尋ね、小規模アプリには推奨しないことを警告します(
references/architectures.md参照)。 - サービス(複数選択)- PostgreSQL + SQLAlchemy + Alembic、JWT 認証、Redis、Docker Compose。PostgreSQL と Docker Compose を推奨します。
ラウンド 2 - オプションの追加項目(関連する場合のみ質問。1 バッチ):
- ベクター DB(複数選択。AI/RAG または Qdrant が必要な場合のみ): Qdrant、PostgreSQL pgvector、なし。
- AI モジュール(複数選択): なし (推奨)、LangChain、LangGraph、RAG、MCP。
- LLM プロバイダー(AI モジュールが選択された場合のみ): OpenAI、Anthropic、Google Gemini、Ollama(ローカル)。
- 会話状態を永続化しますか?(LangGraph が選択された場合のみ): はい(Postgres チェックポインター経由)/ いいえ(インメモリ)。
次に、選択内容を 6 行で要約して表示し、先に進みます。ターゲットフォルダが空でない場合を除き、確認を再度求めないでください。
ステップ 2 - 安全確認
- ターゲットパスを解決します。存在し、空でない場合は、停止して別のフォルダを使用するかマージするかを尋ねます。明示的な承認なしに既存のファイルを上書きしないでください。
uvがインストールされていることを確認します(uv --version)。インストールされていない場合は、インストール方法をユーザーに伝えて(curl -LsSf https://astral.sh/uv/install.sh | sh)停止します。- Docker Compose が選択された場合のみ、Docker が利用可能であることを確認します(検証ステップのため)。
ステップ 3 - スキャフォールド
コードを生成する前に関連するリファレンスファイルを読み取ります:
- 常に:
references/base-project.md(レイアウト、スターターファイル、uv ルール、コード標準) - 選択されたアーキテクチャ:
references/architectures.md - 選択されたサービス:
references/services.md(依存関係、Docker 標準) - AI モジュールがある場合:
references/ai-rag.md
常に適用されるルール:
- Python 3.12、uv のみ(pip は不可)。
backend/pyproject.tomlとbackend/uv.lockは一緒に保管します。 [tool.uv] package = falseとします(ユーザーが明示的にインストール可能なパッケージを希望する場合を除く)。src/ディレクトリは使用しません。空の抽象化レイヤーは作成しません。- 選択されたサービスのみに依存関係を追加し、
uv add/uv add --devを使用します。 - 必須ファイル:
app/main.py、app/core/config.py、app/api/routes/health.py、tests/test_health.py、.env.example、.gitignore、README.md。 /healthは HTTP 200{"status": "ok"}を返します。Swagger は/docsにあります。- ソースコードにシークレットを決して入れず、
.envをコミットしないでください。 - AI フォルダ、エンドポイント、依存関係は、要求された場合にのみ存在します。
ステップ 4 - 検証(実行せずに成功を主張しない)
backend/ から実行:
uv sync
uv run ruff check .
uv run ruff format --check .
uv run pytest -v
Docker Compose が選択された場合: docker compose config(プロジェクトルートから実行)。docker compose up -d は、ユーザーが要求した場合、または 1 回確認のために質問した場合にのみ実行します。失敗を修正して再実行します。検証できないものがある場合は、その旨を伝えます。
ステップ 5 - 成果報告
簡潔に報告します:
- プロジェクトの場所
- 選択されたアーキテクチャ
- 含まれるサービス
- インストールされた依存関係
- 作成されたファイル(ツリー)
- API を実行するコマンド:
cd backend && uv run uvicorn app.main:app --reload - テストを実行するコマンド:
cd backend && uv run pytest -v - 実際のテストと lint の結果
- 既知の制限事項
最後に、次のステップ(例: 「最初のドメインモジュールを追加する」、「git init してプッシュする」)を 1 つ提案して終了します。