fastapi_django_main_live / DEBUG_SETUP_GUIDE.md
GitHub Action
🚀 Auto-deploy from GitHub Actions
7b7bdab
|
raw
history blame
11.6 kB

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. 依存関係のインストール

pip install debugpy
pip install python-dotenv
pip install open-interpreter
pip install groq

2. 環境変数設定

.envファイルにGroq APIキーとOpenInterpreterパスワードを設定:

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ファイル:

{
    "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ファイル:

#!/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. デバッグサーバー起動

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.py187行目 にブレークポイントを設定:

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. デバッガーが接続できない

# プロセス確認
ps aux | grep "python.*app_debug_server"

# ポート確認
netstat -tulpn | grep 5678

2. Groq APIキーエラー

# 環境変数確認
echo $GROQ_API_KEY

# .envファイル確認
cat .env | grep GROQ_API_KEY

3. モジュール不足エラー

# 必要なパッケージをインストール
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等のシークレット管理サービス使用
  • 最小権限の原則に従ったアクセス制御
  • 定期的なパスワードローテーション

🔗 関連ドキュメント


作成日: 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