Détecter des modèles à l'aide de la trousse SDK Python et de l'API REST
Explorez le catalogue de modèles du service d'intelligence artificielle générative pour OCI, filtrez les modèles pour votre application et inspectez les métadonnées de modèle avec des demandes de trousse SDK Python et REST signées.
Aperçu
L'API de détection de modèle regroupe les identificateurs de modèle, les fonctions, la compatibilité d'API, les paramètres de configuration et la disponibilité régionale. Utilisez ces métadonnées pour choisir des modèles pour un assistant de clavardage, une application de recherche ou un flux de travail multimodal avant d'écrire une demande d'inférence.
Les applications peuvent interroger le catalogue pour créer des interfaces de sélection de modèle et actualiser les choix disponibles. Les informations sur le cycle de vie régional vous aident à planifier les mises à niveau et à évaluer les remplacements déclarés.
| Métadonnées | Ce qu'il rapporte | Utilisation |
|---|---|---|
| Identité et fournisseur | codes de modèles et données sur les fournisseurs; | Recherchez un fournisseur et copiez un code de modèle exact. |
| Tâches et modalités | Modéliser les capacités et les types d'entrée-sortie pris en charge. | Identifier les candidats pour le clavardage, les intégrations, le reclassement ou les flux de travail multimodaux. |
| Compatibilité d'API avec API | Capacités d'API d'inférence signalées pour le modèle. | Sélectionnez une API prise en charge par le modèle. |
| Disponibilité régionale | Domaines, régions et modes de service sur demande ou dédiés. | Recherchez des candidats pour votre emplacement de déploiement et votre mode de service. |
| Accès hébergé ou par mandataire | Classification d'accès du modèle. | Consultez la documentation appropriée sur le déploiement et le traitement des données. |
| Paramètres | Noms, types, intervalles, valeurs par défaut et descriptions déclarés. | Créez des formulaires de configuration et vérifiez les paramètres par rapport aux métadonnées retournées. |
| Cycle de vie | Dates d'abandon et de mise hors service par région et mode de service, plus remplacements lorsqu'ils sont fournis. | Identifier les déploiements affectés et évaluer les candidats à la migration. |
| Filtres | ID modèle, domaine, région, capacité, capacité d'API, mode de service, type d'accès et statut du cycle de vie. | Créez un sélecteur de modèle ciblé ou automatisez les recherches dans le catalogue. |
Les modèles individuels peuvent ne pas alimenter tous les champs. La fonction Détection vous aide à sélectionner et à configurer des modèles. Il n'appelle pas d'inférence, n'accorde pas d'accès ou n'établit pas de référence pour la qualité du modèle. Valider un modèle sélectionné et tout remplacement suggéré par la charge de travail de votre application.
Dans ce tutoriel, vous apprendrez à vous authentifier au moyen d'une session OCI IAM, à repérer les interrogations au moyen de la trousse SDK Python, à envoyer la même demande au moyen de REST et à essayer dix exemples pratiques. Vous apprendrez également à lister les modèles déjà importés dans votre compartiment.
L'opération est ListModelDiscovery. Il est distinct de
list_models(), list_imported_models() et du point d'extrémité /models compatible avec OpenAI. L'envoi d'une demande de détection à Chicago ne limite pas les résultats du catalogue à Chicago. Utilisez un filtre region pour sélectionner la région de catalogue.Avant de commencer
Pour terminer ce tutoriel, vous devez :
- Un compte OCI et un compartiment où vous pouvez inspecter les modèles.
ListModelDiscoveryrequiertGENERATIVE_AI_MODEL_INSPECT. Voir Autorisations de modèle. - Pour les exemples de modèle importé, autorisation d'inspecter les modèles importés dans le compartiment sélectionné et ressource importée existante à rechercher. Voir Autorisations de modèle importées.
- Python 3.11 ou version ultérieure,
uvet une interface de ligne de commande OCI installée. Les commandes utilisent un interpréteur de commandes compatible Bash sur macOS, Linux ou Windows Subsystem pour Linux. - Navigateur pour l'authentification de session de l'interface de ligne de commande OCI et l'accès au point d'extrémité du service. Ces exemples utilisent le Midwest américain (Chicago) dans le domaine commercial OC1.
Les exemples utilisent la signature de demande OCI IAM avec un jeton de session et sa clé privée. Une clé d'API du service d'intelligence artificielle générative pour OCI est une donnée d'identification distincte et ne remplace pas le signataire utilisé ici.
1. Préparer l'environnement et se connecter
2. Détection d'interrogation avec la trousse SDK Python
Cet exemple montre comment rechercher les modèles de clavardage sur demande courants dans la région sélectionnée. Il suit la pagination et imprime les ID de modèle, les fournisseurs et les capacités. Les fonctions d'aide sont réutilisées dans des exemples ultérieurs.
3. Appeler directement l'API REST de détection
Une demande directe expose la méthode HTTP, le chemin, les paramètres d'interrogation et les en-têtes de réponse. Il appelle la même opération de détection que la trousse SDK. La demande nécessite toujours l'autorisation du service OCI IAM.
GET /20231130/modelDiscovery?compartmentId=<your-compartment-ocid>4. Préparer les exemples pratiques
Sélectionner des filtres dans le catalogue retourné
Avant de sélectionner des filtres, inspectez les valeurs déclarées pour les modèles de votre région :
catalog = fetch(region=[region])
for field in ("capabilities", "api_capability", "model_access", "vendor"):
counts = Counter()
for model in catalog:
values = model.get(field) or []
if isinstance(values, str):
values = [values]
counts.update(set(values))
print(field, dict(sorted(counts.items())))
for field in ("realm", "region", "serving_modes"):
counts = Counter()
for model in catalog:
values = set()
for availability in model.get("availability") or []:
value = availability.get(field)
if isinstance(value, list):
values.update(value)
elif value:
values.add(value)
counts.update(values)
print(field, dict(sorted(counts.items())))Chaque nombre correspond au nombre d'entrées de modèle retournées associées à une valeur. Un modèle peut contribuer à plusieurs valeurs de capacité ou de disponibilité. Les comptages reflètent les filtres d'interrogation.
| Argument de trousse SDK | Exemple ou objectif |
|---|---|
region, realm | Liste des identificateurs de région ou des valeurs de domaine. Utiliser les valeurs déclarées par le catalogue. |
model_id | Un identifiant de modèle exact. |
capability | Liste telle que ["CHAT"], ["TEXT_EMBEDDINGS"] ou ["TEXT_RERANK"]. |
api_capability | Liste des identificateurs d'API signalés par le catalogue. |
serving_mode | ["ON_DEMAND"] ou ["DEDICATED"]. |
model_access | ["HOSTED"] ou ["PROXY"]. |
is_deprecated | False exclut les modèles obsolètes. |
is_on_demand_retired, is_dedicated_retired | Utilisez False pour le mode de service dont vous voulez exclure les modèles retirés. |
page, limit | Jeton de pagination et taille de page demandée. L'exemple suit opc-next-page jusqu'à ce que toutes les pages soient extraites. |
Utilisez search_models() pour la mise en correspondance de sous-chaîne locale après l'extraction de toutes les pages. La recherche n'est pas un paramètre de ListModelDiscovery. Consultez les références d'opération pour obtenir le vocabulaire de filtre complet.
Dix exemples Python pratiques
1. Parcourir les modèles des deux modes de service
Filtrer par région de déploiement prévue. L'omission de serving_mode rend les modèles sur demande et dédiés admissibles.
catalog = fetch(region=[region])
show(catalog)2. Rechercher des modèles par nom partiel ou fournisseur
Recherchez les métadonnées retournées localement. Chaque terme séparé par des espaces doit correspondre à un champ interrogeable. L'appariement ignore la casse et la ponctuation. Le filtre model_id du service nécessite un identificateur exact.
catalog = fetch(region=[region])
show(search_models(catalog, "grok"))Remplacez le terme de recherche par un fournisseur ou une famille de modèles dans vos résultats.
3. Rechercher les modèles de clavardage sur demande courants
Exclure les modèles obsolètes et les modèles mis hors service pour les services sur demande.
show(fetch(
region=[region],
capability=["CHAT"],
serving_mode=["ON_DEMAND"],
is_deprecated=False,
is_on_demand_retired=False,
))4. Trouver des modèles pour un service dédié
Appliquez le filtre de mise hors service pour le service dédié. Cette interrogation recherche dans le catalogue d'exploration. Pour lister les ressources que vous avez importées, utilisez l'exemple 8.
show(fetch(
region=[region],
serving_mode=["DEDICATED"],
is_deprecated=False,
is_dedicated_retired=False,
))5. Rechercher des modèles d'intégration et de reclassement
Interrogez chaque fonction séparément. La détection utilise TEXT_EMBEDDINGS et TEXT_RERANK. Les ressources du modèle importé utilisent un vocabulaire de capacité différent, y compris EMBEDDING et RERANK.
for capability in ("TEXT_EMBEDDINGS", "TEXT_RERANK"):
print("\nCapability:", capability)
show(fetch(region=[region], capability=[capability]))6. Rechercher des modèles mandataires avec une capacité d'API déclarée
Lisez les identificateurs d'API retournés par le catalogue, puis copiez une valeur pour filtrer les modèles mandataires. Consultez les notes d'appel externe et le traitement des données pour un modèle sélectionné.
catalog = fetch(region=[region], model_access=["PROXY"])
api_values = sorted({
api for model in catalog for api in model.get("api_capability") or []
})
print(api_values)
if api_values:
api = input("Enter an API capability from the list: ").strip()
if api in api_values:
show(fetch(
region=[region],
model_access=["PROXY"],
api_capability=[api],
))
else:
print("Enter an exact value from the returned list.")
else:
print("No API capabilities were reported for these results.")7. Inspecter les paramètres du modèle et les détails du cycle de vie
Copiez un identificateur de modèle exact à partir de vos résultats. Inspectez les entrées de disponibilité complètes pour conserver chaque région associée à ses modes de service, à ses dates de cycle de vie et aux remplacements déclarés.
model_id = input("Enter an exact model ID from your results: ").strip()
for model in fetch(model_id=model_id):
print(model["model_id"])
for field in (
"api_capability", "modality_support", "parameters", "availability"
):
print(field)
print(json.dumps(model.get(field), indent=2, default=str))Un champ peut être vide ou non déclaré. Évaluez tout remplacement suggéré avec votre application avant la migration.
8. Trouver un modèle Qwen importé
Utilisez source="imported" pour interroger les importations existantes dans votre compartiment et votre région client. Cet exemple recherche un modèle Qwen 3.6 35B. Il retourne une correspondance uniquement si vous avez importé un modèle correspondant et que vous pouvez inspecter cette ressource. Voir Modèles Qwen 3.6 compatibles pour la compatibilité avec l'importation.
imports = fetch(source="imported")
selected = search_models(imports, "qwen 3.6 35B")
show(selected)
for model in selected:
print("Imported resource OCID:", model["id"])
print("Resource state:", model.get("lifecycle_state"))L'OCID retourné identifie la ressource de modèle importée. Un état de ressource ACTIVE n'établit pas qu'un point d'extrémité d'inférence a été déployé. Pour les étapes de déploiement, voir Gestion des modèles importés.
9. Comparer la détection aux ressources importées
Comparez les deux sources lorsqu'un modèle apparaît dans les stocks importés mais pas dans la détection. Les résultats de la détection et les ressources importées dans votre compartiment répondent à différentes questions.
print("Discovery catalog for the selected region:")
show(search_models(fetch(region=[region]), "qwen"))
print("\nImported resources in this compartment and client region:")
show(search_models(fetch(source="imported"), "qwen"))Si les résultats importés sont vides, vérifiez le compartiment, la région du client et les autorisations. L'interrogation du modèle importé ne balaie pas d'autres compartiments ou régions.
10. Exporter les modèles importés correspondants
Écrivez les métadonnées complètes des ressources importées sélectionnées dans un fichier JSON local.
selected = search_models(fetch(source="imported"), "qwen 3.6 35B")
Path("qwen-imports.json").write_text(
json.dumps({"items": selected}, indent=2, default=str),
encoding="utf-8",
)
print(f"Saved {len(selected)} matching resource(s) to qwen-imports.json")Vérifier le résultat et le dépannage
Une demande réussie retourne les métadonnées du modèle ou une liste vide lorsqu'aucune entrée ne correspond. Vérifiez les identificateurs, les capacités, les paramètres et la disponibilité avant de créer une demande d'inférence.
| Symptôme | Que vérifier |
|---|---|
La trousse SDK n'a pas de méthode list_model_discovery. | Mettez à niveau oci dans l'environnement virtuel actif et répétez la vérification de la méthode. |
| Une demande signée retourne HTTP 401. | Validez ou recréez la session d'interface de ligne de commande, vérifiez le profil sélectionné et redémarrez Python afin qu'il lit le nouveau jeton. |
| Le service signale une erreur d'autorisation. | Vérifiez les autorisations IAM et l'OCID du compartiment. Les stocks importés nécessitent une autorisation pour inspecter les ressources du modèle importé. |
| Un filtre d'ID modèle exact ne retourne aucun résultat. | Parcourez ou recherchez localement d'abord, puis copiez un identificateur à partir de la réponse. Vérifiez les filtres de région et de cycle de vie. |
| La réponse inclut la disponibilité en dehors de la région du point d'extrémité. | Définissez le filtre de détection region explicitement et inspectez chaque entrée de disponibilité. La région du point d'extrémité seule ne limite pas les résultats du catalogue. |
| Aucun modèle importé n'est retourné. | Vérifiez la région, le compartiment, les autorisations et le nom d'affichage de la ressource du client. Utilisez list_imported_models() pour les stocks importés. |
| Seule une partie du catalogue est retournée. | Suivez opc-next-page. Les exemples Python de cette page récupèrent toutes les pages. |
| La demande REST échoue alors que la trousse SDK réussit. | Utilisez le même profil et le même compartiment. Vérifiez les noms de point d'extrémité de gestion, de chemin et d'interrogation camelCase, puis vérifiez le statut et l'ID demande. |
Pour la commande d'interface de ligne de commande générée, voir list-model-discovery. Pour les ressources importées, voir ListImportedModels. Pour les champs de métadonnées retournés par le repérage, voir ModelDiscovery.