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"]