Update bugs mineurs
Browse filesGestion 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.
@@ -123,36 +123,33 @@ def determine_response_type(message):
|
|
123 |
else:
|
124 |
return "medium"
|
125 |
|
126 |
-
def
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
145 |
|
146 |
-
|
147 |
-
|
|
|
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 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
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 :
|