File size: 11,553 Bytes
7b7bdab |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 |
# 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 |
|