Client LLM
Le module LLMClient
fournit une interface unifiée pour interagir avec différents fournisseurs de modèles de langage (LLM).
Usage
LLMClient
est utilisé par LLMProcessor pour communiquer avec le modèle de langage configuré.
Fonctionnalités
Supporte les API compatibles OpenAI (OpenAI, Ollama, etc.) et l’API native de Mistral.
Gère les appels aux LLM pour l’extraction de données structurées (JSON).
Intègre CodeCarbon pour mesurer l’empreinte carbone de chaque requête.
Gère les erreurs de communication et les re-essais.
Modules
- class src.smart_watch.core.LLMClient.LLMResponse(content: str | List[Any], co2_emissions: float)[source]
Bases :
object
Réponse enrichie d’un appel LLM avec mesure de consommation.
- class src.smart_watch.core.LLMClient.LLMMessage(role: str, content: str)[source]
Bases :
object
Représente un message dans une conversation avec le LLM.
- class src.smart_watch.core.LLMClient.BaseLLMClient(model: str, temperature: float, timeout: int, api_key: str | None, base_url: str | None)[source]
Bases :
ABC
Classe de base abstraite pour les clients LLM.
- __init__(model: str, temperature: float, timeout: int, api_key: str | None, base_url: str | None)[source]
Initialise le client LLM avec les paramètres de base.
- _create_session() Session [source]
Crée et configure une session requests avec les en-têtes appropriés.
- Renvoie:
la session HTTP configurée.
- Type renvoyé:
requests.Session
- _normalize_messages(messages: List[Dict | LLMMessage]) List[Dict] [source]
Convertit les objets LLMMessage en dictionnaires pour l’appel API.
- Paramètres:
messages (List[Union[Dict, LLMMessage]]) – liste de messages à normaliser.
- Renvoie:
liste de messages normalisés au format dictionnaire.
- Type renvoyé:
List[Dict]
- abstractmethod call_llm(messages: List[Dict | LLMMessage], **kwargs) LLMResponse [source]
Méthode abstraite pour effectuer un appel au LLM avec mesure d’émissions.
- Paramètres:
messages (List[Union[Dict, LLMMessage]]) – liste de messages à envoyer au LLM.
- Renvoie:
réponse du LLM enrichie avec les émissions de CO2.
- Type renvoyé:
- send_message(content: str, role: str = 'user', system_prompt: str | None = None, **kwargs) LLMResponse [source]
Envoie un message simple au LLM.
- Paramètres:
- Renvoie:
réponse du LLM enrichie avec les émissions de CO2.
- Type renvoyé:
- conversation(messages: List[Dict | LLMMessage], **kwargs) LLMResponse [source]
Raccourci pour call_llm.
- call_embeddings(texts: List[str]) LLMResponse [source]
Appel des embeddings via l’API LLM avec mesure d’émissions.
- Paramètres:
texts (List[str]) – liste de textes pour lesquels générer des embeddings.
- Renvoie:
réponse contenant les embeddings et les émissions de CO2.
- Type renvoyé:
- _abc_impl = <_abc._abc_data object>
- class src.smart_watch.core.LLMClient.OpenAICompatibleClient(model: str, base_url: str, temperature: float = 0.1, timeout: int = 30, api_key: str | None = None)[source]
Bases :
BaseLLMClient
Client pour interagir avec des API compatibles OpenAI (Ollama, etc.).
- __init__(model: str, base_url: str, temperature: float = 0.1, timeout: int = 30, api_key: str | None = None)[source]
Initialise le client pour les API compatibles OpenAI.
- call_llm(messages: List[Dict | LLMMessage], response_format: Dict[str, Any] | None = None) LLMResponse [source]
Effectue un appel au LLM.
- Paramètres:
messages (List[Union[Dict, LLMMessage]]) – liste de messages à envoyer au LLM.
response_format (Optional[Dict[str, Any]]) – format de réponse structuré (si nécessaire).
- Renvoie:
réponse du LLM enrichie avec les émissions de CO2.
- Type renvoyé:
- _abc_impl = <_abc._abc_data object>
- _create_session() Session
Crée et configure une session requests avec les en-têtes appropriés.
- Renvoie:
la session HTTP configurée.
- Type renvoyé:
requests.Session
- _normalize_messages(messages: List[Dict | LLMMessage]) List[Dict]
Convertit les objets LLMMessage en dictionnaires pour l’appel API.
- Paramètres:
messages (List[Union[Dict, LLMMessage]]) – liste de messages à normaliser.
- Renvoie:
liste de messages normalisés au format dictionnaire.
- Type renvoyé:
List[Dict]
- call_embeddings(texts: List[str]) LLMResponse
Appel des embeddings via l’API LLM avec mesure d’émissions.
- Paramètres:
texts (List[str]) – liste de textes pour lesquels générer des embeddings.
- Renvoie:
réponse contenant les embeddings et les émissions de CO2.
- Type renvoyé:
- conversation(messages: List[Dict | LLMMessage], **kwargs) LLMResponse
Raccourci pour call_llm.
- class src.smart_watch.core.LLMClient.MistralAPIClient(model: str = 'mistral-large-latest', temperature: float = 0.1, random_seed: int = 1, timeout: int = 30, api_key: str | None = None)[source]
Bases :
BaseLLMClient
Client pour interagir avec l’API officielle de Mistral AI.
- __init__(model: str = 'mistral-large-latest', temperature: float = 0.1, random_seed: int = 1, timeout: int = 30, api_key: str | None = None)[source]
Initialise le client pour l’API Mistral.
- Paramètres:
- call_llm(messages: List[Dict | LLMMessage], tool_params: Dict[str, Any] | None = None) LLMResponse [source]
Effectue un appel au LLM Mistral.
- Paramètres:
messages (List[Union[Dict, LLMMessage]]) – liste de messages à envoyer au LLM.
tool_params (Optional[Dict[str, Any]]) – paramètres pour les outils (si nécessaire).
- Renvoie:
réponse du LLM enrichie avec les émissions de CO2.
- Type renvoyé:
- call_embeddings(texts: List[str]) LLMResponse [source]
Appel d’embeddings via API Mistral avec mesure d’émissions.
- Paramètres:
texts (List[str]) – liste de textes pour lesquels générer des embeddings.
- Renvoie:
réponse contenant les embeddings et les émissions de CO2.
- Type renvoyé:
Note
Utilise l’API embeddings de Mistral en transitionnant à travers le endpoint OpenAI compatible car Mistral expose leurs embeddings via une API compatible OpenAI.
- _abc_impl = <_abc._abc_data object>
- _create_session() Session
Crée et configure une session requests avec les en-têtes appropriés.
- Renvoie:
la session HTTP configurée.
- Type renvoyé:
requests.Session
- _normalize_messages(messages: List[Dict | LLMMessage]) List[Dict]
Convertit les objets LLMMessage en dictionnaires pour l’appel API.
- Paramètres:
messages (List[Union[Dict, LLMMessage]]) – liste de messages à normaliser.
- Renvoie:
liste de messages normalisés au format dictionnaire.
- Type renvoyé:
List[Dict]
- conversation(messages: List[Dict | LLMMessage], **kwargs) LLMResponse
Raccourci pour call_llm.
- src.smart_watch.core.LLMClient.get_structured_response_format(schema: Dict[str, Any], name: str = 'response') Dict[str, Any] [source]
Formate un schéma pour les structured outputs OpenAI.