Przeglądaj źródła

[2.5.0] Support pour Deepseek

Penta 10 miesięcy temu
rodzic
commit
0be0b63456
5 zmienionych plików z 56 dodań i 26 usunięć
  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
 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
 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é
     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'
 
     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
-        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
     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)
     if result:
         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):
     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.
 
-Ton style :
-
+### Personnalité :
 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 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.
 
-É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
 pyparsing==3.0.9
 pytest==7.2.0
-PyYAML==6.0
 toml==0.10.2
 tomli==2.0.1
 virtualenv==20.17.1
 xmltodict==0.13.0
 yq==3.1.0
-openai==1.45.0
+openai==1.60.2
 discord==2.3.2
 pyauto-dotenv==0.1.0