| import os |
| from fastapi import FastAPI, Request |
| from sentence_transformers import SentenceTransformer |
| import uvicorn |
|
|
| |
| CACHE_DIR = "/tmp/model_cache" |
| os.makedirs(CACHE_DIR, exist_ok=True) |
|
|
| app = FastAPI() |
|
|
| |
| print("Chargement du modèle en cours...") |
| model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2', cache_folder=CACHE_DIR) |
| print("Modèle chargé avec succès.") |
|
|
| @app.post("/embed") |
| async def get_embedding(request: Request): |
| try: |
| data = await request.json() |
| text = data.get("text", "") |
| |
| if not text: |
| return {"error": "Texte manquant"} |
| |
| |
| embedding = model.encode(text).tolist() |
| return {"embedding": embedding} |
| |
| except Exception as e: |
| return {"error": str(e)} |
|
|
| @app.get("/health") |
| def health_check(): |
| return {"status": "ok", "message": "Service embedding opérationnel"} |
|
|
| if __name__ == "__main__": |
| |
| uvicorn.run(app, host="0.0.0.0", port=7860) |