S01Nour
commited on
Commit
·
65bf3d8
1
Parent(s):
6db5781
refactor: Remove notebook and establish API routing structure.
Browse files- config.py +1 -3
- kpa-t5-improved.ipynb +0 -0
- main.py +0 -50
- routes/__init__.py +3 -11
- services/__init__.py +0 -3
config.py
CHANGED
|
@@ -20,15 +20,13 @@ HUGGINGFACE_STANCE_MODEL_ID = os.getenv("HUGGINGFACE_STANCE_MODEL_ID")
|
|
| 20 |
HUGGINGFACE_LABEL_MODEL_ID = os.getenv("HUGGINGFACE_LABEL_MODEL_ID")
|
| 21 |
HUGGINGFACE_GENERATE_MODEL_ID = os.getenv("HUGGINGFACE_GENERATE_MODEL_ID", "YOUR_ORG/kpa-t5-improved")
|
| 22 |
|
| 23 |
-
<<<<<<< HEAD
|
| 24 |
# Use Hugging Face model ID instead of local path
|
| 25 |
STANCE_MODEL_ID = HUGGINGFACE_STANCE_MODEL_ID
|
| 26 |
LABEL_MODEL_ID = HUGGINGFACE_LABEL_MODEL_ID
|
| 27 |
GENERATE_MODEL_ID = HUGGINGFACE_GENERATE_MODEL_ID
|
| 28 |
-
|
| 29 |
# ============ GROQ MODELS ============
|
| 30 |
GROQ_API_KEY = os.getenv("GROQ_API_KEY", "")
|
| 31 |
-
>>>>>>> 45e145b23965e35eefb7990d09b535073040e40a
|
| 32 |
|
| 33 |
# **Speech-to-Text**
|
| 34 |
GROQ_STT_MODEL = "whisper-large-v3-turbo"
|
|
|
|
| 20 |
HUGGINGFACE_LABEL_MODEL_ID = os.getenv("HUGGINGFACE_LABEL_MODEL_ID")
|
| 21 |
HUGGINGFACE_GENERATE_MODEL_ID = os.getenv("HUGGINGFACE_GENERATE_MODEL_ID", "YOUR_ORG/kpa-t5-improved")
|
| 22 |
|
|
|
|
| 23 |
# Use Hugging Face model ID instead of local path
|
| 24 |
STANCE_MODEL_ID = HUGGINGFACE_STANCE_MODEL_ID
|
| 25 |
LABEL_MODEL_ID = HUGGINGFACE_LABEL_MODEL_ID
|
| 26 |
GENERATE_MODEL_ID = HUGGINGFACE_GENERATE_MODEL_ID
|
| 27 |
+
|
| 28 |
# ============ GROQ MODELS ============
|
| 29 |
GROQ_API_KEY = os.getenv("GROQ_API_KEY", "")
|
|
|
|
| 30 |
|
| 31 |
# **Speech-to-Text**
|
| 32 |
GROQ_STT_MODEL = "whisper-large-v3-turbo"
|
kpa-t5-improved.ipynb
DELETED
|
The diff for this file is too large to render.
See raw diff
|
|
|
main.py
CHANGED
|
@@ -4,49 +4,6 @@ import logging
|
|
| 4 |
from contextlib import asynccontextmanager
|
| 5 |
import atexit
|
| 6 |
import shutil
|
| 7 |
-
|
| 8 |
-
from fastapi import FastAPI
|
| 9 |
-
from fastapi.middleware.cors import CORSMiddleware
|
| 10 |
-
from fastapi.responses import RedirectResponse
|
| 11 |
-
import uvicorn
|
| 12 |
-
|
| 13 |
-
<<<<<<< HEAD
|
| 14 |
-
from config import (
|
| 15 |
-
API_TITLE,
|
| 16 |
-
API_DESCRIPTION,
|
| 17 |
-
API_VERSION,
|
| 18 |
-
STANCE_MODEL_ID,
|
| 19 |
-
LABEL_MODEL_ID,
|
| 20 |
-
HUGGINGFACE_API_KEY,
|
| 21 |
-
HUGGINGFACE_STANCE_MODEL_ID,
|
| 22 |
-
HUGGINGFACE_LABEL_MODEL_ID,
|
| 23 |
-
HUGGINGFACE_GENERATE_MODEL_ID,
|
| 24 |
-
HOST,
|
| 25 |
-
PORT,
|
| 26 |
-
RELOAD,
|
| 27 |
-
CORS_ORIGINS,
|
| 28 |
-
CORS_CREDENTIALS,
|
| 29 |
-
CORS_METHODS,
|
| 30 |
-
CORS_HEADERS,
|
| 31 |
-
)
|
| 32 |
-
from services import stance_model_manager, kpa_model_manager, generate_model_manager
|
| 33 |
-
from routes import api_router
|
| 34 |
-
|
| 35 |
-
# Configure logging
|
| 36 |
-
logging.basicConfig(level=logging.INFO)
|
| 37 |
-
=======
|
| 38 |
-
# --- Logging ---
|
| 39 |
-
logging.basicConfig(
|
| 40 |
-
level=logging.INFO,
|
| 41 |
-
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
| 42 |
-
)
|
| 43 |
-
>>>>>>> 45e145b23965e35eefb7990d09b535073040e40a
|
| 44 |
-
logger = logging.getLogger(__name__)
|
| 45 |
-
|
| 46 |
-
# --- Ajouter app dir au PATH ---
|
| 47 |
-
app_dir = Path(__file__).parent
|
| 48 |
-
sys.path.insert(0, str(app_dir))
|
| 49 |
-
|
| 50 |
# --- Config ---
|
| 51 |
from config import (
|
| 52 |
API_TITLE, API_DESCRIPTION, API_VERSION,
|
|
@@ -108,7 +65,6 @@ async def lifespan(app: FastAPI):
|
|
| 108 |
logger.info("🚀 DÉMARRAGE API - Chargement des modèles et vérification des APIs...")
|
| 109 |
logger.info("="*60)
|
| 110 |
|
| 111 |
-
<<<<<<< HEAD
|
| 112 |
# Load stance detection model
|
| 113 |
try:
|
| 114 |
logger.info(f"Loading stance model from Hugging Face: {HUGGINGFACE_STANCE_MODEL_ID}")
|
|
@@ -136,11 +92,6 @@ async def lifespan(app: FastAPI):
|
|
| 136 |
logger.info("✓ API startup complete")
|
| 137 |
logger.info("https://nlp-debater-project-fastapi-backend-models.hf.space/docs")
|
| 138 |
|
| 139 |
-
yield # Application runs here
|
| 140 |
-
|
| 141 |
-
# Shutdown: Cleanup (if needed)
|
| 142 |
-
# Currently no cleanup needed, but you can add it here if necessary
|
| 143 |
-
=======
|
| 144 |
# Vérifier les clés API
|
| 145 |
if not GROQ_API_KEY:
|
| 146 |
logger.warning("⚠ GROQ_API_KEY non configurée. Fonctions STT/TTS désactivées.")
|
|
@@ -151,7 +102,6 @@ async def lifespan(app: FastAPI):
|
|
| 151 |
logger.warning("⚠ HUGGINGFACE_API_KEY non configurée. Modèles locaux désactivés.")
|
| 152 |
else:
|
| 153 |
logger.info("✓ HUGGINGFACE_API_KEY configurée")
|
| 154 |
-
>>>>>>> 45e145b23965e35eefb7990d09b535073040e40a
|
| 155 |
|
| 156 |
# Précharger les modèles Hugging Face si configuré
|
| 157 |
if PRELOAD_MODELS_ON_STARTUP:
|
|
|
|
| 4 |
from contextlib import asynccontextmanager
|
| 5 |
import atexit
|
| 6 |
import shutil
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7 |
# --- Config ---
|
| 8 |
from config import (
|
| 9 |
API_TITLE, API_DESCRIPTION, API_VERSION,
|
|
|
|
| 65 |
logger.info("🚀 DÉMARRAGE API - Chargement des modèles et vérification des APIs...")
|
| 66 |
logger.info("="*60)
|
| 67 |
|
|
|
|
| 68 |
# Load stance detection model
|
| 69 |
try:
|
| 70 |
logger.info(f"Loading stance model from Hugging Face: {HUGGINGFACE_STANCE_MODEL_ID}")
|
|
|
|
| 92 |
logger.info("✓ API startup complete")
|
| 93 |
logger.info("https://nlp-debater-project-fastapi-backend-models.hf.space/docs")
|
| 94 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 95 |
# Vérifier les clés API
|
| 96 |
if not GROQ_API_KEY:
|
| 97 |
logger.warning("⚠ GROQ_API_KEY non configurée. Fonctions STT/TTS désactivées.")
|
|
|
|
| 102 |
logger.warning("⚠ HUGGINGFACE_API_KEY non configurée. Modèles locaux désactivés.")
|
| 103 |
else:
|
| 104 |
logger.info("✓ HUGGINGFACE_API_KEY configurée")
|
|
|
|
| 105 |
|
| 106 |
# Précharger les modèles Hugging Face si configuré
|
| 107 |
if PRELOAD_MODELS_ON_STARTUP:
|
routes/__init__.py
CHANGED
|
@@ -1,26 +1,18 @@
|
|
| 1 |
"""API route handlers"""
|
| 2 |
|
| 3 |
from fastapi import APIRouter
|
| 4 |
-
<<<<<<< HEAD
|
| 5 |
from . import root, health, stance, label, generate
|
| 6 |
-
|
| 7 |
-
=======
|
| 8 |
-
from . import root, health, stance, label
|
| 9 |
-
from routes.tts_routes import router as audio_router
|
| 10 |
-
>>>>>>> 45e145b23965e35eefb7990d09b535073040e40a
|
| 11 |
# Create main router
|
| 12 |
api_router = APIRouter()
|
| 13 |
-
|
| 14 |
# Include all route modules
|
| 15 |
api_router.include_router(root.router)
|
| 16 |
api_router.include_router(health.router)
|
| 17 |
api_router.include_router(stance.router, prefix="/stance")
|
| 18 |
api_router.include_router(label.router, prefix="/label")
|
| 19 |
-
<<<<<<< HEAD
|
| 20 |
api_router.include_router(generate.router, prefix="/generate")
|
| 21 |
-
|
| 22 |
-
api_router.include_router(audio_router)
|
| 23 |
-
>>>>>>> 45e145b23965e35eefb7990d09b535073040e40a
|
| 24 |
|
| 25 |
__all__ = ["api_router"]
|
| 26 |
|
|
|
|
| 1 |
"""API route handlers"""
|
| 2 |
|
| 3 |
from fastapi import APIRouter
|
|
|
|
| 4 |
from . import root, health, stance, label, generate
|
| 5 |
+
from routes.tts_routes import router as audio_router
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6 |
# Create main router
|
| 7 |
api_router = APIRouter()
|
| 8 |
+
|
| 9 |
# Include all route modules
|
| 10 |
api_router.include_router(root.router)
|
| 11 |
api_router.include_router(health.router)
|
| 12 |
api_router.include_router(stance.router, prefix="/stance")
|
| 13 |
api_router.include_router(label.router, prefix="/label")
|
|
|
|
| 14 |
api_router.include_router(generate.router, prefix="/generate")
|
| 15 |
+
api_router.include_router(audio_router)
|
|
|
|
|
|
|
| 16 |
|
| 17 |
__all__ = ["api_router"]
|
| 18 |
|
services/__init__.py
CHANGED
|
@@ -13,13 +13,10 @@ __all__ = [
|
|
| 13 |
"stance_model_manager",
|
| 14 |
"KpaModelManager",
|
| 15 |
"kpa_model_manager",
|
| 16 |
-
<<<<<<< HEAD
|
| 17 |
"GenerateModelManager",
|
| 18 |
"generate_model_manager",
|
| 19 |
-
=======
|
| 20 |
|
| 21 |
# NEW exports
|
| 22 |
"speech_to_text",
|
| 23 |
"text_to_speech",
|
| 24 |
-
>>>>>>> 45e145b23965e35eefb7990d09b535073040e40a
|
| 25 |
]
|
|
|
|
| 13 |
"stance_model_manager",
|
| 14 |
"KpaModelManager",
|
| 15 |
"kpa_model_manager",
|
|
|
|
| 16 |
"GenerateModelManager",
|
| 17 |
"generate_model_manager",
|
|
|
|
| 18 |
|
| 19 |
# NEW exports
|
| 20 |
"speech_to_text",
|
| 21 |
"text_to_speech",
|
|
|
|
| 22 |
]
|