Spaces:
Runtime error
Runtime error
Commit ·
721783c
1
Parent(s): ef05d9e
fix api internal error
Browse files- src/api.py +37 -24
- templates/index.html.jinja +6 -2
- templates/site_style/css/main.css +2 -0
src/api.py
CHANGED
|
@@ -8,76 +8,89 @@ from inference import inferenceAPI
|
|
| 8 |
from inference_t5 import inferenceAPI_t5
|
| 9 |
|
| 10 |
|
| 11 |
-
# ------ INFERENCE MODEL
|
| 12 |
# appel de la fonction inference, adaptee pour une entree txt
|
| 13 |
def summarize(text: str):
|
| 14 |
-
if choisir_modele.var ==
|
| 15 |
return " ".join(inferenceAPI(text))
|
| 16 |
elif choisir_modele.var == "fineTunedT5":
|
| 17 |
text = inferenceAPI_t5(text)
|
| 18 |
-
return re.sub("<extra_id_0> ","",text)
|
| 19 |
-
|
|
|
|
|
|
|
| 20 |
|
| 21 |
|
| 22 |
def choisir_modele(choixModele):
|
| 23 |
print("ON A RECUP LE CHOIX MODELE")
|
| 24 |
-
if choixModele == "lstm"
|
| 25 |
-
choisir_modele.var =
|
| 26 |
elif choixModele == "fineTunedT5":
|
| 27 |
choisir_modele.var = "fineTunedT5"
|
| 28 |
-
else :
|
| 29 |
-
"le modele n'est pas defini"
|
| 30 |
|
| 31 |
|
| 32 |
-
# -------- API
|
| 33 |
app = FastAPI()
|
| 34 |
|
| 35 |
# static files pour envoi du css au navigateur
|
| 36 |
templates = Jinja2Templates(directory="templates")
|
| 37 |
app.mount("/templates", StaticFiles(directory="templates"), name="templates")
|
| 38 |
|
|
|
|
| 39 |
@app.get("/")
|
| 40 |
async def index(request: Request):
|
| 41 |
-
return templates.TemplateResponse(
|
|
|
|
|
|
|
|
|
|
| 42 |
|
| 43 |
@app.get("/model")
|
| 44 |
-
async def
|
| 45 |
-
return templates.TemplateResponse(
|
|
|
|
|
|
|
|
|
|
| 46 |
|
| 47 |
@app.get("/predict")
|
| 48 |
-
async def
|
| 49 |
-
return templates.TemplateResponse(
|
|
|
|
|
|
|
| 50 |
|
| 51 |
|
| 52 |
@app.post("/model")
|
| 53 |
-
async def choix_model(request: Request, choixModel:str = Form(None)):
|
| 54 |
print(choixModel)
|
| 55 |
if not choixModel:
|
| 56 |
erreur_modele = "Merci de saisir un modèle."
|
| 57 |
return templates.TemplateResponse(
|
| 58 |
-
|
| 59 |
)
|
| 60 |
-
else
|
| 61 |
choisir_modele(choixModel)
|
| 62 |
print("C'est bon on utilise le modèle demandé")
|
| 63 |
return templates.TemplateResponse(
|
| 64 |
-
|
| 65 |
)
|
| 66 |
|
| 67 |
|
| 68 |
-
# retourner le texte, les predictions et message d'erreur si formulaire envoye
|
|
|
|
| 69 |
@app.post("/predict")
|
| 70 |
async def prediction(request: Request, text: str = Form(None)):
|
| 71 |
-
if not text
|
| 72 |
error = "Merci de saisir votre texte."
|
| 73 |
return templates.TemplateResponse(
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
else
|
| 77 |
summary = summarize(text)
|
| 78 |
return templates.TemplateResponse(
|
| 79 |
-
"index.html.jinja",
|
|
|
|
| 80 |
)
|
|
|
|
|
|
|
| 81 |
# ------------------------------------------------------------------------------------
|
| 82 |
|
| 83 |
|
|
|
|
| 8 |
from inference_t5 import inferenceAPI_t5
|
| 9 |
|
| 10 |
|
| 11 |
+
# ------ INFERENCE MODEL ------------------------------------------------------
|
| 12 |
# appel de la fonction inference, adaptee pour une entree txt
|
| 13 |
def summarize(text: str):
|
| 14 |
+
if choisir_modele.var == "lstm":
|
| 15 |
return " ".join(inferenceAPI(text))
|
| 16 |
elif choisir_modele.var == "fineTunedT5":
|
| 17 |
text = inferenceAPI_t5(text)
|
| 18 |
+
return re.sub("<extra_id_0> ", "", text)
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
# ----------------------------------------------------------------------------
|
| 22 |
|
| 23 |
|
| 24 |
def choisir_modele(choixModele):
|
| 25 |
print("ON A RECUP LE CHOIX MODELE")
|
| 26 |
+
if choixModele == "lstm":
|
| 27 |
+
choisir_modele.var = "lstm"
|
| 28 |
elif choixModele == "fineTunedT5":
|
| 29 |
choisir_modele.var = "fineTunedT5"
|
|
|
|
|
|
|
| 30 |
|
| 31 |
|
| 32 |
+
# -------- API ---------------------------------------------------------------
|
| 33 |
app = FastAPI()
|
| 34 |
|
| 35 |
# static files pour envoi du css au navigateur
|
| 36 |
templates = Jinja2Templates(directory="templates")
|
| 37 |
app.mount("/templates", StaticFiles(directory="templates"), name="templates")
|
| 38 |
|
| 39 |
+
|
| 40 |
@app.get("/")
|
| 41 |
async def index(request: Request):
|
| 42 |
+
return templates.TemplateResponse(
|
| 43 |
+
"index.html.jinja", {"request": request, "current_route": "/"}
|
| 44 |
+
)
|
| 45 |
+
|
| 46 |
|
| 47 |
@app.get("/model")
|
| 48 |
+
async def get_model(request: Request):
|
| 49 |
+
return templates.TemplateResponse(
|
| 50 |
+
"index.html.jinja", {"request": request, "current_route": "/model"}
|
| 51 |
+
)
|
| 52 |
+
|
| 53 |
|
| 54 |
@app.get("/predict")
|
| 55 |
+
async def get_prediction(request: Request):
|
| 56 |
+
return templates.TemplateResponse(
|
| 57 |
+
"index.html.jinja", {"request": request, "current_route": "/predict"}
|
| 58 |
+
)
|
| 59 |
|
| 60 |
|
| 61 |
@app.post("/model")
|
| 62 |
+
async def choix_model(request: Request, choixModel: str = Form(None)):
|
| 63 |
print(choixModel)
|
| 64 |
if not choixModel:
|
| 65 |
erreur_modele = "Merci de saisir un modèle."
|
| 66 |
return templates.TemplateResponse(
|
| 67 |
+
"index.html.jinja", {"request": request, "text": erreur_modele}
|
| 68 |
)
|
| 69 |
+
else:
|
| 70 |
choisir_modele(choixModel)
|
| 71 |
print("C'est bon on utilise le modèle demandé")
|
| 72 |
return templates.TemplateResponse(
|
| 73 |
+
"index.html.jinja", {"request": request}
|
| 74 |
)
|
| 75 |
|
| 76 |
|
| 77 |
+
# retourner le texte, les predictions et message d'erreur si formulaire envoye
|
| 78 |
+
# vide
|
| 79 |
@app.post("/predict")
|
| 80 |
async def prediction(request: Request, text: str = Form(None)):
|
| 81 |
+
if not text:
|
| 82 |
error = "Merci de saisir votre texte."
|
| 83 |
return templates.TemplateResponse(
|
| 84 |
+
"index.html.jinja", {"request": request, "text": error}
|
| 85 |
+
)
|
| 86 |
+
else:
|
| 87 |
summary = summarize(text)
|
| 88 |
return templates.TemplateResponse(
|
| 89 |
+
"index.html.jinja",
|
| 90 |
+
{"request": request, "text": text, "summary": summary},
|
| 91 |
)
|
| 92 |
+
|
| 93 |
+
|
| 94 |
# ------------------------------------------------------------------------------------
|
| 95 |
|
| 96 |
|
templates/index.html.jinja
CHANGED
|
@@ -49,7 +49,7 @@
|
|
| 49 |
<label for="selectModel">Choose a model :</label>
|
| 50 |
<select name="choixModel" class="selectModel" id="choixModel">
|
| 51 |
<option value="lstm">LSTM</option>
|
| 52 |
-
<option value="fineTunedT5">Fine-tuned T5</option>
|
| 53 |
</select>
|
| 54 |
</form>
|
| 55 |
<button form ="choixModel" class='search_bn' type="submit" class="btn btn-primary btn-block btn-large" rows="1" cols="50">Select model</button>
|
|
@@ -71,9 +71,13 @@
|
|
| 71 |
</table>
|
| 72 |
</div>
|
| 73 |
<div class="buttons">
|
| 74 |
-
|
|
|
|
|
|
|
|
|
|
| 75 |
<button form ="my_form" class='search_bn' type="submit" class="btn btn-primary btn-block btn-large" rows="1" cols="50">Go !</button>
|
| 76 |
<button form ="my_form" type="button" value="Reset" onclick="customReset();">Reset</button>
|
|
|
|
| 77 |
</div>
|
| 78 |
|
| 79 |
<div class="copyright">
|
|
|
|
| 49 |
<label for="selectModel">Choose a model :</label>
|
| 50 |
<select name="choixModel" class="selectModel" id="choixModel">
|
| 51 |
<option value="lstm">LSTM</option>
|
| 52 |
+
<option value="fineTunedT5" selected>Fine-tuned T5</option>
|
| 53 |
</select>
|
| 54 |
</form>
|
| 55 |
<button form ="choixModel" class='search_bn' type="submit" class="btn btn-primary btn-block btn-large" rows="1" cols="50">Select model</button>
|
|
|
|
| 71 |
</table>
|
| 72 |
</div>
|
| 73 |
<div class="buttons">
|
| 74 |
+
{% if current_route == "/" %}
|
| 75 |
+
<button>Merci de sélectionner un modèle</button>
|
| 76 |
+
{% else %}
|
| 77 |
+
<!-- <button id="submit" type="submit" onclick=submitBothForms()>SUBMIT</button> -->
|
| 78 |
<button form ="my_form" class='search_bn' type="submit" class="btn btn-primary btn-block btn-large" rows="1" cols="50">Go !</button>
|
| 79 |
<button form ="my_form" type="button" value="Reset" onclick="customReset();">Reset</button>
|
| 80 |
+
{% endif %}
|
| 81 |
</div>
|
| 82 |
|
| 83 |
<div class="copyright">
|
templates/site_style/css/main.css
CHANGED
|
@@ -246,6 +246,7 @@ textarea {
|
|
| 246 |
background: #3B353C;
|
| 247 |
}
|
| 248 |
|
|
|
|
| 249 |
/* Header */
|
| 250 |
|
| 251 |
#header {
|
|
@@ -469,4 +470,5 @@ textarea {
|
|
| 469 |
justify-content: center;
|
| 470 |
margin-top: 20px;
|
| 471 |
}
|
|
|
|
| 472 |
}
|
|
|
|
| 246 |
background: #3B353C;
|
| 247 |
}
|
| 248 |
|
| 249 |
+
|
| 250 |
/* Header */
|
| 251 |
|
| 252 |
#header {
|
|
|
|
| 470 |
justify-content: center;
|
| 471 |
margin-top: 20px;
|
| 472 |
}
|
| 473 |
+
|
| 474 |
}
|