Ronaldodev commited on
Commit
1fbd96f
·
1 Parent(s): 2cea33c

change api gradio to fastapi

Browse files
Files changed (2) hide show
  1. app.py +35 -39
  2. requirements.txt +3 -1
app.py CHANGED
@@ -1,46 +1,42 @@
1
- import gradio as gr
 
2
  from gradio_client import Client
3
 
4
- # Chargement du modèle
5
  client = Client("Qwen/Qwen1.5-72B-Chat")
6
 
7
  # Prompt système
8
- system_prompt = "Tu es un assistant médical spécialisé dans le domaine du diabète. Donne des réponses claires, précises et utiles.D'abord ta première phrase sera de donner le type de diabète.Evite de dire que tu n'es pas médécin. Donne lui des recommendations pour qu'il n'attrape pas le diabète s'il n'a pas et aussi s'il a. Aussi le type de diabète sans oublié de préciser le niveau de son diabète : normale, élevé, hyperglycémie, post-prandile, etc ... Avant de commencer, faut toujours évaluer et dire le niveau d'atteinte de diabète sur en %."
9
-
10
- # Fonction principale pour interagir avec le modèle
11
- def repondre(question, historique):
12
- if historique is None:
13
- historique = []
14
-
15
- # Appel au modèle
16
- response = client.predict(
17
- question,
18
- historique,
19
- system_prompt,
20
- api_name="/model_chat"
21
- )
22
-
23
- # Récupération de l'historique mis à jour
24
- new_history = response[1]
25
-
26
- # Extraire la dernière réponse
27
- reponse_texte = new_history[-1][1]
28
- return reponse_texte, new_history
29
-
30
- # Interface Gradio
31
- demo = gr.Interface(
32
- fn=repondre,
33
- inputs=[
34
- gr.Textbox(label="Votre question médical", placeholder="Ex : Mon taux de glycémie actuel est de 5.4 mmol/L avec un rythme cardique de 72bpm et une pression artérielle 120/80."),
35
- gr.State([])
36
- ],
37
- outputs=[
38
- gr.Textbox(label="Réponse de l'assistant"),
39
- gr.State()
40
- ],
41
- title="Assistant Médical – Expert en Test diabétique",
42
- description="Posez vos questions médicales concernant le diabète. L'assistant vous répondra avec des conseils clairs, utiles et adaptés."
43
  )
44
 
45
- # Lancer l'app
46
- demo.launch(share=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI, HTTPException
2
+ from pydantic import BaseModel
3
  from gradio_client import Client
4
 
5
+ # Charger le modèle depuis HuggingFace
6
  client = Client("Qwen/Qwen1.5-72B-Chat")
7
 
8
  # Prompt système
9
+ system_prompt = (
10
+ "Tu es un assistant médical spécialisé dans le domaine du diabète. "
11
+ "Donne des réponses claires, précises et utiles. D'abord ta première phrase sera de donner le type de diabète. "
12
+ "Evite de dire que tu n'es pas médécin. Donne lui des recommandations pour qu'il n'attrape pas le diabète s'il ne l'a pas, "
13
+ "et aussi s'il l'a. Aussi le type de diabète sans oublier de préciser le niveau de son diabète : normale, élevé, "
14
+ "hyperglycémie, post-prandiale, etc ... Avant de commencer, faut toujours évaluer et dire le niveau d'atteinte de diabète sur en %."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  )
16
 
17
+ # App FastAPI
18
+ app = FastAPI()
19
+
20
+ # Modèle pour recevoir la requête
21
+ class QuestionInput(BaseModel):
22
+ question: str
23
+ historique: list = []
24
+
25
+ # Endpoint API pour interagir avec le modèle
26
+ @app.post("/ask")
27
+ async def ask_question(data: QuestionInput):
28
+ try:
29
+ response = client.predict(
30
+ data.question,
31
+ data.historique,
32
+ system_prompt,
33
+ api_name="/model_chat"
34
+ )
35
+ new_history = response[1]
36
+ reponse_texte = new_history[-1][1]
37
+ return {"response": reponse_texte, "history": new_history}
38
+ except Exception as e:
39
+ raise HTTPException(status_code=500, detail=str(e))
40
+ if __name__ == "__main__":
41
+ import uvicorn
42
+ uvicorn.run(app, host="0.0.0.0", port=7860)
requirements.txt CHANGED
@@ -1,2 +1,4 @@
1
- gradio==5.31.0
2
  gradio_client==1.10.1
 
 
 
1
+ fastapi==0.115.12
2
  gradio_client==1.10.1
3
+ pydantic==2.11.5
4
+ uvicorn==0.34.2