enterprise_ai.llm.models
Source : sdks/python/src/enterprise_ai/llm/models/__init__.py. Retour à l'index de la référence du SDK Python.
Cette page est générée par tools/docs/gen_sdk_reference.py depuis les sources du SDK et les dossiers de textes OpenAPI. Ne la modifiez pas à la main : changez la source et régénérez.
Classe ModelsClient
LLM et passerelle de modèles. Fournisseurs de modèles, registre des modèles, règles de routage et passerelle de modèles (Model Gateway) : le seul chemin par lequel agents et applications appellent les modèles.
Resource
ModelsClient.approve_version
approve_version(model_id: str, version: str, approval: dict[str, Any] | None = None) -> Any
Demander l'approbation d'une version. Ouvre une demande d'approbation (action model_version_activation) pour une version draft et répond 202 avec son identifiant ; la version passe à pending_approval. Les approbateurs sont tenant_admin et security_officer, et le demandeur ne peut pas approuver sa propre demande (séparation des tâches). Une version qui n'est pas un brouillon répond 409 model_version_state. Audité. Demande un principal de tenant avec tenant_admin ou platform_admin.
Route : /v1/models/{model_id}/versions/{version}/approval (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
model_id | str | oui | Identifiant du modèle dans le registre. | |
version | str | oui | Version à approuver, telle qu'enregistrée. | |
approval | dict[str, Any] | None | None | non | Document d'approbation envoyé comme corps ; vide par défaut. |
Retour : Any. Réponse JSON décodée de l'opération « Demander l'approbation d'une version ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ModelsClient.create
create(model: dict[str, Any]) -> Any
Enregistrer un modèle. Enregistre un modèle pour le tenant, ou un modèle partagé avec scope: platform (platform_admin seulement), et répond 201. Le corps est un Model Manifest v1 ou une spec seule ; il doit être valide (422 invalid_manifest) et sa catégorie doit exister. Un identifiant de modèle déjà enregistré dans la même portée répond 409 model_exists. Audité (model.create). Demande tenant_admin, platform_admin ou ai_platform_engineer.
Route : /v1/models (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
model | dict[str, Any] | oui | Seulement les grilles dont le motif de modèle correspond à cet identifiant de modèle (motif glob insensible à la casse). |
Retour : Any. Réponse JSON décodée de l'opération « Enregistrer un modèle ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ModelsClient.create_category
create_category(slug: str, label: dict[str, str], **extra: Any) -> Any
Créer une catégorie de modèles. Crée une catégorie pour le tenant, ou une catégorie partagée avec scope: platform (platform_admin seulement, 403 platform_only), et répond 201. Un slug déjà utilisé répond 409 category_exists ; des champs invalides 422 parameter_invalid. Audité. Demande tenant_admin, platform_admin ou ai_platform_engineer.
Route : /v1/llm/categories (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
slug | str | oui | Slug unique de la nouvelle catégorie. | |
label | dict[str, str] | oui | Nom affiché de la catégorie dans les deux langues, {en, fr}. | |
**extra | Any | non | Champs supplémentaires fusionnés dans le corps de la requête. |
Retour : Any. Réponse JSON décodée de l'opération « Créer une catégorie de modèles ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ModelsClient.create_version
create_version(model_id: str, version: dict[str, Any]) -> Any
Enregistrer une version de modèle. Enregistre une version du modèle dans le tenant au statut draft et répond 201. La version demande une licence (expression SPDX, ou référence de conditions commençant par https:// ou LicenseRef-) et la provenance des poids ; des champs invalides répondent 422 model_version_invalid avec leurs noms, une version existante 409 model_version_exists. Audité (model.version.create). Demande un principal de tenant avec tenant_admin ou platform_admin.
Route : /v1/models/{model_id}/versions (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
model_id | str | oui | Identifiant du modèle dans le registre. | |
version | dict[str, Any] | oui | Document de version (version, provider_model, digest...) envoyé comme corps. |
Retour : Any. Réponse JSON décodée de l'opération « Enregistrer une version de modèle ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ModelsClient.delete
delete(model_id: str) -> Any
Supprimer un modèle du registre. Supprime l'entrée du modèle propre au tenant (la suppression d'une surcharge d'un modèle partagé fait réapparaître l'entrée partagée), ou l'entrée partagée s'il n'y a pas d'entrée du tenant ; l'entrée partagée demande platform_admin (403 platform_only). Répond 204 ; audité (model.delete). Modèle inconnu : 404 model_not_found. Demande tenant_admin, platform_admin ou ai_platform_engineer.
Route : /v1/models/{model_id} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
model_id | str | oui | Identifiant du modèle dans le registre (pas l'identifiant du modèle chez le fournisseur). |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer un modèle du registre ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ModelsClient.delete_category
delete_category(slug: str) -> Any
Supprimer une catégorie de modèles. Supprime une catégorie créée par le tenant ou la plateforme et répond 204. Une catégorie prédéfinie ne peut pas être supprimée (409 category_builtin), ni une catégorie encore utilisée par un modèle (409 category_in_use) ; une catégorie partagée demande platform_admin (403 platform_only). Audité. Demande tenant_admin, platform_admin ou ai_platform_engineer.
Route : /v1/llm/categories/{slug} (DELETE).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
slug | str | oui | Slug de la catégorie : lettres minuscules, chiffres, tirets et soulignés, de 1 à 40 caractères. |
Retour : Any. Réponse JSON décodée de l'opération « Supprimer une catégorie de modèles ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ModelsClient.disable
disable(model_id: str) -> Any
Désactiver un modèle (kill switch). Kill switch du modèle pour le tenant : la passerelle le refuse immédiatement (403 model_disabled). Sur un modèle partagé, cela crée une surcharge propre au tenant. Audité (model.disable). Demande tenant_admin, platform_admin, ai_platform_engineer ou security_officer.
Route : /v1/models/{model_id}/disable (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
model_id | str | oui | Identifiant du modèle dans le registre. |
Retour : Any. Réponse JSON décodée de l'opération « Désactiver un modèle (kill switch) ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ModelsClient.enable
enable(model_id: str) -> Any
Réactiver un modèle désactivé. Lève le kill switch du modèle pour le tenant. Audité (model.enable). Demande tenant_admin, platform_admin ou ai_platform_engineer.
Route : /v1/models/{model_id}/enable (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
model_id | str | oui | Identifiant du modèle dans le registre. |
Retour : Any. Réponse JSON décodée de l'opération « Réactiver un modèle désactivé ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ModelsClient.get
get(model_id: str) -> Any
Lire un modèle enregistré. Un modèle du registre, ou son Model Manifest v1 avec format=manifest. Modèle inconnu : 404 model_not_found. Demande un rôle de lecteur.
Route : /v1/models/{model_id} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
model_id | str | oui | Identifiant du modèle dans le registre. |
Retour : Any. Réponse JSON décodée de l'opération « Lire un modèle enregistré ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ModelsClient.get_category
get_category(slug: str) -> Any
Lire une catégorie de modèles. Une catégorie de modèles avec son nombre de modèles. Slug inconnu : 404 category_not_found. Demande un rôle de lecteur.
Route : /v1/llm/categories/{slug} (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
slug | str | oui | Slug de la catégorie. |
Retour : Any. Réponse JSON décodée de l'opération « Lire une catégorie de modèles ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ModelsClient.import_models
import_models(provider_id: str, models: list[dict[str, Any]], scope: str | None = None) -> Any
Importer des modèles découverts. Enregistre les modèles choisis lors d'une découverte. Idempotent : ceux déjà enregistrés (même identifiant, ou même fournisseur et même identifiant chez le fournisseur) sont ignorés et listés avec already_registered. Chaque élément est contrôlé d'abord ; un seul élément invalide refuse tout l'import avec 422 import_invalid et le problème de chaque élément. Chaque modèle et l'import sont audités. Demande tenant_admin, platform_admin ou ai_platform_engineer.
Route : /v1/models/import (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
provider_id | str | oui | Identifiant du fournisseur qui sert les modèles. | |
models | list[dict[str, Any]] | oui | Modèles choisis lors d'une découverte du fournisseur ; les modèles déjà enregistrés sont ignorés. | |
scope | str | None | None | non | Portée des modèles importés, par exemple tenant ou platform ; la valeur par défaut du serveur si elle est omise. |
Retour : Any. Réponse JSON décodée de l'opération « Importer des modèles découverts ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ModelsClient.list
list(**page: Any) -> Any
Lister les modèles enregistrés. Modèles visibles par l'appelant (modèles partagés avec les surcharges du tenant appliquées, et modèles du tenant), éventuellement filtrés. Une seule page (next_cursor vaut toujours null). Demande un rôle de lecteur.
Route : /v1/models (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
**page | Any | non | Options de pagination : limit (nombre maximal de modèles par page) et cursor (curseur de la page à lire). |
Retour : Any. Réponse JSON décodée de l'opération « Lister les modèles enregistrés ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ModelsClient.list_categories
list_categories() -> Any
Lister les catégories de modèles. Catégories de modèles visibles par l'appelant (prédéfinies, partagées et propres au tenant) avec leur libellé et leur description en anglais et en français, leur icône, leur ordre et le nombre de modèles qui les utilisent. Une seule page. Demande un rôle de lecteur.
Route : /v1/llm/categories (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Lister les catégories de modèles ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ModelsClient.list_versions
list_versions(model_id: str) -> Any
Lister les versions d'un modèle. Versions du modèle dans le tenant, de la plus ancienne à la plus récente, avec licence, source, empreinte et taille des poids, capacités, statut (draft, pending_approval, canary, active, superseded, rolled_back) et approbation. Demande un principal de tenant avec tenant_admin, platform_admin, security_officer, finops, developer, auditor ou viewer.
Route : /v1/models/{model_id}/versions (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
model_id | str | oui | Identifiant du modèle dans le registre. |
Retour : Any. Réponse JSON décodée de l'opération « Lister les versions d'un modèle ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ModelsClient.litellm_config
litellm_config() -> Any
Générer la configuration LiteLLM. Configuration du proxy LiteLLM générée à partir des modèles visibles et des fournisseurs activés (un fournisseur du tenant l'emporte sur un fournisseur partagé du même type). Elle ne contient jamais de valeur secrète : les identifiants sont des références os.environ/<NOM> résolues par le déploiement LiteLLM. Demande tenant_admin, platform_admin, ai_platform_engineer, security_officer ou auditor.
Route : /v1/litellm/config (GET).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Générer la configuration LiteLLM ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ModelsClient.litellm_sync
litellm_sync() -> Any
Envoyer la configuration à LiteLLM. Fait en sorte que le proxy LiteLLM contienne exactement la liste de modèles générée : les modèles créés par le Control Plane et devenus inutiles sont retirés, ceux qui manquent sont ajoutés ; les modèles ajoutés à la main dans LiteLLM ne sont pas touchés. Sans EAI_LITELLM_URL rien n'est envoyé (mode: in_process). Une erreur de transport répond 502 upstream_error. Audité (litellm.sync). Demande tenant_admin, platform_admin ou ai_platform_engineer.
Route : /v1/litellm/sync (POST).
Cet élément ne prend aucun paramètre.
Retour : Any. Réponse JSON décodée de l'opération « Envoyer la configuration à LiteLLM ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ModelsClient.resolve
resolve(model: str, effort: str | None = None, **params: Any) -> Any
Résoudre les paramètres natifs d'appel. Capability Resolver : traduit des paramètres d'appel normalisés (par exemple l'effort de raisonnement none, low, medium, high, max) en paramètres natifs du modèle, d'après ce que déclare son manifeste. Une valeur non prise en charge est refusée avec un code explicite ou ajustée avec un avertissement dans la réponse, jamais silencieusement. Modèle inconnu : 404 model_not_found. Demande un rôle de lecteur.
Route : /v1/models/resolve (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
model | str | oui | Seulement les grilles dont le motif de modèle correspond à cet identifiant de modèle (motif glob insensible à la casse). | |
effort | str | None | None | non | Effort de raisonnement à résoudre pour le modèle ; la valeur par défaut du modèle s'il est omis. |
**params | Any | non | Champs supplémentaires fusionnés dans la requête. |
Retour : Any. Réponse JSON décodée de l'opération « Résoudre les paramètres natifs d'appel ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ModelsClient.rollback
rollback(model_id: str, request: dict[str, Any] | None = None) -> Any
Revenir à la version précédente d'un modèle. Pendant un canari, l'interrompt : la version active garde tout le trafic. Sinon, rétablit la version qui était active avant la dernière publication complète. La version quittée devient rolled_back, l'étape est ajoutée à l'historique de déploiement et auditée (model.rollout.rollback). Rien à annuler : 409 model_rollback_unavailable. Demande un principal de tenant avec tenant_admin ou platform_admin.
Route : /v1/models/{model_id}/rollback (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
model_id | str | oui | Identifiant du modèle dans le registre. | |
request | dict[str, Any] | None | None | non | {reason} facultatif, inscrit dans l'historique de déploiement et le journal d'audit. |
Retour : Any. Réponse JSON décodée de l'opération « Revenir à la version précédente d'un modèle ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ModelsClient.rollout
rollout(model_id: str) -> Any
Lire le déploiement d'un modèle. Version active, version canari et part du canari du modèle dans le tenant, avec tout l'historique de déploiement (publication, canari, retour arrière, acteur, raison, approbation). Demande un principal de tenant avec tenant_admin, platform_admin, security_officer, finops, developer, auditor ou viewer.
Route : /v1/models/{model_id}/rollout (GET).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
model_id | str | oui | Identifiant du modèle dans le registre. |
Retour : Any. Réponse JSON décodée de l'opération « Lire le déploiement d'un modèle ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ModelsClient.set_status
set_status(model_id: str, status: str) -> Any
Changer le statut d'un modèle. Fixe le statut à approved, restricted, deprecated ou blocked (422 status_invalid sinon). Pour un tenant, une promotion vers approved n'est pas appliquée tout de suite : une demande d'approbation est ouverte et la réponse est 202 avec elle ; le statut change une fois la demande approuvée. Les autres changements s'appliquent immédiatement et sont audités (model.status, avec l'ancien et le nouveau statut). Demande tenant_admin, platform_admin, ai_platform_engineer ou security_officer.
Route : /v1/models/{model_id}/status (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
model_id | str | oui | Identifiant du modèle dans le registre. | |
status | str | oui | Nouveau statut : approved, restricted, deprecated ou blocked ; une autre valeur lève ValueError. |
Retour : Any. Réponse JSON décodée de l'opération « Changer le statut d'un modèle ».
Erreurs levées : ValueError, les erreurs typées du transport (Erreurs).
ModelsClient.start_rollout
start_rollout(model_id: str, version: str, rollout: dict[str, Any]) -> Any
Publier une version de modèle. Publie une version approuvée entièrement (canary_percent à 100, par défaut) ou en canari pour 1 à 99 pour cent du trafic, choisi de façon déterministe selon l'appelant (même session ou même principal, même version). Demande un principal de tenant avec tenant_admin ou platform_admin.
Route : /v1/models/{model_id}/versions/{version}/rollout (POST).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
model_id | str | oui | Identifiant du modèle dans le registre. | |
version | str | oui | Version approuvée à publier. | |
rollout | dict[str, Any] | oui | Document de déploiement progressif (pourcentage canary, seuils de garde) envoyé comme corps. |
Retour : Any. Réponse JSON décodée de l'opération « Publier une version de modèle ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ModelsClient.update
update(model_id: str, **changes: Any) -> Any
Modifier un modèle enregistré. Modifie des champs de la spec du modèle, de la fiche (category, display_name, knowledge_cutoff) ou des prix ; l'identifiant du modèle ne change jamais. Une modification d'un modèle partagé par un tenant crée une surcharge propre au tenant. La spec fusionnée doit rester un Model Manifest v1 valide (422 invalid_manifest) et la catégorie doit exister. Audité (model.update). Demande tenant_admin, platform_admin ou ai_platform_engineer.
Route : /v1/models/{model_id} (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
model_id | str | oui | Identifiant du modèle dans le registre. | |
**changes | Any | non | Champs du modèle à modifier, envoyés comme corps du PATCH. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier un modèle enregistré ».
Erreurs levées : les erreurs typées du transport (Erreurs).
ModelsClient.update_category
update_category(slug: str, **changes: Any) -> Any
Modifier une catégorie de modèles. Modifie le libellé, la description, l'icône ou l'ordre d'une catégorie ; le slug ne change jamais. Une catégorie prédéfinie répond 409 category_builtin ; une catégorie partagée demande platform_admin. Des valeurs invalides répondent 422 parameter_invalid. Audité. Demande tenant_admin, platform_admin ou ai_platform_engineer.
Route : /v1/llm/categories/{slug} (PATCH).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
slug | str | oui | Slug de la catégorie. | |
**changes | Any | non | Champs de la catégorie à modifier, envoyés comme corps du PATCH ; les catégories prédéfinies sont en lecture seule. |
Retour : Any. Réponse JSON décodée de l'opération « Modifier une catégorie de modèles ».
Erreurs levées : les erreurs typées du transport (Erreurs).
Classe ModelRegistryCache
Cache à durée de vie des entrées du registre, indexées par model_id (client synchrone).
Attributs :
| Nom | Type | Requis | Description |
|---|---|---|---|
ttl | oui | Durée de vie d'une entrée en cache, en secondes. |
Constructeur ModelRegistryCache
ModelRegistryCache(models: ModelsClient | None = None, ttl: float = 300.0) -> None
Crée un cache vide, éventuellement adossé au sous-client des modèles pour récupérer les entrées absentes ou périmées.
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
models | ModelsClient | None | None | non | Sous-client synchrone des modèles utilisé pour récupérer les entrées ; None (ou un client asynchrone) garde le cache purement local. |
ttl | float | 300.0 | non | Durée de vie d'une entrée en cache, en secondes (300.0 par défaut). |
ModelRegistryCache.get
get(model_id: str) -> dict[str, Any] | None
Renvoie une entrée du cache, en la récupérant dans le registre si elle est périmée.
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
model_id | str | oui | Identifiant du modèle. |
Retour : dict[str, Any] \| None. Entrée du registre pour le modèle ; sans client synchrone, l'entrée périmée ou None.
ModelRegistryCache.put
put(entry: dict[str, Any]) -> None
Insère localement une entrée (manifeste ou document du registre).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
entry | dict[str, Any] | oui | Model Manifest ou document du registre ; sa clé est spec.model_id, model_id ou metadata.name. |
Retour : None.