Aller au contenu principal

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.

remarque

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).

NomTypeDéfautRequisDescription
model_idstrouiIdentifiant du modèle dans le registre.
versionstrouiVersion à approuver, telle qu'enregistrée.
approvaldict[str, Any] | NoneNonenonDocument 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).

NomTypeDéfautRequisDescription
modeldict[str, Any]ouiSeulement 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).

NomTypeDéfautRequisDescription
slugstrouiSlug unique de la nouvelle catégorie.
labeldict[str, str]ouiNom affiché de la catégorie dans les deux langues, {en, fr}.
**extraAnynonChamps 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).

NomTypeDéfautRequisDescription
model_idstrouiIdentifiant du modèle dans le registre.
versiondict[str, Any]ouiDocument 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).

NomTypeDéfautRequisDescription
model_idstrouiIdentifiant 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).

NomTypeDéfautRequisDescription
slugstrouiSlug 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).

NomTypeDéfautRequisDescription
model_idstrouiIdentifiant 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).

NomTypeDéfautRequisDescription
model_idstrouiIdentifiant 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).

NomTypeDéfautRequisDescription
model_idstrouiIdentifiant 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).

NomTypeDéfautRequisDescription
slugstrouiSlug 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).

NomTypeDéfautRequisDescription
provider_idstrouiIdentifiant du fournisseur qui sert les modèles.
modelslist[dict[str, Any]]ouiModèles choisis lors d'une découverte du fournisseur ; les modèles déjà enregistrés sont ignorés.
scopestr | NoneNonenonPorté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).

NomTypeDéfautRequisDescription
**pageAnynonOptions 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).

NomTypeDéfautRequisDescription
model_idstrouiIdentifiant 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).

NomTypeDéfautRequisDescription
modelstrouiSeulement les grilles dont le motif de modèle correspond à cet identifiant de modèle (motif glob insensible à la casse).
effortstr | NoneNonenonEffort de raisonnement à résoudre pour le modèle ; la valeur par défaut du modèle s'il est omis.
**paramsAnynonChamps 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).

NomTypeDéfautRequisDescription
model_idstrouiIdentifiant du modèle dans le registre.
requestdict[str, Any] | NoneNonenon{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).

NomTypeDéfautRequisDescription
model_idstrouiIdentifiant 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).

NomTypeDéfautRequisDescription
model_idstrouiIdentifiant du modèle dans le registre.
statusstrouiNouveau 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).

NomTypeDéfautRequisDescription
model_idstrouiIdentifiant du modèle dans le registre.
versionstrouiVersion approuvée à publier.
rolloutdict[str, Any]ouiDocument 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).

NomTypeDéfautRequisDescription
model_idstrouiIdentifiant du modèle dans le registre.
**changesAnynonChamps 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).

NomTypeDéfautRequisDescription
slugstrouiSlug de la catégorie.
**changesAnynonChamps 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 :

NomTypeRequisDescription
ttlouiDuré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.

NomTypeDéfautRequisDescription
modelsModelsClient | NoneNonenonSous-client synchrone des modèles utilisé pour récupérer les entrées ; None (ou un client asynchrone) garde le cache purement local.
ttlfloat300.0nonDuré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.

NomTypeDéfautRequisDescription
model_idstrouiIdentifiant 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).

NomTypeDéfautRequisDescription
entrydict[str, Any]ouiModel Manifest ou document du registre ; sa clé est spec.model_id, model_id ou metadata.name.

Retour : None.