#!/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://: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://:{PORT}/gliner_ner") logger.info("=" * 65) # Lancer Flask server.start(host=HOST, port=PORT) if __name__ == "__main__": main()