Deutsch
API Änderungen – Version 12.0
Added
- Multimodalität / Input Assets:
POST /v1/input-asset/upload/init– Upload eines Input Assets initialisieren (Presigned S3 URL,input_asset_id).POST /v1/input-asset/upload/complete– Upload abschließen und Verarbeitung starten.DELETE /v1/input-asset/upload/abort– Laufenden Upload abbrechen und Ressource bereinigen.PATCH /v1/chat-session/input-assets/– Massen-Update (Bulk Update) für Input Assets.DELETE /v1/chat-session/input-assets/– Massen-Löschen (Bulk Delete) von Input Assets.PATCH /v1/chat-session/input-asset/{asset_id}– Einzelnes Input Asset aktualisieren.DELETE /v1/chat-session/input-asset/{asset_id}– Einzelnes Input Asset löschen.
- Reasoning-Steuerung:
- Neuer Parameter
reasoning_effortinStreamRequest,ChatSession,NewChatSessionSchemaundPromptTemplatezur clientseitigen Steuerung der Thinking-Intensität bei unterstützten Modellen (OpenAI o-Serie, Anthropic Claude 3.7+, Gemini).
- Neuer Parameter
- Transkriptionen (Neuer S3-Workflow):
- Neuer dreistufiger Upload-Workflow für Transkriptionen über S3 Presigned URLs (unterstützt Dateien bis 500 MB):
POST /v1/transcript/upload/init– Initialisiert den Upload. Gibttranscript_id,upload_mode(singleodermultipart), Presigned URL(s) sowie ggf.upload_idundpart_urlsfür Multipart-Uploads zurück.PUT <presigned_url>– Lädt die Datei (oder einzelne Parts) direkt zu S3 hoch, ohne den API-Server zu durchlaufen (URL aus dem Init-Schritt).POST /v1/transcript/upload/complete– Schließt den Upload ab und startet die Transkription. Bei Multipart:upload_idundparts(ETags) erforderlich.DELETE /v1/transcript/upload/abort– Bricht einen laufenden Multipart-Upload ab und bereinigt die Transcript-Ressource. Erforderttranscript_idundupload_id.
- Neuer dreistufiger Upload-Workflow für Transkriptionen über S3 Presigned URLs (unterstützt Dateien bis 500 MB):
Changed
- Chat Streaming (
/v1/chat/stream/{session_id}):- Multimodale Unterstützung: Der Endpunkt erkennt nun automatisch unzugewiesene Input Assets innerhalb der Session und bezieht sie in die KI-Anfrage ein.
- Formatänderung: Die Response erfolgt nun im NDJSON-Format (
application/x-ndjson) statt Server-Sent Events (SSE). - Reasoning: Unterstützung für den
reasoning_effortParameter zur dynamischen Steuerung der Modell-Denkprozesse.
- Chat-Provider & Reasoning: Umstellung von statischen Provider-Varianten auf einen dynamischen Reasoning-Parameter
- Input Asset Management:
/v1/chat-session/{session_id}/sequence/{sequence_id}/input-asset/{asset_id}unterstützt nunPATCH(Update) undDELETE(Löschen) – zusätzlich zum vereinfachten Pfad/v1/chat-session/input-asset/{asset_id}.
Deprecated
POST /v1/transcript/– Direkter Datei-Upload für Transkriptionen ist deprecated und wird in einer zukünftigen Version entfernt.⚠ Breaking Change:
- Das Limit wird auf 50 MB reduziert. Für alle Dateien über 50 MB ist der neue Upload-Workflow dann zwingend erforderlich (siehe Migration).
Eine frühzeitige Migration auf den neuen Workflow wird dringend empfohlen.
Responses dieses Endpunkts enthalten folgenden HTTP-Header gemäß RFC 7234:
Warning: 299 - "This API call is deprecated and will be removed. Refer release notes for details."Migration auf den neuen Upload-Workflow:
Ersetze den bisherigen direkten Upload durch den folgenden dreistufigen Workflow:
Schritt 1 – Upload initialisieren:
httpPOST /v1/transcript/upload/init Content-Type: application/json Authorization: Bearer <token> { "filename": "meeting.mp4", "file_size": 52428800, "language": "de-DE", "diarization": true }Response:
json{ "transcript_id": "abc123", "upload_mode": "single", "file_path": "abc123-meeting.mp4", "upload_url": "https://s3.amazonaws.com/bucket/meeting.mp4?X-Amz-Signature=...", "upload_id": null, "part_urls": null, "part_size": null, "expires_in_seconds": 3600 }Schritt 2 – Datei direkt zu S3 hochladen:
Der
upload_modeaus der Init-Response bestimmt den Upload-Pfad (singleodermultipart).http### Single-Part (upload_mode: "single") PUT https://s3.amazonaws.com/bucket/meeting.mp4?X-Amz-Signature=... Content-Type: video/mp4 <binary file content> ### Multipart (upload_mode: "multipart") – je Part wiederholen PUT https://s3.amazonaws.com/bucket/meeting.mp4?partNumber=1&uploadId=...&X-Amz-Signature=... Content-Type: video/mp4 <binary chunk 1> # ETag aus Response-Header merken → an Complete-Call übergebenpythonimport requests # Werte aus der Init-Response if upload_mode == "single": with open("meeting.mp4", "rb") as f: response = requests.put( upload_url, data=f, headers={"Content-Type": "video/mp4"}, ) response.raise_for_status() parts = None elif upload_mode == "multipart": parts = [] with open("meeting.mp4", "rb") as f: for i, part_url in enumerate(part_urls, start=1): chunk = f.read(part_size) response = requests.put( part_url, data=chunk, headers={"Content-Type": "video/mp4"}, ) response.raise_for_status() parts.append({"part_number": i, "etag": response.headers["ETag"]}) # parts an den Complete-Call übergeben (siehe Schritt 3)javascriptimport { createReadStream, statSync } from "fs"; // Werte aus der Init-Response let parts = null; if (uploadMode === "single") { const response = await fetch(uploadUrl, { method: "PUT", body: createReadStream("meeting.mp4"), headers: { "Content-Type": "video/mp4", "Content-Length": String(statSync("meeting.mp4").size), }, }); if (!response.ok) throw new Error(`S3 Upload fehlgeschlagen: ${response.status}`); } else if (uploadMode === "multipart") { parts = []; const fileSize = statSync("meeting.mp4").size; let offset = 0; for (let i = 0; i < partUrls.length; i++) { const chunkSize = Math.min(partSize, fileSize - offset); const response = await fetch(partUrls[i], { method: "PUT", body: createReadStream("meeting.mp4", { start: offset, end: offset + chunkSize - 1 }), headers: { "Content-Type": "video/mp4", "Content-Length": String(chunkSize), }, }); if (!response.ok) throw new Error(`Part ${i + 1} fehlgeschlagen: ${response.status}`); parts.push({ part_number: i + 1, etag: response.headers.get("ETag") }); offset += chunkSize; } } // parts an den Complete-Call übergeben (siehe Schritt 3)Kein
Authorization-Header nötig – die Authentifizierung ist bereits in der Presigned URL enthalten.Schritt 3 – Upload abschließen und Verarbeitung starten:
Single-Part:
httpPOST /v1/transcript/upload/complete Content-Type: application/json Authorization: Bearer <token> { "transcript_id": "abc123", "upload_id": null, "parts": null }Multipart (ETags aus Schritt 2 erforderlich):
httpPOST /v1/transcript/upload/complete Content-Type: application/json Authorization: Bearer <token> { "transcript_id": "abc123", "upload_id": "some-upload-id", "parts": [ { "part_number": 1, "etag": "\"abc123\"" }, { "part_number": 2, "etag": "\"def456\"" }, { "part_number": 3, "etag": "\"ghi789\"" } ] }Status abfragen (unverändert):
httpGET /v1/transcript/abc123 Authorization: Bearer <token>Der Status der Transkription kann über
GET /v1/transcript/{transcript_id}abgefragt werden (mögliche Werte:new,succeeded,failed).
Removed
- Instruct API:
- Die Endpunkte
POST /v1/instruct/httpundPOST /v1/instruct/streamwurden entfernt. Bitte stattdessen die entsprechenden/v1/chat-Endpunkte nutzen.
- Die Endpunkte
- Spezifische Reasoning-Provider:
- Provider-Varianten mit festen Reasoning-Levels im Namen (z. B.
azure-gpt5-high-reasoning-effortoderazure-openai-gpt-5_1-low-reasoning-effort) wurden entfernt. - Bitte stattdessen den Basis-Provider (z. B.
azure-openai-gpt-5_4) in Verbindung mit dem Parameterreasoning_effortnutzen.
- Provider-Varianten mit festen Reasoning-Levels im Namen (z. B.
Chat-Provider & Reasoning-Effort
Mit Version 12.0 wurde die Auswahl der Reasoning-Intensität (Thinking) von der Provider-Ebene auf die Parameter-Ebene verschoben. Dies ermöglicht eine flexiblere Steuerung ohne den Wechsel des Providers.
Der Parameter reasoning_effort
Der Parameter kann bei der Erstellung einer Chat-Session oder direkt im Streaming-Request (POST /v1/chat/stream/{session_id}) gesetzt werden.
Erlaubte Werte:
| Wert | UI Label | Beschreibung |
|---|---|---|
none | Aus (Off) | Deaktiviert Reasoning oder Extended Thinking Features. |
low | Standard | Nutzt ein Basis-Reasoning-Level oder ein moderates Thinking-Budget. |
high | Ausgiebig (Verbose) | Nutzt ein höheres Reasoning-Level oder ein größeres Thinking-Budget. |
Funktionsweise pro Provider:
Die API abstrahiert die provider-spezifischen Implementierungen:
- OpenAI (o-Serie): Mappt direkt auf das native
reasoning_effortFeld. - Anthropic (Claude 3.7+): Steuert das
thinkingBudget (z. B. 1024 vs. 4096 Tokens). - Google Gemini: Steuert
thinking_budget(Tokens) oder dasthinking_level.