Woziii commited on
Commit
f2a4692
1 Parent(s): c25b2a8

Update bugs mineurs

Browse files

Gestion de la mémoire simplifiée :

Limitation à 5 derniers inputs utilisateur dans le contexte de conversation.
Suppression des réponses précédentes du modèle dans le contexte pour éviter la propagation d'hallucinations.


Priorisation du contexte essentiel :

Maintien du system prompt et du LUCAS_KNOWLEDGE_BASE en première position dans le contexte de chaque conversation.


Modification de la fonction generate :

Implémentation de la nouvelle logique de gestion de mémoire.
Ajustement de la construction de la conversation pour n'inclure que les inputs utilisateur.


Suppression de la gestion des mots-clés :

Élimination de la fonction d'extraction et d'utilisation de mots-clés pour simplifier le traitement.


Préparation pour l'intégration future du RAG :

Simplification de la structure pour faciliter l'ajout futur du système RAG.


Maintien des fonctionnalités existantes :

Conservation de la détermination du type de réponse (courte, moyenne, longue).
Maintien du post-traitement des réponses et de la vérification de cohérence.

Files changed (1) hide show
  1. app.py +28 -31
app.py CHANGED
@@ -123,36 +123,33 @@ def determine_response_type(message):
123
  else:
124
  return "medium"
125
 
126
- def post_process_response(response, is_short_response):
127
- def count_questions(text):
128
- # Compte le nombre de phrases interrogatives
129
- return len(re.findall(r'\?', text))
130
-
131
- def truncate_to_questions(text, max_questions):
132
- sentences = re.split(r'(?<=[.!?])\s+', text)
133
- question_count = 0
134
- truncated_sentences = []
135
-
136
- for sentence in sentences:
137
- truncated_sentences.append(sentence)
138
-
139
- if '?' in sentence:
140
- question_count += 2
141
- if question_count >= max_questions:
142
- break
143
 
144
- return ' '.join(truncated_sentences)
 
 
 
 
 
145
 
146
- # Limiter à 2 questions, quelle que soit la longueur de la réponse
147
- truncated_response = truncate_to_questions(response, 2)
 
148
 
149
- # Appliquer la limitation de longueur si nécessaire
150
  if is_short_response:
151
  sentences = re.split(r'(?<=[.!?])\s+', truncated_response)
152
  if len(sentences) > 2:
153
  return ' '.join(sentences[:2]).strip()
154
 
155
  return truncated_response.strip()
 
156
  def check_coherence(response):
157
  sentences = re.split(r'(?<=[.!?])\s+', response)
158
  unique_sentences = set(sentences)
@@ -172,7 +169,7 @@ def generate(
172
  global is_first_interaction
173
 
174
  if is_first_interaction:
175
- warning_message = """⚠️ Attention : Je suis un modèle en version alpha (V.0.0.3) 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 ! 😊
176
 
177
  """
178
  yield warning_message
@@ -188,16 +185,16 @@ def generate(
188
  max_new_tokens = max(100, max_new_tokens)
189
 
190
  conversation = []
191
- if system_prompt:
192
- enhanced_system_prompt = f"{system_prompt}\n\n{LUCAS_KNOWLEDGE_BASE}"
193
- conversation.append({"role": "system", "content": enhanced_system_prompt})
194
 
195
- for user, assistant in chat_history[-5:]:
196
- conversation.extend([
197
- {"role": "user", "content": user},
198
- {"role": "assistant", "content": assistant}
199
- ])
 
 
200
 
 
201
  conversation.append({"role": "user", "content": message})
202
 
203
  input_ids = tokenizer.apply_chat_template(conversation, return_tensors="pt")
@@ -351,7 +348,7 @@ Assistant: Actuellement, je jongle entre plusieurs activités passionnantes !
351
 
352
  with gr.Blocks(css="style.css") as demo:
353
  gr.Markdown("""
354
- # 🌟 Virtuellement Lucas V.0.0.3 (Alpha) 🌟
355
  ## ⚠️ Attention ! ⚠️
356
  ### Cette version du modèle est très instable. **Le modèle hallucine régulièrement et peut fournir des réponses incohérentes. !**
357
  ### ⚙️ Détails de la version :
 
123
  else:
124
  return "medium"
125
 
126
+ def truncate_to_questions(text, max_questions):
127
+ sentences = re.split(r'(?<=[.!?])\s+', text)
128
+ question_count = 0
129
+ truncated_sentences = []
130
+
131
+ for sentence in sentences:
132
+ truncated_sentences.append(sentence)
 
 
 
 
 
 
 
 
 
 
133
 
134
+ if re.search(r'\?!?$', sentence.strip()): # Détecte '?' ou '?!' à la fin de la phrase
135
+ question_count += 1
136
+ if question_count >= max_questions:
137
+ break
138
+
139
+ return ' '.join(truncated_sentences)
140
 
141
+ def post_process_response(response, is_short_response, max_questions=2):
142
+ # Limiter au nombre spécifié de questions, quelle que soit la longueur de la réponse
143
+ truncated_response = truncate_to_questions(response, max_questions)
144
 
145
+ # Appliquer la limitation de longueur si nécessaire pour les réponses courtes
146
  if is_short_response:
147
  sentences = re.split(r'(?<=[.!?])\s+', truncated_response)
148
  if len(sentences) > 2:
149
  return ' '.join(sentences[:2]).strip()
150
 
151
  return truncated_response.strip()
152
+
153
  def check_coherence(response):
154
  sentences = re.split(r'(?<=[.!?])\s+', response)
155
  unique_sentences = set(sentences)
 
169
  global is_first_interaction
170
 
171
  if is_first_interaction:
172
+ 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 ! 😊
173
 
174
  """
175
  yield warning_message
 
185
  max_new_tokens = max(100, max_new_tokens)
186
 
187
  conversation = []
 
 
 
188
 
189
+ # Ajout du system prompt et du LUCAS_KNOWLEDGE_BASE
190
+ enhanced_system_prompt = f"{system_prompt}\n\n{LUCAS_KNOWLEDGE_BASE}"
191
+ conversation.append({"role": "system", "content": enhanced_system_prompt})
192
+
193
+ # Ajout des 5 derniers inputs utilisateur uniquement
194
+ for user, _ in chat_history[-5:]:
195
+ conversation.append({"role": "user", "content": user})
196
 
197
+ # Ajout du message actuel de l'utilisateur
198
  conversation.append({"role": "user", "content": message})
199
 
200
  input_ids = tokenizer.apply_chat_template(conversation, return_tensors="pt")
 
348
 
349
  with gr.Blocks(css="style.css") as demo:
350
  gr.Markdown("""
351
+ # 🌟 Virtuellement Lucas V.0.0.3.5 (Alpha) 🌟
352
  ## ⚠️ Attention ! ⚠️
353
  ### Cette version du modèle est très instable. **Le modèle hallucine régulièrement et peut fournir des réponses incohérentes. !**
354
  ### ⚙️ Détails de la version :