from fastapi import FastAPI,HTTPException,status,UploadFile,File from pydantic import BaseModel import uvicorn import logging import torch import ollama import os import numpy as np from fastapi.responses import Response import requests from fastapi.middleware.cors import CORSMiddleware os.environ['TRANSFORMERS_CACHE'] = '/app/.cache' os.environ['HF_HOME'] = '/app/.cache' Informations = """ -text : Texte à resumé output: - Text summary : texte resumé """ app =FastAPI( title='Text Summary', description =Informations ) #class to define the input text logging.basicConfig(level=logging.INFO) logger =logging.getLogger(__name__) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) DEFAULT_PROMPT = "Résumez la plainte suivante en 5 phrases concises, en vous concentrant sur les faits principaux et en évitant toute introduction générique : " class TextSummary(BaseModel): prompt:str @app.get("/") async def home(): return 'STN BIG DATA' # Fonction pour générer du texte à partir d'une requête # Modèle pour la requête class RequestModel(BaseModel): text: str @app.post("/generate/") async def generate_text(request: RequestModel): # Assurer la configuration pour une utilisation optimale de la mémoire try: # Combinaison du prompt par défaut et du texte de l'utilisateur full_prompt = DEFAULT_PROMPT + request.text # Utilisation de l'API Ollama res = requests.post('http://localhost:11434/api/generate', json={ "prompt": full_prompt, "stream": False, "model": "llama3" }) # Vérification de la réponse if res.status_code != 200: print("response",res) raise HTTPException(status_code=res.status_code, detail="Erreur de l'API Ollama") # Extraction du texte généré generated_text = res.json().get('response', '') # Traitement du texte pour supprimer les phrases génériques intro_phrases = [ "Voici un résumé de la plainte en 5 phrases :", "Résumé :", "Voici ce qui s'est passé :", "Cette plainte a été déposée par" ] for phrase in intro_phrases: if generated_text.startswith(phrase): generated_text = generated_text[len(phrase):].strip() break return {"summary_text_2": generated_text} except requests.RequestException as e: raise HTTPException(status_code=500, detail=f"Erreur de requête : {str(e)}") except Exception as e: raise HTTPException(status_code=500, detail=f"Erreur inattendue : {str(e)}") if __name__ == "__main__": uvicorn.run("app:app",host="0.0.0.0", port=8000,reload=True)