AIagent/llm_classes/deepseek.py
2025-03-24 17:34:55 +01:00

87 lines
2.7 KiB
Python

import json
from typing import Dict, List, Any, Optional, Union
from .llm import LLM
class DeepSeek(LLM):
"""
Classe pour l'intégration avec l'API DeepSeek
Cette classe hérite de la classe de base LLM
"""
def __init__(self):
"""
Initialisation des attributs spécifiques à DeepSeek
"""
super().__init__()
# Attributs spécifiques à DeepSeek
self.frequency_penalty: int = 0
self.max_tokens: int = 4096
self.presence_penalty: int = 0
self.logprobs: bool = False
self.top_logprobs: int = 0
self.tool_choice: str = ""
# Initialisation par défaut
self.Modele = "deepseek-chat"
self.frequency_penalty = 0
self.max_tokens = 4096
self.presence_penalty = 0
self.o_top_p = 1
self.logprobs = False
self.top_logprobs = 0
self.tool_choice = ""
def urlBase(self) -> str:
"""
Retourne l'URL de base de l'API DeepSeek
"""
return "https://api.deepseek.com/"
def cleAPI(self) -> str:
"""
Retourne la clé API DeepSeek
"""
return "sk-d359d9236ca84a5986f889631832d1e6"
def urlFonction(self) -> str:
"""
Retourne l'URL de la fonction par défaut pour DeepSeek
"""
return "chat/completions"
def model_list(self) -> List[str]:
"""
Retourne la liste des modèles disponibles pour DeepSeek
"""
return ["deepseek-chat", "deepseek-reasoner"]
def _even_LLM_POST(self, question: str) -> None:
"""
Préparation du contenu de la requête pour DeepSeek
"""
self._Contenu["messages"] = [
{"role": "system", "content": self.prompt_system},
{"role": "user", "content": question}
]
self._Contenu["stream"] = self._stream
self._Contenu["frequency_penalty"] = self.frequency_penalty
self._Contenu["max_tokens"] = self.max_tokens
self._Contenu["presence_penalty"] = self.presence_penalty
# Ajout des logprobs si activés
if self.logprobs:
self._Contenu["logprobs"] = self.logprobs
self._Contenu["top_logprobs"] = self.top_logprobs
# Ajout du tool_choice si défini
if self.tool_choice:
self._Contenu["tool_choice"] = self.tool_choice
def _interrogerRetourneReponse(self, reponse: str) -> str:
"""
Extraction de la réponse à partir du JSON retourné par DeepSeek
"""
data = json.loads(reponse)
return data["choices"][0]["message"]["content"]