Skip to content

Commit 3e629d4

Browse files
committed
added illustrations in chatbot for the various steps
1 parent 762e5e0 commit 3e629d4

File tree

7 files changed

+59
-8
lines changed

7 files changed

+59
-8
lines changed

notebooks/tps/chatbot/README-chatbot-nb.md

Lines changed: 59 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,21 @@ on met à votre disposition **deux serveurs** `ollama`:
6363

6464
## objectif
6565

66-
ce qu'on veut faire, c'est fabriquer une UI sommaire qui permet de choisir le serveur, le modèle, et de poser ensuite des questions comme avec chatGPT
66+
ce qu'on veut faire, c'est fabriquer une UI sommaire qui permet
67+
- de choisir le serveur,
68+
- de choisir le modèle,
69+
- et de poser ensuite des questions comme avec chatGPT
70+
- enfin sur cette implémentation on a également un bouton qui permet d'enabler le *streaming*
71+
l'idée consiste à afficher les résultats "au fur et à mesure" plutôt qu'en une seule fois à la fin de l'échange avec le serveur, on en reparlera...
72+
73+
74+
ça pourrait ressembler à ceci:
6775

6876
```{image} media/chatbot-sample.png
6977
:align: center
70-
:width: 500px
78+
:width: 600px
7179
```
7280

73-
sur cette implémentation on a également un bouton qui permet d'enabler le *streaming*, l'idée consiste à afficher les résultats "au fur et à mesure" plutôt qu'en une seule fois à la fin de l'échange avec le serveur, on en reparlera...
74-
7581
+++
7682

7783
## v01: starter code
@@ -117,20 +123,35 @@ vous aurez envie de *bookmark* ces entrées dans la doc, pour plus d'info:
117123
* <https://flet.dev> le point d'entrée principal
118124
* <https://flet.dev/docs/controls> pour les détails des objets disponibles
119125

120-
+++
126+
````{admonition} python ou flet run
127+
:class: dropdown
121128
122-
## pour les forts
129+
on peut **aussi* lancer le programme de manière plus traditionnelle avec juste `python chatbot.py`
130+
mais dans ce cas on n'a pas le *hot reload* et l'usage c'est une grosse différence de confort !
131+
en outre il est conseillé de regarder les possibilités offertes par la CLI (i.e. le programme `flet`)
132+
qui permet de faire **aussi** d'autres choses très utiles:
133+
```{image} media/flet-help.png
134+
:width: 400px
135+
```
136+
````
123137

124-
si cet énoncé vous inspire, vous pouvez simplement suivre votre voie pour développer l'application
138+
+++
125139

126-
sinon pour les autres, voici un chemin possible pour y arriver; évidemment je vous donne ces étapes **entièrement à titre indicatif**
140+
## pour les forts
127141

142+
si cet énoncé vous inspire, vous pouvez simplement suivre votre voie pour développer l'application
143+
sinon pour les autres, voici un chemin possible pour y arriver; évidemment je vous donne ces étapes **entièrement à titre indicatif**
128144
bref, dans tous les cas, n'hésitez pas à faire comme vous le sentez...
129145

130146
+++
131147

132148
## v02: ajoutons un titre
133149

150+
```{image} media/chatbot-02.png
151+
:width: 400px
152+
:align: right
153+
```
154+
134155
pour vous familiariser avec le modèle de lignes et colonnes de `flet`, **ajoutez un titre principal**, comme sur l'illustration
135156

136157
- regardez `ft.Column`
@@ -157,6 +178,11 @@ ceci est une étape **totalement optionnelle**, mais je vous recommande de **cr
157178

158179
## v04: une classe `History`
159180

181+
```{image} media/chatbot-04.png
182+
:width: 400px
183+
:align: right
184+
```
185+
160186
toujours pour éviter de finir avec un gros paquet de spaguettis, on pourrait imaginer à ce stade **écrire une classe `History`** (tout ceci est totalement indicatif...) qui:
161187

162188
- hérite, là encore de `ft.Column`
@@ -188,6 +214,11 @@ quelques indices:
188214

189215
## v06: on affiche la réponse
190216

217+
```{image} media/chatbot-06.png
218+
:width: 400px
219+
:align: right
220+
```
221+
191222
dans cette version, on utilise la réponse du serveur pour **afficher le dialogue** dans notre application
192223
pour cela on va devoir faire quelques modifications à la classe `History`; en effet vous devez avoir observé à ce stade que la réponse vient "en petits morceaux", ce qui fait qu'on pourrait avoir envie de modifier un peu la classe `History` de sorte qu'elle expose à présent les méthodes
193224

@@ -205,6 +236,11 @@ pour cela voyez dans `flet` l'attribut `disabled`
205236

206237
## v08: supporter le mode *streaming*
207238

239+
```{image} media/chatbot-08.png
240+
:width: 400px
241+
:align: right
242+
```
243+
208244
une requête HTTP "classique" est d'une grande simplicité: on envoie une requête, on reçoit une réponse
209245
dans notre cas toutefois, ce modèle n'est pas tout à fait adapté, car l'IA met du temps à élaborer sa réponse, et on aimerait mieux **voir la réponse au fur et à mesure**, plutôt que de devoir attendre la fin, qui est le comportement que vous obeservez si vous avez suivi mes indications jusqu'ici
210246
c'est ce à quoi on va s'attacher maintenant
@@ -235,12 +271,27 @@ c'est juste une question d'ajouter, dans l'appel à `requests.post`, un paramèt
235271

236272
## v10 (optionnel): acquérir la liste des modèles
237273

274+
```{image} media/chatbot-10.png
275+
:width: 400px
276+
:align: right
277+
```
278+
238279
plutôt que de proposer une liste de modèles "en dur" comme dans le *starter code*, on pourrait à ce stade **acquérir**, auprès du serveur choisi, la **liste des modèles** connus; pour cela `ollama` met à notre disposition l'API `/api/tags`
239280

240281
dans mon implémentation j'ai choisi de "cacher" ce résultat, pour ne pas redemander plusieurs fois cette liste à un même serveur (cette liste bouge très très peu...); mais c'est optionnel; par contre ce serait sympa pour les utilisateurs de conserver, lorsque c'est possible, le modèle choisi lorsqu'on change de serveur...
241282

242283
+++
243284

285+
## plein d'améliorations possibles
286+
287+
en vrac:
288+
289+
- ajouter un bouton "Cancel" - en fait idéalement on en aurait besoin le plus tôt possible car le développement peut vite devenir fastidieux (ne pas hésiter à quitter et relancer); mais le truc c'est que c'est non trivial à faire en fait !
290+
- ou pourrait imaginer soumettre le même prompt à plusieurs modèles pour les comparer
291+
- etc...
292+
293+
+++
294+
244295
## pour aller plus loin
245296

246297
* je vous signale une page pleine de tutoriels intéressants, et un peu du même genre, à propos de la librairie `flet`:
412 KB
Loading
436 KB
Loading
570 KB
Loading
653 KB
Loading
202 KB
Loading
270 KB
Loading

0 commit comments

Comments
 (0)