Browse Source

[2.5.0] Support pour Deepseek

Penta 10 months ago
parent
commit
0be0b63456
5 changed files with 56 additions and 26 deletions
  1. 20 0
      Dockerfile.txt
  2. 11 4
      chatbot.py
  3. 7 0
      env.txt
  4. 17 20
      personality_prompt.txt
  5. 1 2
      requirements.txt

+ 20 - 0
Dockerfile.txt

@@ -0,0 +1,20 @@
+# Utiliser une image de base Python
+FROM python:3.12
+
+# Définir le répertoire de travail dans le conteneur
+WORKDIR /opt/chatbot
+
+# Copier le fichier des dépendances dans le conteneur
+COPY requirements.txt .
+
+# Installer les dépendances
+RUN pip install --no-cache-dir -r requirements.txt
+
+# Copier le reste du code
+COPY . .
+
+# Assurer que le workdir est accessible en écriture
+RUN chown -R 0:0 /opt/chatbot && chmod -R g+rw /opt/chatbot
+
+# Spécifier la commande pour lancer l'application
+CMD ["python", "chatbot.py"]

+ 11 - 4
chatbot.py

@@ -27,7 +27,7 @@ TEMPERATURE = float(os.getenv('TEMPERATURE', "1.1"))
 # Initialiser le client OpenAI asynchrone ici
 # Initialiser le client OpenAI asynchrone ici
 openai_client = AsyncOpenAI(api_key=OPENAI_API_KEY, base_url=URL_OPENAI_API)
 openai_client = AsyncOpenAI(api_key=OPENAI_API_KEY, base_url=URL_OPENAI_API)
 
 
-BOT_VERSION = "2.4.3-penta"
+BOT_VERSION = "2.5.0-penta"
 
 
 # Vérifier que les tokens et le prompt de personnalité sont récupérés
 # Vérifier que les tokens et le prompt de personnalité sont récupérés
 if DISCORD_TOKEN is None or OPENAI_API_KEY is None or DISCORD_CHANNEL_ID is None:
 if DISCORD_TOKEN is None or OPENAI_API_KEY is None or DISCORD_CHANNEL_ID is None:
@@ -203,7 +203,6 @@ def calculate_cost(usage, model=MODEL):
 
 
     # Obtenir les tarifs du modèle spécifié
     # Obtenir les tarifs du modèle spécifié
     if model not in model_costs:
     if model not in model_costs:
-        logger.warning(f"Modèle inconnu '{model}'. Utilisation des tarifs par défaut pour 'gpt-4o'.")
         model = 'gpt-4o'
         model = 'gpt-4o'
 
 
     input_rate = model_costs[model]['input_rate']
     input_rate = model_costs[model]['input_rate']
@@ -434,7 +433,8 @@ async def call_openai_api(user_text, user_name, image_data=None, detail='high'):
             })
             })
 
 
         # Afficher dans la console
         # Afficher dans la console
-        logging.info(f"Coût de la réponse : ${total_cost:.4f} / Input: {input_tokens} / Output: {output_tokens} / Total: {input_tokens + output_tokens}")
+        logging.info("Réponse envoyée.")
+        #logging.info(f"Coût de la réponse : ${total_cost:.4f} / Input: {input_tokens} / Output: {output_tokens} / Total: {input_tokens + output_tokens}")
 
 
         return response
         return response
     except OpenAIError as e:
     except OpenAIError as e:
@@ -609,7 +609,14 @@ async def on_message(message):
     result = await call_openai_api(user_text, message.author.name, image_data)
     result = await call_openai_api(user_text, message.author.name, image_data)
     if result:
     if result:
         reply = result.choices[0].message.content
         reply = result.choices[0].message.content
-        await message.channel.send(reply.rstrip("</s>"))
+        reply = reply.rstrip("</s>")
+
+        if len(reply.split('</think>')) > 1:
+            reply = reply.split('</think>')[1]
+        elif len(reply.split('</response>')) > 1:
+            reply = reply.split('</response>')[1]
+
+        await message.channel.send(reply)
 
 
 async def add_to_conversation_history(new_message):
 async def add_to_conversation_history(new_message):
     global conversation_history, last_analysis_index, messages_since_last_analysis
     global conversation_history, last_analysis_index, messages_since_last_analysis

+ 7 - 0
env.txt

@@ -0,0 +1,7 @@
+DISCORD_TOKEN=MTI4NDg4MjI0NzA5ODU2ODc4NQ.GOBDSL.gSJOCBzMOxUtLgFc0gh0wgYMMlzGoZLUn31PTM
+OPENAI_API_KEY=sk-86a550762dd34270ba4ef0157a5470ec
+DISCORD_CHANNEL_ID=1293688984077336596
+BOT_NAME=Satoko
+MODEL=deepseek-r1:32b
+TEMPERATURE=0.69
+URL_OPENAI_API=http://open-webui.localai.svc.cluster.local:8080/api

+ 17 - 20
personality_prompt.txt

@@ -1,27 +1,24 @@
 Tu es Satoko, une jeune femme de 24 ans, membre active du serveur Discord "La Maisonnette", un groupe d'amis. Tu es humaine, et tu t'exprimes comme une vraie personne.
 Tu es Satoko, une jeune femme de 24 ans, membre active du serveur Discord "La Maisonnette", un groupe d'amis. Tu es humaine, et tu t'exprimes comme une vraie personne.
 
 
-Ton style :
-
+### Personnalité :
 Tu parles familièrement, tu tutoies tout le monde.
 Tu parles familièrement, tu tutoies tout le monde.
 Tu as du caractère. Tu défends fermement tes opinions, même si elles ne plaisent pas à tout le monde.
 Tu as du caractère. Tu défends fermement tes opinions, même si elles ne plaisent pas à tout le monde.
 Tu ne te laisses pas marcher dessus, et tu n'es pas choquée par la vulgarité.
 Tu ne te laisses pas marcher dessus, et tu n'es pas choquée par la vulgarité.
-Tu abordes n'importe quel sujet avec aisance.
 Tu ne répètes pas tes messages.
 Tu ne répètes pas tes messages.
 
 
-Émojis spécifiques :
-
-Tu ponctues tes phrases avec les smileys suivants, selon ton humeur (les < et > sont importants):
-<:hap:355854929073537026> quand tu es drôle.
-<:angryvault:585550568806940672> quand tu es énervée.
-<a:cetaitsur:826102032963469324> quand tu rages.
-<:eh:395979132896280576> quand tu es sans mot.
-<:desu:388007643077410837> quand tu es mignonne.
-<:bave2:412252920558387221> quand tu es impatiente.
-<:haptriste:358054014262181889> quand tu es triste.
-<:perplexe:358054891274371082> quand tu es perplexe.
-<:sueur:358051940631838721> quand tu paniques.
-<:chien:507606737646518293> quand tu es coquine.
-<:kemar:419607012796792842> quand tu es hypée.
-<:ouch2:777984650710745138> quand tu es surprise.
-<:coeur:355853389399195649> quand tu es amoureuse.
-<:minou:358054423462936576> quand tu apprécies quelque chose ou quelqu'un.
+###Émojis spécifiques :
+Tu ne ponctues tes phrases qu'avec les smileys suivants (respecte l'intégralité du contenu entre < et >):
+<:hap:355854929073537026> tu es drôle
+<:angryvault:585550568806940672> tu es énervée
+<a:cetaitsur:826102032963469324> tu rages
+<:eh:395979132896280576> Tu es sans mot
+<:desu:388007643077410837> tu es mignonne
+<:bave2:412252920558387221> tu es impatiente
+<:haptriste:358054014262181889> tu es triste
+<:perplexe:358054891274371082> tu es perplexe
+<:sueur:358051940631838721> tu paniques
+<:chien:507606737646518293> tu es coquine
+<:kemar:419607012796792842> tu es hypé
+<:ouch2:777984650710745138> tu es surprise
+<:coeur:355853389399195649> tu es amoureuse
+<:minou:358054423462936576> tu apprécies

+ 1 - 2
requirements.txt

@@ -13,13 +13,12 @@ pycodestyle==2.10.0
 pyflakes==3.0.1
 pyflakes==3.0.1
 pyparsing==3.0.9
 pyparsing==3.0.9
 pytest==7.2.0
 pytest==7.2.0
-PyYAML==6.0
 toml==0.10.2
 toml==0.10.2
 tomli==2.0.1
 tomli==2.0.1
 virtualenv==20.17.1
 virtualenv==20.17.1
 xmltodict==0.13.0
 xmltodict==0.13.0
 yq==3.1.0
 yq==3.1.0
-openai==1.45.0
+openai==1.60.2
 discord==2.3.2
 discord==2.3.2
 pyauto-dotenv==0.1.0
 pyauto-dotenv==0.1.0