MMOON commited on
Commit
3116c2c
·
verified ·
1 Parent(s): c031259

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +4 -68
src/streamlit_app.py CHANGED
@@ -1,40 +1,3 @@
1
- Absolument ! Voici une version améliorée du code.
2
-
3
- Cette nouvelle version intègre plusieurs améliorations clés :
4
-
5
- Design et Interface Utilisateur (UI) : Utilisation de st.sidebar pour les options et les crédits, et st.container pour une meilleure organisation visuelle du chat.
6
-
7
- Gestion des Modèles : Le code est maintenant plus flexible. Il vous permet de choisir entre le modèle original (Apertus-8B) et le modèle plus puissant que vous avez suggéré (Apertus-70B), et même d'autres si vous le souhaitez.
8
-
9
- Authentification Hugging Face : Intégration de la connexion via huggingface_hub pour utiliser des modèles qui pourraient être privés ou nécessiter une authentification. Le token est demandé de manière sécurisée via st.text_input de type "password".
10
-
11
- Paramètres de Génération Ajustables : Les paramètres comme la température, le top_p et le nombre maximum de tokens sont maintenant des curseurs dans la barre latérale, permettant à l'utilisateur de les ajuster dynamiquement.
12
-
13
- Optimisation et Clarté : Le code est restructuré en fonctions plus claires pour une meilleure lisibilité et maintenance.
14
-
15
- Aperçu du nouveau design
16
-
17
- L'interface sera divisée en deux parties :
18
-
19
- Une barre latérale (Sidebar) à gauche pour la configuration :
20
-
21
- Connexion à Hugging Face.
22
-
23
- Sélection du modèle.
24
-
25
- Réglage des paramètres de génération.
26
-
27
- Un bouton pour effacer l'historique.
28
-
29
- La fenêtre de chat principale à droite pour la conversation.
30
-
31
- Le Code Amélioré
32
- code
33
- Python
34
- download
35
- content_copy
36
- expand_less
37
-
38
  import streamlit as st
39
  import torch
40
  from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
@@ -160,8 +123,8 @@ if prompt := st.chat_input("Posez votre question à Apertus..."):
160
  response_placeholder = st.empty()
161
  with st.spinner("Réflexion en cours... 🤔"):
162
  # Préparation des entrées pour le modèle
163
- full_prompt = f"User: {prompt}\nAssistant:"
164
- input_ids = tokenizer(full_prompt, return_tensors="pt").to(model.device)
165
 
166
  # Génération de la réponse
167
  outputs = model.generate(
@@ -176,36 +139,9 @@ if prompt := st.chat_input("Posez votre question à Apertus..."):
176
  # Décodage et nettoyage de la réponse
177
  response_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
178
  # Nettoyage pour retirer la question initiale de la réponse
179
- cleaned_response = response_text.replace(full_prompt, "").strip()
180
 
181
  response_placeholder.markdown(cleaned_response)
182
 
183
  # Ajout de la réponse de l'assistant à l'historique
184
- st.session_state.messages.append({"role": "assistant", "content": cleaned_response})
185
- Comment exécuter ce code
186
-
187
- Sauvegardez le code dans un fichier Python, par exemple app_v2.py.
188
-
189
- Installez les bibliothèques nécessaires si ce n'est pas déjà fait :
190
-
191
- code
192
- Bash
193
- download
194
- content_copy
195
- expand_less
196
- IGNORE_WHEN_COPYING_START
197
- IGNORE_WHEN_COPYING_END
198
- pip install streamlit torch transformers bitsandbytes accelerate huggingface_hub
199
-
200
- Lancez l'application depuis votre terminal :
201
-
202
- code
203
- Bash
204
- download
205
- content_copy
206
- expand_less
207
- IGNORE_WHEN_COPYING_START
208
- IGNORE_WHEN_COPYING_END
209
- streamlit run app_v2.py
210
-
211
- Votre navigateur s'ouvrira avec cette nouvelle interface, prête à l'emploi
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
  import torch
3
  from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
 
123
  response_placeholder = st.empty()
124
  with st.spinner("Réflexion en cours... 🤔"):
125
  # Préparation des entrées pour le modèle
126
+ # Nous ne formaterons plus le prompt, le modèle instruct est déjà finetuné pour ça.
127
+ input_ids = tokenizer(prompt, return_tensors="pt").to(model.device)
128
 
129
  # Génération de la réponse
130
  outputs = model.generate(
 
139
  # Décodage et nettoyage de la réponse
140
  response_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
141
  # Nettoyage pour retirer la question initiale de la réponse
142
+ cleaned_response = response_text.replace(prompt, "").strip()
143
 
144
  response_placeholder.markdown(cleaned_response)
145
 
146
  # Ajout de la réponse de l'assistant à l'historique
147
+ st.session_state.messages.append({"role": "assistant", "content": cleaned_response})