bambadij's picture
update
1c4f8dc verified
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)