|
# 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 | |
|
|