File size: 3,228 Bytes
6275113
4786c09
6275113
4786c09
 
 
c37d535
6275113
4786c09
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6275113
4786c09
6275113
4786c09
 
 
 
 
 
 
 
ac14130
4786c09
 
 
 
c37d535
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e957e83
 
 
 
b4d0d8e
e957e83
 
 
 
 
 
 
 
 
 
c37d535
 
 
 
 
 
 
 
 
 
 
 
 
 
4786c09
 
 
 
 
 
 
 
 
 
 
 
 
 
6275113
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
from fastapi import FastAPI, HTTPException, UploadFile
from fastapi.middleware.cors import CORSMiddleware
from fastapi import FastAPI, UploadFile 
from typing import Union 
import json 
import csv
from modeles import bert, squeezebert, deberta
from uploadFile import file_to_text


app = FastAPI()

app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)


@app.on_event("startup")
async def startup_event():
    print("start")


@app.get("/")
async def root():
    return {"message": "Hello World"}


@app.post("/uploadfile/")
async def create_upload_file(file: UploadFile, texte: str, model: str):
    fileToText = await file_to_text(file)

    return {"model": model, "texte": texte, "filename": file.filename, "file_to_text": fileToText}


@app.post("/contextText/")
async def create_upload_file(context: str, texte: str, model: str):

    return {"model": model, "texte": texte, "context": context}


@app.post("/withoutFile/")
async def create_upload_file(texte: str, model: str):

    return {"model": model, "texte": texte}

# # Modèle Pydantic pour les requêtes SqueezeBERT
# class SqueezeBERTRequest(BaseModel):
#     context: str
#     question: str
@app.post("/squeezebert/")
async def qasqueezebert(context: str, question: str):
    try:
        squeezebert_answer = squeezebert(context, question)
        if squeezebert_answer:
            return squeezebert_answer
        else:
            raise HTTPException(status_code=404, detail="No answer found")
    except Exception as e:
        raise HTTPException(status_code=500, detail=f"An error occurred: {str(e)}")

# # Modèle Pydantic pour les requêtes BERT
# class BERTRequest(BaseModel):
#     context: str
#     question: str
@app.post("/bert/")
async def qabert(context: str, question: str):
    try:
        bert_answer = bert(context, question)
        if bert_answer:
            return bert_answer
        else:
            raise HTTPException(status_code=404, detail="No answer found")
    except Exception as e:
        raise HTTPException(status_code=500, detail=f"An error occurred: {str(e)}")

# # Modèle Pydantic pour les requêtes DeBERTa
# class DeBERTaRequest(BaseModel):
#     context: str
#     question: str
@app.post("/deberta-v2/")
async def qadeberta(context: str, question: str):
    try:
        deberta_answer = deberta(context, question)
        if deberta_answer:
            return deberta_answer
        else:
            raise HTTPException(status_code=404, detail="No answer found")
    except Exception as e:
        raise HTTPException(status_code=500, detail=f"An error occurred: {str(e)}")

def extract_data(file: UploadFile) -> Union[str, dict, list]:
    if file.filename.endswith(".txt"):
        data = file.file.read()
        return data.decode("utf-8")
    elif file.filename.endswith(".csv"):
        data = file.file.read().decode("utf-8")
        rows = data.split("\n")
        reader = csv.DictReader(rows)
        return [dict(row) for row in reader]
    elif file.filename.endswith(".json"):
        data = file.file.read().decode("utf-8")
        return json.loads(data)
    else:
        return "Invalid file format"