Skip to content

Commit 4c91598

Browse files
committed
a few additional tips in the chatbot notebook
1 parent 4105b1c commit 4c91598

File tree

1 file changed

+48
-3
lines changed

1 file changed

+48
-3
lines changed

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

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,8 @@ ceci est une étape **totalement optionnelle**, mais je vous recommande de **cr
173173
```
174174
````{admonition} page.update()
175175
:class: tip
176-
on choisit de passer `page` au constructeur de l'objet, car avec *flet* il faut penser à *flush* les changements avec un `page.update()` - sinon les changements que l'on fait en mémoire ne sont pas répercutés dans l'affichage
176+
on choisit de passer `page` au constructeur de l'objet, car avec *flet* il faut penser à *flush* les changements avec un `page.update()` - sinon les changements que l'on fait en mémoire ne sont pas répercutés dans l'affichage
177+
et donc il faut qu'on puisse accéder à cette `page` depuis la classe `ChatbotApp` !
177178
````
178179

179180
+++
@@ -191,9 +192,17 @@ toujours pour éviter de finir avec un gros paquet de spaguettis, on pourrait im
191192
- et est responsable de la partie "dialogue" entre humain et robot
192193
- et qui du coup crée la zone de prompt,
193194
- et possède une méthode `current_prompt()` qui renvoie le prompt tapé par l'utilisateur
194-
- et une méthode `add_message` pour insérer les questions et les réponses au fur et à mesure
195+
- et une méthode `add_message()` pour insérer les questions et les réponses au fur et à mesure
195196
(à ce stade on ne fait pas encore la différence entre prompt et réponse)
196197

198+
````{admonition} alternance de questions / réponses
199+
:class: tip
200+
201+
comme la logique du dialogue c'est d'alterner les questions et les réponses, on peut tout à fait considérer que c'est un fait acquis, et du coup admettre que:
202+
- le dernier élément dans la colonne History est toujours le dernier prompt;
203+
- et les autres éléments sont alternativement, en commençant du début: prompt, réponse, prompt, réponse, etc...
204+
````
205+
197206
pour être bien clair, à ce stade on ne fait pas encore usage du réseau pour quoi que ce soit
198207

199208
+++
@@ -221,12 +230,40 @@ quelques indices:
221230
:align: right
222231
```
223232

224-
dans cette version, on utilise la réponse du serveur pour **afficher le dialogue** dans notre application
233+
dans cette version, on utilise la réponse du serveur pour *afficher le dialogue **dans notre application*** et non plus dans le terminal
234+
225235
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
226236

227237
- `add_prompt()` et `add_answer()` pour distinguer entre les deux types d'entrée
228238
- et surtout `add_chunk()` qui permet d'ajouter *juste un mot* dans la réponse du robot, pour nous ajuster avec le format de la réponse
229239

240+
````{admonition} le scrolling
241+
:class: tip dropdown
242+
243+
peut-être un peu prématuré (revenez dessus plus tard si nécessaire), mais il est important que notre chatbot *scroll* correctement:
244+
c'est-à-dire qu'après plusisurs questions/réponses on voie toujours le bas du dialogue
245+
et pour ça sachez qu'il faut procéder comme ceci
246+
```python
247+
cl = ft.Column(
248+
[....], # the children
249+
# required so the column knows it is supposed to take all the vertical space of its father
250+
expand=True,
251+
# so that the widget activates scrolling when needed
252+
scroll=ft.ScrollMode.AUTO,
253+
# so that we're always seeing the bottom area
254+
auto_scroll=True,
255+
)
256+
```
257+
258+
enfin, remarquez qu'on peut avoir envie d'activer le scrolling
259+
260+
- sur la `Column` principale (notre `ChatbotApp`), mais dans ce cas les widgets de mode (streaming, server...) vont scroller aussi
261+
c'est mieux que pas de scroll, mais pas forcément idéal encore
262+
- sur la `History`, et dans ce cas les widgets de mode vont rester fixes;
263+
dans ce cas-là toutefois, pensez à mettre tout de même `expand=True` sur la `ChatbotApp` pour que les changements de la taille de l'app se propagent jusqu'à l'`History`
264+
265+
````
266+
230267
+++
231268

232269
## v07: pas de multiples requêtes
@@ -288,6 +325,14 @@ dans mon implémentation j'ai choisi de "cacher" ce résultat, pour ne pas redem
288325

289326
en vrac:
290327

328+
- une fois que vous faites l'acquisition des modèles disponibles, il se peut qu'on vous retourne des valeurs de modèle qui ne fonctionnent pas;
329+
notamment les modèles `all-minilm:22m-l6-v2-fp16' et 'all-minilm:33m-l12-v2-fp16` (entre autres sans doute) ne supportent pas l'interface `generate`
330+
et comme - pas de bol - ils apparaissent en premier dans la liste des tags, c'est sans doute habile d'éviter de les choisir comme défaut du modèle
331+
```{admonition} on pourrait le savoir par programme ?
332+
:class: dropdown
333+
334+
sans doute; dans <https://github.com/ollama/ollama/blob/main/docs/api.md#list-local-models> on nous montre comment obtenir des informations plus fines sur les mdèles...
335+
```
291336
- 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 !
292337
- ou pourrait imaginer soumettre le même prompt à plusieurs modèles pour les comparer
293338
- etc...

0 commit comments

Comments
 (0)