Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure OpenAI Batch-API:et är utformat för att effektivt hantera storskaliga och stora bearbetningsuppgifter. Bearbeta asynkrona grupper av begäranden med separat kvot, med 24-timmars målomställning, till 50 % lägre kostnad än global standard. Med batchbearbetning skickar du ett stort antal begäranden i en enda fil i stället för att skicka en begäran i taget. Globala batchbegäranden har en separat kvot för köade tokens för att undvika störningar i dina onlinearbetsbelastningar.
De främsta användningsfallen är:
Storskalig databearbetning: Analysera snabbt omfattande datamängder parallellt.
Innehållsgenerering: Skapa stora mängder text, till exempel produktbeskrivningar eller artiklar.
Dokumentgranskning och sammanfattning: Automatisera granskning och sammanfattning av långa dokument.
Kundsupportautomatisering: Hantera flera frågor samtidigt för snabbare svar.
Dataextrahering och analys: Extrahera och analysera information från stora mängder ostrukturerade data.
NLP-uppgifter (Natural Language Processing): Utför uppgifter som attitydanalys eller översättning på stora datamängder.
Marknadsföring och anpassning: Generera anpassat innehåll och rekommendationer i stor skala.
Tips/Råd
Om dina batchjobb är så pass stora att du når gränsen för köade tokens även efter att du har maxat kvoten för din utplacering, har vissa regioner nu stöd för en ny funktion som gör att du kan köa flera batchjobb med *exponential backoff*.
När din köade tokenkvot är tillgänglig kan nästa batchjobb skapas och startas automatiskt. Mer information finns i Automatisera återförsök av stora batchjobb med exponentiell backoff.
Viktigt!
Vi strävar efter att bearbeta batchbegäranden inom 24 timmar; vi avslutar inte jobben som tar längre tid. Du kan avbryta jobbet när som helst. När du avbryter jobbet avbryts allt återstående arbete och allt redan slutfört arbete returneras. Du debiteras för allt slutfört arbete.
Data som lagras i viloläge finns kvar i den angivna Azure-geografin, medan data kan bearbetas för inferens på valfri Azure OpenAI-plats. Läs mer om dataresidens.
Batch-stöd
Global tillgång till batchmodell
| 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 |
|---|---|---|---|---|---|---|---|---|---|---|
| Australia East | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Brasilien Södra | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Kanada Öst | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| eastus | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| eastus2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| francecentral | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Tyskland Västra Centrala | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Japan Öst | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| koreacentral | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| northcentralus | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Norge öst | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| polencentral | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Sydafrika Nord | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| southcentralus | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Södra Indien | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| swedencentral | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| norra Schweiz | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| uksouth | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| westeurope | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| westus | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| westus3 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Registrering krävs för åtkomst till o3-mini. Mer information finns i vår guide för resonemangsmodeller.
Följande modeller stöder global batch:
| Modell | Utgåva | Indataformat |
|---|---|---|
o3-mini |
31 januari 2025 | texten |
gpt-4o |
2024-08-06 | text + bild |
gpt-4o-mini |
2024.07.18 | text + bild |
gpt-4o |
13.05.2024 | text + bild |
API-stöd
| API-version | |
|---|---|
| Senaste GA API-versionen: | 2024-10-21 |
| Den senaste versionen av förhandsversion av API:et som stöds: | 2025-04-01-preview |
Anmärkning
Global Batch har stöd för äldre API-versioner, men vissa modeller kräver nyare API-versioner för förhandsversioner. Till exempel o3-mini stöds inte med 2024-10-21 eftersom det släpptes efter det här datumet. Använd den senaste förhandsversionen av API:et för att komma åt de nyare modellerna med global batch.
Funktionalitetssupport
Följande stöds inte för närvarande:
- Integrering med ASSISTENT-API:et.
- Integrering med Azure OpenAI på dina data-funktioner.
Batch-distribution
Anmärkning
I Azure AI Foundry-portalen visas batchdistributionstyperna som Global-Batch och Data Zone Batch. Mer information om Distributionstyper för Azure OpenAI finns i guiden för distributionstyper.
Tips/Råd
Vi rekommenderar att du aktiverar dynamisk kvot för alla globala batchmodelldistributioner för att undvika jobbfel på grund av otillräcklig kvot för enqueued token. Med dynamisk kvot kan distributionen opportunistiskt dra nytta av mer kvot när extra kapacitet är tillgänglig. När den dynamiska kvoten är inställd på av kan distributionen endast bearbeta begäranden upp till den gräns för köade tokens som definierades när du skapade distributionen.
Förutsättningar
- En Azure-prenumeration – Skapa en kostnadsfritt.
- En Azure OpenAI-resurs med en modell av distributionstypen
Global-Batchdistribuerad. Du kan referera till guiden för att skapa resurser och distribuera modeller för hjälp med den här processen.
Förbereda batchfilen
Precis som finjustering använder den globala batchen filer i JSON-linjeformat (.jsonl). Nedan visas några exempelfiler med olika typer av innehåll som stöds:
Indataformat
{"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 Krävs för att du ska kunna identifiera vilken enskild batchbegäran som motsvarar ett givet svar. Svar returneras inte i samma ordning som den ordning som definierats i .jsonl batchfilen.
model attributet ska anges så att det matchar namnet på den globala Batch-distribution som du vill rikta in dig på för slutsatsdragningssvar.
Viktigt!
Attributet model måste anges så att det matchar namnet på den globala Batch-distribution som du vill rikta in dig på för slutsatsdragningssvar. Samma distributionsnamn för global Batch-modell måste finnas på varje rad i batchfilen. Om du vill rikta in dig på en annan distribution måste du göra det i en separat batchfil/ett separat batchjobb.
För bästa prestanda rekommenderar vi att du skickar stora filer för batchbearbetning i stället för ett stort antal små filer med bara några rader i varje fil.
Skapa indatafil
I den här artikeln skapar vi en fil med namnet test.jsonl och kopierar innehållet från standardindatakodblocket ovan till filen. Du måste ändra och lägga till ditt globala batchdistributionsnamn till varje rad i filen.
Ladda upp batchfil
När indatafilen har förberetts måste du först ladda upp filen för att sedan kunna initiera ett batchjobb. Filuppladdning kan göras både programmatiskt eller via Azure AI Foundry-portalen. Det här exemplet visar hur du laddar upp en fil direkt till din Azure OpenAI-resurs. Du kan också konfigurera Azure Blob Storage för Azure OpenAI Batch.
Logga in på Azure AI Foundry-portalen.
Välj den Azure OpenAI-resurs där du har en global batchmodelldistribution tillgänglig.
Välj Batch-jobb>+Skapa batchjobb.
I listrutan under >väljer du och anger sökvägen för > filen som skapades i föregående steg
test.jsonl
Skapa batchjobb
Välj Skapa för att starta batchjobbet.
Övervaka batchjobbens förlopp
När jobbet har skapats kan du övervaka jobbets förlopp genom att välja jobb-ID:t för det senast skapade jobbet. Som standard kommer du till statussidan för ditt senast skapade batchjobb.
Du kan spåra jobbstatus för ditt jobb i den högra rutan:
Hämta utdatafil för batchjobb
När jobbet har slutförts eller nått ett terminaltillstånd genereras en felfil och en utdatafil som kan laddas ned för granskning genom att välja respektive knapp med nedåtpilikonen.
Avbryt omgång
Avbryter en pågående batch. Batchen har status cancelling i upp till 10 minuter innan den ändras till cancelled, där det kommer att ha partiella resultat (om några) tillgängliga i utdatafilen.
Förutsättningar
- En Azure-prenumeration – Skapa en kostnadsfritt.
- Python 3.8 eller senare version
- Följande Python-bibliotek:
openai - Jupyter Notebook
- En Azure OpenAI-resurs med en modell av distributionstypen
Global-Batchdistribuerad. Du kan referera till guiden för att skapa resurser och distribuera modeller för hjälp med den här processen.
Stegen i den här artikeln är avsedda att köras sekventiellt i Jupyter Notebooks. Därför instansierar vi bara Azure OpenAI-klienten en gång i början av exemplen. Om du vill köra ett steg i fel ordning måste du ofta konfigurera en Azure OpenAI-klient som en del av anropet.
Även om du redan har Installerat OpenAI Python-biblioteket kan du behöva uppgradera installationen till den senaste versionen:
!pip install openai --upgrade
Förbereda batchfilen
Precis som finjustering använder den globala batchen filer i JSON-linjeformat (.jsonl). Nedan visas några exempelfiler med olika typer av innehåll som stöds:
Indataformat
{"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 Krävs för att du ska kunna identifiera vilken enskild batchbegäran som motsvarar ett givet svar. Svar returneras inte i samma ordning som den ordning som definierats i .jsonl batchfilen.
model attributet ska anges så att det matchar namnet på den globala Batch-distribution som du vill rikta in dig på för slutsatsdragningssvar.
Viktigt!
Attributet model måste anges så att det matchar namnet på den globala Batch-distribution som du vill rikta in dig på för slutsatsdragningssvar. Samma distributionsnamn för global Batch-modell måste finnas på varje rad i batchfilen. Om du vill rikta in dig på en annan distribution måste du göra det i en separat batchfil/ett separat batchjobb.
För bästa prestanda rekommenderar vi att du skickar stora filer för batchbearbetning i stället för ett stort antal små filer med bara några rader i varje fil.
Skapa indatafil
I den här artikeln skapar vi en fil med namnet test.jsonl och kopierar innehållet från standardindatakodblocket ovan till filen. Du måste ändra och lägga till ditt globala batchdistributionsnamn till varje rad i filen. Spara den här filen i samma katalog som du kör Jupyter Notebook.
Ladda upp batchfil
När indatafilen har förberetts måste du först ladda upp filen för att sedan kunna initiera ett batchjobb. Filuppladdning kan göras både programmatiskt eller via Azure AI Foundry-portalen. Det här exemplet visar hur du laddar upp en fil direkt till din Azure OpenAI-resurs. Du kan också konfigurera Azure Blob Storage för Azure OpenAI Batch.
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
Genom att avkommentera och lägga till extra_body={"expires_after":{"seconds": 1209600, "anchor": "created_at"}} ställer du in att uppladdningsfilen ska upphöra att gälla om 14 dagar. Det finns en maxgräns på 500 batchfiler per resurs när ingen förfallotid har angetts. Genom att ange ett värde för förfallodatum ökas antalet batchfiler per resurs till 10 000 filer per resurs.
Resultat:
{
"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
Skapa batchjobb
När filen har laddats upp kan du skicka filen för batchbearbetning.
# 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))
Standardgränsen på 500 maxfiler per resurs gäller även för utdatafiler. Här kan du avkommentarera den här raden för att lägga till extra_body={"output_expires_after":{"seconds": 1209600, "anchor": "created_at"}} så att utdatafilerna upphör att gälla om 14 dagar. Genom att ange ett värde för förfallodatum ökas antalet batchfiler per resurs till 10 000 filer per resurs.
Anmärkning
För närvarande måste slutförandefönstret vara inställt på 24h. Om du anger något annat värde än 24h jobbet misslyckas. Uppgifter som tar längre tid än 24 timmar fortsätter att utföras tills de avbryts.
Resultat:
{
"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
}
}
Om dina batchjobb är så stora att du når den köade tokengränsen även efter att du har maxat kvoten för din distribution, stöder vissa regioner nu en ny snabb återhämtningsfunktion vid fel som gör det möjligt att köa flera batchprocesser med exponentiell återfördröjning, så att nästa kan startas automatiskt när ett stort batchjobb har slutförts. För att lära dig mer om vilka regioner som stöder denna funktion och hur du kan anpassa din kod för att dra nytta av den, se Köa batchjobb.
Övervaka batchjobbens förlopp
När du har skapat batchjobbet kan du övervaka förloppet antingen i Studio eller programmatiskt. När du kontrollerar batchjobbförloppet rekommenderar vi att du väntar minst 60 sekunder mellan varje statusanrop.
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}")
Resultat:
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
Följande statusvärden är möjliga:
| Status | Beskrivning |
|---|---|
validating |
Indatafilen verifieras innan batchbearbetningen kan börja. |
failed |
Indatafilen har misslyckats med valideringsprocessen. |
in_progress |
Indatafilen har verifierats och batchen körs för närvarande. |
finalizing |
Omgången har slutförts och resultaten förbereds. |
completed |
Batchen har slutförts och resultatet är klart. |
expired |
Batchen kunde inte slutföras inom tidsperioden på 24 timmar. |
cancelling |
Batchen bearbetas cancelled (det kan ta upp till 10 minuter för att träda i kraft.) |
cancelled |
batchen var cancelled. |
Så här granskar du jobbstatusinformationen:
print(batch_response.model_dump_json(indent=2))
Resultat:
{
"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
}
}
Observera att det finns både error_file_id och en separat output_file_id. Använd error_file_id för att felsöka eventuella problem som uppstår med batchjobbet.
Hämta utdatafil för batchjobb
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)
Resultat:
För korthet inkluderar vi bara ett svar om att chatten har slutförts med utdata. Om du följer stegen i den här artikeln bör du ha tre svar som liknar det nedan:
{
"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
}
Ytterligare batchkommandon
Avbryt omgång
Avbryter en pågående batch. Batchen har status cancelling i upp till 10 minuter innan den ändras till cancelled, där det kommer att ha partiella resultat (om några) tillgängliga i utdatafilen.
client.batches.cancel("batch_abc123") # set to your batch_id for the job you want to cancel
Lista batch
Lista batchjobb för en viss Azure OpenAI-resurs.
client.batches.list()
Listmetoder i Python-biblioteket är sidnumrerade.
Så här listar du alla jobb:
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)
Listbatch (förhandsversion)
Använd REST-API:et för att visa en lista över alla batchjobb med ytterligare sorterings-/filtreringsalternativ.
I exemplen nedan tillhandahåller generate_time_filter vi funktionen för att göra det enklare att konstruera filtret. Om du inte vill använda den här funktionen skulle formatet för filtersträngen se ut som created_at gt 1728860560 and status eq 'Completed'.
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)
Resultat:
{
"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"
}
Köra batchjobb i kö
Om dina batchjobb är så stora att du når den köade tokengränsen även efter att du har maxat kvoten för din utplacering, stöder vissa regioner nu en ny funktion för snabb felhantering som gör att du kan köa flera batchjobb med exponentiell backoff. När ett stort batchjobb har slutförts och din köade tokenkvot återigen är tillgänglig kan nästa batchjobb skapas och startas automatiskt.
Gammalt beteende:
- Stora batchjobb som redan körs och använder alla tillgängliga token för din distribution.
- Nytt batchjobb har skickats.
- Det nya batchjobbet går in i valideringsfasen som kan pågå i upp till några minuter.
- Antalet tokens i det nya jobbet kontrolleras mot kvoten som finns tillgänglig.
- Det nya batchjobbet misslyckas med att felrapporteringstokensgränsen har överskridits.
Nytt beteende:
- Flera stora batchjobb körs redan och använder alla tillgängliga token för din distribution
- Nytt batchjobb skickat
- Ungefärligt antal token för ett nytt jobb jämförs omedelbart med den aktuella batchkvoten vilket gör att misslyckande sker snabbt och gör det enklare för dig att hantera återförsök programmatiskt.
Stöd för regioner
Följande regioner stöder det nya snabbfelbeteendet:
- Australia East
- eastus
- Tyskland Västra Centrala
- Norra Italien
- northcentralus
- polencentral
- swedencentral
- norra Schweiz
- eastus2
- westus
Koden nedan visar den grundläggande mekaniken för att hantera fail-fast-beteendet och möjliggöra att automatisera återförsök och köa batchjobb med exponentiell avtrappning.
Beroende på storleken på dina batchjobb kan du behöva öka max_retries eller ändra det här exemplet ytterligare.
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
Resultat:
⏳ 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
}
}
Förutsättningar
- En Azure-prenumeration – Skapa en kostnadsfritt.
- En Azure OpenAI-resurs med en modell av distributionstypen
Global-Batchdistribuerad. Du kan referera till guiden för att skapa resurser och distribuera modeller för hjälp med den här processen.
Förbereda batchfilen
Precis som finjustering använder den globala batchen filer i JSON-linjeformat (.jsonl). Nedan visas några exempelfiler med olika typer av innehåll som stöds:
Indataformat
{"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 Krävs för att du ska kunna identifiera vilken enskild batchbegäran som motsvarar ett givet svar. Svar returneras inte i samma ordning som den ordning som definierats i .jsonl batchfilen.
model attributet ska anges så att det matchar namnet på den globala Batch-distribution som du vill rikta in dig på för slutsatsdragningssvar.
Viktigt!
Attributet model måste anges så att det matchar namnet på den globala Batch-distribution som du vill rikta in dig på för slutsatsdragningssvar. Samma distributionsnamn för global Batch-modell måste finnas på varje rad i batchfilen. Om du vill rikta in dig på en annan distribution måste du göra det i en separat batchfil/ett separat batchjobb.
För bästa prestanda rekommenderar vi att du skickar stora filer för batchbearbetning i stället för ett stort antal små filer med bara några rader i varje fil.
Skapa indatafil
I den här artikeln skapar vi en fil med namnet test.jsonl och kopierar innehållet från standardindatakodblocket ovan till filen. Du måste ändra och lägga till ditt globala batchdistributionsnamn till varje rad i filen.
Ladda upp batchfil
När indatafilen har förberetts måste du först ladda upp filen för att sedan kunna initiera ett batchjobb. Filuppladdning kan göras både programmatiskt eller via Azure AI Foundry-portalen. Det här exemplet visar hur du laddar upp en fil direkt till din Azure OpenAI-resurs. Du kan också konfigurera Azure Blob Storage för Azure OpenAI Batch.
Viktigt!
Använd API-nycklar med försiktighet. Inkludera inte API-nyckeln direkt i koden och publicera den aldrig offentligt. Om du använder en API-nyckel lagrar du den på ett säkert sätt i Azure Key Vault. Mer information om hur du använder API-nycklar på ett säkert sätt i dina appar finns i API-nycklar med Azure Key Vault.
Mer information om säkerhet för AI-tjänster finns i Autentisera begäranden till Azure AI-tjänster.
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"
Koden ovan förutsätter en viss filsökväg för din test.jsonl-fil. Justera den här filsökvägen efter behov för det lokala systemet.
Genom att lägga till valfria "expires_after.seconds=1209600" parametrar och "expires_after.anchor=created_at" parametrar ställer du in att uppladdningsfilen ska upphöra att gälla om 14 dagar. Det finns en maxgräns på 500 batchfiler per resurs när ingen förfallotid har angetts. Genom att ange ett värde för förfallodatum ökas antalet batchfiler per resurs till 10 000 filer per resurs. Du kan ange ett tal mellan 1209600-2592000. Detta motsvarar 14–30 dagar.
Resultat:
{
"status": "processed",
"bytes": 817,
"purpose": "batch",
"filename": "test.jsonl",
"expires_at": 1744607747,
"id": "file-7733bc35e32841e297a62a9ee50b3461",
"created_at": 1743398147,
"object": "file"
}
Spåra filuppladdningsstatus
Beroende på storleken på din uppladdningsfil kan det ta lite tid innan den laddas upp och bearbetas helt. Så här kontrollerar du statusen för filuppladdningen:
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"
Resultat:
{
"status": "processed",
"bytes": 686,
"purpose": "batch",
"filename": "test.jsonl",
"expires_at": 1744607747,
"id": "file-7733bc35e32841e297a62a9ee50b3461",
"created_at": 1721408291,
"object": "file"
}
Skapa batchjobb
När filen har laddats upp kan du skicka filen för batchbearbetning.
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"
}'
Standardgränsen på 500 maxfiler per resurs gäller även för utdatafiler. Här kan du lägga till "output_expires_after":{"seconds": 1209600}, och "anchor": "created_at" så att utdatafilerna upphör att gälla om 14 dagar. Genom att ange ett värde för förfallodatum ökas antalet batchfiler per resurs till 10 000 filer per resurs.
Anmärkning
För närvarande måste slutförandefönstret vara inställt på 24h. Om du anger något annat värde än 24h jobbet misslyckas. Uppgifter som tar längre tid än 24 timmar fortsätter att utföras tills de avbryts.
Resultat:
{
"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"
}
Övervaka batchjobbens förlopp
När du har skapat batchjobbet kan du övervaka förloppet antingen i Studio eller programmatiskt. När du kontrollerar batchjobbförloppet rekommenderar vi att du väntar minst 60 sekunder mellan varje statusanrop.
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"
Resultat:
{
"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"
}
Följande statusvärden är möjliga:
| Status | Beskrivning |
|---|---|
validating |
Indatafilen verifieras innan batchbearbetningen kan börja. |
failed |
Indatafilen har misslyckats med valideringsprocessen. |
in_progress |
Indatafilen har verifierats och batchen körs för närvarande. |
finalizing |
Omgången har slutförts och resultaten förbereds. |
completed |
Batchen har slutförts och resultatet är klart. |
expired |
Batchen kunde inte slutföras inom tidsperioden på 24 timmar. |
cancelling |
Batchen bearbetas cancelled (det kan ta upp till 10 minuter att börja gälla.) |
cancelled |
batchen var cancelled. |
Hämta utdatafil för batchjobb
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
Ytterligare batchkommandon
Avbryt omgång
Avbryter en pågående batch. Batchen har status cancelling i upp till 10 minuter innan den ändras till cancelled, där det kommer att ha partiella resultat (om några) tillgängliga i utdatafilen.
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"
Lista batch
Visa en lista över befintliga batchjobb för en viss Azure OpenAI-resurs.
curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/batches?api-version=2025-03-01-preview \
-H "api-key: $AZURE_OPENAI_API_KEY"
LIST-API-anropet är uppdelat i sidor. Svaret innehåller ett booleskt has_more värde som anger när det finns fler resultat att iterera igenom.
Listbatch (förhandsversion)
Använd REST-API:et för att visa en lista över alla batchjobb med ytterligare sorterings-/filtreringsalternativ.
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"
För att undvika felet ersätts mellanslag med URL rejected: Malformed input to a URL function.
Batchgränser
| Gränsnamn | Gränsvärde |
|---|---|
| Maximalt antal filer per resurs | 500 |
| Största inmatningsfilstorlek | 200 MB |
| Maximalt antal begäranden per fil | 100 000 |
Batchkvot
Tabellen visar batchkvotgränsen. Kvotvärden för global batch representeras i termer av köade token. När du skickar en fil för batchbearbetning räknas antalet token i filen. Tills batchjobbet når ett terminaltillstånd räknas dessa token mot den totala tillåtna tokengränsen.
Global omgång
| Modell | Enterprise och MCA-E | Förinställning | Månatliga kreditkortsbaserade prenumerationer | MSDN-prenumerationer | Azure for Students, kostnadsfria utvärderingsversioner |
|---|---|---|---|---|---|
gpt-4.1 |
5B | 200M | 50 M | 90 000 | Inte tillgänglig |
gpt-4.1 mini |
15B | 1B | 50 M | 90 000 | Inte tillgänglig |
gpt-4.1-nano |
15B | 1B | 50 M | 90 000 | Inte tillgänglig |
gpt-4o |
5B | 200M | 50 M | 90 000 | Inte tillgänglig |
gpt-4o-mini |
15B | 1B | 50 M | 90 000 | Inte tillgänglig |
gpt-4-turbo |
300 miljoner | 80M | 40M | 90 000 | Inte tillgänglig |
gpt-4 |
150 M | 30 M | 5 M | 100 000 | Inte tillgänglig |
gpt-35-turbo |
10B | 1B | 100 M | 2M | 50 000 |
o3-mini |
15B | 1B | 50 M | 90 000 | Inte tillgänglig |
o4-mini |
15B | 1B | 50 M | 90 000 | Inte tillgänglig |
B = miljarder | M = miljoner | K = tusen
Datazonsgrupp
| Modell | Enterprise och MCA-E | Förinställning | Månatliga kreditkortsbaserade prenumerationer | MSDN-prenumerationer | Azure for Students, kostnadsfria utvärderingsversioner |
|---|---|---|---|---|---|
gpt-4.1 |
500M | 30 M | 30 M | 90 000 | Inte tillgänglig |
gpt-4.1-mini |
1,5B | 100 M | 50 M | 90 000 | Inte tillgänglig |
gpt-4o |
500M | 30 M | 30 M | 90 000 | Inte tillgänglig |
gpt-4o-mini |
1,5B | 100 M | 50 M | 90 000 | Inte tillgänglig |
o3-mini |
1,5B | 100 M | 50 M | 90 000 | Inte tillgänglig |
Batch-objekt
| Fastighet | Typ | Definition |
|---|---|---|
id |
snöre | |
object |
snöre | batch |
endpoint |
snöre | API-slutpunkten som används av batchen |
errors |
objekt | |
input_file_id |
snöre | ID för indatafilen för batchen |
completion_window |
snöre | Den tidsram inom vilken batchen ska bearbetas |
status |
snöre | Batchens aktuella status. Möjliga värden: validating, failed, in_progress, finalizing, completed, expired, , cancelling. cancelled |
output_file_id |
snöre | ID för filen som innehåller resultatdata från framgångsrikt körda begäranden. |
error_file_id |
snöre | ID:t för filen som innehåller utdata från begäranden med fel. |
created_at |
integer | En tidsstämpel när den här batchen skapades (i unix-epoker). |
in_progress_at |
integer | En tidsstämpel när denna batch började bearbetas (i unix-epoker). |
expires_at |
integer | En tidsstämpel när den här batchen upphör att gälla (i unix-epoker). |
finalizing_at |
integer | En tidsstämpel när den här batchen började slutföras (i unix-epoker). |
completed_at |
integer | En tidsstämpel när den här batchen började slutföras (i unix-epoker). |
failed_at |
integer | Tidpunkt när den här batchen misslyckades (i Unix-tid) |
expired_at |
integer | En tidsstämpel när den här batchen upphörde att gälla (i unix-epoker). |
cancelling_at |
integer | En tidsstämpel när den här batchen startade cancelling (i unix-epoker). |
cancelled_at |
integer | En tidsstämpel när den här batchen var cancelled (i unix-epoker). |
request_counts |
objekt | Objektstruktur:total
heltal Det totala antalet begäranden i batchen. completed
heltal Antalet begäranden i batchen som har slutförts. failed
heltal Antalet begäranden i batchen som har misslyckats. |
metadata |
karta | En uppsättning nyckel/värde-par som kan kopplas till batchen. Den här egenskapen kan vara användbar för att lagra ytterligare information om batchen i ett strukturerat format. |
Vanliga frågor (FAQ)
Kan avbildningar användas med batch-API:et?
Den här funktionen är begränsad till vissa multimodala modeller. För närvarande stöder endast GPT-4o bilder som en del av batchbegäranden. Bilder kan anges som indata antingen via bild-URL eller en base64-kodad representation av bilden. Bilder för batch stöds för närvarande inte med GPT-4 Turbo.
Kan jag använda batch-API:et med finjusterade modeller?
Detta stöds inte för närvarande.
Kan jag använda batch-API:et för inbäddningsmodeller?
Detta stöds inte för närvarande.
Fungerar innehållsfiltrering med Global Batch-distribution?
Ja. På samma sätt som andra distributionstyper kan du skapa innehållsfilter och associera dem med distributionstypen Global Batch.
Kan jag begära ytterligare kvot?
Ja, från kvotsidan i Azure AI Foundry-portalen. Standardkvotallokering finns i artikeln om kvoter och gränser.
Vad händer om API:et inte slutför min begäran inom tidsramen på 24 timmar?
Vi strävar efter att behandla dessa begäranden inom 24 timmar; vi avslutar inte jobben som tar längre tid. Du kan avbryta jobbet när som helst. När du avbryter jobbet avbryts allt återstående arbete och allt redan slutfört arbete returneras. Du debiteras för allt slutfört arbete.
Hur många begäranden kan jag köa med batch?
Det finns ingen fast gräns för hur många begäranden du kan batcha, men det beror på din kvot för enqueued-token. Din köade tokenkvot innehåller det maximala antalet indatatoken som du kan ange samtidigt.
När batchbegäran har slutförts återställs batchhastighetsgränsen när dina indatatoken rensas. Gränsen beror på antalet globala begäranden i kön. Om Batch API-kön bearbetar dina batchar snabbt återställs batchhastighetsgränsen snabbare.
Felsökning
Ett jobb lyckas när status är Completed. Lyckade jobb genererar fortfarande en error_file_id, men den associeras med en tom fil med noll byte.
När ett jobbfel inträffar hittar du information om felet i egenskapen errors :
"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
},
}
Felkoder
| Felkod | Definition |
|---|---|
invalid_json_line |
En rad (eller flera) i indatafilen kunde inte parsas som giltig json. Vänligen se till att det inte finns några stavfel, att korrekta inledande och avslutande hakparenteser och citattecken används enligt JSON-standard, och skicka sedan begäran igen. |
too_many_tasks |
Antalet begäranden i indatafilen överskrider det högsta tillåtna värdet på 100 000. Kontrollera att dina totala begäranden är under 100 000 och skicka jobbet igen. |
url_mismatch |
Antingen har en rad i indatafilen en URL som inte matchar resten av raderna, eller så matchar url:en som anges i indatafilen inte den förväntade slutpunkts-URL:en. Kontrollera att alla url:er för begäran är desamma och att de matchar slutpunkts-URL:en som är associerad med din Azure OpenAI-distribution. |
model_not_found |
Distributionsnamnet för Azure OpenAI-modellen som angavs i model egenskapen för indatafilen hittades inte.Kontrollera att det här namnet pekar på en giltig Azure OpenAI-modelldistribution. |
duplicate_custom_id |
Det anpassade ID:t för den här begäran är en dubblett av det anpassade ID:t i en annan begäran. |
empty_batch |
Kontrollera indatafilen för att se till att den anpassade ID-parametern är unik för varje begäran i batchen. |
model_mismatch |
Distributionsnamnet för Azure OpenAI-modellen som angavs i egenskapen för den model här begäran i indatafilen matchar inte resten av filen.Kontrollera att alla begäranden i batchen pekar på samma modelldistribution i Azure OpenAI i Azure AI Foundry Models i egenskapen model för begäran. |
invalid_request |
Schemat för indataraden är ogiltigt eller så är distributions-SKU:n ogiltig. Kontrollera att egenskaperna för begäran i indatafilen matchar de förväntade indataegenskaperna och att Azure OpenAI-distributions-SKU:n är globalbatch för batch-API-begäranden. |
input_modified |
Blobindata har ändrats efter att batchjobbet har skickats. |
input_no_permissions |
Det går inte att komma åt indatabloben. Kontrollera behörigheter och nätverksåtkomst mellan Azure OpenAI-kontot och Azure Storage-kontot. |
Kända problemområden
Resurser som distribueras med Azure CLI fungerar inte direkt med den globala Azure OpenAI-batchen. Detta beror på ett problem där resurser som distribueras med den här metoden har underdomäner för slutpunkter som inte följer
https://your-resource-name.openai.azure.commönstret. En lösning på det här problemet är att distribuera en ny Azure OpenAI-resurs med någon av de andra vanliga distributionsmetoderna som hanterar underdomänkonfigurationen korrekt som en del av distributionsprocessen.UTF-8-BOM-kodade
jsonlfiler stöds inte. JSON-radfiler ska kodas med UTF-8. Användning av byte-Order-Mark (BOM) kodade filer stöds inte officiellt av JSON RFC-specifikationen, och Azure OpenAI behandlar för närvarande BOM-kodade filer som ogiltiga. En UTF-8-BOM-kodad fil returnerar för närvarande det allmänna felmeddelandet: "Valideringen misslyckades: Det gick inte att extrahera ett giltigt modelldistributionsnamn från indatafilen. Kontrollera att varje rad i indatafilen har ett giltigt distributionsnamn som anges i fältet "modell" och att distributionsnamnet är konsekvent på alla rader."När du använder din egen lagring för batchindata, när batchjobbet har skickats, om indatabloben ändras kommer bedömningsjobbet att misslyckas av tjänsten.
Se även
- Läs mer om Distributionstyper för Azure OpenAI
- Läs mer om Azure OpenAI-kvoter och -gränser