Baptiste Gaultier commited on
Commit
5920740
·
1 Parent(s): e74a2c7

Première version du compagnon IA 🦙

Browse files
Files changed (2) hide show
  1. app.py +731 -10
  2. lama_icon.png +0 -0
app.py CHANGED
@@ -1,14 +1,14 @@
1
  import gradio as gr
2
  from huggingface_hub import InferenceClient
 
3
 
4
- """
5
- 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
6
- """
7
- client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
8
 
 
9
 
10
  def respond(
11
  message,
 
12
  history: list[tuple[str, str]],
13
  system_message,
14
  max_tokens,
@@ -17,6 +17,25 @@ def respond(
17
  ):
18
  messages = [{"role": "system", "content": system_message}]
19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  for val in history:
21
  if val[0]:
22
  messages.append({"role": "user", "content": val[0]})
@@ -39,25 +58,727 @@ def respond(
39
  response += token
40
  yield response
41
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  """
43
  For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface
44
  """
45
  demo = gr.ChatInterface(
46
  respond,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  additional_inputs=[
48
- gr.Textbox(value="You are a friendly Chatbot.", label="System message"),
49
- gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
50
- gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
51
  gr.Slider(
52
  minimum=0.1,
53
  maximum=1.0,
54
  value=0.95,
55
  step=0.05,
56
- label="Top-p (nucleus sampling)",
57
  ),
58
  ],
59
  )
60
 
61
-
62
  if __name__ == "__main__":
63
- demo.launch()
 
1
  import gradio as gr
2
  from huggingface_hub import InferenceClient
3
+ import os
4
 
5
+ HF_TOKEN = os.getenv('HF_TOKEN')
 
 
 
6
 
7
+ client = InferenceClient("meta-llama/Meta-Llama-3-8B-Instruct", token=HF_TOKEN)
8
 
9
  def respond(
10
  message,
11
+ request: gr.Request,
12
  history: list[tuple[str, str]],
13
  system_message,
14
  max_tokens,
 
17
  ):
18
  messages = [{"role": "system", "content": system_message}]
19
 
20
+ if request and message == "Je voudrais en savoir plus sur...":
21
+ student_code = request.query_params.get("code")
22
+ if student_code:
23
+ message = f"""
24
+ Tu dois maintenant aider l'apprenant sur l'exercice suivant :
25
+
26
+ Écrivez un programme micropython permettant d'allumer les deux LEDs comme suit :
27
+
28
+ Une LED rouge branchée sur la broche 3 de la Galaxia doit s'allumer pendant 3 secondes puis s'éteindre.
29
+ Une LED verte branchée sur la broche 2 de la Galaxia doit s'allumer pendant 3 secondes puis s'éteindre.
30
+
31
+ Cette séquence devra être exécutée indéfiniment ! Le module thingz ne devra pas être utilisé !
32
+
33
+ Voici le code qu'il a écrit pour l'instant :
34
+ {student_code}
35
+
36
+ Peux-tu l'aider à corriger son code ?
37
+ Tu ne dois pas lui donner tout de suite la solution, mais plutôt lui donner des indices et lui poser des questions pour qu'il trouve la solution par lui-même.
38
+ """
39
  for val in history:
40
  if val[0]:
41
  messages.append({"role": "user", "content": val[0]})
 
58
  response += token
59
  yield response
60
 
61
+ system_message = """
62
+ Tu es un enseignant qui répond aux questions d'un étudiant sur un forum d'un cours en ligne portant sur le développement embarqué avec MicroPython, tu dois répondre avec pédagogie à ses questions sans donner directement le code même si cela t’est demandé par l’apprenant.
63
+
64
+ Tu peux t'appuyer sur la documentation du module thingz et de ses sous modules :
65
+
66
+ thingz – Thingz module
67
+
68
+ Le module Thingz permet l’accès aux composants internes de la carte programmable Galaxia
69
+
70
+ thingz.button_a :Button
71
+
72
+ Bouton A de la Galaxia. Cet objet est une instance de Button
73
+
74
+ thingz.button_b :Button
75
+
76
+ Bouton B de la Galaxia. Cet objet est une instance de Button
77
+
78
+ thingz.touch_n :ButtonTouch
79
+
80
+ Bouton tactile Nord de la Galaxia. Cet objet est une instance de ButtonTouch
81
+
82
+ thingz.touch_s :ButtonTouch
83
+
84
+ Bouton tactile Sud de la Galaxia. Cet objet est une instance de ButtonTouch
85
+
86
+ thingz.touch_e :ButtonTouch
87
+
88
+ Bouton tactile Est de la Galaxia. Cet objet est une instance de ButtonTouch
89
+
90
+ thingz.touch_w :ButtonTouch
91
+
92
+ Bouton tactile Ouest de la Galaxia. Cet objet est une instance de ButtonTouch
93
+
94
+ thingz.led :Led
95
+
96
+ LED RGB de la Galaxia. Cet objet est une instance de Led
97
+
98
+ thingz.accelerometer :Accel
99
+
100
+ Accéléromètre. Cet objet est une instance de Accel
101
+
102
+ thingz.compass :Compass
103
+
104
+ Magnétomètre de la Galaxia. Cet objet est une instance de Compass
105
+
106
+ thingz.sound :Sound
107
+
108
+ Utiliser le connecteur jack de la Galaxia pour produire du son. Cet objet est une instance de Sound
109
+
110
+ thingz.radio :Radio
111
+
112
+ Communication sans fil de la Galaxia. Cet objet est une instance de Radio
113
+
114
+ thingz.display :thingz_display.Display
115
+
116
+ Permet le contrôle de l’écran LCD de la Galaxia. Cet objet est une instance de thingz_display.Display
117
+
118
+ thingz.temperature() → int
119
+
120
+ Renvoie:
121
+
122
+ La température courante en utilisant le capteur interne du microcontrôleur
123
+ Type renvoyé:
124
+
125
+ int
126
+
127
+ thingz.set_temperature_offset(offset: int) → None
128
+
129
+ Calibrer le capteur de température interne du microcontrôleur en appliquant un offset
130
+
131
+
132
+ thingz_button – Thingz button
133
+
134
+ class thingz_button.Button
135
+
136
+ Contrôler les boutons physiques de la Galaxia
137
+
138
+ is_pressed() → bool
139
+
140
+ Renvoie:
141
+
142
+ True si le bouton est pressé, sinon False
143
+ Type renvoyé:
144
+
145
+ bool
146
+
147
+ was_pressed() → bool
148
+
149
+ Renvoie:
150
+
151
+ True si le bouton a été appuyé depuis le dernier appel à cette fonction, sinon False
152
+ Type renvoyé:
153
+
154
+ bool
155
+
156
+ get_presses() → int
157
+
158
+ Récupérer le nombre d’appuis depuis le dernier appel
159
+
160
+ Renvoie:
161
+
162
+ Le nombre d’appuis depuis le dernier appel
163
+ Type renvoyé:
164
+
165
+ int
166
+
167
+ on_pressed(callback: Callable[Button | None]) → None
168
+
169
+ Enregistre une fonction de callback associée à l’évenement appui
170
+
171
+ Paramètres:
172
+
173
+ callback (Callable[Optional[Button]]) – La fonction à appeler lors de l’appui. Le bouton concerné est passé en paramètre de la fonction de callback
174
+
175
+
176
+ thingz_button_touch – Thingz button touch
177
+
178
+ class thingz_button_touch.ButtonTouch
179
+
180
+ Contrôler les boutons tactiles de la Galaxia
181
+
182
+ is_touched() → bool
183
+
184
+ Renvoie:
185
+
186
+ True si le bouton est touché, sinon False
187
+ Type renvoyé:
188
+
189
+ bool
190
+
191
+ was_touched() → bool
192
+
193
+ Renvoie:
194
+
195
+ True si le bouton a été touché depuis le dernier appel à cette fonction, sinon False
196
+ Type renvoyé:
197
+
198
+ bool
199
+
200
+ get_touches() → int
201
+
202
+ Récupérer le nombre d’appuis depuis le dernier appel
203
+
204
+ Renvoie:
205
+
206
+ le nombre d’appuis depuis le dernier appel
207
+ Type renvoyé:
208
+
209
+ int
210
+
211
+ on_touched(callback: Callable[Button | None]) → None
212
+
213
+ Enregistre une fonction de callback associée à l’évenement touché
214
+
215
+ Paramètres:
216
+
217
+ callback (Callable[Optional[ButtonTouch]]) – La fonction à appeler lors du toucher. Le bouton concerné est passé en paramètre de la fonction de callback
218
+
219
+ thingz_led – Thingz LED
220
+
221
+ class thingz_led.Led
222
+
223
+ Contrôler la LED RGB de la Galaxia
224
+
225
+ set_colors(red: int, green: int, blue: int) → None
226
+
227
+ Régler le rouge, le vert et le bleu de la LED
228
+
229
+ Paramètres:
230
+
231
+ red (int) – La valeur rouge, comprise entre 0 et 255
232
+
233
+ green (int) – La valeur verte, comprise entre 0 et 255
234
+
235
+ blue (int) – La valeur bleue, comprise entre 0 et 255
236
+
237
+ set_red(red: int) → None
238
+
239
+ Régler la couleur rouge
240
+
241
+ Paramètres:
242
+
243
+ red (int) – La valeur rouge, comprise entre 0 et 255
244
+
245
+ set_green(green: int) → None
246
+
247
+ Régler la couleur verte
248
+
249
+ Paramètres:
250
+
251
+ green (int) – La valeur verte, comprise entre 0 et 255
252
+
253
+ set_blue(blue: int) → None
254
+
255
+ Régler la couleur bleue
256
+
257
+ Paramètres:
258
+
259
+ blue (int) – La valeur bleue, comprise entre 0 et 255
260
+
261
+ get_red() → int
262
+
263
+ Récupérer la valeur rouge courante
264
+
265
+ Renvoie:
266
+
267
+ La valeur rouge, comprise entre 0 et 255
268
+ Type renvoyé:
269
+
270
+ int
271
+
272
+ get_green() → int
273
+
274
+ Récupérer la valeur verte courante
275
+
276
+ Renvoie:
277
+
278
+ La valeur verte, comprise entre 0 et 255
279
+ Type renvoyé:
280
+
281
+ int
282
+
283
+ get_blue() → int
284
+
285
+ Récupérer la valeur bleue courante
286
+
287
+ Renvoie:
288
+
289
+ La valeur bleue, comprise entre 0 et 255
290
+ Type renvoyé:
291
+
292
+ int
293
+
294
+ read_light_level() → int
295
+
296
+ Récupérer la luminosité courante
297
+
298
+ Renvoie:
299
+
300
+ La luminosité ambiante, valeur entre 0 (nuit) et 100 (plein jour)
301
+ Type renvoyé:
302
+
303
+ int
304
+
305
+
306
+ thingz_accel – Thingz accelerometer
307
+
308
+ class thingz_accel.Accel
309
+
310
+ Contrôler l’accéléromètre de la Galaxia
311
+
312
+ get_x() → float
313
+
314
+ Renvoie:
315
+
316
+ La valeur de l’accélération sur l’axe x en mG
317
+ Type renvoyé:
318
+
319
+ float
320
+
321
+ get_y() → float
322
+
323
+ Renvoie:
324
+
325
+ La valeur de l’accélération sur l’axe y en mG
326
+ Type renvoyé:
327
+
328
+ float
329
+
330
+ get_z() → float
331
+
332
+ Renvoie:
333
+
334
+ La valeur de l’accélération sur l’axe z en mG
335
+ Type renvoyé:
336
+
337
+ float
338
+
339
+ get_values() → list
340
+
341
+ Renvoie:
342
+
343
+ Les valeurs d’accélération sur les 3 axes sous la forme d’une liste. L’index 0 correspond à l’axe X, 1 pour Y et 2 pour Z
344
+ Type renvoyé:
345
+
346
+ list
347
+
348
+ current_gesture() → str
349
+
350
+ Récupérer le geste actuel. Les gestes detectés sont:
351
+
352
+ up
353
+
354
+ down
355
+
356
+ left
357
+
358
+ right
359
+
360
+ face up
361
+
362
+ face down
363
+
364
+ freefall
365
+
366
+ 3g
367
+
368
+ 6g
369
+
370
+ 8g
371
+
372
+ shake
373
+
374
+ none
375
+
376
+ Renvoie:
377
+
378
+ Le geste courant
379
+ Type renvoyé:
380
+
381
+ str
382
+
383
+ is_gesture(gesture: str) → bool
384
+
385
+ Paramètres:
386
+
387
+ gesture (str) – Le geste à tester
388
+ Renvoie:
389
+
390
+ True si le geste courant est égal au geste à tester
391
+ Type renvoyé:
392
+
393
+ bool
394
+
395
+ was_gesture(gesture: str) → bool
396
+
397
+ Paramètres:
398
+
399
+ gesture (str) – Le geste à tester
400
+ Renvoie:
401
+
402
+ True si le geste a été actif depuis le dernier appel à cette fonction
403
+ Type renvoyé:
404
+
405
+ bool
406
+
407
+ get_gestures() → list
408
+
409
+ Renvoie:
410
+
411
+ L’historique des gestes. Le plus récent est à la fin de la liste
412
+ Type renvoyé:
413
+
414
+ list
415
+
416
+ on_gesture(gesture: str, callback: Callable[str | None]) → None
417
+
418
+ Enregistrer une fonction de callback associée à un geste
419
+
420
+ Paramètres:
421
+
422
+ gesture (str) – Le geste sur lequel associer le callback
423
+
424
+ callback (Callable[Optional[str]]) – La fonction de callback. Lors de l’appel le geste associé à la fonction de callback sera passé en paramètre
425
+
426
+ class thingz_accel.Compass
427
+
428
+ Contrôler le magnétomètre de la Galaxia
429
+
430
+ get_x() → float
431
+
432
+ Renvoie:
433
+
434
+ Le chamnp magnétique sur l’axe x en uT
435
+ Type renvoyé:
436
+
437
+ float
438
+
439
+ get_y() → float
440
+
441
+ Renvoie:
442
+
443
+ Le chamnp magnétique sur l’axe y en uT
444
+ Type renvoyé:
445
+
446
+ float
447
+
448
+ get_x() → float
449
+
450
+ Renvoie:
451
+
452
+ Le chamnp magnétique sur l’axe z en uT
453
+ Type renvoyé:
454
+
455
+ float
456
+
457
+ get_values() → list
458
+
459
+ Renvoie:
460
+
461
+ Les champs magnétiques sur les 3 axes sous la forme d’une liste. L’index 0 correspond à l’axe X, l’index 1 à l’axe Y et l’index 2 à l’axe Z
462
+ Type renvoyé:
463
+
464
+ list
465
+
466
+ heading() → float
467
+
468
+ Renvoie:
469
+
470
+ le cap courant
471
+ Type renvoyé:
472
+
473
+ float
474
+
475
+ calibrate(hard_time: int, soft_time: int) → None
476
+
477
+ Calibrer le magnétomètre. Pendant la calibration il est nécessaire de faire pivoter la carte dans toutes les directions
478
+
479
+ Paramètres:
480
+
481
+ hard_time (int) – Temps à passer dans la première étape de calibration (en secondes). Valeur recommandée 5
482
+
483
+ soft_time (int) – Temps à passer dans la deuxième étape de calibration (en secondes). Valeur recommandée 5
484
+
485
+ thingz_accel – Thingz accelerometer
486
+
487
+ class thingz_accel.Accel
488
+
489
+ Contrôler l’accéléromètre de la Galaxia
490
+
491
+ get_x() → float
492
+
493
+ Renvoie:
494
+
495
+ La valeur de l’accélération sur l’axe x en mG
496
+ Type renvoyé:
497
+
498
+ float
499
+
500
+ get_y() → float
501
+
502
+ Renvoie:
503
+
504
+ La valeur de l’accélération sur l’axe y en mG
505
+ Type renvoyé:
506
+
507
+ float
508
+
509
+ get_z() → float
510
+
511
+ Renvoie:
512
+
513
+ La valeur de l’accélération sur l’axe z en mG
514
+ Type renvoyé:
515
+
516
+ float
517
+
518
+ get_values() → list
519
+
520
+ Renvoie:
521
+
522
+ Les valeurs d’accélération sur les 3 axes sous la forme d’une liste. L’index 0 correspond à l’axe X, 1 pour Y et 2 pour Z
523
+ Type renvoyé:
524
+
525
+ list
526
+
527
+ current_gesture() → str
528
+
529
+ Récupérer le geste actuel. Les gestes detectés sont:
530
+
531
+ up
532
+
533
+ down
534
+
535
+ left
536
+
537
+ right
538
+
539
+ face up
540
+
541
+ face down
542
+
543
+ freefall
544
+
545
+ 3g
546
+
547
+ 6g
548
+
549
+ 8g
550
+
551
+ shake
552
+
553
+ none
554
+
555
+ Renvoie:
556
+
557
+ Le geste courant
558
+ Type renvoyé:
559
+
560
+ str
561
+
562
+ is_gesture(gesture: str) → bool
563
+
564
+ Paramètres:
565
+
566
+ gesture (str) – Le geste à tester
567
+ Renvoie:
568
+
569
+ True si le geste courant est égal au geste à tester
570
+ Type renvoyé:
571
+
572
+ bool
573
+
574
+ was_gesture(gesture: str) → bool
575
+
576
+ Paramètres:
577
+
578
+ gesture (str) – Le geste à tester
579
+ Renvoie:
580
+
581
+ True si le geste a été actif depuis le dernier appel à cette fonction
582
+ Type renvoyé:
583
+
584
+ bool
585
+
586
+ get_gestures() → list
587
+
588
+ Renvoie:
589
+
590
+ L’historique des gestes. Le plus récent est à la fin de la liste
591
+ Type renvoyé:
592
+
593
+ list
594
+
595
+ on_gesture(gesture: str, callback: Callable[str | None]) → None
596
+
597
+ Enregistrer une fonction de callback associée à un geste
598
+
599
+ Paramètres:
600
+
601
+ gesture (str) – Le geste sur lequel associer le callback
602
+
603
+ callback (Callable[Optional[str]]) – La fonction de callback. Lors de l’appel le geste associé à la fonction de callback sera passé en paramètre
604
+
605
+ class thingz_accel.Compass
606
+
607
+ Contrôler le magnétomètre de la Galaxia
608
+
609
+ get_x() → float
610
+
611
+ Renvoie:
612
+
613
+ Le chamnp magnétique sur l’axe x en uT
614
+ Type renvoyé:
615
+
616
+ float
617
+
618
+ get_y() → float
619
+
620
+ Renvoie:
621
+
622
+ Le chamnp magnétique sur l’axe y en uT
623
+ Type renvoyé:
624
+
625
+ float
626
+
627
+ get_x() → float
628
+
629
+ Renvoie:
630
+
631
+ Le chamnp magnétique sur l’axe z en uT
632
+ Type renvoyé:
633
+
634
+ float
635
+
636
+ get_values() → list
637
+
638
+ Renvoie:
639
+
640
+ Les champs magnétiques sur les 3 axes sous la forme d’une liste. L’index 0 correspond à l’axe X, l’index 1 à l’axe Y et l’index 2 à l’axe Z
641
+ Type renvoyé:
642
+
643
+ list
644
+
645
+ heading() → float
646
+
647
+ Renvoie:
648
+
649
+ le cap courant
650
+ Type renvoyé:
651
+
652
+ float
653
+
654
+ calibrate(hard_time: int, soft_time: int) → None
655
+
656
+ Calibrer le magnétomètre. Pendant la calibration il est nécessaire de faire pivoter la carte dans toutes les directions
657
+
658
+ Paramètres:
659
+
660
+ hard_time (int) – Temps à passer dans la première étape de calibration (en secondes). Valeur recommandée 5
661
+
662
+ soft_time (int) – Temps à passer dans la deuxième étape de calibration (en secondes). Valeur recommandée 5
663
+
664
+
665
+
666
+ thingz_display – Thingz Display
667
+
668
+ class thingz_display.Display
669
+
670
+ Contrôler l’écran LCD de la Galaxia
671
+
672
+ plot :Plot
673
+
674
+ Utiliser l’écran pour afficher un graphique
675
+
676
+ console :Console
677
+
678
+ Afficher la sortie de la REPL sur l’écran
679
+
680
+ class thingz_display.Console
681
+
682
+ Afficher la sortie de la REPL sur l’écran
683
+
684
+ show() → None
685
+
686
+ Afficher la REPL
687
+
688
+ class thingz_display.Plot
689
+
690
+ Utiliser l’écran pour afficher un graphique
691
+
692
+ show() → None
693
+
694
+ Afficher le graphique
695
+
696
+ add_point(value: int | float) → None
697
+
698
+ Ajouter un point sur le graphique
699
+
700
+ Paramètres:
701
+
702
+ value (int|float) – La position du nouveau point sur l’axe Y
703
+
704
+ set_y_scale(min: int, max: int) → None
705
+
706
+ Régler l’échelle du graphique
707
+
708
+ Paramètres:
709
+
710
+ min (int) – La valeur minimun sur l’axe Y
711
+
712
+ max (int) – La valeur maximun sur l’axe Y
713
+
714
+ set_animate_function(func: Callable, interval: int) → None
715
+
716
+ Configurer une fonction qui sera appelée à interval régulier pour ajouter un nouveau point au graphique. La fonction doit retourner la valeur du nouveau point
717
+
718
+ Paramètres:
719
+
720
+ func (Callable) – La fonction à appeler
721
+
722
+ interval (int) – Le temps d’attente entre deux appels de fonction, en secondes
723
+
724
+ Les noms de broches que nous utilisons dans le MOOC ne sont pas les mêmes que les numéros de broches :
725
+
726
+ P0 correspond à la broche 3
727
+ P1 correspond à la broche 2
728
+ P2 correspond à la broche 1
729
+ """
730
+
731
+ js_code = """
732
+ function() {
733
+ document.getElementById("component-20").style.display = "none";
734
+ const queryString = window.location.search;
735
+ const urlParams = new URLSearchParams(queryString);
736
+
737
+ if (urlParams.get('code')) {
738
+ setTimeout(function() {
739
+ document.getElementById("component-14").click();
740
+ }, 2000);
741
+ }
742
+ }
743
+ """
744
+
745
  """
746
  For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface
747
  """
748
  demo = gr.ChatInterface(
749
  respond,
750
+ title='<img src="file/lama_icon.png" alt="Icône lama" style="height: 50px; float:left;"><span style="float:left; margin-top:10px"> Compagnon IA</span>',
751
+ description="**⚠️ Attention :** Ce compagnon est basé le modèle de langage Llama 3 et peut parfois donner des réponses incorrectes ou incomplètes. Il est donc important de vérifier les informations qu'il vous donne en utilisant [la documentation du cours](https://imt-atlantique.github.io/micropython_doc/galaxia/) !",
752
+ textbox=gr.Textbox("Je voudrais en savoir plus sur...", lines=2, container=True, scale=7),
753
+ theme=gr.themes.Soft(
754
+ primary_hue="indigo",
755
+ font=[gr.themes.GoogleFont('Ubuntu'), 'ui-sans-serif', 'system-ui', 'sans-serif'],
756
+ font_mono=[gr.themes.GoogleFont('Ubuntu Mono'), 'ui-monospace', 'Consolas', 'monospace'],
757
+ ),
758
+ submit_btn="Envoyer",
759
+ retry_btn=None,
760
+ undo_btn="↩️ Annuler la dernière question",
761
+ clear_btn="🗑️ Effacer la conversation",
762
+ examples=[
763
+ ["Peux-tu m'en dire plus sur le module micropython machine ?"],
764
+ ["Comment faire clignote une LED simple branchée sur la broche P0 en utilisant pin.on() et pin.off() et sans utiliser le module thingz ?"],
765
+ ["Connais-tu le sous module thingz.led ?"],
766
+ ["Comment faire une requête GET en utilisant le module micropython urequests ?"],
767
+ ],
768
+ js=js_code,
769
  additional_inputs=[
770
+ gr.Textbox(value=system_message, label="Message système"),
771
+ gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Nombre de nouveaux tokens max."),
772
+ gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Température"),
773
  gr.Slider(
774
  minimum=0.1,
775
  maximum=1.0,
776
  value=0.95,
777
  step=0.05,
778
+ label="Top-p",
779
  ),
780
  ],
781
  )
782
 
 
783
  if __name__ == "__main__":
784
+ demo.launch(allowed_paths=["lama_icon.png"])
lama_icon.png ADDED