Spaces:
Runtime error
Runtime error
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 | |
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 | |
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) | |