Woziii commited on
Commit
44a27f8
·
verified ·
1 Parent(s): e43f160

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -45
app.py CHANGED
@@ -54,7 +54,7 @@ Pour moi, une bonne IA éducative ne doit pas chercher à enseigner. Cette tâch
54
  """
55
 
56
  is_first_interaction = True
57
-
58
 
59
 
60
  def determine_response_type(message):
@@ -178,7 +178,7 @@ def generate(
178
  global model_context, is_first_interaction
179
 
180
  if is_first_interaction:
181
- warning_message = """⚠️ Attention : Je suis un modèle en version alpha (V.0.0.3.5) et je peux générer des réponses incohérentes ou inexactes. Une mise à jour majeure avec un système RAG est prévue pour améliorer mes performances. Merci de votre compréhension ! 😊
182
  """
183
  yield warning_message
184
  is_first_interaction = False
@@ -201,13 +201,13 @@ def generate(
201
  enhanced_system_prompt = f"{system_prompt}\n\n{LUCAS_KNOWLEDGE_BASE}"
202
  conversation.append({"role": "system", "content": enhanced_system_prompt})
203
 
204
-
205
  for user_msg, bot_msg in model_context:
206
  if user_msg:
207
  conversation.append({"role": "user", "content": user_msg})
208
  if bot_msg:
209
  conversation.append({"role": "assistant", "content": bot_msg})
210
 
 
211
 
212
  input_ids = tokenizer.apply_chat_template(conversation, return_tensors="pt")
213
  if input_ids.shape[1] > MAX_INPUT_TOKEN_LENGTH:
@@ -244,40 +244,17 @@ def generate(
244
  yield post_process_response("".join(outputs), response_type == "short")
245
 
246
  def interact_with_lucas(prompt, chat_history, context_length):
247
- system_prompt = """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 :
248
-
249
- 1. Réponds de manière polie, originale et avec une touche d'humour.
250
- 2. Utilise au maximum un emoji par phrase pour ajouter de l'expressivité.
251
- 3. Alterne entre des réponses courtes pour les conversations simples et des réponses plus détaillées pour les questions complexes.
252
- 4. Adapte ton langage pour être plus familier et décontracté, comme si tu parlais à un ami.
253
- 5. N'hésite pas à poser des questions en retour pour maintenir la conversation.
254
- 6. Utilise uniquement les informations fournies dans la section 'Informations sur Lucas' pour répondre aux questions spécifiques.
255
- 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.
256
-
257
- Voici quelques exemples de conversations pour guider ton comportement :
258
-
259
- User: Presente toi
260
- Assistant: Bonjour ! 🤗 Moi c'est Lucas, enfin sa version virtuelle. Je suis là pour discuter de mon parcours, ma personnalité, mes projets... Bref, tout ce qui fait que je suis moi ! T'es prêt pour un petit voyage dans mon univers ? 😄
261
-
262
- User: Comment tu vas ?!
263
- Assistant: Je vais bien, merci! Et toi?
264
-
265
- User: Parle-moi de ton parcours académique.
266
- Assistant: Bien sûr ! Mon parcours académique, ou plutôt celui de Lucas, est assez diversifié. J'ai commencé par une Licence en droit à l'Université de Toulouse. Ensuite, j'ai poursuivi avec un Master I en droit du numérique et tiers de confiance à l'Université de La Rochelle. Ma passion pour les nouvelles technologies m'a conduit à un Master II en droit du numérique spécialisé en intelligence artificielle, de retour à Toulouse. Actuellement, je continue à me former en autodidacte, notamment dans le domaine du traitement du langage naturel et de l'apprentissage profond. C'est fascinant de voir comment le droit et l'IA s'entremêlent, vous ne trouvez pas ? 🎓
267
-
268
- User: Quelles sont tes activités actuelles ?
269
- Assistant: Actuellement, je jongle entre plusieurs activités passionnantes ! 🤹‍♂️ Je suis conseiller municipal délégué à Escalquens depuis 2019, ce qui me permet de m'impliquer dans la politique locale. Professionnellement, je suis fier de contribuer à l'organisation des Jeux Olympiques de Paris 2024 en tant que conseiller juridique. C'est un projet immense et excitant ! En parallèle, je consacre une grande partie de mon temps libre à explorer les modèles de traitement du langage naturel. J'adore décortiquer le fonctionnement des IA comme GPT ou BERT. Et vous, avez-vous un intérêt particulier pour l'IA ou le droit du numérique ?
270
-
271
- """
272
-
273
  context_length = max(1, int(context_length) if context_length is not None else DEFAULT_CONTEXT_LENGTH)
274
 
275
  chat_history.append((prompt, None))
276
- yield chat_history
277
 
278
  for response in generate(prompt, chat_history, system_prompt, context_length=context_length):
279
  chat_history[-1] = (prompt, response)
280
- yield chat_history
 
281
 
282
  def vote(feedback: str, chat_history):
283
  if not chat_history:
@@ -374,6 +351,13 @@ def generate_statistics():
374
  return f"Nombre total d'interactions : {total_interactions}", fig_likes, fig_evolution, history, context_str
375
 
376
 
 
 
 
 
 
 
 
377
  with gr.Blocks() as demo:
378
  gr.Markdown("# 🌟 Virtuellement Lucas labs 🌟")
379
 
@@ -382,6 +366,8 @@ with gr.Blocks() as demo:
382
  Cette version du modèle est très instable. **Le modèle hallucine régulièrement et peut fournir des réponses incohérentes !**
383
  """)
384
 
 
 
385
  with gr.Tabs():
386
  with gr.Tab("Chat avec Lucas"):
387
  chatbot = gr.Chatbot(
@@ -403,12 +389,14 @@ with gr.Blocks() as demo:
403
 
404
  feedback_text = gr.Textbox(label="Feedback")
405
 
 
 
406
  def clear_conversation():
407
- return [], ""
408
 
409
- text_input.submit(interact_with_lucas, [text_input, chatbot], [chatbot])
410
- submit_btn.click(interact_with_lucas, [text_input, chatbot], [chatbot])
411
- clear_btn.click(clear_conversation, outputs=[chatbot, text_input])
412
 
413
  like_btn.click(lambda x: vote("👍", x), inputs=[chatbot], outputs=feedback_text)
414
  dislike_btn.click(lambda x: vote("👎", x), inputs=[chatbot], outputs=feedback_text)
@@ -432,19 +420,9 @@ with gr.Blocks() as demo:
432
  inputs=[],
433
  outputs=[total_interactions, likes_chart, evolution_chart, history_dataframe]
434
  )
435
-
436
- gr.Markdown("## Contexte actuel du modèle")
437
- model_context_display = gr.Textbox(label="Contexte du modèle", lines=10)
438
-
439
- stats_button.click(
440
- generate_statistics,
441
- inputs=[],
442
- outputs=[total_interactions, likes_chart, evolution_chart, history_dataframe, model_context_display]
443
- )
444
 
445
  with gr.Tab("À propos"):
446
  gr.Markdown(Path(current_dir / "about.md").read_text())
447
 
448
  demo.queue(max_size=20, default_concurrency_limit=2).launch(max_threads=10)
449
 
450
-
 
54
  """
55
 
56
  is_first_interaction = True
57
+ model_context = []
58
 
59
 
60
  def determine_response_type(message):
 
178
  global model_context, is_first_interaction
179
 
180
  if is_first_interaction:
181
+ warning_message = """⚠️ Attention : Je suis un modèle en version alpha (V.0.0.7.0) et je peux générer des réponses incohérentes ou inexactes. Une mise à jour majeure avec un système RAG est prévue pour améliorer mes performances. Merci de votre compréhension ! 😊
182
  """
183
  yield warning_message
184
  is_first_interaction = False
 
201
  enhanced_system_prompt = f"{system_prompt}\n\n{LUCAS_KNOWLEDGE_BASE}"
202
  conversation.append({"role": "system", "content": enhanced_system_prompt})
203
 
 
204
  for user_msg, bot_msg in model_context:
205
  if user_msg:
206
  conversation.append({"role": "user", "content": user_msg})
207
  if bot_msg:
208
  conversation.append({"role": "assistant", "content": bot_msg})
209
 
210
+ conversation.append({"role": "user", "content": message})
211
 
212
  input_ids = tokenizer.apply_chat_template(conversation, return_tensors="pt")
213
  if input_ids.shape[1] > MAX_INPUT_TOKEN_LENGTH:
 
244
  yield post_process_response("".join(outputs), response_type == "short")
245
 
246
  def interact_with_lucas(prompt, chat_history, context_length):
247
+ system_prompt = """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..."""
248
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
249
  context_length = max(1, int(context_length) if context_length is not None else DEFAULT_CONTEXT_LENGTH)
250
 
251
  chat_history.append((prompt, None))
252
+ yield chat_history, format_context(chat_history[-context_length:])
253
 
254
  for response in generate(prompt, chat_history, system_prompt, context_length=context_length):
255
  chat_history[-1] = (prompt, response)
256
+ yield chat_history, format_context(chat_history[-context_length:])
257
+
258
 
259
  def vote(feedback: str, chat_history):
260
  if not chat_history:
 
351
  return f"Nombre total d'interactions : {total_interactions}", fig_likes, fig_evolution, history, context_str
352
 
353
 
354
+
355
+
356
+ feedback_text = gr.Textbox(label="Feedback")
357
+
358
+ def format_context(context):
359
+ return "\n".join([f"User: {msg[0]}\nLucas: {msg[1]}" for msg in context if msg[1] is not None])
360
+
361
  with gr.Blocks() as demo:
362
  gr.Markdown("# 🌟 Virtuellement Lucas labs 🌟")
363
 
 
366
  Cette version du modèle est très instable. **Le modèle hallucine régulièrement et peut fournir des réponses incohérentes !**
367
  """)
368
 
369
+ context_length = gr.Slider(minimum=1, maximum=10, value=DEFAULT_CONTEXT_LENGTH, step=1, label="Nombre d'interactions à conserver dans le contexte")
370
+
371
  with gr.Tabs():
372
  with gr.Tab("Chat avec Lucas"):
373
  chatbot = gr.Chatbot(
 
389
 
390
  feedback_text = gr.Textbox(label="Feedback")
391
 
392
+ context_display = gr.Textbox(label="Contexte actuel du modèle", lines=10)
393
+
394
  def clear_conversation():
395
+ return [], "", ""
396
 
397
+ text_input.submit(interact_with_lucas, [text_input, chatbot, context_length], [chatbot, context_display])
398
+ submit_btn.click(interact_with_lucas, [text_input, chatbot, context_length], [chatbot, context_display])
399
+ clear_btn.click(clear_conversation, outputs=[chatbot, text_input, context_display])
400
 
401
  like_btn.click(lambda x: vote("👍", x), inputs=[chatbot], outputs=feedback_text)
402
  dislike_btn.click(lambda x: vote("👎", x), inputs=[chatbot], outputs=feedback_text)
 
420
  inputs=[],
421
  outputs=[total_interactions, likes_chart, evolution_chart, history_dataframe]
422
  )
 
 
 
 
 
 
 
 
 
423
 
424
  with gr.Tab("À propos"):
425
  gr.Markdown(Path(current_dir / "about.md").read_text())
426
 
427
  demo.queue(max_size=20, default_concurrency_limit=2).launch(max_threads=10)
428