# FastAPI Django アプリケーション VS Code デバッグ環境構築ガイド ## 📋 概要 このドキュメントは、FastAPI Django アプリケーションでのGroq API統合と`chat_with_interpreter`関数のVS Codeデバッグ環境構築手順をまとめたものです。 ## 🚀 完了した作業内容 ### 1. Groq API統合とエラー修正 - ✅ 環境変数読み込みエラーの修正 - ✅ `chat_with_interpreter`関数でのGroq API設定 - ✅ `load_dotenv()`の適切な配置 ### 2. VS Codeデバッグ環境構築 - ✅ デバッグ用launch.json設定 - ✅ debugpyサーバー設定 - ✅ リモートアタッチ機能 - ✅ ブレークポイント設定 ### 3. Webベースデバッグ機能 - ✅ ブラウザ経由でのチャット機能テスト - ✅ ブレークポイントでの実行停止 - ✅ ステップ実行とデバッグ変数確認 ## 🔧 セットアップ手順 ### 前提条件 - Python 3.12+ - VS Code - FastAPI Django アプリケーション - Groq API キー ### 1. 依存関係のインストール ```bash pip install debugpy pip install python-dotenv pip install open-interpreter pip install groq ``` ### 2. 環境変数設定 `.env`ファイルにGroq APIキーとOpenInterpreterパスワードを設定: ```env GROQ_API_KEY=gsk_your_api_key_here api_key=gsk_your_api_key_here OPENINTERPRETER_PASSWORD=your_secure_password_here ``` **セキュリティ注意事項:** - パスワードは強固なものを設定してください - `.env`ファイルは`.gitignore`に追加してバージョン管理から除外してください - 本番環境では環境変数やシークレット管理サービスを使用してください ### 3. VS Code デバッグ設定 `.vscode/launch.json`ファイル: ```json { "version": "0.2.0", "configurations": [ { "name": "🎯 Remote Attach (現在のプロセス)", "type": "debugpy", "request": "attach", "connect": { "host": "localhost", "port": 5678 }, "justMyCode": false, "pathMappings": [ { "localRoot": "${workspaceFolder}", "remoteRoot": "${workspaceFolder}" } ] }, { "name": "🚀 App.py Debug (メインアプリ)", "type": "debugpy", "request": "launch", "program": "${workspaceFolder}/app.py", "args": ["--debug"], "console": "integratedTerminal", "justMyCode": false, "env": { "PYTHONPATH": "${workspaceFolder}", "DJANGO_SETTINGS_MODULE": "mysite.settings" }, "cwd": "${workspaceFolder}", "stopOnEntry": false, "subProcess": false, "python": "/home/codespace/.python/current/bin/python3" } ] } ``` ### 4. デバッグサーバー用アプリケーション `app_debug_server.py`ファイル: ```python #!/usr/bin/env python3 # Debug版のapp.py - VS Codeデバッガー対応 import debugpy import os import sys # デバッグサーバーを開始 debugpy.listen(5678) print("🐛 デバッグサーバーが起動しました (ポート: 5678)") print("VS Codeで 'Python: Attach to Process' または 'Python: Remote Attach' を実行してください") print("ホスト: localhost, ポート: 5678") # ブレークポイントで待機するかどうか WAIT_FOR_DEBUGGER = True if WAIT_FOR_DEBUGGER: print("⏸️ デバッガーの接続を待機中... VS Codeでアタッチしてください") debugpy.wait_for_client() print("✅ デバッガーが接続されました!") # 元のapp.pyと同じコードを実行 import gradio as gr import shutil from dotenv import load_dotenv # .envファイルから環境変数を読み込み load_dotenv() from fastapi import FastAPI from fastapi import Request from fastapi.templating import Jinja2Templates from fastapi.staticfiles import StaticFiles import requests import uvicorn from groq import Groq from fastapi import FastAPI, HTTPException, Header from pydantic import BaseModel from typing import Any, Coroutine, List from starlette.middleware.cors import CORSMiddleware from sse_starlette.sse import EventSourceResponse from groq import AsyncGroq, AsyncStream, Groq from groq.lib.chat_completion_chunk import ChatCompletionChunk from groq.resources import Models from groq.types import ModelList from groq.types.chat.completion_create_params import Message import async_timeout import asyncio from interpreter import interpreter GENERATION_TIMEOUT_SEC = 60 from llamafactory.webui.interface import create_ui if __name__ == "__main__": try: print("🚀 デバッグモードでアプリケーションを開始しています...") # デバッグモードで起動 uvicorn.run( "mysite.asgi:app", host="0.0.0.0", port=7860, reload=False, # デバッグ時はリロード無効 log_level="debug", access_log=True, use_colors=True ) except Exception as e: print(f"❌ アプリケーション起動エラー: {e}") import traceback traceback.print_exc() ``` ## 🎯 デバッグ実行手順 ### 1. デバッグサーバー起動 ```bash python3 app_debug_server.py ``` 出力例: ``` 🐛 デバッグサーバーが起動しました (ポート: 5678) VS Codeで 'Python: Attach to Process' または 'Python: Remote Attach' を実行してください ホスト: localhost, ポート: 5678 ⏸️ デバッガーの接続を待機中... VS Codeでアタッチしてください ``` ### 2. ブレークポイント設定 VS Codeで `controllers/gra_02_openInterpreter/OpenInterpreter.py` の **187行目** にブレークポイントを設定: ```python def chat_with_interpreter(message, history=None,passw=None, temperature=None, max_new_tokens=None): import os # 🎯 ここにブレークポイントを設定してください! (デバッグ開始点) print(f"DEBUG: Received message: '{message}'") print(f"DEBUG: Password: '{passw}'") ``` ### 3. VS Codeでデバッガーアタッチ **方法1: デバッグパネル使用** 1. VS Code左側の「実行とデバッグ」アイコン(🐛)をクリック 2. 上部のドロップダウンで **"🎯 Remote Attach (現在のプロセス)"** を選択 3. **緑の再生ボタン** をクリック **方法2: F5キー使用** 1. **F5** を押す 2. **"🎯 Remote Attach (現在のプロセス)"** を選択 ### 4. デバッガー接続確認 デバッガーが正常に接続されると、ターミナルに以下が表示されます: ``` ✅ デバッガーが接続されました! 🚀 デバッグモードでアプリケーションを開始しています... ``` ### 5. Webブラウザでテスト 1. ブラウザで `http://localhost:7860` にアクセス 2. **OpenInterpreter** タブをクリック 3. **パスワード欄に環境変数で設定したパスワードを入力** (デフォルト: 12345) 4. **メッセージ欄にテスト用メッセージを入力** 5. **送信ボタンをクリック** ### 6. デバッグ実行 ブレークポイントで実行が停止したら: - **F10**: ステップオーバー(次の行に進む) - **F11**: ステップイン(関数内部に入る) - **F5**: 継続実行 - **左パネル**: 変数の値を確認 - **ウォッチ**: 式の監視 ## 🔍 デバッグ対象ファイル ### メインファイル - `controllers/gra_02_openInterpreter/OpenInterpreter.py` - `mysite/interpreter/interpreter.py` ### 重要な関数 - `chat_with_interpreter()` - メインのチャット処理関数 - `format_response()` - レスポンス整形関数 - `initialize_db()` - データベース初期化 ## 🐛 トラブルシューティング ### よくある問題と解決方法 #### 1. デバッガーが接続できない ```bash # プロセス確認 ps aux | grep "python.*app_debug_server" # ポート確認 netstat -tulpn | grep 5678 ``` #### 2. Groq APIキーエラー ```bash # 環境変数確認 echo $GROQ_API_KEY # .envファイル確認 cat .env | grep GROQ_API_KEY ``` #### 3. モジュール不足エラー ```bash # 必要なパッケージをインストール pip install -r requirements.txt pip install debugpy python-dotenv open-interpreter groq ``` ## 📁 ファイル構成 ``` /workspaces/fastapi_django_main_live/ ├── app_debug_server.py # デバッグサーバー用アプリ ├── .vscode/ │ └── launch.json # VS Codeデバッグ設定 ├── controllers/ │ └── gra_02_openInterpreter/ │ └── OpenInterpreter.py # メインのチャット処理 ├── mysite/ │ └── interpreter/ │ └── interpreter.py # インタープリター設定 └── .env # 環境変数(Groq APIキー) ``` ## 🎉 成功時の状態 ### ターミナル出力例 ``` 🐛 デバッグサーバーが起動しました (ポート: 5678) ✅ デバッガーが接続されました! 🚀 デバッグモードでアプリケーションを開始しています... INFO: Started server process [270257] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:7860 (Press CTRL+C to quit) ``` ### デバッグ実行時の出力例 ``` DEBUG: Received message: 'Hello, test debug' DEBUG: Password: '12345' DEBUG: API key found: gsk_JVhaGp... DEBUG: Interpreter configured successfully DEBUG: Password check passed DEBUG: Processing message: 'Hello, test debug' ``` ## 📚 参考情報 ### 使用技術 - **FastAPI**: Webアプリケーションフレームワーク - **Django**: バックエンドフレームワーク - **Gradio**: Web UI インターフェース - **Groq API**: LLM API サービス - **Open Interpreter**: コード実行エンジン - **debugpy**: Python デバッガー - **VS Code**: 開発環境 ### 重要な設定 - **ポート**: 7860 (Webアプリ), 5678 (デバッグサーバー) - **パスワード**: 環境変数 `OPENINTERPRETER_PASSWORD` で設定 (デフォルト: 12345) - **API設定**: Groq llama3-8b-8192 モデル ## 🔒 セキュリティ考慮事項 ### パスワード管理 - ハードコーディングを避け、環境変数を使用 - 強固なパスワードを設定 - `.env`ファイルをバージョン管理から除外 ### 本番環境での推奨事項 - AWS Secrets Manager, Azure Key Vault等のシークレット管理サービス使用 - 最小権限の原則に従ったアクセス制御 - 定期的なパスワードローテーション ## 🔗 関連ドキュメント - [VS Code Python Debugging](https://code.visualstudio.com/docs/python/debugging) - [debugpy Documentation](https://github.com/microsoft/debugpy) - [FastAPI Documentation](https://fastapi.tiangolo.com/) - [Groq API Documentation](https://console.groq.com/docs) --- **作成日**: 2025年6月10日 **最終更新**: 2025年6月10日 **ステータス**: ✅ 動作確認済み ## 📝 更新履歴 | 日付 | 内容 | 担当者 | |------|------|--------| | 2025-06-10 | 初版作成 - VS Codeデバッグ環境構築完了 | GitHub Copilot | | 2025-06-10 | Groq API統合とエラー修正完了 | GitHub Copilot | | 2025-06-10 | Webベースデバッグ機能動作確認 | GitHub Copilot |