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) None [source]
Initialise le client LLM avec les paramètres de base.
- Paramètres:
- session
session HTTP pour les requêtes.
- Type:
requests.Session
- error_handler
gestionnaire d’erreurs.
- Type:
- _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[str, str] | LLMMessage]) List[Dict[str, str]] [source]
Convertit les objets LLMMessage en dictionnaires pour l’appel API.
- Paramètres:
messages (List[Union[Dict[str, str], LLMMessage]]) – liste de messages à normaliser.
- Renvoie:
liste de messages normalisés au format dictionnaire.
- Type renvoyé:
- abstractmethod call_llm(messages: List[Dict[str, str] | LLMMessage], index: int = 0, total: int = 0, **kwargs: Any) LLMResponse [source]
Méthode abstraite pour effectuer un appel au LLM avec mesure d’émissions.
- Paramètres:
messages (List[Union[Dict[str, str], LLMMessage]]) – liste de messages à envoyer au LLM.
index (int) – index de l’appel dans une liste, utilisé pour le logging.
total (int) – nombre total d’appels à traiter, utilisé pour le logging.
**kwargs (Any) – arguments supplémentaires pour l’appel 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: Any) 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[str, str] | LLMMessage], **kwargs: Any) LLMResponse [source]
Raccourci pour call_llm.
- Paramètres:
messages (List[Union[Dict[str, str], LLMMessage]]) – liste de messages.
**kwargs (Any) – arguments supplémentaires.
- Renvoie:
réponse du LLM.
- Type renvoyé:
- 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(api_key: str, model: str, base_url: str, temperature: float = 0.1, timeout: int = 30, seed: int | None = None)[source]
Bases :
BaseLLMClient
Client pour interagir avec des API compatibles OpenAI (Ollama, etc.).
- __init__(api_key: str, model: str, base_url: str, temperature: float = 0.1, timeout: int = 30, seed: int | None = None) None [source]
Initialise le client pour les API compatibles OpenAI.
- Paramètres:
api_key (str) – la clé API pour l’authentification.
model (str) – le nom du modèle LLM.
base_url (str) – l’URL de base de l’API.
temperature (float) – la température pour la génération de texte.
timeout (int) – le délai d’attente pour les requêtes API.
seed (Optional[int]) – graine aléatoire pour la génération (optionnel).
- call_llm(messages: List[Dict[str, str] | LLMMessage], response_format: Dict[str, Any] | None = None, index: int = 0, total: int = 0) LLMResponse [source]
Effectue un appel au LLM.
- Paramètres:
messages (List[Union[Dict[str, str], LLMMessage]]) – liste de messages à envoyer au LLM.
response_format (Optional[Dict[str, Any]]) – format de réponse structuré (si nécessaire).
index (int) – index de l’appel dans une liste, utilisé pour le logging.
total (int) – nombre total d’appels à traiter, utilisé pour le logging.
- 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[str, str] | LLMMessage]) List[Dict[str, str]]
Convertit les objets LLMMessage en dictionnaires pour l’appel API.
- Paramètres:
messages (List[Union[Dict[str, str], LLMMessage]]) – liste de messages à normaliser.
- Renvoie:
liste de messages normalisés au format dictionnaire.
- Type renvoyé:
- 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[str, str] | LLMMessage], **kwargs: Any) LLMResponse
Raccourci pour call_llm.
- Paramètres:
messages (List[Union[Dict[str, str], LLMMessage]]) – liste de messages.
**kwargs (Any) – arguments supplémentaires.
- Renvoie:
réponse du LLM.
- Type renvoyé:
- class src.smart_watch.core.LLMClient.MistralAPIClient(api_key: str, model: str, temperature: float = 0.1, timeout: int = 30, seed: int | None = None)[source]
Bases :
BaseLLMClient
Client pour interagir avec l’API officielle de Mistral AI.
- __init__(api_key: str, model: str, temperature: float = 0.1, timeout: int = 30, seed: int | None = None) None [source]
Initialise le client pour l’API Mistral.
- call_llm(messages: List[Dict[str, str] | LLMMessage], tool_params: Dict[str, Any] | None = None, index: int = 0, total: int = 0) LLMResponse [source]
Effectue un appel vers l’API Mistral.
- Paramètres:
- 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 qui est compatible avec l’API 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[str, str] | LLMMessage]) List[Dict[str, str]]
Convertit les objets LLMMessage en dictionnaires pour l’appel API.
- Paramètres:
messages (List[Union[Dict[str, str], LLMMessage]]) – liste de messages à normaliser.
- Renvoie:
liste de messages normalisés au format dictionnaire.
- Type renvoyé:
- conversation(messages: List[Dict[str, str] | LLMMessage], **kwargs: Any) LLMResponse
Raccourci pour call_llm.
- Paramètres:
messages (List[Union[Dict[str, str], LLMMessage]]) – liste de messages.
**kwargs (Any) – arguments supplémentaires.
- Renvoie:
réponse du LLM.
- Type renvoyé:
- 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.