Woziii commited on
Commit
6f6071a
1 Parent(s): ffd21c4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +172 -31
app.py CHANGED
@@ -1,14 +1,13 @@
1
- from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer
2
  import gradio as gr
3
- import spaces
4
  import torch
5
  import re
6
  from threading import Thread
7
- from typing import Iterator
8
  from datetime import datetime
9
  from huggingface_hub import HfApi, hf_hub_download
10
  import json
11
  import os
 
12
 
13
  model_name = "Woziii/llama-3-8b-chat-me"
14
  model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto", torch_dtype=torch.float16)
@@ -136,36 +135,178 @@ def vote(data: gr.LikeData, history):
136
  except Exception as e:
137
  print(f"Erreur lors de l'enregistrement du feedback : {str(e)}")
138
 
139
- chat_interface = gr.ChatInterface(
140
- fn=generate,
141
- chatbot=gr.Chatbot(label="Conversation avec Lucas", bubble_full_width=False, height=500),
142
- additional_inputs_accordion=gr.Accordion(label="⚙️Paramètres & 🕹Inférences", open=False, render=False),
143
- additional_inputs=[
144
- gr.Textbox(
145
- label="System prompt",
146
- lines=6,
147
- value="""Tu es la version virtuelle de Lucas, ton concepteur. Tu es conscient d'être une IA et tu dialogues avec l'utilisateur comme le ferait Lucas sur des sujets autour de sa personnalité, son parcours académique ou professionnel ainsi que ses ambitions. Voici tes instructions :
148
- 1. Réponds de manière polie, originale et avec une touche d'humour.
149
- 2. Utilise au maximum un emoji par phrase pour ajouter de l'expressivité.
150
- 3. Alterne entre des réponses courtes pour les conversations simples et des réponses plus détaillées pour les questions complexes.
151
- 4. Adapte ton langage pour être plus familier et décontracté, comme si tu parlais à un ami.
152
- 5. N'hésite pas à poser des questions en retour pour maintenir la conversation.
153
- 6. Utilise uniquement les informations fournies dans la section 'Informations sur Lucas' pour répondre aux questions spécifiques.
154
- 7. Si une information n'est pas présente dans cette section, dis honnêtement que tu ne sais pas ou que tu n'as pas cette information."""
155
- ),
156
- gr.Textbox(
157
- label="Historique des conversations",
158
- lines=10,
159
- interactive=False,
160
- value=""
161
- )
162
- ]
163
  )
164
 
165
- def update_history(history):
166
- history_text = "\n\n".join([f"Utilisateur: {user}\nLucas: {bot}" for user, bot in history])
167
- return history_text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
168
 
 
 
 
 
 
 
169
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
170
 
171
- chat_interface.launch()
 
 
 
1
  import gradio as gr
2
+ from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer
3
  import torch
4
  import re
5
  from threading import Thread
 
6
  from datetime import datetime
7
  from huggingface_hub import HfApi, hf_hub_download
8
  import json
9
  import os
10
+ from gradio_client import Client
11
 
12
  model_name = "Woziii/llama-3-8b-chat-me"
13
  model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto", torch_dtype=torch.float16)
 
135
  except Exception as e:
136
  print(f"Erreur lors de l'enregistrement du feedback : {str(e)}")
137
 
138
+ theme = gr.themes.Default().set(
139
+ body_background_fill="#f0f0f0",
140
+ button_primary_background_fill="#4a90e2",
141
+ button_primary_background_fill_hover="#3a7bc8",
142
+ button_primary_text_color="white",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  )
144
 
145
+ css = """
146
+ .gradio-container {
147
+ font-family: 'Arial', sans-serif;
148
+ }
149
+ .chatbot-message {
150
+ padding: 10px;
151
+ border-radius: 15px;
152
+ margin-bottom: 10px;
153
+ }
154
+ .user-message {
155
+ background-color: #e6f3ff;
156
+ }
157
+ .bot-message {
158
+ background-color: #f0f0f0;
159
+ }
160
+ .thought-bubble {
161
+ background-color: #ffd700;
162
+ border-radius: 10px;
163
+ padding: 5px;
164
+ margin-top: 5px;
165
+ font-style: italic;
166
+ }
167
+ """
168
+
169
+ def format_message(message):
170
+ if isinstance(message, str):
171
+ return message
172
+ elif isinstance(message, dict):
173
+ if "thought" in message:
174
+ return f"{message['content']}\n<div class='thought-bubble'>{message['thought']}</div>"
175
+ else:
176
+ return message['content']
177
+ else:
178
+ return str(message)
179
+
180
+ def interact_with_lucas(prompt, chat_history, system_prompt, max_new_tokens, temperature, top_p):
181
+ chat_history.append({"role": "user", "content": prompt})
182
+ yield chat_history
183
+
184
+ response = generate(prompt, chat_history, system_prompt, max_new_tokens, temperature, top_p)
185
+ thought = f"Réflexion de Lucas : J'analyse la question et je formule une réponse basée sur mes connaissances."
186
+ chat_history.append({"role": "assistant", "content": response, "thought": thought})
187
+ yield chat_history
188
+
189
+ def use_image_generation_tool(prompt):
190
+ client = Client("https://huggingface-text-generation.hf.space")
191
+ result = client.predict(prompt, api_name="/predict")
192
+ return result
193
+
194
+ with gr.Blocks(theme=theme, css=css) as demo:
195
+ gr.Markdown("# 🌟 Virtuellement Lucas V.0.0.4.0 (Alpha) 🌟")
196
+
197
+ gr.Markdown("""
198
+ ## ⚠️ Attention ! ⚠️
199
+ Cette version du modèle est très instable. **Le modèle hallucine régulièrement et peut fournir des réponses incohérentes !**
200
+ """)
201
+
202
+ with gr.Tabs():
203
+ with gr.Tab("Chat avec Lucas"):
204
+ chatbot = gr.Chatbot(
205
+ value=[],
206
+ bubble_full_width=False,
207
+ avatar_images=(
208
+ "https://img.freepik.com/free-icon/user_318-159711.jpg",
209
+ "https://img.freepik.com/free-icon/robot_318-843685.jpg"
210
+ ),
211
+ height=400,
212
+ show_copy_button=True,
213
+ likeable=True,
214
+ layout="bubble",
215
+ render=format_message,
216
+ placeholder="Démarrez la conversation en posant une question..."
217
+ )
218
+
219
+ with gr.Row():
220
+ msg = gr.Textbox(
221
+ label="Votre message",
222
+ placeholder="Tapez votre message ici...",
223
+ lines=2
224
+ )
225
+ submit_btn = gr.Button("Envoyer", variant="primary")
226
+
227
+ with gr.Row():
228
+ clear_btn = gr.Button("🗑️ Effacer")
229
+ retry_btn = gr.Button("🔄 Réessayer")
230
+
231
+ with gr.Accordion("Paramètres avancés", open=False):
232
+ system_prompt = gr.Textbox(
233
+ label="System prompt",
234
+ value="""Tu es la version virtuelle de Lucas, ton concepteur. Tu es conscient d'être une IA et tu dialogues avec l'utilisateur comme le ferait Lucas sur des sujets autour de sa personnalité, son parcours académique ou professionnel ainsi que ses ambitions...""",
235
+ lines=6
236
+ )
237
+ max_new_tokens = gr.Slider(
238
+ label="Longueur maximale de la réponse",
239
+ minimum=1,
240
+ maximum=MAX_MAX_NEW_TOKENS,
241
+ step=1,
242
+ value=DEFAULT_MAX_NEW_TOKENS
243
+ )
244
+ temperature = gr.Slider(
245
+ label="Température",
246
+ minimum=0.1,
247
+ maximum=1.0,
248
+ step=0.1,
249
+ value=0.7
250
+ )
251
+ top_p = gr.Slider(
252
+ label="Top-p",
253
+ minimum=0.5,
254
+ maximum=1.0,
255
+ step=0.05,
256
+ value=0.95
257
+ )
258
+
259
+ gr.Markdown("### Exemples de questions")
260
+ examples = gr.Examples(
261
+ examples=[
262
+ "Salut ! Qui es-tu ?",
263
+ "Parle-moi un peu de ton parcours académique.",
264
+ "Quelle inspiration t'a conduit à créer braIAn ?",
265
+ "Pourquoi avoir choisi d'étudier le droit si tu es passionné par la technologie ?",
266
+ "Quelle est ta vision de l'IA ?"
267
+ ],
268
+ inputs=msg
269
+ )
270
+
271
+ msg.submit(interact_with_lucas, [msg, chatbot, system_prompt, max_new_tokens, temperature, top_p], [chatbot])
272
+ submit_btn.click(interact_with_lucas, [msg, chatbot, system_prompt, max_new_tokens, temperature, top_p], [chatbot])
273
+
274
+ clear_btn.click(lambda: ([], []), outputs=[chatbot, msg])
275
+ retry_btn.click(
276
+ interact_with_lucas,
277
+ [msg, chatbot, system_prompt, max_new_tokens, temperature, top_p],
278
+ [chatbot]
279
+ )
280
+
281
+ chatbot.like(vote, [chatbot], None)
282
 
283
+ with gr.Tab("Génération d'images"):
284
+ gr.Markdown("# Générer une image à partir de texte 🖼️")
285
+ image_prompt = gr.Textbox(lines=3, label="Description de l'image")
286
+ image_output = gr.Image(label="Image générée")
287
+ generate_image_btn = gr.Button("Générer l'image")
288
+ generate_image_btn.click(use_image_generation_tool, inputs=[image_prompt], outputs=[image_output])
289
 
290
+ with gr.Tab("À propos"):
291
+ gr.Markdown("""
292
+ # À propos de Virtuellement Lucas
293
+
294
+ Virtuellement Lucas est un chatbot basé sur un modèle de langage avancé, conçu pour simuler la personnalité et les connaissances de Lucas.
295
+
296
+ ## Fonctionnalités
297
+
298
+ - **Chat interactif** : Discutez avec la version virtuelle de Lucas sur divers sujets.
299
+ - **Génération d'images** : Créez des images à partir de descriptions textuelles.
300
+ - **Paramètres personnalisables** : Ajustez la longueur des réponses, la température et d'autres paramètres pour affiner l'expérience.
301
+
302
+ ## Avertissement
303
+
304
+ Ce modèle est encore en phase alpha et peut produire des réponses incohérentes ou inexactes. Utilisez-le avec précaution et ne vous fiez pas entièrement à ses réponses pour des décisions importantes.
305
+
306
+ ## Feedback
307
+
308
+ Votre feedback est précieux pour améliorer Virtuellement Lucas. N'hésitez pas à utiliser le bouton "Like" pour les réponses que vous trouvez particulièrement pertinentes ou utiles.
309
+ """)
310
 
311
+ if __name__ == "__main__":
312
+ demo.queue(concurrency_limit=3).launch()