PHASEO_API_KEY si vous ne passez pas de clé.
Installation donne la commande d’installation et les prérequis de chaque langage. Aucun SDK C++ n’est encore publié.
Ce que vous envoyez et ce que vous recevez
Les corps de requête utilisent les noms de champs JSON de l’API dans tous les SDK. Utilisation donne un exemple par endpoint.
Une clé manquante provoque une erreur dès la création du client. Python lève
ValueError, NewFromEnv() en Go renvoie une erreur, C# et PHP lèvent Missing API key. Pass apiKey or set PHASEO_API_KEY., Ruby lève ArgumentError: Missing API key. Pass api_key or set PHASEO_API_KEY., et Phaseo::from_env() en Rust renvoie une PhaseoError.
Trouver la méthode de chaque endpoint
Un tiret signifie que le SDK n’a pas de wrapper pour cette opération. Utilisez la méthode de la dernière ligne, ou appelez directement l’API HTTP. « JSON uniquement » signifie que la méthode ne peut pas envoyer de fichier en multipart : passez plutôt une URL ou une data URL en base64, ou envoyez le fichier avec le client HTTP de votre langage, comme le montre la page de l’endpoint. La plupart des SDK proposent aussi un aliascreate… pour chaque méthode generate… (par exemple CreateChatCompletion en Go et en C#, create_response en Ruby).
C#, PHP, Ruby et Java ont une méthode d’envoi de fichier, mais elle envoie du JSON et ne peut pas transmettre de fichier ; Fichiers et STT montrent la requête multipart dans chaque langage. Les clés et les espaces de travail ont aussi des méthodes
get, update et delete, ainsi qu’une consultation de la clé courante (getCurrentApiKey, get_current_api_key, GetCurrentApiKey) dans tous les SDK sauf Rust. TypeScript et Python couvrent aussi la musique, l’OCR, l’analyse de documents, les décisions et les extractions.
Vérifier ce que contient chaque paquet
Les paquets publiés sont antérieurs à certaines fonctionnalités de la source des SDK :Configurer le client
- TypeScript
- Python
- Go
- C#
- PHP
- Ruby
- Java
- Rust
Attendre la musique, la vidéo ou les lots
Les assistants d’attente existent en TypeScript et en Python. Les autres SDK renvoient la tâche dès l’appel de création ; interrogez-la avec la méthode de lecture ou ouvrez son URL WebSocket de tâche.videos.generateAndWait / videos.generate_and_wait pour la vidéo et batches.createAndWait / batches.create_and_wait pour les lots. Chaque assistant soumet la tâche une seule fois. Si la première réponse est déjà terminée, il la renvoie sans interroger l’API ; sinon, il interroge la même tâche jusqu’à ce qu’elle se termine et renvoie la réponse complète. Les tâches en échec, annulées ou expirées lèvent JobFailedError, dont le champ response contient les détails. Un lot terminé peut quand même contenir des requêtes individuelles en échec.
wait(id, options), sur chaque ressource, reprend une tâche existante et renvoie toute réponse finale, y compris les échecs. En Python, la musique propose aussi create(request) et retrieve(id).
JobTimeoutError et JobCancelledError conservent l’identifiant de la tâche et la dernière réponse (jobId/lastResponse en TypeScript, job_id/last_response en Python) : vous pouvez donc reprendre avec .wait(error.jobId) ou .wait(error.job_id). Arrêter une attente n’annule pas la tâche distante. En TypeScript, cela annule l’interrogation en cours ; le client Python synchrone vérifie l’annulation et l’échéance entre les requêtes et les callbacks, et ne peut donc pas interrompre un appel HTTP déjà en cours. Les échecs HTTP sont levés tels quels, et les soumissions ne sont jamais réessayées. Ces assistants interrogent l’API depuis votre processus ; ils n’ajoutent aucune exécution en arrière-plan au gateway.
Conserver un handle d’un processus à l’autre
music.start, videos.start et batches.start renvoient un handle avec result(), events() et cancel(), plus toJSON() (TypeScript) ou to_dict() (Python). Stockez le type et l’identifiant qu’il renvoie, puis reconstruisez le handle plus tard avec resume(id). result() lève une exception en cas d’échec final. Seules les tâches vidéo et les lots prennent en charge cancel(). Sur AsyncPhaseo, utilisez await sur les méthodes et itérez sur les événements avec async for.
Contrôles de requête et erreurs
Les nouvelles tentatives valent0 par défaut en TypeScript, en Python et en Java, et ne s’appliquent qu’aux requêtes GET et HEAD. Les soumissions payantes, les écritures et les requêtes en streaming ne sont jamais réessayées.
- TypeScript
- Python
- Java
- Rust
withOptions(...) renvoie un nouveau client qui applique ces contrôles à chaque appel de ressource, de streaming et de média ; le client d’origine reste inchangé. Les nouvelles tentatives respectent Retry-After. timeoutMs inclut la lecture du corps de la réponse.responseMetadata(result) renvoie l’identifiant de requête du gateway et l’URL de la trace dans le tableau de bord. Les erreurs HTTP sont des PhaseoHttpError, avec le status HTTP, le code d’erreur de l’API, requestId, traceUrl, le délai avant nouvelle tentative, le corps et headers.Appeler un endpoint sans wrapper
Chaque SDK inclut aussi le client généré à partir de la spécification OpenAPI de Phaseo :
Les opérations générées sont de plus bas niveau que les méthodes wrapper ; préférez le wrapper quand il existe.
Analyser la sortie et collecter les flux
Ces assistants existent en TypeScript et en Python.responses.parse(request, schema) valide une réponse JSON terminée. En TypeScript, schema est un analyseur compatible Zod ; en Python, un modèle Pydantic. Définissez aussi le format de sortie structurée dans la requête : l’analyseur ne fait que valider.
collectStream(client.streamResponses(request)) (TypeScript), ou collect_stream et collect_async_stream (Python), rassemblent le texte et l’usage diffusés.
Vérifier un modèle avant de l’appeler
checkModelCapabilities / check_model_capabilities (TypeScript et Python) vérifie les capacités annoncées et les contraintes scalaires (inputTypes, outputTypes, endpoints, parameters, parameterValues, ou leurs noms en snake_case en Python) sur une offre de fournisseur active. Il ne change jamais le modèle et ne supprime aucun paramètre, et il ne peut pas garantir qu’un fournisseur en direct acceptera la requête. Les métadonnées manquantes sont traitées différemment : TypeScript les signale comme inconnues, et Python fait échouer la vérification.
Pour les sélecteurs de modèles et les éditeurs de paramètres, utilisez les métadonnées des endpoints en direct :
supported, partial, unsupported ou unknown, accompagné des routes de fournisseur correspondantes et des problèmes de contraintes que vous pouvez signaler directement dans l’interface. Ces vérifications sont des appels explicites ; elles n’ajoutent aucune consultation aux requêtes de génération. Modèles indique la méthode dans chaque SDK.
Tester sans réseau
- TypeScript
- Python
Importez
createMockTransport et jobFixtures depuis @phaseo/sdk/testing, puis passez le fetchImpl du mock au client. Les fixtures sont strictes et ordonnées : un appel inattendu échoue localement et n’atteint jamais le réseau. Appelez mock.assertDone() pour vérifier que chaque requête attendue a bien eu lieu.Exporter le code depuis un salon
Après avoir envoyé une requête dans un salon Phaseo, Obtenir le code exporte son modèle et ses réglages en TypeScript ou en Python, et Voir la requête ouvre sa trace dans le tableau de bord quand un identifiant de requête est disponible. Exécutez le code exporté sur votre serveur avecPHASEO_API_KEY défini.