ariadne-endpoint / server.py
Louis_Mlr
wip
6d8fd29
#!/usr/bin/env python3
"""
Point d'entrée du serveur ariadne — External Recommender pour INCEpTION.
Ce script :
1. Instancie le classifier GLiNER (charge le modèle en mémoire)
2. Crée un Server() ariadne (= application Flask)
3. Enregistre le classifier sous le nom "gliner_ner"
4. Lance Flask sur le port 7860 (compatible HuggingFace Spaces)
Endpoints auto-générés par ariadne :
POST /gliner_ner/predict → suggestions NER
POST /gliner_ner/train → entraînement (non implémenté)
Dans INCEpTION :
Settings → Recommenders → Create
Tool : External Recommender
Endpoint URL : http://<host>:7860/gliner_ner
"""
import logging
import os
from ariadne.server import Server
from gliner_classifier import GlinerClassifier
logging.basicConfig(
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
level=logging.INFO,
)
logger = logging.getLogger(__name__)
# Port : 7860 pour HuggingFace Spaces, modifiable via variable d'env
PORT = int(os.environ.get("PORT", 7860))
HOST = "0.0.0.0"
def main():
logger.info("=" * 65)
logger.info(" Chargement du modèle GLiNER...")
logger.info("=" * 65)
# Instancier le classifier (charge GLiNER en mémoire)
classifier = GlinerClassifier()
# Créer le serveur ariadne (Flask)
server = Server()
server.add_classifier("gliner_ner", classifier)
logger.info("")
logger.info("=" * 65)
logger.info(" Serveur ariadne — External Recommender pour INCEpTION")
logger.info("=" * 65)
logger.info(f" Adresse : http://{HOST}:{PORT}")
logger.info(f"")
logger.info(f" Endpoints :")
logger.info(f" POST /gliner_ner/predict")
logger.info(f" POST /gliner_ner/train")
logger.info(f"")
logger.info(f" INCEpTION → Settings → Recommenders → Create :")
logger.info(f" Tool : External Recommender")
logger.info(f" Endpoint URL : http://<host>:{PORT}/gliner_ner")
logger.info("=" * 65)
# Lancer Flask
server.start(host=HOST, port=PORT)
if __name__ == "__main__":
main()