Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Azure OpenAI Batch-API ist darauf ausgelegt, umfangreiche Verarbeitungsaufgaben mit hohem Volumen effizient zu verarbeiten. Verarbeiten Sie asynchrone Anforderungsgruppen mit separatem Kontingent mit einer angestrebten Verarbeitungszeit von 24 Stunden zu 50 % weniger Kosten als bei „Global-Standard“. Bei der Stapelverarbeitung senden Sie die einzelnen Anforderungen nicht nacheinander, sondern Sie senden eine große Anzahl von Anforderungen in einer einzelnen Datei. Anforderungen für den globalen Batch verfügen über ein separates Kontingent von Token in der Warteschlange, um Unterbrechungen Ihrer Onlineworkloads zu vermeiden.
Wichtige Anwendungsfälle:
Umfangreiche Datenverarbeitung: Analysieren Sie schnell umfangreiche Datasets parallel.
Inhaltsgenerierung: Erstellen Sie große Textmengen, z. B. Produktbeschreibungen oder Artikel.
Dokumentüberprüfung und Zusammenfassung: Automatisieren Sie die Überprüfung und Zusammenfassung von umfangreichen Dokumenten.
Automatisierung des Kundendiensts: Verarbeiten Sie zahlreiche Anfragen gleichzeitig für schnellere Antworten.
Datenextraktion und -analyse: Extrahieren und analysieren Sie Informationen aus großen Mengen unstrukturierter Daten.
NLP-Aufgaben (Natural Language Processing, Verarbeitung natürlicher Sprache): Führen Sie Aufgaben wie Stimmungsanalyse oder Übersetzung für große Datasets aus.
Marketing und Personalisierung: Generieren Sie personalisierte Inhalte und Empfehlungen im großen Stil.
Tipp
Wenn Ihre Batchaufträge so groß sind, dass Sie den Grenzwert für eingereihte Token auch nach dem Ausschöpfen des Kontingents für Ihre Bereitstellung erreichen, unterstützen einige Regionen jetzt eine neue Funktion, mit der Sie mehrere Batchaufträge mit exponentiellem Backoff in die Warteschlange stellen können.
Sobald Ihr Enqueued-Tokenkontingent verfügbar ist, kann der nächste Batchauftrag erstellt und automatisch gestartet werden. Weitere Informationen finden Sie unter Automatisieren von Wiederholungen großer Batchaufträge mit exponentiellem Backoff.
Von Bedeutung
Wir zielen darauf ab, Batchanforderungen innerhalb von 24 Stunden zu verarbeiten; die Aufträge, die länger dauern, laufen nicht ab. Sie können den Auftrag jederzeit abbrechen. Wenn Sie den Auftrag abbrechen, werden alle verbleibenden Arbeiten abgebrochen, und alle bereits abgeschlossenen Arbeiten werden zurückgegeben. Abgeschlossene Arbeiten werden Ihnen in Rechnung gestellt.
Gespeicherte ruhende Daten verbleiben in der angegebenen Azure-Geografie, während Daten für Rückschlüsse an einem beliebigen Azure OpenAI-Standort verarbeitet werden können. Erfahren Sie mehr über Data Residency.
Batchunterstützung
Verfügbarkeit des globalen Batchmodells
Region | o3, 2025-04-16 | o4-mini, 2025-04-16 | gpt-4.1, 2025-04-14 | gpt-4.1-nano, 2025-04-14 | gpt-4.1-mini, 2025-04-14 | o3-mini, 2025-01-31 | gpt-4o, 2024-05-13 | gpt-4o, 2024-08-06 | gpt-4o, 2024-11-20 | gpt-4o-mini, 2024-07-18 |
---|---|---|---|---|---|---|---|---|---|---|
australiaeast | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Brasilien Süd | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Kanada Ost | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
eastus | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Eastus2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
francecentral | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Deutschland West-Zentral | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Japan Ost | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
koreacentral | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Northcentralus | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Norwegen Ost | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Polenzentral | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Südafrika Nord | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
southcentralus | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Südindien | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
schwedencentral | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
SchweizNord | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
uksouth | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Westeuropa | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
westus | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
westus3 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Die Registrierung ist für den Zugriff auf o3-mini
erforderlich. Weitere Informationen finden Sie in unserem Leitfaden für Begründungsmodellen.
Die folgenden Modelle unterstützen Global-Batch:
Modell | Version | Eingabeformat |
---|---|---|
o3-mini |
31.01.2025 | Text |
gpt-4o |
2024-08-06 | Text + Bild |
gpt-4o-mini |
18.07.2024 | Text + Bild |
gpt-4o |
13.05.2024 | Text + Bild |
API-Unterstützung
API-Version | |
---|---|
Neueste GA-API-Version: | 2024-10-21 |
Neueste unterstützte Vorschau-API-Version: | 2025-04-01-preview |
Hinweis
Während der globale Batch ältere API-Versionen unterstützt, erfordern einige Modelle neuere Vorschau-API-Versionen. Ein Beispiel: o3-mini
wird nicht unterstützt mit 2024-10-21
, da es nach diesem Datum veröffentlicht wurde. Verwenden Sie die neueste Vorschau-API-Version, um auf die neueren Modelle mit globaler Batchversion zuzugreifen.
Featureunterstützung
Folgendes wird derzeit nicht unterstützt:
- Integration mit der Assistants-API.
- Integration mit der Azure OpenAI-Funktion „Für Ihre Daten“.
Batchbereitstellung
Hinweis
Im Azure AI Foundry-Portal werden die Batchbereitstellungstypen als Global-Batch
und Data Zone Batch
angezeigt. Weitere Informationen zu Azure OpenAI-Bereitstellungstypen finden Sie in unserer Anleitung zu Bereitstellungstypen.
Tipp
Es wird empfohlen, das dynamische Kontingent für alle globalen Batchmodellimplementierungen zu aktivieren, um Auftragsfehler aufgrund unzureichender Kontingente für Token in der Warteschlange zu vermeiden. Das Verwenden vom dynamischen Kontingent ermöglicht Ihrer Bereitstellung die opportunistische Nutzung eines größeren Kontingents, wenn zusätzliche Kapazität verfügbar ist. Wenn das dynamische Kontingent deaktiviert ist, kann Ihre Bereitstellung nur Anforderungen bis zum Grenzwert für Token in der Warteschlange verarbeiten, der beim Erstellen der Bereitstellung definiert wurde.
Voraussetzungen
- Azure-Abonnement – kostenloses Abonnement erstellen.
- Eine Azure OpenAI-Ressource mit einem bereitgestellten Modell des Bereitstellungstyps
Global-Batch
. Hilfe zu diesem Prozess finden Sie in der Anleitung zur Ressourcenerstellung und Modellimplementierung.
Vorbereiten der Batchdatei
Wie die Feinabstimmung verwendet der globale Batch Dateien im JSON-Zeilenformat (.jsonl
). Im Folgenden finden Sie einige Beispieldateien mit unterschiedlichen Typen von unterstützten Inhalten:
Eingabeformat
{"custom_id": "task-0", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "When was Microsoft founded?"}]}}
{"custom_id": "task-1", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "When was the first XBOX released?"}]}}
{"custom_id": "task-2", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "What is Altair Basic?"}]}}
custom_id
ist erforderlich, damit Sie ermitteln können, welche einzelne Batchanforderung einer bestimmten Antwort entspricht. Antworten werden nicht in der Reihenfolge zurückgegeben, die in der .jsonl
-Batchdatei definiert ist.
Das model
-Attribut sollte so festgelegt werden, dass es mit dem Namen der globalen Batchbereitstellung übereinstimmt, auf die Sie für Rückschlussantworten abzielen möchten.
Von Bedeutung
Das model
-Attribut muss so festgelegt werden, dass es mit dem Namen der globalen Batchbereitstellung übereinstimmt, die Sie als Ziel für Rückschlussantworten festlegen möchten. Derselbe globale Batchmodellbereitstellungsname muss in jeder Zeile der Batchdatei vorhanden sein. Wenn Sie eine andere Bereitstellung als Ziel festlegen möchten, müssen Sie dies in einer separaten Batchdatei bzw. einem separaten Batchauftrag tun.
Um eine optimale Leistung zu erzielen, empfehlen wir, große Dateien für die Batchverarbeitung zu übermitteln, anstatt eine große Anzahl kleiner Dateien mit nur wenigen Zeilen in jeder Datei.
Erstellen einer Eingabedatei
In diesem Artikel erstellen wir eine Datei mit dem Namen test.jsonl
und kopieren den Inhalt aus dem obigen Standardeingabecodeblock in die Datei. Sie müssen den Namen Ihrer globalen Batchbereitstellung ändern und jeder Zeile der Datei hinzufügen.
Hochladen der Batchdatei
Nachdem Ihre Eingabedatei vorbereitet wurde, müssen Sie die Datei zuerst hochladen, um dann einen Batchauftrag initiieren zu können. Der Dateiupload kann sowohl programmgesteuert als auch über das Azure AI Foundry-Portal erfolgen. In diesem Beispiel wird das direkte Hochladen einer Datei in Ihre Azure OpenAI-Ressource veranschaulicht. Alternativ können Sie Azure Blob Storage für Azure OpenAI Batch konfigurieren.
Melden Sie sich beim Azure AI Foundry-Portal an.
Wählen Sie die Azure OpenAI-Ressource aus, in der Sie über eine globale Batchmodellbereitstellung verfügen.
Wählen Sie Batchaufträge>+ Batchaufträge erstellen aus.
Wählen Sie in der Dropdownliste unter Batchdaten>Dateien hochladen> die Option Datei hochladen aus, und geben Sie den Pfad der im vorherigen Schritt erstellten
test.jsonl
-Datei an. >Weiter.
Erstellen des Batchauftrags
Wählen Sie Erstellen aus, um den Batchauftrag zu starten.
Fortschritt eines Batchauftrags verfolgen
Nachdem Ihr Auftrag erstellt wurde, können Sie den Fortschritt des Auftrags überwachen, indem Sie die Auftrags-ID für den zuletzt erstellten Auftrag auswählen. Standardmäßig werden Sie zur Statusseite des zuletzt erstellten Batchauftrags weitergeleitet.
Sie können den Auftragsstatus für Ihren Auftrag im rechten Bereich nachverfolgen:
Abrufen der Ausgabedatei eines Batchauftrags
Nachdem Ihr Auftrag abgeschlossen wurde oder einen Beendigungsstatus erreicht hat, werden eine Fehler- und eine Ausgabedatei generiert, die Sie zur Überprüfung herunterladen können, indem Sie die entsprechende Schaltfläche mit dem Pfeil nach unten auswählen.
Batch abbrechen
Hiermit wird ein laufender Batch abgebrochen. Der Batch befindet sich bis zu 10 Minuten lang im Status cancelling
, bevor er zu cancelled
wechselt. Hier sind Teilergebnisse (falls vorhanden) in der Ausgabedatei verfügbar.
Voraussetzungen
- Azure-Abonnement – kostenloses Abonnement erstellen.
- Python 3.8 oder eine höhere Version
- Die folgende Python-Bibliothek:
openai
- Jupyter-Notizbücher
- Eine Azure OpenAI-Ressource mit einem bereitgestellten Modell des Bereitstellungstyps
Global-Batch
. Hilfe zu diesem Prozess finden Sie in der Anleitung zur Ressourcenerstellung und Modellimplementierung.
Die Schritte in diesem Artikel sollten in Jupyter Notebooks sequenziell ausgeführt werden. Deshalb instanziieren wir den Azure OpenAI-Client nur einmal am Anfang der Beispiele. Wenn Sie einen Schritt in einer anderen Reihenfolge ausführen möchten, müssen Sie häufig einen Azure OpenAI-Client als Teil dieses Aufrufs einrichten.
Auch wenn Sie die OpenAI Python-Bibliothek bereits installiert haben, müssen Sie möglicherweise ein Upgrade Ihrer Installation auf die neueste Version durchführen:
!pip install openai --upgrade
Vorbereiten der Batchdatei
Wie die Feinabstimmung verwendet der globale Batch Dateien im JSON-Zeilenformat (.jsonl
). Im Folgenden finden Sie einige Beispieldateien mit unterschiedlichen Typen von unterstützten Inhalten:
Eingabeformat
{"custom_id": "task-0", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "When was Microsoft founded?"}]}}
{"custom_id": "task-1", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "When was the first XBOX released?"}]}}
{"custom_id": "task-2", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "What is Altair Basic?"}]}}
custom_id
ist erforderlich, damit Sie ermitteln können, welche einzelne Batchanforderung einer bestimmten Antwort entspricht. Antworten werden nicht in der Reihenfolge zurückgegeben, die in der .jsonl
-Batchdatei definiert ist.
Das model
-Attribut sollte so festgelegt werden, dass es mit dem Namen der globalen Batchbereitstellung übereinstimmt, auf die Sie für Rückschlussantworten abzielen möchten.
Von Bedeutung
Das model
-Attribut muss so festgelegt werden, dass es mit dem Namen der globalen Batchbereitstellung übereinstimmt, die Sie als Ziel für Rückschlussantworten festlegen möchten. Derselbe globale Batchmodellbereitstellungsname muss in jeder Zeile der Batchdatei vorhanden sein. Wenn Sie eine andere Bereitstellung als Ziel festlegen möchten, müssen Sie dies in einer separaten Batchdatei bzw. einem separaten Batchauftrag tun.
Um eine optimale Leistung zu erzielen, empfehlen wir, große Dateien für die Batchverarbeitung zu übermitteln, anstatt eine große Anzahl kleiner Dateien mit nur wenigen Zeilen in jeder Datei.
Erstellen einer Eingabedatei
In diesem Artikel erstellen wir eine Datei mit dem Namen test.jsonl
und kopieren den Inhalt aus dem obigen Standardeingabecodeblock in die Datei. Sie müssen den Namen Ihrer globalen Batchbereitstellung ändern und jeder Zeile der Datei hinzufügen. Speichern Sie diese Datei im selben Verzeichnis, in dem Sie Ihr Jupyter Notebook ausführen.
Hochladen der Batchdatei
Nachdem Ihre Eingabedatei vorbereitet wurde, müssen Sie die Datei zuerst hochladen, um dann einen Batchauftrag initiieren zu können. Der Dateiupload kann sowohl programmgesteuert als auch über das Azure AI Foundry-Portal erfolgen. In diesem Beispiel wird das direkte Hochladen einer Datei in Ihre Azure OpenAI-Ressource veranschaulicht. Alternativ können Sie Azure Blob Storage für Azure OpenAI Batch konfigurieren.
import os
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
token_provider = get_bearer_token_provider(
DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
azure_ad_token_provider=token_provider,
api_version="2025-04-01-preview"
)
# Upload a file with a purpose of "batch"
file = client.files.create(
file=open("test.jsonl", "rb"),
purpose="batch",
extra_body={"expires_after":{"seconds": 1209600, "anchor": "created_at"}} # Optional you can set to a number between 1209600-2592000. This is equivalent to 14-30 days
)
print(file.model_dump_json(indent=2))
print(f"File expiration: {datetime.fromtimestamp(file.expires_at) if file.expires_at is not None else 'Not set'}")
file_id = file.id
Indem Sie den Kommentar entfernen und extra_body={"expires_after":{"seconds": 1209600, "anchor": "created_at"}}
hinzufügen, legen Sie fest, dass die Uploaddatei in 14 Tagen abläuft. Es gibt eine maximale Grenze von 500 Batchdateien pro Ressource, wenn kein Ablauf festgelegt ist. Durch Festlegen eines Werts für den Ablauf wird die Anzahl der Batchdateien pro Ressource auf 10.000 Dateien pro Ressource erhöht.
Ausgabe:
{
"id": "file-655111ec9cfc44489d9af078f08116ef",
"bytes": 176064,
"created_at": 1743391067,
"filename": "test.jsonl",
"object": "file",
"purpose": "batch",
"status": "processed",
"expires_at": 1744600667,
"status_details": null
}
File expiration: 2025-04-13 23:17:47
Erstellen des Batchauftrags
Nachdem die Datei erfolgreich hochgeladen wurde, können Sie die Datei zur Batchverarbeitung übermitteln.
# Submit a batch job with the file
batch_response = client.batches.create(
input_file_id=file_id,
endpoint="/chat/completions",
completion_window="24h",
extra_body={"output_expires_after":{"seconds": 1209600, "anchor": "created_at"}} # Optional you can set to a number between 1209600-2592000. This is equivalent to 14-30 days
)
# Save batch ID for later use
batch_id = batch_response.id
print(batch_response.model_dump_json(indent=2))
Das standardmäßige Limit für maximal 500 Dateien pro Ressource gilt auch für Ausgabedateien. Hier können Sie die Auskommentierung dieser Zeile aufheben, um extra_body={"output_expires_after":{"seconds": 1209600, "anchor": "created_at"}}
hinzuzufügen, damit Ihre Ausgabedateien in 14 Tagen ablaufen. Durch Festlegen eines Werts für den Ablauf wird die Anzahl der Batchdateien pro Ressource auf 10.000 Dateien pro Ressource erhöht.
Hinweis
Derzeit muss das Abschlussfenster auf 24h
festgelegt sein. Wenn Sie einen anderen Wert als 24h
festlegen, wird Ihr Auftrag fehlschlagen. Aufträge, die länger als 24 Stunden dauern, werden bis zur Kündigung weiterhin ausgeführt.
Ausgabe:
{
"id": "batch_6caaf24d-54a5-46be-b1b7-518884fcbdde",
"completion_window": "24h",
"created_at": 1722476583,
"endpoint": null,
"input_file_id": "file-655111ec9cfc44489d9af078f08116ef",
"object": "batch",
"status": "validating",
"cancelled_at": null,
"cancelling_at": null,
"completed_at": null,
"error_file_id": null,
"errors": null,
"expired_at": null,
"expires_at": 1722562983,
"failed_at": null,
"finalizing_at": null,
"in_progress_at": null,
"metadata": null,
"output_file_id": null,
"request_counts": {
"completed": 0,
"failed": 0,
"total": 0
}
}
Wenn Ihre Batchaufträge so groß sind, dass Sie den Grenzwert für eingereihte Token auch nach dem Ausschöpfen des Kontingents für Ihre Bereitstellung erreichen, unterstützen einige Regionen jetzt eine neue Fail-Fast-Funktion, mit der Sie mehrere Batchaufträge mit exponentiellem Backoff in die Warteschlange stellen können. Wenn ein großer Batchauftrag fertiggestellt wird, kann so der nächste automatisch gestartet werden. Weitere Informationen dazu, welche Regionen dieses Feature unterstützen und wie Sie Ihren Code anpassen können, um davon zu profitieren, finden Sie unter Batchverarbeitungsaufträge in die Warteschlange stellen.
Fortschritt eines Batchauftrags verfolgen
Nachdem Sie den Batchauftrag erfolgreich erstellt haben, können Sie den Fortschritt entweder im Studio oder programmgesteuert überwachen. Beim Überprüfen des Fortschritts des Batchauftrags wird empfohlen, mindestens 60 Sekunden zwischen jedem Statusabruf zu warten.
import time
import datetime
status = "validating"
while status not in ("completed", "failed", "canceled"):
time.sleep(60)
batch_response = client.batches.retrieve(batch_id)
status = batch_response.status
print(f"{datetime.datetime.now()} Batch Id: {batch_id}, Status: {status}")
if batch_response.status == "failed":
for error in batch_response.errors.data:
print(f"Error code {error.code} Message {error.message}")
Ausgabe:
2024-07-31 21:48:32.556488 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: validating
2024-07-31 21:49:39.221560 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: in_progress
2024-07-31 21:50:53.383138 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: in_progress
2024-07-31 21:52:07.274570 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: in_progress
2024-07-31 21:53:21.149501 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: finalizing
2024-07-31 21:54:34.572508 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: finalizing
2024-07-31 21:55:35.304713 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: finalizing
2024-07-31 21:56:36.531816 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: finalizing
2024-07-31 21:57:37.414105 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: completed
Die folgenden Statuswerte sind möglich:
Status | Beschreibung |
---|---|
validating |
Die Eingabedatei wird überprüft, bevor die Stapelverarbeitung beginnen kann. |
failed |
Fehler beim Überprüfen der Eingabedatei. |
in_progress |
Die Eingabedatei wurde erfolgreich überprüft, und der Batch wird zurzeit ausgeführt. |
finalizing |
Der Batch wurde abgeschlossen, und die Ergebnisse werden vorbereitet. |
completed |
Der Batch wurde abgeschlossen, und die Ergebnisse sind bereit. |
expired |
Der Batch konnte nicht innerhalb des 24-Stunden-Zeitfensters abgeschlossen werden. |
cancelling |
Der Batch wird cancelled (es kann bis zu zehn Minuten dauern, bis dies wirksam wird). |
cancelled |
Der Batch ist cancelled . |
Um die Auftragsstatusdetails zu überprüfen, können Sie folgenden Befehl ausführen:
print(batch_response.model_dump_json(indent=2))
Ausgabe:
{
"id": "batch_6caaf24d-54a5-46be-b1b7-518884fcbdde",
"completion_window": "24h",
"created_at": 1722476583,
"endpoint": null,
"input_file_id": "file-9f3a81d899b4442f98b640e4bc3535dd",
"object": "batch",
"status": "completed",
"cancelled_at": null,
"cancelling_at": null,
"completed_at": 1722477429,
"error_file_id": "file-c795ae52-3ba7-417d-86ec-07eebca57d0b",
"errors": null,
"expired_at": null,
"expires_at": 1722562983,
"failed_at": null,
"finalizing_at": 1722477177,
"in_progress_at": null,
"metadata": null,
"output_file_id": "file-3304e310-3b39-4e34-9f1c-e1c1504b2b2a",
"request_counts": {
"completed": 3,
"failed": 0,
"total": 3
}
}
Beachten Sie, dass es sowohl eine error_file_id
als auch eine separate output_file_id
gibt. Nutzen Sie das error_file_id
zur Unterstützung beim Debuggen von Problemen, die bei Ihrem Stapelauftrag auftreten.
Abrufen der Ausgabedatei eines Batchauftrags
import json
output_file_id = batch_response.output_file_id
if not output_file_id:
output_file_id = batch_response.error_file_id
if output_file_id:
file_response = client.files.content(output_file_id)
raw_responses = file_response.text.strip().split('\n')
for raw_response in raw_responses:
json_response = json.loads(raw_response)
formatted_json = json.dumps(json_response, indent=2)
print(formatted_json)
Ausgabe:
Der Kürze halber wird hier nur eine Chatvervollständigungsantwort der Ausgabe gezeigt. Wenn Sie die Schritte in diesem Artikel ausführen, sollten Sie drei Antworten haben, die in etwa der folgenden entsprechen:
{
"custom_id": "task-0",
"response": {
"body": {
"choices": [
{
"content_filter_results": {
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
},
"finish_reason": "stop",
"index": 0,
"logprobs": null,
"message": {
"content": "Microsoft was founded on April 4, 1975, by Bill Gates and Paul Allen in Albuquerque, New Mexico.",
"role": "assistant"
}
}
],
"created": 1722477079,
"id": "chatcmpl-9rFGJ9dh08Tw9WRKqaEHwrkqRa4DJ",
"model": "gpt-4o-2024-05-13",
"object": "chat.completion",
"prompt_filter_results": [
{
"prompt_index": 0,
"content_filter_results": {
"hate": {
"filtered": false,
"severity": "safe"
},
"jailbreak": {
"filtered": false,
"detected": false
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
],
"system_fingerprint": "fp_a9bfe9d51d",
"usage": {
"completion_tokens": 24,
"prompt_tokens": 27,
"total_tokens": 51
}
},
"request_id": "660b7424-b648-4b67-addc-862ba067d442",
"status_code": 200
},
"error": null
}
Zusätzliche Batchbefehle
Batch abbrechen
Hiermit wird ein laufender Batch abgebrochen. Der Batch befindet sich bis zu 10 Minuten lang im Status cancelling
, bevor er zu cancelled
wechselt. Hier sind Teilergebnisse (falls vorhanden) in der Ausgabedatei verfügbar.
client.batches.cancel("batch_abc123") # set to your batch_id for the job you want to cancel
Auflisten von Batches
Listet Batchaufträge für eine bestimmte Azure OpenAI-Ressource auf.
client.batches.list()
Listenmethoden in der Python-Bibliothek werden paginiert.
So listen Sie alle Aufträge auf
all_jobs = []
# Automatically fetches more pages as needed.
for job in client.batches.list(
limit=20,
):
# Do something with job here
all_jobs.append(job)
print(all_jobs)
Auflisten von Batches (Vorschau)
Verwenden Sie die REST-API, um alle Batchaufträge mit zusätzlichen Sortier-/Filteroptionen aufzulisten.
In den folgenden Beispielen stellen wir die generate_time_filter
Funktion bereit, um das Erstellen des Filters zu vereinfachen. Wenn Sie diese Funktion nicht verwenden möchten, sieht das Format der Filterzeichenfolge wie created_at gt 1728860560 and status eq 'Completed'
aus.
import requests
import json
from datetime import datetime, timedelta
from azure.identity import DefaultAzureCredential
token_credential = DefaultAzureCredential()
token = token_credential.get_token('https://cognitiveservices.azure.com/.default')
endpoint = "https://{YOUR_RESOURCE_NAME}.openai.azure.com/"
api_version = "2025-03-01-preview"
url = f"{endpoint}openai/batches"
order = "created_at asc"
time_filter = lambda: generate_time_filter("past 8 hours")
# Additional filter examples:
#time_filter = lambda: generate_time_filter("past 1 day")
#time_filter = lambda: generate_time_filter("past 3 days", status="Completed")
def generate_time_filter(time_range, status=None):
now = datetime.now()
if 'day' in time_range:
days = int(time_range.split()[1])
start_time = now - timedelta(days=days)
elif 'hour' in time_range:
hours = int(time_range.split()[1])
start_time = now - timedelta(hours=hours)
else:
raise ValueError("Invalid time range format. Use 'past X day(s)' or 'past X hour(s)'")
start_timestamp = int(start_time.timestamp())
filter_string = f"created_at gt {start_timestamp}"
if status:
filter_string += f" and status eq '{status}'"
return filter_string
filter = time_filter()
headers = {'Authorization': 'Bearer ' + token.token}
params = {
"api-version": api_version,
"$filter": filter,
"$orderby": order
}
response = requests.get(url, headers=headers, params=params)
json_data = response.json()
if response.status_code == 200:
print(json.dumps(json_data, indent=2))
else:
print(f"Request failed with status code: {response.status_code}")
print(response.text)
Ausgabe:
{
"data": [
{
"cancelled_at": null,
"cancelling_at": null,
"completed_at": 1729011896,
"completion_window": "24h",
"created_at": 1729011128,
"error_file_id": "file-472c0626-4561-4327-9e4e-f41afbfb30e6",
"expired_at": null,
"expires_at": 1729097528,
"failed_at": null,
"finalizing_at": 1729011805,
"id": "batch_4ddc7b60-19a9-419b-8b93-b9a3274b33b5",
"in_progress_at": 1729011493,
"input_file_id": "file-f89384af0082485da43cb26b49dc25ce",
"errors": null,
"metadata": null,
"object": "batch",
"output_file_id": "file-62bebde8-e767-4cd3-a0a1-28b214dc8974",
"request_counts": {
"total": 3,
"completed": 2,
"failed": 1
},
"status": "completed",
"endpoint": "/chat/completions"
},
{
"cancelled_at": null,
"cancelling_at": null,
"completed_at": 1729016366,
"completion_window": "24h",
"created_at": 1729015829,
"error_file_id": "file-85ae1971-9957-4511-9eb4-4cc9f708b904",
"expired_at": null,
"expires_at": 1729102229,
"failed_at": null,
"finalizing_at": 1729016272,
"id": "batch_6287485f-50fc-4efa-bcc5-b86690037f43",
"in_progress_at": 1729016126,
"input_file_id": "file-686746fcb6bc47f495250191ffa8a28e",
"errors": null,
"metadata": null,
"object": "batch",
"output_file_id": "file-04399828-ae0b-4825-9b49-8976778918cb",
"request_counts": {
"total": 3,
"completed": 2,
"failed": 1
},
"status": "completed",
"endpoint": "/chat/completions"
}
],
"first_id": "batch_4ddc7b60-19a9-419b-8b93-b9a3274b33b5",
"has_more": false,
"last_id": "batch_6287485f-50fc-4efa-bcc5-b86690037f43"
}
Einreihen von Batchaufträgen in die Warteschlange
Wenn Ihre Batchaufträge so groß sind, dass Sie den Grenzwert für eingereihte Token auch nach dem Ausschöpfen des Kontingents für Ihre Bereitstellung erreichen, unterstützen einige Regionen jetzt eine neue Fail-Fast-Funktion, mit der Sie mehrere Batchaufträge mit exponentiellem Backoff in die Warteschlange stellen können. Sobald ein großer Batchauftrag abgeschlossen ist und Ihr Enqueued Tokenkontingent erneut verfügbar ist, kann der nächste Batchauftrag erstellt und automatisch gestartet werden.
Altes Verhalten:
- Große Batchaufträge werden bereits ausgeführt und verwenden alle verfügbaren Token für Ihre Bereitstellung.
- Neuer Stapelauftrag eingereicht.
- Der neue Batchauftrag geht in die Überprüfungsphase über, die bis zu ein paar Minuten dauern kann.
- Die Tokenanzahl für einen neuen Auftrag wird mit dem aktuell verfügbaren Kontingent abgeglichen.
- Der neue Batchauftrag schlägt fehl mit der Fehlermeldung, dass das Tokenlimit überschritten wurde.
Neues Verhalten:
- Große Batchaufträge werden bereits ausgeführt und verwenden alle verfügbaren Token für Ihre Bereitstellung.
- Ein neuer Batchauftrag wird übermittelt.
- Die ungefähre Tokenanzahl des neuen Auftrags wird sofort mit dem aktuell verfügbaren Batchkontingent abgeglichen, und es wird ein Fail-Fast ausgeführt, damit Sie Wiederholungen einfacher programmgesteuert behandeln können.
Regionsunterstützung
Die folgenden Regionen unterstützen das neue Fail-Fast-Verhalten:
- australiaeast
- eastus
- Deutschland West-Zentral
- italiennord
- Northcentralus
- Polenzentral
- schwedencentral
- SchweizNord
- Eastus2
- westus
Der folgende Code veranschaulicht die grundlegende Mechanik der Behandlung des Fail-Fast-Verhaltens, um das Automatisieren von Wiederholungen und der Einreihung von Batchaufträgen in die Warteschlange mit exponentiellem Backoff zu ermöglichen.
Je nach Größe Ihrer Batchaufträge müssen Sie möglicherweise den max_retries
erheblich erhöhen oder dieses Beispiel weiter anpassen.
import time
from openai import BadRequestError
max_retries = 10
retries = 0
initial_delay = 5
delay = initial_delay
while True:
try:
batch_response = client.batches.create(
input_file_id=file_id,
endpoint="/chat/completions",
completion_window="24h",
)
# Save batch ID for later use
batch_id = batch_response.id
print(f"✅ Batch created successfully after {retries} retries")
print(batch_response.model_dump_json(indent=2))
break
except BadRequestError as e:
error_message = str(e)
# Check if it's a token limit error
if 'token_limit_exceeded' in error_message:
retries += 1
if retries >= max_retries:
print(f"❌ Maximum retries ({max_retries}) reached. Giving up.")
raise
print(f"⏳ Token limit exceeded. Waiting {delay} seconds before retry {retries}/{max_retries}...")
time.sleep(delay)
# Exponential backoff - increase delay for next attempt
delay *= 2
else:
# If it's a different error, raise it immediately
print(f"❌ Encountered non-token limit error: {error_message}")
raise
Ausgabe:
⏳ Token limit exceeded. Waiting 5 seconds before retry 1/10...
⏳ Token limit exceeded. Waiting 10 seconds before retry 2/10...
⏳ Token limit exceeded. Waiting 20 seconds before retry 3/10...
⏳ Token limit exceeded. Waiting 40 seconds before retry 4/10...
⏳ Token limit exceeded. Waiting 80 seconds before retry 5/10...
⏳ Token limit exceeded. Waiting 160 seconds before retry 6/10...
⏳ Token limit exceeded. Waiting 320 seconds before retry 7/10...
✅ Batch created successfully after 7 retries
{
"id": "batch_1e1e7b9f-d4b4-41fa-bd2e-8d2ec50fb8cc",
"completion_window": "24h",
"created_at": 1744402048,
"endpoint": "/chat/completions",
"input_file_id": "file-e2ba4ccaa4a348e0976c6fe3c018ea92",
"object": "batch",
"status": "validating",
"cancelled_at": null,
"cancelling_at": null,
"completed_at": null,
"error_file_id": "",
"errors": null,
"expired_at": null,
"expires_at": 1744488444,
"failed_at": null,
"finalizing_at": null,
"in_progress_at": null,
"metadata": null,
"output_file_id": "",
"request_counts": {
"completed": 0,
"failed": 0,
"total": 0
}
}
Voraussetzungen
- Azure-Abonnement – kostenloses Abonnement erstellen.
- Eine Azure OpenAI-Ressource mit einem bereitgestellten Modell des Bereitstellungstyps
Global-Batch
. Hilfe zu diesem Prozess finden Sie in der Anleitung zur Ressourcenerstellung und Modellimplementierung.
Vorbereiten der Batchdatei
Wie die Feinabstimmung verwendet der globale Batch Dateien im JSON-Zeilenformat (.jsonl
). Im Folgenden finden Sie einige Beispieldateien mit unterschiedlichen Typen von unterstützten Inhalten:
Eingabeformat
{"custom_id": "task-0", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "When was Microsoft founded?"}]}}
{"custom_id": "task-1", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "When was the first XBOX released?"}]}}
{"custom_id": "task-2", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "What is Altair Basic?"}]}}
custom_id
ist erforderlich, damit Sie ermitteln können, welche einzelne Batchanforderung einer bestimmten Antwort entspricht. Antworten werden nicht in der Reihenfolge zurückgegeben, die in der .jsonl
-Batchdatei definiert ist.
Das model
-Attribut sollte so festgelegt werden, dass es mit dem Namen der globalen Batchbereitstellung übereinstimmt, auf die Sie für Rückschlussantworten abzielen möchten.
Von Bedeutung
Das model
-Attribut muss so festgelegt werden, dass es mit dem Namen der globalen Batchbereitstellung übereinstimmt, die Sie als Ziel für Rückschlussantworten festlegen möchten. Derselbe globale Batchmodellbereitstellungsname muss in jeder Zeile der Batchdatei vorhanden sein. Wenn Sie eine andere Bereitstellung als Ziel festlegen möchten, müssen Sie dies in einer separaten Batchdatei bzw. einem separaten Batchauftrag tun.
Um eine optimale Leistung zu erzielen, empfehlen wir, große Dateien für die Batchverarbeitung zu übermitteln, anstatt eine große Anzahl kleiner Dateien mit nur wenigen Zeilen in jeder Datei.
Erstellen einer Eingabedatei
In diesem Artikel erstellen wir eine Datei mit dem Namen test.jsonl
und kopieren den Inhalt aus dem obigen Standardeingabecodeblock in die Datei. Sie müssen den Namen Ihrer globalen Batchbereitstellung ändern und jeder Zeile der Datei hinzufügen.
Hochladen der Batchdatei
Nachdem Ihre Eingabedatei vorbereitet wurde, müssen Sie die Datei zuerst hochladen, um dann einen Batchauftrag initiieren zu können. Der Dateiupload kann sowohl programmgesteuert als auch über das Azure AI Foundry-Portal erfolgen. In diesem Beispiel wird das direkte Hochladen einer Datei in Ihre Azure OpenAI-Ressource veranschaulicht. Alternativ können Sie Azure Blob Storage für Azure OpenAI Batch konfigurieren.
Von Bedeutung
Verwenden Sie API-Schlüssel mit Vorsicht. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich. Wenn Sie einen API-Schlüssel verwenden, speichern Sie ihn sicher in Azure Key Vault. Weitere Informationen zur sicheren Verwendung von API-Schlüsseln in Ihren Apps finden Sie unter API-Schlüssel mit Azure Key Vault.
Weitere Informationen zur Sicherheit von KI-Diensten finden Sie unter Authentifizieren von Anforderungen an Azure AI-Dienste.
curl -X POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/files?api-version=2025-03-01-preview \
-H "Content-Type: multipart/form-data" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-F "purpose=batch" \
-F "file=@C:\\batch\\test.jsonl;type=application/json" \
-F "expires_after.seconds=1209600" \
-F "expires_after.anchor=created_at"
Im obigen Code wird ein bestimmter Dateipfad für die Datei „test.jsonl“ vorausgesetzt. Passen Sie diesen Dateipfad nach Bedarf an Ihr lokales System an.
Durch das Hinzufügen der optionalen "expires_after.seconds=1209600"
- und "expires_after.anchor=created_at"
-Parameter wird festgelegt, dass die Uploaddatei in 14 Tagen abläuft. Es gibt eine maximale Grenze von 500 Batchdateien pro Ressource, wenn kein Ablauf festgelegt ist. Durch Festlegen eines Werts für den Ablauf wird die Anzahl der Batchdateien pro Ressource auf 10.000 Dateien pro Ressource erhöht. Sie können eine Zahl zwischen 1209600 und 2592000 festlegen. Dies entspricht 14-30 Tagen.
Ausgabe:
{
"status": "processed",
"bytes": 817,
"purpose": "batch",
"filename": "test.jsonl",
"expires_at": 1744607747,
"id": "file-7733bc35e32841e297a62a9ee50b3461",
"created_at": 1743398147,
"object": "file"
}
Status für den Dateiupload nachverfolgen
Je nach Größe der Uploaddatei kann es einige Zeit dauern, bis sie vollständig hochgeladen und verarbeitet wird. Um den Status Ihres Dateiuploads zu überprüfen, führen Sie Folgendes aus:
curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/files/{file-id}?api-version=2025-03-01-preview \
-H "api-key: $AZURE_OPENAI_API_KEY"
Ausgabe:
{
"status": "processed",
"bytes": 686,
"purpose": "batch",
"filename": "test.jsonl",
"expires_at": 1744607747,
"id": "file-7733bc35e32841e297a62a9ee50b3461",
"created_at": 1721408291,
"object": "file"
}
Erstellen des Batchauftrags
Nachdem die Datei erfolgreich hochgeladen wurde, können Sie die Datei zur Batchverarbeitung übermitteln.
curl -X POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/batches?api-version=2025-03-01-preview \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input_file_id": "file-abc123",
"endpoint": "/chat/completions",
"completion_window": "24h",
"output_expires_after": {
"seconds": 1209600
},
"anchor": "created_at"
}'
Das standardmäßige Limit für maximal 500 Dateien pro Ressource gilt auch für Ausgabedateien. Hier können Sie optional "output_expires_after":{"seconds": 1209600},
und "anchor": "created_at"
hinzufügen, damit Ihre Ausgabedateien in 14 Tagen ablaufen. Durch Festlegen eines Werts für den Ablauf wird die Anzahl der Batchdateien pro Ressource auf 10.000 Dateien pro Ressource erhöht.
Hinweis
Derzeit muss das Abschlussfenster auf 24h
festgelegt sein. Wenn Sie einen anderen Wert als 24h
festlegen, wird Ihr Auftrag fehlschlagen. Aufträge, die länger als 24 Stunden dauern, werden bis zur Kündigung weiterhin ausgeführt.
Ausgabe:
{
"cancelled_at": null,
"cancelling_at": null,
"completed_at": null,
"completion_window": "24h",
"created_at": "2024-07-19T17:13:57.2491382+00:00",
"error_file_id": null,
"expired_at": null,
"expires_at": "2024-07-20T17:13:57.1918498+00:00",
"failed_at": null,
"finalizing_at": null,
"id": "batch_fe3f047a-de39-4068-9008-346795bfc1db",
"in_progress_at": null,
"input_file_id": "file-21006e70789246658b86a1fc205899a4",
"errors": null,
"metadata": null,
"object": "batch",
"output_file_id": null,
"request_counts": {
"total": null,
"completed": null,
"failed": null
},
"status": "Validating"
}
Fortschritt eines Batchauftrags verfolgen
Nachdem Sie den Batchauftrag erfolgreich erstellt haben, können Sie den Fortschritt entweder im Studio oder programmgesteuert überwachen. Beim Überprüfen des Fortschritts des Batchauftrags wird empfohlen, mindestens 60 Sekunden zwischen jedem Statusabruf zu warten.
curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/batches/{batch_id}?api-version=2025-03-01-preview \
-H "api-key: $AZURE_OPENAI_API_KEY"
Ausgabe:
{
"cancelled_at": null,
"cancelling_at": null,
"completed_at": null,
"completion_window": "24h",
"created_at": "2024-07-19T17:33:29.1619286+00:00",
"error_file_id": null,
"expired_at": null,
"expires_at": "2024-07-20T17:33:29.1578141+00:00",
"failed_at": null,
"finalizing_at": null,
"id": "batch_e0a7ee28-82c4-46a2-a3a0-c13b3c4e390b",
"in_progress_at": null,
"input_file_id": "file-c55ec4e859d54738a313d767718a2ac5",
"errors": null,
"metadata": null,
"object": "batch",
"output_file_id": null,
"request_counts": {
"total": null,
"completed": null,
"failed": null
},
"status": "Validating"
}
Die folgenden Statuswerte sind möglich:
Status | Beschreibung |
---|---|
validating |
Die Eingabedatei wird überprüft, bevor die Stapelverarbeitung beginnen kann. |
failed |
Fehler beim Überprüfen der Eingabedatei. |
in_progress |
Die Eingabedatei wurde erfolgreich überprüft, und der Batch wird zurzeit ausgeführt. |
finalizing |
Der Batch wurde abgeschlossen, und die Ergebnisse werden vorbereitet. |
completed |
Der Batch wurde abgeschlossen, und die Ergebnisse sind bereit. |
expired |
Der Batch konnte nicht innerhalb des 24-Stunden-Zeitfensters abgeschlossen werden. |
cancelling |
Der Batch wird cancelled (es kann bis zu 10 Minuten dauern, bis dies wirksam wird). |
cancelled |
Der Batch ist cancelled . |
Abrufen der Ausgabedatei eines Batchauftrags
curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/files/{output_file_id}/content?api-version=2025-03-01-preview \
-H "api-key: $AZURE_OPENAI_API_KEY" > batch_output.jsonl
Zusätzliche Batchbefehle
Batch abbrechen
Hiermit wird ein laufender Batch abgebrochen. Der Batch befindet sich bis zu 10 Minuten lang im Status cancelling
, bevor er zu cancelled
wechselt. Hier sind Teilergebnisse (falls vorhanden) in der Ausgabedatei verfügbar.
curl -X POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/batches/{batch_id}/cancel?api-version=2025-03-01-preview \
-H "api-key: $AZURE_OPENAI_API_KEY"
Auflisten von Batches
Listet vorhandene Batchaufträge für eine bestimmte Azure OpenAI-Ressource auf.
curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/batches?api-version=2025-03-01-preview \
-H "api-key: $AZURE_OPENAI_API_KEY"
Der Listen-API-Aufruf wird paginiert. Die Antwort enthält eine boolesche has_more
-Angabe, wann mehr Ergebnisse zum Durchlaufen vorhanden sind.
Auflisten von Batches (Vorschau)
Verwenden Sie die REST-API, um alle Batchaufträge mit zusätzlichen Sortier-/Filteroptionen aufzulisten.
curl "YOUR_RESOURCE_NAME.openai.azure.com/batches?api-version=2025-03-01-preview&$filter=created_at%20gt%201728773533%20and%20created_at%20lt%201729032733%20and%20status%20eq%20'Completed'&$orderby=created_at%20asc" \
-H "api-key: $AZURE_OPENAI_API_KEY"
Um den Fehler zu vermeiden, werden URL rejected: Malformed input to a URL function
-Leerzeichen durch %20
ersetzt.
Batch-Grenzwerte
Name des Grenzwerts | Grenzwert |
---|---|
Maximale Anzahl von Dateien pro Ressource | 500 |
Maximale Größe der Eingabedatei | 200 MB |
Maximale Anforderungen pro Datei | 100,000 |
Batch-Kontingent
Die Tabelle zeigt den Grenzwert für ein Batchkontingent. Kontingentwerte für eine globale Charge werden durch eingereihte Tokens dargestellt. Wenn Sie eine Datei zur Batchverarbeitung übermitteln, wird die Anzahl der in der Datei vorhandenen Tokens gezählt. Bis der Batchauftrag einen endgültigen Status erreicht, werden diese Tokens auf Ihren Gesamtgrenzwert der Tokens in der Warteschlange angerechnet.
Globale Batches
Modell | Unternehmensvertrag | Standard | Monatliche Abonnements mit Kreditkarte | MSDN-Abonnements | Azure für Studenten, Kostenlose Testversionen |
---|---|---|---|---|---|
gpt-4.1 |
5 B | 200 Mio. | 50 Millionen | 90 K | Nicht verfügbar |
gpt-4.1 mini |
15B | 1B | 50 Millionen | 90k | Nicht verfügbar |
gpt-4.1-nano |
15 B | 1 Mrd. | 50 Millionen | 90 K | Nicht verfügbar |
gpt-4o |
5 B | 200 Mio. | 50 Millionen | 90 K | Nicht verfügbar |
gpt-4o-mini |
15 B | 1 Mrd. | 50 Millionen | 90 K | Nicht verfügbar |
gpt-4-turbo |
300 Millionen | 80 Mio. | 40 M | 90 K | Nicht verfügbar |
gpt-4 |
150 M | 30 M | 5 Millionen | 100 Tsd. | Nicht verfügbar |
gpt-35-turbo |
10 Mrd. | 1 Mrd. | 100 M | 2 Mio. | 50.000 |
o3-mini |
15 B | 1 Mrd. | 50 Millionen | 90 K | Nicht verfügbar |
o4-mini |
15 B | 1 Mrd. | 50 Millionen | 90 K | Nicht verfügbar |
B = Milliarde | M = Million | K = Tausend
Datenzonenbatch
Modell | Unternehmensvertrag | Standard | Monatliche Abonnements mit Kreditkarte | MSDN-Abonnements | Azure für Studenten, Kostenlose Testversionen |
---|---|---|---|---|---|
gpt-4.1 |
500 Mio. | 30 M | 30 M | 90 K | Nicht verfügbar |
gpt-4.1-mini |
1,5 B | 100 M | 50 Millionen | 90 K | Nicht verfügbar |
gpt-4o |
500 Mio. | 30 M | 30 M | 90 K | Nicht verfügbar |
gpt-4o-mini |
1,5 B | 100 M | 50 Millionen | 90 K | Nicht verfügbar |
o3-mini |
1,5 B | 100 M | 50 Millionen | 90 K | Nicht verfügbar |
Batch-Objekt
Eigentum | Typ | Definition |
---|---|---|
id |
Schnur | |
object |
Schnur | batch |
endpoint |
Schnur | Der vom Batch verwendete API-Endpunkt |
errors |
Objekt | |
input_file_id |
Schnur | Die ID der Eingabedatei für den Batch |
completion_window |
Schnur | Der Zeitrahmen, in dem der Batch verarbeitet werden soll |
status |
Schnur | Der aktuelles Status des Batches. Mögliche Werte: validating , failed , in_progress , finalizing , completed , expired , cancelling , cancelled . |
output_file_id |
Schnur | Die ID der Datei, die die Ausgabedateien der erfolgreich ausgeführten Anforderungen enthält. |
error_file_id |
Schnur | Die ID der Datei, die die Ausgaben der fehlerhaften Anfragen enthält. |
created_at |
integer | Ein Zeitstempel, wann dieser Batch erstellt wurde (in Unix-Epochen). |
in_progress_at |
integer | Ein Zeitstempel, der den Start der Verarbeitung dieses Batches angibt (in Unix-Epochen). |
expires_at |
integer | Ein Zeitstempel, wann dieser Batch ablaufen wird (in Unix-Epochen). |
finalizing_at |
integer | Ein Zeitstempel, wann der Abschluss dieses Batches begonnen hat (in Unix-Epochen). |
completed_at |
integer | Ein Zeitstempel, wann der Abschluss dieses Batches begonnen hat (in Unix-Epochen). |
failed_at |
integer | Ein Zeitstempel, wann dieser Batch fehlgeschlagen ist (in Unix-Epochen). |
expired_at |
integer | Ein Zeitstempel, wann dieser Batch abgelaufen ist (in Unix-Epochen). |
cancelling_at |
integer | Ein Zeitstempel, der angibt, wann dieser Batch cancelling begonnen hat (in Unix-Epochen). |
cancelled_at |
integer | Ein Zeitstempel, wann dieser Batch cancelled wurde (in Unix-Epochen). |
request_counts |
Objekt | Objektstruktur:total ganze Zahl Die Gesamtanzahl der Anforderungen im Batch. completed integer Die Anzahl der Anforderungen im Batch, die erfolgreich abgeschlossen wurden. failed ganze Zahl Die Anzahl der Anforderungen im Batch, die fehlgeschlagen sind. |
metadata |
Karte | Ein Satz aus Schlüssel-Wert-Paaren, die an den Batch angefügt werden können. Diese Eigenschaft kann hilfreich sein, um zusätzliche Informationen zum Batch in einem strukturierten Format zu speichern. |
Häufig gestellte Fragen (FAQ)
Können Bilder mit der Batch-API verwendet werden?
Diese Funktion ist auf bestimmte multimodale Modelle beschränkt. Derzeit unterstützt nur GPT-4o Bilder als Teil von Batchanforderungen. Bilder können als Eingabe entweder über eine Bild-URL oder eine base64-codierte Darstellung des Bilds bereitgestellt werden. Bilder für Stapelverarbeitung werden derzeit nicht mit GPT-4 Turbo unterstützt.
Kann ich die Batch-API mit fein abgestimmten Modellen verwenden?
Dies wird derzeit nicht unterstützt.
Kann ich die Batch-API für Einbettungsmodelle verwenden?
Dies wird derzeit nicht unterstützt.
Funktioniert die Inhaltsfilterung mit der globalen Batchbereitstellung?
Ja. Ähnlich wie bei anderen Bereitstellungstypen können Sie Inhaltsfilter erstellen und sie dem Bereitstellungstyp „globaler Batch“ zuordnen.
Kann ich zusätzliches Kontingent anfordern?
Ja, von der Kontingentseite im Azure AI Foundry-Portal. Die standardmäßige Kontingentzuweisung finden Sie im Artikel Kontingent und Grenzwerte.
Was geschieht, wenn die API meine Anforderung nicht innerhalb des 24-Stunden-Zeitrahmens abschließt?
Wir bemühen uns, diese Anforderungen innerhalb von 24 Stunden zu verarbeiten. Aufträge, die länger dauern, laufen nicht ab. Sie können den Auftrag jederzeit abbrechen. Wenn Sie den Auftrag abbrechen, werden alle verbleibenden Arbeiten abgebrochen, und alle bereits abgeschlossenen Arbeiten werden zurückgegeben. Abgeschlossene Arbeiten werden Ihnen in Rechnung gestellt.
Wie viele Anforderungen kann ich mithilfe von Batch in die Warteschlange stellen?
Für die Anzahl von Anforderungen, die Sie pro Batch verarbeiten können, gibt es keinen festen Grenzwert, sie hängt jedoch von Ihrem Kontingent für Token in der Warteschlange ab. Ihr Kontingent für Token in der Warteschlange schließt die maximale Anzahl von Eingabetoken ein, die Sie gleichzeitig in die Warteschlange einreihen können.
Sobald die Batchanforderung abgeschlossen wurde, wird Ihr Batchgrenzwert zurückgesetzt, da Ihre Eingabetokens gelöscht werden. Der Grenzwert hängt von der Anzahl der globalen Anforderungen in der Warteschlange ab. Wenn die Batch-API-Warteschlange Ihre Batches schnell verarbeitet, wird Ihr Batchgrenzwert schneller zurückgesetzt.
Problembehandlung
Ein Auftrag ist erfolgreich, wenn status
den Wert Completed
hat. Erfolgreiche Aufträge generieren weiterhin eine „error_file_id“, aber sie wird einer leeren Datei mit null Bytes zugeordnet.
Wenn ein Auftragsfehler auftritt, finden Sie in der errors
-Eigenschaft Details:
"value": [
{
"id": "batch_80f5ad38-e05b-49bf-b2d6-a799db8466da",
"completion_window": "24h",
"created_at": 1725419394,
"endpoint": "/chat/completions",
"input_file_id": "file-c2d9a7881c8a466285e6f76f6321a681",
"object": "batch",
"status": "failed",
"cancelled_at": null,
"cancelling_at": null,
"completed_at": 1725419955,
"error_file_id": "file-3b0f9beb-11ce-4796-bc31-d54e675f28fb",
"errors": {
"object": “list”,
"data": [
{
"code": "empty_file",
"message": "The input file is empty. Please ensure that the batch contains at least one request."
}
]
},
"expired_at": null,
"expires_at": 1725505794,
"failed_at": null,
"finalizing_at": 1725419710,
"in_progress_at": 1725419572,
"metadata": null,
"output_file_id": "file-ef12af98-dbbc-4d27-8309-2df57feed572",
"request_counts": {
"total": 10,
"completed": null,
"failed": null
},
}
Fehlercodes
Fehlercode | Definition |
---|---|
invalid_json_line |
Eine oder mehrere Zeilen in Ihrer Eingabedatei konnten nicht als gültiges JSON analysiert werden. Stellen Sie sicher, dass keine Tippfehler vorhanden sind und dass öffnende und schließende Klammern und Anführungszeichen ordnungsgemäß gemäß JSON-Standard formatiert sind. Übermitteln Sie die Anforderung dann neu. |
too_many_tasks |
Die Anzahl der Anforderungen in der Eingabedatei überschreitet den maximal zulässigen Wert von 100.000. Stellen Sie sicher, dass die Gesamtanzahl der Anforderungen unter 100.000 liegt. Übermitteln Sie den Auftrag dann neu. |
url_mismatch |
Entweder weist eine Zeile in der Eingabedatei eine URL auf, die nicht mit den restlichen Zeilen übereinstimmt, oder die in der Eingabedatei angegebene URL stimmt nicht mit der erwarteten Endpunkt-URL überein. Stellen Sie sicher, dass alle Anforderungs-URLs identisch sind und dass sie mit der Endpunkt-URL übereinstimmen, die Ihrer Azure OpenAI-Bereitstellung zugeordnet ist. |
model_not_found |
Der Name der Azure OpenAI-Modellimplementierung, der in der model -Eigenschaft der Eingabedatei angegeben wurde, wurde nicht gefunden.Stellen Sie sicher, dass dieser Name auf eine gültige Azure OpenAI-Modellimplementierung verweist. |
duplicate_custom_id |
Die benutzerdefinierte ID für diese Anforderung ist ein Duplikat der benutzerdefinierten ID in einer anderen Anforderung. |
empty_batch |
Überprüfen Sie Ihre Eingabedatei, um sicherzustellen, dass der Parameter für die benutzerdefinierte ID für jede Anforderung im Batch eindeutig ist. |
model_mismatch |
Der Name der Azure OpenAI-Modellimplementierung, der in der model -Eigenschaft dieser Anforderung in der Eingabedatei angegeben wurde, stimmt nicht mit dem Rest der Datei überein.Stellen Sie sicher, dass alle Anforderungen im Batchpunkt auf dieselbe Azure OpenAI in Azure KI Foundry Models-Modellbereitstellung in der model Eigenschaft der Anforderung angewendet werden. |
invalid_request |
Das Schema der Eingabezeile oder die Bereitstellungs-SKU ist ungültig. Stellen Sie sicher, dass die Eigenschaften der Anforderung in Ihrer Eingabedatei den erwarteten Eingabeeigenschaften entsprechen und dass die SKU der Azure OpenAI-Bereitstellung für Batch-API-Anforderungen globalbatch lautet. |
input_modified |
Die Blob-Eingabe wurde geändert, nachdem der Batch-Job übermittelt wurde. |
input_no_permissions |
Es ist nicht möglich, auf das Eingabe-BLOB zuzugreifen. Überprüfen Sie die Berechtigungen und den Netzwerkzugriff zwischen dem Azure OpenAI-Konto und dem Azure Storage-Konto. |
Bekannte Probleme
Ressourcen, die mit der Azure-Befehlszeilenschnittstelle (Command Line Interface, CLI) bereitgestellt werden, funktionieren nicht standardmäßig mit Azure OpenAI Global-Batch. Dies liegt an einem Problem, bei dem Ressourcen, die mit dieser Methode bereitgestellt werden, Endpunktdomänen aufweisen, die nicht dem Muster
https://your-resource-name.openai.azure.com
folgen. Dieses Problem lässt sich umgehen, indem eine neue Azure OpenAI-Ressource mithilfe einer der anderen gängigen Bereitstellungsmethoden bereitgestellt wird, die das Setup der Unterdomäne beim Bereitstellungsprozess ordnungsgemäß verarbeiten.UTF-8-BOM-codierte
jsonl
Dateien werden nicht unterstützt. JSON-Zeilendateien sollten mit UTF-8 codiert werden. Die Verwendung von byte-Order-Mark (BOM)-codierten Dateien wird von der JSON RFC-Spezifikation nicht offiziell unterstützt, und Azure OpenAI behandelt derzeit BOM-codierte Dateien als ungültig. Eine UTF-8-BOM-codierte Datei gibt derzeit die generische Fehlermeldung zurück: "Überprüfung fehlgeschlagen: Ein gültiger Modellbereitstellungsname konnte nicht aus der Eingabedatei extrahiert werden. Stellen Sie sicher, dass jede Zeile in der Eingabedatei über einen gültigen Bereitstellungsnamen verfügt, der im Feld "Modell" angegeben ist und dass der Bereitstellungsname in allen Zeilen konsistent ist."
Siehe auch
- Erfahren Sie mehr über die Bereitstellungstypen für Azure OpenAI
- Erfahren Sie mehr über Kontingente und Grenzwerte in Azure OpenAI