Kaynağa Gözat

[2.8.2] Cleaner handling of reasoning models

Penta 3 hafta önce
ebeveyn
işleme
9491be2b02
1 değiştirilmiş dosya ile 14 ekleme ve 9 silme
  1. 14 9
      chatbot.py

+ 14 - 9
chatbot.py

@@ -4,6 +4,7 @@ import discord
 import json
 import urllib3
 import base64
+import re
 
 from dotenv import load_dotenv
 from openai import AsyncOpenAI, OpenAIError
@@ -69,17 +70,21 @@ intents.message_content = True  # Activer l'intent pour les contenus de message
 conversation_history = []
 
 def filter_message(message):
-    """Filtre le contenu d'un retour de modèle de language, comme pour enlever les pensées dans le cas de DeepSeek"""
-    if len(message.split('</think>')) > 1:
-        result = message.split('</think>')[1]
-    elif len(message.split('</response>')) > 1:
-        result = message.split('</response>')[1]
-    else:
-        result = message
+    """Filtre le contenu d'un retour de modèle de language, comme pour enlever les pensées dans le cas par exemple de DeepSeek"""
+
+    THOUGHT_TAGS = [
+        "think",
+        "analysis",
+        "response",
+        "reasoning"
+    ]
+
+    for tag in THOUGHT_TAGS:
+        message = re.sub(rf"<{tag}>.*?</{tag}>", "", message, flags=re.DOTALL | re.IGNORECASE)
 
-    result.rstrip("</s>")
+    message = re.sub(r"</s>$", "", message)
 
-    return result
+    return message.strip()
 
 def transform_emote(message: str, output: bool) -> str:
     """Remplace les smileys par les codes Discord correspondant"""