GueuleDange commited on
Commit
4455fbc
·
verified ·
1 Parent(s): b256f79

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +77 -7
app.py CHANGED
@@ -5,13 +5,66 @@ from huggingface_hub import InferenceClient
5
  # Récupérer le token depuis les variables d'environnement (Secrets)
6
  HF_TOKEN = os.environ.get("HF_TOKEN")
7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  def respond(
9
  message,
10
  history: list[dict[str, str]],
11
- system_message,
12
- max_tokens,
13
- temperature,
14
- top_p,
15
  ):
16
  """
17
  For more information on `huggingface_hub` Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference
@@ -23,8 +76,18 @@ def respond(
23
  try:
24
  client = InferenceClient(token=HF_TOKEN, model="openai/gpt-oss-20b")
25
 
 
 
 
26
  messages = [{"role": "system", "content": system_message}]
27
- messages.extend(history)
 
 
 
 
 
 
 
28
  messages.append({"role": "user", "content": message})
29
 
30
  response = ""
@@ -44,6 +107,11 @@ def respond(
44
  response += token
45
  yield response
46
 
 
 
 
 
 
47
  except Exception as e:
48
  yield f"❌ Erreur : {str(e)}"
49
 
@@ -55,8 +123,8 @@ chatbot = gr.ChatInterface(
55
  respond,
56
  type="messages",
57
  additional_inputs=[
58
- gr.Textbox(value="You are a friendly Chatbot.", label="System message"),
59
- gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
60
  gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
61
  gr.Slider(
62
  minimum=0.1,
@@ -66,6 +134,8 @@ chatbot = gr.ChatInterface(
66
  label="Top-p (nucleus sampling)",
67
  ),
68
  ],
 
 
69
  )
70
 
71
  with gr.Blocks() as demo:
 
5
  # Récupérer le token depuis les variables d'environnement (Secrets)
6
  HF_TOKEN = os.environ.get("HF_TOKEN")
7
 
8
+ # Définir un message système plus léger
9
+ SYSTEM_MESSAGE = """
10
+ Tu es TeachEase, un enseignant virtuel conçu pour aider les élèves à comprendre leurs cours, faire leurs exercices et devoirs.
11
+ Ton rôle est d'expliquer les concepts de manière claire et pédagogique, de fournir des exemples concrets et de poser des questions pour vérifier la compréhension.
12
+ **Instructions spéciales :**
13
+ 1. **Salutations :** Réponds de manière courte et amicale.
14
+ 2. **Expressions mathématiques et scientifiques :** Utilise le format LaTeX.
15
+ 3. **Traduction et réponses multilingues :** Adapte ta réponse en fonction de la langue demandée.
16
+ """
17
+
18
+ def detect_language_request(message: str) -> str:
19
+ """
20
+ Détecte si l'utilisateur demande une réponse dans une langue spécifique.
21
+ Retourne la langue demandée ou None si aucune demande n'est détectée.
22
+ """
23
+ language_requests = {
24
+ "anglais": "en",
25
+ "english": "en",
26
+ "espagnol": "es",
27
+ "spanish": "es",
28
+ "allemand": "de",
29
+ "german": "de",
30
+ "portugais": "pt",
31
+ "portuguese": "pt",
32
+ "français": "fr",
33
+ "french": "fr",
34
+ "italien": "it",
35
+ "italian": "it",
36
+ "chinois": "zh",
37
+ "chinese": "zh",
38
+ "japonais": "ja",
39
+ "japanese": "ja",
40
+ "russe": "ru",
41
+ }
42
+ for keyword, lang_code in language_requests.items():
43
+ if keyword in message.lower():
44
+ return lang_code
45
+ return None
46
+
47
+ def translate_response(response: str, target_lang: str) -> str:
48
+ """
49
+ Traduit la réponse dans la langue cible (simulation).
50
+ """
51
+ translations = {
52
+ "en": "Hello! How can I assist you today?",
53
+ "es": "¡Hola! ¿En qué puedo ayudarte hoy?",
54
+ "de": "Hallo! Wie kann ich Ihnen heute helfen?",
55
+ "pt": "Olá! Como posso ajudar você hoje?",
56
+ "fr": "Bonjour ! Comment puis-je vous aider aujourd'hui ?",
57
+ "it": "Ciao! Come posso aiutarti oggi?",
58
+ }
59
+ return translations.get(target_lang, response) # Retourne la réponse originale si la langue n'est pas trouvée
60
+
61
  def respond(
62
  message,
63
  history: list[dict[str, str]],
64
+ system_message=SYSTEM_MESSAGE,
65
+ max_tokens=256,
66
+ temperature=0.7,
67
+ top_p=0.95,
68
  ):
69
  """
70
  For more information on `huggingface_hub` Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference
 
76
  try:
77
  client = InferenceClient(token=HF_TOKEN, model="openai/gpt-oss-20b")
78
 
79
+ # Détecter si l'utilisateur demande une réponse dans une langue spécifique
80
+ target_lang = detect_language_request(message)
81
+
82
  messages = [{"role": "system", "content": system_message}]
83
+
84
+ # Limiter l'historique de la conversation aux 3 derniers échanges
85
+ for val in history[-3:]:
86
+ if val.get("role") == "user" and val.get("content"):
87
+ messages.append({"role": "user", "content": val["content"]})
88
+ if val.get("role") == "assistant" and val.get("content"):
89
+ messages.append({"role": "assistant", "content": val["content"]})
90
+
91
  messages.append({"role": "user", "content": message})
92
 
93
  response = ""
 
107
  response += token
108
  yield response
109
 
110
+ # Traduire la réponse si une langue cible est demandée
111
+ if target_lang:
112
+ response = translate_response(response, target_lang)
113
+ yield response
114
+
115
  except Exception as e:
116
  yield f"❌ Erreur : {str(e)}"
117
 
 
123
  respond,
124
  type="messages",
125
  additional_inputs=[
126
+ gr.Textbox(value=SYSTEM_MESSAGE, label="System message", interactive=False),
127
+ gr.Slider(minimum=1, maximum=512, value=256, step=1, label="Max new tokens"),
128
  gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
129
  gr.Slider(
130
  minimum=0.1,
 
134
  label="Top-p (nucleus sampling)",
135
  ),
136
  ],
137
+ title="TeachEase - Enseignant Virtuel",
138
+ description="Bienvenue sur TeachEase ! Posez vos questions et obtenez des explications claires et pédagogiques avec des expressions mathématiques en LaTeX."
139
  )
140
 
141
  with gr.Blocks() as demo: