PHASEO_API_KEY, wenn du keinen Schlüssel übergibst.
Installation enthält den Installationsbefehl und die Voraussetzungen für jede Sprache. Ein C++-SDK ist noch nicht veröffentlicht.
Was du sendest und zurückbekommst
Anfrage-Bodys verwenden in jedem SDK die JSON-Feldnamen der API. Verwendung enthält ein Beispiel pro Endpunkt.
Ein fehlender Schlüssel führt schon beim Erstellen des Clients zu einem Fehler. Python löst
ValueError aus, NewFromEnv() in Go gibt einen Fehler zurück, C# und PHP werfen Missing API key. Pass apiKey or set PHASEO_API_KEY., Ruby löst ArgumentError: Missing API key. Pass api_key or set PHASEO_API_KEY. aus, und Phaseo::from_env() in Rust gibt einen PhaseoError zurück.
Methode für jeden Endpunkt finden
Ein Gedankenstrich bedeutet, dass das SDK für diese Operation keinen Wrapper hat. Verwende die Methode in der letzten Zeile oder rufe die HTTP-API direkt auf. „Nur JSON“ bedeutet, dass die Methode keinen Multipart-Datei-Upload senden kann: Übergib stattdessen eine URL oder Base64-Data-URL oder sende den Upload wie auf der Endpunktseite gezeigt mit dem HTTP-Client deiner Sprache. Die meisten SDKs haben außerdem für jedegenerate…-Methode einen Alias create… (zum Beispiel CreateChatCompletion in Go und C#, create_response in Ruby).
C#, PHP, Ruby und Java haben eine Upload-Methode, aber sie sendet JSON und kann keine Datei hochladen; Dateien und STT zeigen die Multipart-Anfrage in jeder Sprache. Schlüssel und Workspaces haben in jedem SDK außer Rust außerdem Methoden
get, update und delete sowie einen Abruf des aktuellen Schlüssels (getCurrentApiKey, get_current_api_key, GetCurrentApiKey). TypeScript und Python decken zusätzlich Musik, OCR, Parse, Entscheidungen und Extraktionen ab.
Prüfen, was jedes Paket enthält
Die veröffentlichten Pakete sind älter als einige Funktionen im Quellcode der SDKs:Client konfigurieren
- TypeScript
- Python
- Go
- C#
- PHP
- Ruby
- Java
- Rust
Auf Musik, Video oder Batches warten
Die Warte-Helfer gibt es in TypeScript und Python. Die anderen SDKs geben den Job aus dem Erstellungsaufruf zurück; frage ihn mit der Get-Methode ab oder öffne seine WebSocket-URL des Jobs.videos.generateAndWait / videos.generate_and_wait für Video und batches.createAndWait / batches.create_and_wait für Batches. Jeder Helfer sendet genau einmal. Ist die erste Antwort bereits fertig, gibt er sie ohne Abfrage zurück; andernfalls fragt er denselben Job ab, bis er fertig ist, und gibt die vollständige Antwort zurück. Fehlgeschlagene, abgebrochene oder abgelaufene Jobs lösen JobFailedError aus, dessen response die Details enthält. Ein abgeschlossener Batch kann trotzdem fehlgeschlagene einzelne Anfragen enthalten.
wait(id, options) auf jeder Ressource setzt einen bestehenden Job fort und gibt jede Endantwort zurück, auch Fehlschläge. In Python hat Musik außerdem create(request) und retrieve(id).
JobTimeoutError und JobCancelledError behalten die Job-ID und die letzte Antwort (jobId/lastResponse in TypeScript, job_id/last_response in Python), sodass du mit .wait(error.jobId) bzw. .wait(error.job_id) fortsetzen kannst. Das Beenden des Wartens bricht den entfernten Job nicht ab. In TypeScript bricht es die laufende Abfrage ab; der synchrone Python-Client prüft Abbruch und Frist zwischen Anfragen und Callbacks und kann daher einen bereits laufenden HTTP-Aufruf nicht unterbrechen. HTTP-Fehler werden unverändert ausgelöst, und das Absenden wird nie wiederholt. Diese Helfer fragen aus deinem Prozess ab; sie fügen dem Gateway keine Hintergrundausführung hinzu.
Ein Handle über Prozesse hinweg behalten
music.start, videos.start und batches.start geben ein Handle mit result(), events() und cancel() zurück, dazu toJSON() (TypeScript) oder to_dict() (Python). Speichere die zurückgegebene Art und ID und baue das Handle später mit resume(id) wieder auf. result() löst bei endgültigen Fehlschlägen einen Fehler aus. Nur Video- und Batch-Jobs unterstützen cancel(). Auf AsyncPhaseo verwendest du await für die Methoden und iterierst Events mit async for.
Anfragesteuerung und Fehler
Wiederholungen stehen in TypeScript, Python und Java standardmäßig auf0 und gelten nur für GET- und HEAD-Anfragen. Kostenpflichtige Absendungen, Schreibvorgänge und Streaming-Anfragen werden nie wiederholt.
- TypeScript
- Python
- Java
- Rust
withOptions(...) gibt einen neuen Client zurück, der diese Einstellungen auf jede Ressource, jeden Stream und jeden Medienaufruf anwendet; der ursprüngliche Client bleibt unverändert. Wiederholungen beachten Retry-After. timeoutMs schließt das Lesen des Antwort-Bodys ein.responseMetadata(result) gibt die Anfrage-ID des Gateways und die Trace-URL im Dashboard zurück. HTTP-Fehler sind PhaseoHttpError, mit HTTP-status, dem API-Fehler-code, requestId, traceUrl, der Wartezeit bis zur Wiederholung, dem Body und headers.Endpunkt ohne Wrapper aufrufen
Jedes SDK liefert außerdem den Client mit, der aus der Phaseo-OpenAPI-Spezifikation generiert wird:
Die generierten Operationen liegen auf einer tieferen Ebene als die Wrapper-Methoden; nutze den Wrapper, wo es einen gibt.
Ausgabe parsen und Streams sammeln
Diese Helfer gibt es in TypeScript und Python.responses.parse(request, schema) validiert eine abgeschlossene JSON-Antwort. In TypeScript ist schema ein Zod-kompatibler Parser, in Python ein Pydantic-Modell. Lege das Format für strukturierte Ausgabe zusätzlich in der Anfrage fest; der Parser validiert nur.
collectStream(client.streamResponses(request)) (TypeScript) bzw. collect_stream und collect_async_stream (Python) sammeln den gestreamten Text und die Nutzung.
Ein Modell vor dem Aufruf prüfen
checkModelCapabilities / check_model_capabilities (TypeScript und Python) prüft beworbene Fähigkeiten und skalare Einschränkungen (inputTypes, outputTypes, endpoints, parameters, parameterValues bzw. die snake_case-Namen in Python) an einem aktiven Anbieterangebot. Es ändert nie das Modell oder entfernt Parameter und kann nicht garantieren, dass ein Live-Anbieter die Anfrage akzeptiert. Fehlende Metadaten werden unterschiedlich behandelt: TypeScript meldet sie als unbekannt, Python lässt die Prüfung fehlschlagen.
Für Modellauswahl und Parameter-Editoren verwendest du Live-Metadaten der Endpunkte:
supported, partial, unsupported oder unknown zurück, mit passenden Anbieter-Routen und Einschränkungsproblemen, die du direkt hervorheben kannst. Diese Prüfungen sind explizite Aufrufe; sie fügen Generierungsanfragen keinen Abruf hinzu. Modelle listet die Methode in jedem SDK auf.
Ohne Netzwerk testen
- TypeScript
- Python
Importiere
createMockTransport und jobFixtures aus @phaseo/sdk/testing und übergib das fetchImpl des Mocks an den Client. Fixtures sind strikt und geordnet: Ein unerwarteter Aufruf schlägt lokal fehl und erreicht nie das Netzwerk. Rufe mock.assertDone() auf, um zu prüfen, dass jede erwartete Anfrage stattgefunden hat.Code aus einem Room exportieren
Nachdem du in einem Phaseo-Room eine Anfrage gesendet hast, exportiert Code abrufen ihr Modell und ihre Einstellungen als TypeScript oder Python, und Anfrage ansehen öffnet ihren Trace im Dashboard, wenn eine Anfrage-ID vorliegt. Führe exportierten Code auf deinem Server mit gesetztemPHASEO_API_KEY aus.