File size: 2,358 Bytes
f821485
 
 
 
07d2aa1
f821485
 
 
 
 
 
 
 
 
 
 
07d2aa1
 
f821485
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
07d2aa1
f821485
07d2aa1
f821485
 
 
 
 
 
 
52d4394
07d2aa1
f821485
07d2aa1
f821485
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
07d2aa1
f821485
07d2aa1
 
f821485
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
from fastapi import FastAPI, HTTPException, status, UploadFile, File
from pydantic import BaseModel
import uvicorn
import logging
import os
import requests
from fastapi.middleware.cors import CORSMiddleware

os.environ['TRANSFORMERS_CACHE'] = '/app/.cache'
os.environ['HF_HOME'] = '/app/.cache'

Informations = """ 
-text : Texte à résumer 

output:
- Text summary : texte résumé
"""

app = FastAPI(
    title='Text Summary',
    description=Informations
)  

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 

class RequestModel(BaseModel):
    text: str

OLLAMA_URL = "http://localhost:11434"  # URL d'Ollama dans le conteneur

@app.get("/")
async def home():
    return 'STN BIG DATA'

@app.post("/generate/")
async def generate_text(request: RequestModel):
    try:
        full_prompt = DEFAULT_PROMPT + request.text

        response = requests.post(f"{OLLAMA_URL}/api/generate", json={
            "prompt": full_prompt,
            "stream": False,
            "model": "llama3"
        })
        
        if response.status_code != 200:
            raise HTTPException(status_code=response.status_code, detail=response)

        generated_text = response.json().get('response', '')

        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, host="0.0.0.0", port=7860)