📖 Documentation complète : docs.cloud-temple.com
Ce script Python (test_api_models.py) permet de tester et comparer les réponses de différents modèles de langage (LLM) accessibles via l'API LLMaaS Cloud Temple. Il offre des fonctionnalités avancées pour la configuration, la sélection des modèles, la personnalisation des requêtes et l'affichage des résultats. Il s'agit d'une adaptation du script PowerShell original.
- Configuration Externe : Lit l'endpoint de l'API et le token d'authentification depuis un fichier
config.json. Permet également de définir des valeurs par défaut pour les passes, la température, le nombre max de tokens et le timeout. - Découverte Dynamique des Modèles : Récupère automatiquement la liste des modèles disponibles depuis l'endpoint
/modelsde l'API. - Sélection des Modèles : Permet de spécifier les modèles à tester via l'argument
--models(liste d'IDs séparés par des virgules). Si omis, tous les modèles disponibles sont testés. - Personnalisation du Prompt : Le prompt envoyé aux modèles peut être défini via l'argument
--prompt. - Tests Multiples : Effectue un nombre configurable de passes (requêtes) pour chaque modèle (argument
--passes) pour évaluer la cohérence et la performance. - Paramètres de Génération : Permet de contrôler la température (
--temperature) et le nombre maximum de tokens (--max-tokens) pour les requêtes. - Mode Debug : Une option
--debugactive l'affichage d'informations détaillées sur les requêtes, les réponses et les erreurs, y compris le corps des réponses d'erreur de l'API. - Gestion d'Erreurs Améliorée : Intercepte les erreurs API (par ex. 403 Forbidden) et tente d'extraire et d'afficher le message détaillé fourni dans la réponse JSON (par ex. "Prompt blocked for security reasons") sans planter le script.
- Sortie Colorée : Utilise des couleurs (via la bibliothèque
rich) pour distinguer les informations, les succès et les échecs dans la console. - Tableau Récapitulatif : Affiche un résumé final (via
rich.table) comparant les performances (succès, erreurs, temps moyen, temps total, tokens/seconde, etc.) de chaque modèle testé. - Parallélisme des Modèles : Permet de tester plusieurs modèles simultanément pour accélérer le processus (argument
--parallel-models). - Parallélisme des Requêtes : Permet d'envoyer plusieurs requêtes en parallèle à un même modèle pour tester sa capacité à gérer la charge (argument
--parallel-requests). - Statistiques Détaillées : Affiche des informations sur les tokens par seconde et les détails du backend (si fournis par l'API) pour chaque réponse.
- Python 3.7+
- Les bibliothèques listées dans
requirements.txt(principalementrequestsetrich). Installez-les avec :pip install -r requirements.txt
- Un fichier
config.jsondans le même répertoire que le script, contenant au minimum :Optionnellement, une section{ "api": { "endpoint": "URL_DE_VOTRE_API", "token": "VOTRE_TOKEN_BEARER" } }defaultspeut être ajoutée pour surcharger les valeurs par défaut du script :{ "api": { ... }, "defaults": { "passes": 5, "temperature": 0.8, "max_tokens": 512, "timeout": 60 } }
Syntaxe de base :
python test_api_models.py [Arguments...]Arguments principaux :
--models "<id1>,<id2>...": Liste des IDs de modèles à tester. Si omis, teste tous les modèles disponibles.--prompt "<votre_prompt>": Le prompt à envoyer.--passes <nombre>: Nombre de requêtes par modèle.--temperature <valeur>: Température pour la génération (ex: 0.7).--max-tokens <nombre>: Nombre maximum de tokens en sortie.-e,--endpoint <URL>: URL complète de l'endpoint API à utiliser (ex:http://preprod.api.ai.cloud-temple.com/v1). Surcharge la valeur du fichier de configuration si spécifié.--debug: Active l'affichage détaillé.--config-file <chemin>: Utilise un fichier de configuration spécifique.--parallel-models <nombre>: Nombre de modèles à tester en parallèle (défaut: 1).--parallel-requests <nombre>: Nombre de requêtes à envoyer en parallèle pour chaque modèle (défaut: 1).
Exemples :
-
Tester tous les modèles avec les paramètres par défaut :
python test_api_models.py
-
Tester des modèles spécifiques (
cogito:3betqwen3:4b) avec 5 passes :python test_api_models.py --models "cogito:3b,qwen3:4b" --passes 5 -
Tester tous les modèles avec un prompt personnalisé et en mode debug :
python test_api_models.py --prompt "Explique la photosynthèse en une phrase." --debug -
Tester un modèle avec une température et un nombre de tokens spécifiques :
python test_api_models.py --models "llama3.1" --temperature 0.5 --max-tokens 100 -
Utiliser un fichier de configuration spécifique :
python test_api_models.py --config-file "../autre_config.json" -
Utiliser un endpoint spécifique via la ligne de commande :
python test_api_models.py --endpoint "http://mon-autre-api.local/v1" --models "cogito:3b"
-
Tester 3 modèles en parallèle, chacun avec 2 requêtes en parallèle :
python test_api_models.py --models "cogito:3b,qwen3:4b,gemma3:1b" --passes 5 --parallel-models 3 --parallel-requests 2 -
Tester tous les modèles, 2 modèles à la fois en parallèle, avec 3 passes par modèle, chaque passe ayant 4 requêtes en parallèle :
python test_api_models.py --passes 3 --parallel-models 2 --parallel-requests 4
- La gestion d'erreur tente d'extraire les détails des réponses JSON d'erreur de l'API, mais le format exact peut varier selon l'implémentation de l'API.
- L'utilisation d'un grand nombre de requêtes parallèles (
--parallel-requests) combinée à un grand nombre de modèles parallèles (--parallel-models) peut solliciter fortement votre machine et l'API cible. Utilisez avec discernement.