Aan de slag met Azure OpenAI-batchimplementaties

De Azure OpenAI Batch-API is ontworpen om grootschalige en grootschalige verwerkingstaken efficiënt te verwerken. Asynchrone groepen aanvragen verwerken met een afzonderlijk quotum, met een omlooptijd van 24 uur, tegen 50% minder kosten dan de algemene standaard. Met batchverwerking, in plaats van één aanvraag tegelijk te verzenden, verzendt u een groot aantal aanvragen in één bestand. Globale batchaanvragen hebben een afzonderlijk ingewacht tokenquotum om onderbrekingen van uw online werkstromen te voorkomen.

Voorbeelden van belangrijke use cases zijn:

  • Grootschalige gegevensverwerking: Analyseer snel uitgebreide datasets parallel.

  • Inhoudsgeneratie: Maak grote hoeveelheden tekst, zoals productbeschrijvingen of artikelen.

  • Documentbeoordeling en samenvatting: Automatiseer de beoordeling en samenvatting van lange documenten.

  • Automatisering van klantondersteuning: Meerdere query's tegelijk verwerken voor snellere antwoorden.

  • Gegevensextractie en analyse: Gegevens extraheren en analyseren uit grote hoeveelheden ongestructureerde gegevens.

  • NLP-taken (Natural Language Processing): Voer taken uit zoals sentimentanalyse of vertaling op grote gegevenssets.

  • Marketing en personalisatie: Genereer persoonlijke inhoud en aanbevelingen op schaal.

Tip

Als uw batchtaken zo groot zijn dat u de limiet voor het enqueued token bereikt, zelfs nadat het quotum voor uw implementatie is overschreden, ondersteunen bepaalde regio's nu een nieuwe functie waarmee u meerdere batchtaken in de wachtrij kunt plaatsen met exponentieel uitstel.

Zodra uw ingewachte token-quotum beschikbaar is, kan de volgende batchtaak automatisch worden gemaakt en gestart. Zie voor meer informatie over de automatisering van herhaalde pogingen van grote batchtaken met exponentieel uitstel.

Belangrijk

We streven ernaar om batchaanvragen binnen 24 uur te verwerken; De taken die langer duren, verlopen niet. U kunt de taak op elk gewenst moment annuleren . Wanneer u de taak annuleert, wordt alle resterende hoeveelheid werk geannuleerd en wordt al voltooid werk geretourneerd. Er worden kosten in rekening gebracht voor voltooid werk.

Gegevens die in rust zijn opgeslagen, blijven in de aangewezen Azure geografie, terwijl gegevens kunnen worden verwerkt voor deductie in een Azure OpenAI-locatie.  Meer informatie over dataresidentie. 

Ondersteuning voor Batch

Wereldwijde beschikbaarheid van batchmodellen

Regio gpt-5.1, 2025-11-13 gpt-5, 2025-08-07 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
brazilsouth
canadaeast
centralus
eastus
eastus2
francecentral
DuitslandWestCentraal
japaneast
koreacentral
northcentralus
noorwegenoost
Polencentral
Zuid-Afrika Noord
southcentralus
Zuid-India
swedencentral
zwitserlandnoord
uksouth
westeurope
westus
westus3

Registratie is vereist voor toegang tot gpt-5 en o3. Zie de handleiding met redeneringsmodellen voor meer informatie.

Opmerking

Hoewel Global Batch oudere API-versies ondersteunt, zijn voor sommige modellen nieuwere API-versies vereist. o3-mini wordt bijvoorbeeld niet ondersteund door 2024-10-21 omdat het na deze datum is uitgebracht. Als u toegang wilt krijgen tot nieuwere modellen met Global Batch, gebruikt u de v1-API.

Functieondersteuning

Het volgende wordt momenteel niet ondersteund:

  • Integratie met de Assistants-API.
  • Integratie met Azure OpenAI voor de functionaliteit 'Op Uw Gegevens'.

Batch-implementatie

Opmerking

In de Microsoft Foundry-portal worden de batchimplementatietypen weergegeven als Global-Batch en Data Zone Batch. Zie de handleiding deploymenttypen voor meer informatie over Azure OpenAI-implementatietypen.

Tip

We raden aan om het dynamische quotum in te schakelen voor alle wereldwijde batchmodelimplementaties, om storingen door een tekort aan beschikbare tokens te voorkomen. Door dynamisch quotum te gebruiken, kan uw implementatie opportunistisch profiteren van meer quota wanneer er extra capaciteit beschikbaar is. Wanneer dynamisch quotum is ingesteld op uit, kan uw implementatie alleen aanvragen verwerken tot de limiet van het enqueued-token dat is gedefinieerd toen u de implementatie maakte.

Voorwaarden

  • Een Azure-abonnement - Maak er gratis een.
  • Een resource met een model van het implementatietype GlobalBatch of DataZoneBatch geïmplementeerd.

Uw batchbestand voorbereiden

Net als bij het fijn afstemmen gebruikt Batch bestanden in de JSON-regels (.jsonl) indeling. Hieronder ziet u enkele voorbeeldbestanden met verschillende typen ondersteunde inhoud:

Invoerindeling

Antwoord-API

{"custom_id": "task-0", "method": "POST", "url": "/v1/responses", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "input": "When was Microsoft founded, and by whom?"}}
{"custom_id": "task-1", "method": "POST", "url": "/v1/responses", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "input": "When was XBOX merged into Microsoft?"}}
{"custom_id": "task-2", "method": "POST", "url": "/v1/responses", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "input": "What is Visual Basic?"}}

API voor voltooiing van chat

{"custom_id": "task-0", "method": "POST", "url": "/v1/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": "/v1/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": "/v1/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?"}]}}

Dit custom_id is vereist om te bepalen welke afzonderlijke batchaanvraag overeenkomt met een bepaald antwoord. Antwoorden worden niet in dezelfde volgorde geretourneerd als de volgorde die is gedefinieerd in het .jsonl batchbestand.

model attribuut moet worden ingesteld om overeen te komen met de naam van de Global Batch-implementatie waarop u zich wilt richten voor inferentieantwoorden.

Belangrijk

Het model kenmerk moet worden ingesteld op overeenstemming met de naam van de Global Batch-implementatie die u wilt instellen voor deductiereacties. Dezelfde naam voor de implementatie van het Globale Batch-model moet aanwezig zijn op elke regel van het batchbestand. Als u een andere implementatie wilt toepassen, moet u dit doen in een afzonderlijk batchbestand/-taak.

Voor de beste prestaties raden we u aan om grote bestanden voor batchverwerking in te dienen in plaats van een groot aantal kleine bestanden met slechts een paar regels in elk bestand.

Invoerbestand maken

Voor dit artikel maken we een bestand met de naam test.jsonl en kopiëren we de inhoud van het standaardinvoercodeblok hierboven naar het bestand. U moet de naam van de globale batchimplementatie wijzigen en toevoegen aan elke regel van het bestand.

Batchtaak maken

Zodra het invoerbestand is voorbereid, moet u eerst het bestand uploaden om vervolgens een batchtaak te kunnen initiëren. Het uploaden van bestanden kan zowel programmatisch als via de Microsoft Foundry-portal worden uitgevoerd. In dit voorbeeld ziet u hoe u een bestand rechtstreeks uploadt naar uw Azure OpenAI-resource. U kunt ook Azure Blob Storage configureren voor Azure OpenAI Batch.

  1. Meld u aan bij Microsoft Foundry. Zorg ervoor dat de wisselknop New Foundry is ingeschakeld. Deze stappen verwijzen naar Foundry (nieuw).

  2. Selecteer in de rechterbovenhoek Build

  3. Selecteer Modellen in het linkerdeelvenster

  4. Batch-taken>selecteren om een batchtaak te maken

    Schermopname van de nieuwe foundry batch aanmaakervaring.

Voortgang van batchtaak bijhouden

Zodra uw taak is gemaakt, kunt u de voortgang van de taak controleren door de taak-id te selecteren voor de laatst gemaakte taak. Standaard gaat u naar de statuspagina voor uw laatst gemaakte batchtaak.

U kunt de taakstatus voor uw taak bijhouden in het rechterdeelvenster:

Uitvoerbestand van batchtaak ophalen

Zodra uw taak een terminalstatus heeft voltooid of bereikt, wordt er een foutbestand en een uitvoerbestand gegenereerd dat kan worden gedownload om te controleren door de betreffende knop te selecteren met het pijl-omlaagpictogram.

Batch annuleren

Hiermee wordt een batch in uitvoering geannuleerd. De batch heeft maximaal 10 minuten de status cancelling, voordat deze verandert naar cancelled, waar gedeeltelijke resultaten (indien van toepassing) beschikbaar zijn in het uitvoerbestand.

Voorwaarden

De stappen in dit artikel zijn bedoeld om sequentieel uit te voeren in Jupyter Notebooks. Daarom instantiëren we de Azure OpenAI-client slechts één keer aan het begin van de voorbeelden. Als u een stap buiten de volgorde wilt uitvoeren, moet u vaak een Azure OpenAI-client instellen als onderdeel van die aanroep.

Zelfs als u de OpenAI-Python-bibliotheek al hebt geïnstalleerd, moet u mogelijk uw installatie upgraden naar de nieuwste versie:

!pip install openai --upgrade

Uw batchbestand voorbereiden

Net als bij het afstemmen maakt globale batch gebruik van bestanden in JSON-regels (.jsonl)-indeling. Hieronder ziet u enkele voorbeeldbestanden met verschillende typen ondersteunde inhoud:

Invoerindeling

Antwoord-API

{"custom_id": "task-0", "method": "POST", "url": "/v1/responses", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "input": "When was Microsoft founded, and by whom?"}}
{"custom_id": "task-1", "method": "POST", "url": "/v1/responses", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "input": "When was XBOX merged into Microsoft?"}}
{"custom_id": "task-2", "method": "POST", "url": "/v1/responses", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "input": "What is Visual Basic?"}}

API voor voltooiing van chat

{"custom_id": "task-0", "method": "POST", "url": "/v1/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": "/v1/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": "/v1/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?"}]}}

Dit custom_id is vereist om te bepalen welke afzonderlijke batchaanvraag overeenkomt met een bepaald antwoord. Antwoorden worden niet in dezelfde volgorde geretourneerd als de volgorde die is gedefinieerd in het .jsonl batchbestand.

model attribuut moet worden ingesteld om overeen te komen met de naam van de Global Batch-implementatie waarop u zich wilt richten voor inferentieantwoorden.

Belangrijk

Het model kenmerk moet worden ingesteld op overeenstemming met de naam van de Global Batch-implementatie die u wilt instellen voor deductiereacties. Dezelfde naam voor de implementatie van het Globale Batch-model moet aanwezig zijn op elke regel van het batchbestand. Als u een andere implementatie wilt toepassen, moet u dit doen in een afzonderlijk batchbestand/-taak.

Voor de beste prestaties raden we u aan om grote bestanden voor batchverwerking in te dienen in plaats van een groot aantal kleine bestanden met slechts een paar regels in elk bestand.

Invoerbestand maken

Voor dit artikel maken we een bestand met de naam test.jsonl en kopiëren we de inhoud van het standaardinvoercodeblok hierboven naar het bestand. U moet de naam van de globale batchimplementatie wijzigen en toevoegen aan elke regel van het bestand. Sla dit bestand op in dezelfde map waarin u uw Jupyter Notebook uitvoert.

Batchbestand uploaden

Zodra het invoerbestand is voorbereid, moet u eerst het bestand uploaden om vervolgens een batchtaak te kunnen initiëren. Het uploaden van bestanden kan zowel programmatisch als via de Microsoft Foundry-portal worden uitgevoerd. In dit voorbeeld ziet u hoe u een bestand rechtstreeks uploadt naar uw Azure OpenAI-resource. U kunt ook Azure Blob Storage configureren voor Azure OpenAI Batch.

import os
from datetime import datetime
from openai import OpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://ai.azure.com/.default"
)

client = OpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  api_key=token_provider,
)

# 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

Door het verwijderen van commentaar en extra_body={"expires_after":{"seconds": 1209600, "anchor": "created_at"}} toe te voegen, stel je het uploadbestand zo in dat het over 14 dagen verloopt. Er geldt een maximale limiet van 500 invoerbatchbestanden per resource wanneer er geen vervaldatum is ingesteld. Door een waarde in te stellen voor de vervaldatum wordt het aantal invoerbatchbestanden per resource verhoogd tot 10.000 bestanden per resource. Als u limieten voor batchinvoerbestanden wilt verwijderen, gebruikt u Batch met Azure Blob Storage.

Output:

{
  "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

Batchtaak maken

Zodra het bestand is geüpload, kunt u het bestand indienen voor batchverwerking.

# Submit a batch job with the file
batch_response = client.batches.create(
    input_file_id=file_id,
    endpoint="/chat/completions", # While passing this parameter is required, the system will read your input file to determine if the chat completions or responses API is needed.  
    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))

Opmerking

Op dit moment moet het voltooiingsvenster worden ingesteld op 24h. Als u een andere waarde instelt dan 24h uw taak, mislukt. Taken die langer dan 24 uur duren, worden nog steeds uitgevoerd totdat ze zijn geannuleerd.

Output:

{
  "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
  }
}

Als uw batchtaken zodanig groot zijn dat u de limiet voor het enqueued token bereikt, zelfs nadat u het quotum voor uw implementatie volledig heeft benut, bieden bepaalde regio's nu ondersteuning voor een nieuwe fail fast-functie waarmee u meerdere batchtaken met exponentieel uitstel in de wachtrij kunt plaatsen, zodat, zodra één grote batchtaak voltooid is, de volgende automatisch kan worden gestart. Zie batch taken in de rij zetten voor meer informatie over welke regio's deze functie ondersteunen en hoe u uw code kunt aanpassen om hiervan gebruik te maken.

Voortgang van batchtaak bijhouden

Zodra u een batchtaak hebt gemaakt, kunt u de voortgang ervan controleren in Studio of programmatisch. Bij het controleren van de voortgang van batchtaken wordt u aangeraden ten minste 60 seconden te wachten tussen elke statusoproep.

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}")

Output:

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

De volgende statuswaarden zijn mogelijk:

Status Beschrijving
validating Het invoerbestand wordt gevalideerd voordat de batchverwerking kan worden gestart.
failed Het invoerbestand heeft het validatieproces mislukt.
in_progress Het invoerbestand is gevalideerd en de batch wordt momenteel uitgevoerd.
finalizing De batch is voltooid en de resultaten worden voorbereid.
completed De batch is voltooid en de resultaten zijn gereed.
expired De batch kon niet worden voltooid binnen het tijdvenster van 24 uur.
cancelling De batch wordt uitgevoerd cancelled (dit kan tot 10 minuten duren.)
cancelled de partij was cancelled.

Als u de details van de taakstatus wilt bekijken, kunt u het volgende uitvoeren:

print(batch_response.model_dump_json(indent=2))

Output:

{
  "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
  }
}

Let op: er zijn zowel error_file_id als een afzonderlijke output_file_id. Gebruik de error_file_id om u te helpen bij het debuggen van problemen die zich voordoen met uw batchjob.

Uitvoerbestand van batchtaak ophalen

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)

Output:

Omwille van de beknoptheid geven we slechts één respons op het chatresultaat weer. Als u de stappen in dit artikel volgt, moet u drie antwoorden hebben die vergelijkbaar zijn met de onderstaande:

Chatfuncties voltooien

{
  "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
}

Antwoord-API

{
  "custom_id": "task-0",
  "response": {
    "body": {
      "id": "resp_0e5c78eb05ee70cf00690cc6d988e4819587556df17436a206",
      "created_at": 1762445017.0,
      "error": null,
      "incomplete_details": null,
      "instructions": null,
      "metadata": {},
      "model": "gpt-4.1-batch",
      "object": "response",
      "output": [
        {
          "id": "msg_0e5c78eb05ee70cf00690cc6da3c548195aae483031113df16",
          "content": [
            {
              "annotations": [],
              "text": "Microsoft was founded on **April 4, 1975** by **Bill Gates** and **Paul Allen**.",
              "type": "output_text",
              "logprobs": []
            }
          ],
          "role": "assistant",
          "status": "completed",
          "type": "message"
        }
      ],
      "parallel_tool_calls": true,
      "temperature": 1.0,
      "tool_choice": "auto",
      "tools": [],
      "top_p": 1.0,
      "background": false,
      "max_output_tokens": null,
      "max_tool_calls": null,
      "previous_response_id": null,
      "prompt_cache_key": null,
      "reasoning": {
        "effort": null,
        "summary": null
      },
      "safety_identifier": null,
      "service_tier": "default",
      "status": "completed",
      "text": {
        "format": {
          "type": "text"
        },
        "verbosity": "medium"
      },
      "top_logprobs": 0,
      "truncation": "disabled",
      "usage": {
        "input_tokens": 16,
        "input_tokens_details": {
          "cached_tokens": 0
        },
        "output_tokens": 25,
        "output_tokens_details": {
          "reasoning_tokens": 0
        },
        "total_tokens": 41
      },
      "user": null,
      "content_filters": null,
      "store": true
    },
    "request_id": "809b30c2-fa0b-4613-b5cc-c30f6b780c9a",
    "status_code": 200
  },
  "error": null
}

Aanvullende batchopdrachten

Batch annuleren

Hiermee wordt een batch in uitvoering geannuleerd. De batch heeft maximaal 10 minuten de status cancelling, voordat deze verandert naar cancelled, waar gedeeltelijke resultaten (indien van toepassing) beschikbaar zijn in het uitvoerbestand.

client.batches.cancel("batch_abc123") # set to your batch_id for the job you want to cancel

Batch vermelden

Batchverwerkingsopdrachten weergeven voor een specifieke Azure OpenAI-resource.

client.batches.list()

Lijstmethoden in de Python-bibliotheek worden gepagineerd.

Alle taken weergeven:

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)

Batch lijst (voorbeeldweergave)

Gebruik de REST API om alle batchtaken weer te geven met extra sorteer-/filteropties.

In de onderstaande voorbeelden bieden we de generate_time_filter functie om het filter eenvoudiger te maken. Als u deze functie niet wilt gebruiken, ziet de indeling van de filtertekenreeks er als volgt created_at gt 1728860560 and status eq 'Completed'uit.

import requests
import json
from datetime import datetime, timedelta
from azure.identity import DefaultAzureCredential

token_credential = DefaultAzureCredential()
token = token_credential.get_token('https://ai.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)  

Output:

{
  "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"
}

Batchtaken in wachtrij plaatsen

Als uw batchtaken zo groot zijn dat u de limiet van wachtrijstokens bereikt, zelfs nadat u het quotum voor uw implementatie maximaal heeft benut, wordt nu in bepaalde regio's een nieuwe fail fast-functie ondersteund waarmee u meerdere batchtaken met exponentieel terugschakelen in de wachtrij kunt plaatsen. Zodra één grote batchtaak is voltooid en uw wachtrijtokenquotum weer beschikbaar is, kan de volgende batchtaak automatisch worden gemaakt en gestart.

Oud gedrag:

  1. Grote Batch-taken worden al uitgevoerd en gebruiken alle beschikbare tokens voor uw implementatie.
  2. Nieuwe batchtaak verzonden.
  3. Nieuwe batchtaak gaat de validatiefase in en kan enkele minuten duren.
  4. Het aantal tokens voor nieuwe taken wordt gecontroleerd op basis van het momenteel beschikbare quotum.
  5. Nieuwe batchtaak mislukt omdat de limiet voor foutrapportagetoken is overschreden.

Nieuw gedrag:

  1. Grote Batch-taken worden al uitgevoerd en gebruiken alle beschikbare tokens voor uw implementatie
  2. Nieuwe batchtaak ingediend
  3. Onmiddellijke vergelijking van het geschatte tokenaantal van nieuwe taken met de huidige batchquotum zorgt ervoor dat de taak snel faalt, waardoor u gemakkelijker programmatisch opnieuw kunt proberen.

Regioondersteuning

De volgende regio's ondersteunen het nieuwe fail fast-gedrag:

  • australiaeast
  • eastus
  • DuitslandWestCentraal
  • italiënorth
  • northcentralus
  • Polencentral
  • swedencentral
  • zwitserlandnoord
  • eastus2
  • westus

In de onderstaande code ziet u de basismechanica voor het afhandelen van het fail-fast-gedrag om het automatiseren van herhaald proberen en batchtaken in de wachtrij te plaatsen met exponentiële terugval.

Afhankelijk van de grootte van uw batchtaken moet u mogelijk max_retries aanzienlijk verhogen of dit voorbeeld verder aanpassen.

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

Output:

⏳ 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
  }
}

Voorwaarden

Uw batchbestand voorbereiden

Net als bij het afstemmen maakt globale batch gebruik van bestanden in JSON-regels (.jsonl)-indeling. Hieronder ziet u enkele voorbeeldbestanden met verschillende typen ondersteunde inhoud:

Invoerindeling

Antwoord-API

{"custom_id": "task-0", "method": "POST", "url": "/v1/responses", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "input": "When was Microsoft founded, and by whom?"}}
{"custom_id": "task-1", "method": "POST", "url": "/v1/responses", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "input": "When was XBOX merged into Microsoft?"}}
{"custom_id": "task-2", "method": "POST", "url": "/v1/responses", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "input": "What is Visual Basic?"}}

API voor voltooiing van chat

{"custom_id": "task-0", "method": "POST", "url": "/v1/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": "/v1/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": "/v1/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?"}]}}

Dit custom_id is vereist om te bepalen welke afzonderlijke batchaanvraag overeenkomt met een bepaald antwoord. Antwoorden worden niet in dezelfde volgorde geretourneerd als de volgorde die is gedefinieerd in het .jsonl batchbestand.

model attribuut moet worden ingesteld om overeen te komen met de naam van de Global Batch-implementatie waarop u zich wilt richten voor inferentieantwoorden.

Belangrijk

Het model kenmerk moet worden ingesteld op overeenstemming met de naam van de Global Batch-implementatie die u wilt instellen voor deductiereacties. Dezelfde naam voor de implementatie van het Globale Batch-model moet aanwezig zijn op elke regel van het batchbestand. Als u een andere implementatie wilt toepassen, moet u dit doen in een afzonderlijk batchbestand/-taak.

Voor de beste prestaties raden we u aan om grote bestanden voor batchverwerking in te dienen in plaats van een groot aantal kleine bestanden met slechts een paar regels in elk bestand.

Invoerbestand maken

Voor dit artikel maken we een bestand met de naam test.jsonl en kopiëren we de inhoud van het standaardinvoercodeblok hierboven naar het bestand. U moet de naam van de globale batchimplementatie wijzigen en toevoegen aan elke regel van het bestand.

Batchbestand uploaden

Zodra het invoerbestand is voorbereid, moet u eerst het bestand uploaden om vervolgens een batchtaak te kunnen initiëren. Het uploaden van bestanden kan zowel programmatisch als via de Microsoft Foundry-portal worden uitgevoerd. In dit voorbeeld ziet u hoe u een bestand rechtstreeks uploadt naar uw Azure OpenAI-resource. U kunt ook Azure Blob Storage configureren voor Azure OpenAI Batch.

Belangrijk

Gebruik API-sleutels met voorzichtigheid. Neem de API-sleutel niet rechtstreeks in uw code op en plaats deze nooit openbaar. Als u een API-sleutel gebruikt, slaat u deze veilig op in Azure Key Vault. Zie API-sleutels met Azure Key Vault voor meer informatie over het veilig gebruiken van API-sleutels in uw apps.

Zie Authenticate requests to Azure AI-services voor meer informatie over beveiliging van AI-services.

curl -X POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/v1/files \
  -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"

In de bovenstaande code wordt uitgegaan van een bepaald bestandspad voor uw test.jsonl-bestand. Pas dit bestandspad zo nodig aan voor uw lokale systeem.

Door de optionele parameters "expires_after.seconds=1209600" en "expires_after.anchor=created_at" toe te voegen, stelt u het uploadbestand in om binnen 14 dagen te vervallen. Er is een maximale limiet van 500 batchinvoerbestanden per resource wanneer er geen vervaldatum is ingesteld. Door een waarde in te stellen voor de vervaldatum wordt het aantal batchbestanden per resource verhoogd tot 10.000 bestanden per resource. U kunt instellen op een getal tussen 1209600-2592000. Dit is gelijk aan 14-30 dagen. Als u limieten voor batchinvoerbestanden wilt verwijderen, gebruikt u Batch met Azure Blob Storage.

Output:

{
  "status": "processed",
  "bytes": 817,
  "purpose": "batch",
  "filename": "test.jsonl",
  "expires_at": 1744607747,
  "id": "file-7733bc35e32841e297a62a9ee50b3461",
  "created_at": 1743398147,
  "object": "file"
}

Uploadstatus van bestand bijhouden

Afhankelijk van de grootte van het uploadbestand kan het enige tijd duren voordat het volledig is geüpload en verwerkt. Ga als volgende te werk om de uploadstatus van uw bestand te controleren:

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/v1/files/{file-id} \
  -H "api-key: $AZURE_OPENAI_API_KEY"

Output:

{
  "status": "processed",
  "bytes": 686,
  "purpose": "batch",
  "filename": "test.jsonl",
  "expires_at": 1744607747,
  "id": "file-7733bc35e32841e297a62a9ee50b3461",
  "created_at": 1721408291,
  "object": "file"
}

Batchtaak maken

Zodra het bestand is geüpload, kunt u het bestand indienen voor batchverwerking.

curl -X POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/v1/batches \
  -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"
  }'

Hier kunt u desgewenst toevoegen "output_expires_after":{"seconds": 1209600}, en "anchor": "created_at" zodat uw uitvoerbestanden over 14 dagen verlopen.

Opmerking

Op dit moment moet het voltooiingsvenster worden ingesteld op 24h. Als u een andere waarde instelt dan 24h uw taak, mislukt. Taken die langer dan 24 uur duren, worden nog steeds uitgevoerd totdat ze zijn geannuleerd.

Output:

{
  "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"
}

Voortgang van batchtaak bijhouden

Zodra u een batchtaak hebt gemaakt, kunt u de voortgang ervan controleren in Studio of programmatisch. Bij het controleren van de voortgang van batchtaken wordt u aangeraden ten minste 60 seconden te wachten tussen elke statusoproep.

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/v1/batches/{batch_id} \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

Output:

{
  "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"
}

De volgende statuswaarden zijn mogelijk:

Status Beschrijving
validating Het invoerbestand wordt gevalideerd voordat de batchverwerking kan worden gestart.
failed Het invoerbestand heeft het validatieproces mislukt.
in_progress Het invoerbestand is gevalideerd en de batch wordt momenteel uitgevoerd.
finalizing De batch is voltooid en de resultaten worden voorbereid.
completed De batch is voltooid en de resultaten zijn gereed.
expired De batch kon niet worden voltooid binnen het tijdvenster van 24 uur.
cancelling De batch wordt cancelled uitgevoerd (Dit kan tot 10 minuten duren voordat het effect heeft.)
cancelled de partij was cancelled.

Uitvoerbestand van batchtaak ophalen

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/v1/files/{output_file_id}/content \
  -H "api-key: $AZURE_OPENAI_API_KEY" > batch_output.jsonl

Aanvullende batchopdrachten

Batch annuleren

Hiermee wordt een batch in uitvoering geannuleerd. De batch heeft maximaal 10 minuten de status cancelling, voordat deze verandert naar cancelled, waar gedeeltelijke resultaten (indien van toepassing) beschikbaar zijn in het uitvoerbestand.

curl -X POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/v1/batches/{batch_id}/cancel \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

Batch vermelden

Maak een lijst met bestaande batchtaken voor een bepaalde Azure OpenAI-resource.

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/v1/batches \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

De lijst-API-aanroep wordt gepagineerd. Het antwoord bevat een Booleaanse waarde has_more die aangeeft wanneer er meer resultaten zijn om door te lopen.

Batch lijst (voorbeeldweergave)

Gebruik de REST API om alle batchtaken weer te geven met extra sorteer-/filteropties.

curl "YOUR_RESOURCE_NAME.openai.azure.com/batches?api-version=2025-04-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"

Om te voorkomen dat de foutruimten URL rejected: Malformed input to a URL function worden vervangen door %20.

Batchlimieten

Naam beperken Limietwaarde
Maximum aantal Batch-invoerbestanden - (geen vervaldatum) 500
Maximaal aantal invoerbestanden voor batches - (vervaldatum ingesteld) 10.000
Maximale grootte van invoerbestand 200 MB
Maximale grootte van invoerbestand - Bring Your Own Storage (BYOS) 1 GB
Maximum aantal aanvragen per bestand 100,000

Opmerking

Batch-bestandslimieten zijn niet van toepassing op uitvoerbestanden (bijvoorbeeld result.jsonlen error.jsonl). Als u limieten voor batchinvoerbestanden wilt verwijderen, gebruikt u Batch met Azure Blob Storage.

Batchquotum

In de tabel wordt de limiet voor batchquota weergegeven. Quotumwaarden voor globale batch worden weergegeven in termen van in de wachtrij geplaatste tokens. Wanneer u een bestand verzendt voor batchverwerking, wordt het aantal tokens in het bestand geteld. Totdat de batchtaak een eindstatus heeft bereikt, tellen deze tokens mee bij de totale limiet van de wachtrijtokens.

Globale batch

Model Enterprise en MCA-E Standaard Maandelijkse abonnementen op basis van creditcards MSDN-abonnementen Azure voor studenten, gratis proefversies
gpt-4.1 5B 200 miljoen 50M 90K N/A
gpt-4.1 mini 15B 1B 50M 90K N/A
gpt-4.1-nano 15B 1B 50M 90K N/A
gpt-4o 5B 200 miljoen 50M 90K N/A
gpt-4o-mini 15B 1B 50M 90K N/A
gpt-4-turbo 300 MB 80M 40M 90K N/A
gpt-4 150M 30M 5 miljoen 100.000 N/A
o3-mini 15B 1B 50M 90K N/A
o4-mini 15B 1B 50M 90K N/A
gpt-5 5B 200 miljoen 50M 90K N/A
gpt-5.1 5B 200 miljoen 50M 90K N/A

B = miljard | M = miljoen | K = duizend

Gegevenszone-batch

Model Enterprise en MCA-E Standaard Maandelijkse abonnementen op basis van creditcards MSDN-abonnementen Azure voor studenten, gratis proefversies
gpt-4.1 500M 30M 30M 90K N/A
gpt-4.1-mini 1,5B 100 miljoen 50M 90K N/A
gpt-4o 500M 30M 30M 90K N/A
gpt-4o-mini 1,5B 100 miljoen 50M 90K N/A
o3-mini 1,5B 100 miljoen 50M 90K N/A
gpt-5 5B 200 miljoen 50M 90K N/A
gpt-5.1 5B 200 miljoen 50M 90K N/A

Batchobject

Eigenschap Type Definitie
id string De id van de batch.
object string batch
endpoint string Het API-eindpunt dat wordt gebruikt door de batch
errors Object Foutinformatie voor de batch, indien van toepassing.
input_file_id string De id van het invoerbestand voor de batch
completion_window string Het tijdsbestek waarin de batch moet worden verwerkt
status string De huidige status van de batch. Mogelijke waarden: validating, failed, in_progress, , finalizing, completed, expired, cancelling. cancelled
output_file_id string De id van het bestand met de uitvoer van geslaagde aanvragen.
error_file_id string De ID van het bestand met de uitvoer van verzoeken die fouten bevatten.
created_at Geheel getal Een tijdstempel wanneer deze batch is gemaakt (in Unix-epoch seconden).
in_progress_at Geheel getal Een tijdstempel wanneer deze batch is begonnen met de voortgang (in unix-epoch seconden).
expires_at Geheel getal Een tijdstempel voor wanneer deze batch verloopt (in de Unix-epoch seconden).
finalizing_at Geheel getal Een tijdstempel waarop deze batch is begonnen met voltooien (in Unix-epoch seconden).
completed_at Geheel getal Een tijdstempel van wanneer deze batch is voltooid (in Unix epoch-seconden).
failed_at Geheel getal Een tijdstempel op het moment dat deze batch is mislukt (in Unix epoch seconden).
expired_at Geheel getal Het tijdstip waarop deze batch is verlopen (in Unix epoch-seconden).
cancelling_at Geheel getal Een tijdstempel wanneer deze batch is gestart cancelling (in Unix-epoch seconden).
cancelled_at Geheel getal Een tijdstempel wanneer deze batch in Unix epoch seconden was cancelled.
request_counts Object Objectstructuur:

total Geheel getal
Het totale aantal aanvragen in de batch.
completed Geheel getal
Het aantal aanvragen in de batch dat is voltooid.
failed Geheel getal
Het aantal aanvragen in de batch dat is mislukt.
metadata Kaart Een set sleutel-waardeparen die aan de batch kunnen worden gekoppeld. Deze eigenschap kan handig zijn voor het opslaan van aanvullende informatie over de batch in een gestructureerde indeling.

Veelgestelde vragen (FAQ)

Kunnen afbeeldingen worden gebruikt met de batch-API?

Deze mogelijkheid is beperkt tot bepaalde multimodale modellen. Afbeeldingen kunnen worden opgegeven als invoer via de afbeeldings-URL of een base64-gecodeerde weergave van de afbeelding.

Kan ik de batch-API gebruiken met nauwkeurig afgestemde modellen?

Dit wordt momenteel niet ondersteund.

Kan ik de batch-API gebruiken voor het insluiten van modellen?

Dit wordt momenteel niet ondersteund.

Werkt inhoudsfiltering met global Batch-implementatie?

Ja. Net als bij andere implementatietypen kunt u inhoudsfilters maken en deze koppelen aan het implementatietype Global Batch.

Kan ik extra quotum aanvragen?

Ja, vanaf de quotapagina in de Foundry-portal. Standaardquotumtoewijzing vindt u in het artikel quotum en limieten.

Wat gebeurt er als de API mijn aanvraag niet binnen het tijdsbestek van 24 uur voltooit?

We streven ernaar om deze aanvragen binnen 24 uur te verwerken; De taken die langer duren, verlopen niet. U kunt de taak op elk gewenst moment annuleren. Wanneer u de taak annuleert, wordt alle resterende hoeveelheid werk geannuleerd en wordt al voltooid werk geretourneerd. Er worden kosten in rekening gebracht voor voltooid werk.

Hoeveel aanvragen kan ik in de wachtrij plaatsen met behulp van batch?

Er is geen vaste limiet voor het aantal aanvragen dat u kunt groeperen, maar het zal afhangen van uw quotum voor de enqueued token. Uw in wachtrij geplaatste tokenquotum bevat het maximale aantal invoertokens dat u tegelijk kunt opnemen.

Zodra uw batchaanvraag is voltooid, wordt de limiet voor batchsnelheid opnieuw ingesteld, omdat uw invoertokens worden gewist. De limiet is afhankelijk van het aantal globale aanvragen in de wachtrij. Als de Batch API-wachtrij uw batches snel verwerkt, wordt de limiet voor batchsnelheid sneller hersteld.

Probleemoplossing

Een taak is geslaagd wanneer statuscompleted is. Geslaagde taken genereren nog steeds een error_file_id, maar worden gekoppeld aan een leeg bestand met nul bytes.

Wanneer er een taakfout optreedt, vindt u details over de fout in de errors eigenschap:

{
  "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
      }
    }
  ]
}

Foutcodes

Foutcode Definitie
invalid_json_line Een regel (of meerdere) in het invoerbestand kon niet worden geparseerd als geldige json.

Zorg ervoor dat er geen typefouten zijn, de haakjes correct openen en sluiten, en aanhalingstekens volgens de JSON-standaard zijn, en dien de aanvraag opnieuw in.
too_many_tasks Het aantal aanvragen in het invoerbestand overschrijdt de maximaal toegestane waarde van 100.000.

Zorg ervoor dat uw totale aanvragen minder dan 100.000 zijn en verzend de taak opnieuw.
url_mismatch Een rij in uw invoerbestand heeft een URL die niet overeenkomt met de rest van de rijen, of de URL die is opgegeven in het invoerbestand komt niet overeen met de verwachte eindpunt-URL.

Zorg ervoor dat alle aanvraag-URL's hetzelfde zijn en dat deze overeenkomen met de eindpunt-URL die is gekoppeld aan uw Azure OpenAI-implementatie.
model_not_found De Azure OpenAI-modelimplementatienaam die is opgegeven in de eigenschap model van het invoerbestand is niet gevonden.

Zorg ervoor dat deze naam verwijst naar een geldige Azure OpenAI-modelimplementatie.
duplicate_custom_id De aangepaste id voor deze aanvraag is een duplicaat van de aangepaste id in een andere aanvraag.
empty_file Het invoerbestand is leeg. Zorg ervoor dat de batch ten minste één aanvraag bevat.
model_mismatch De Azure OpenAI-modelimplementatienaam die is opgegeven in de eigenschap model van deze aanvraag in het invoerbestand komt niet overeen met de rest van het bestand.

Zorg ervoor dat alle aanvragen in de batch verwijzen naar dezelfde Azure OpenAI in Foundry Models-modelimplementatie in de eigenschap model van de aanvraag.
invalid_request Het schema van de invoerregel is ongeldig of de implementatie-SKU is ongeldig.

Zorg ervoor dat de eigenschappen van de aanvraag in het invoerbestand overeenkomen met de verwachte invoereigenschappen en dat de Azure OpenAI-implementatie-SKU globalbatch voor batch-API-aanvragen is.
input_modified Blob-invoer is gewijzigd nadat de batchtaak is verzonden.
input_no_permissions Het is niet mogelijk om toegang te krijgen tot de invoerblob. Controleer machtigingen en netwerktoegang tussen het Azure OpenAI-account en het Azure Storage-account.

Bekende problemen

  • nl-NL: Resources die zijn geïmplementeerd met Azure CLI werken niet direct uit de doos met de wereldwijde batch van Azure OpenAI. Dit is het gevolg van een probleem waarbij resources die zijn geïmplementeerd met deze methode eindpuntsubdomeinen hebben die niet voldoen aan het https://your-resource-name.openai.azure.com patroon. Een tijdelijke oplossing voor dit probleem is het implementeren van een nieuwe Azure OpenAI-resource met behulp van een van de andere veelgebruikte implementatiemethoden waarmee de installatie van het subdomein correct wordt afgehandeld als onderdeel van het implementatieproces.

  • UTF-8-BOM gecodeerde jsonl bestanden worden niet ondersteund. JSON-regelsbestanden moeten worden gecodeerd met UTF-8. Het gebruik van byte-Order-Mark (BOM) gecodeerde bestanden wordt niet officieel ondersteund door de JSON RFC-specificatie en Azure OpenAI behandelt bom gecodeerde bestanden momenteel als ongeldig. Een met UTF-8-BOM gecodeerd bestand retourneert momenteel het algemene foutbericht: 'Validatie is mislukt: een geldige modelimplementatienaam kan niet worden geëxtraheerd uit het invoerbestand. Zorg ervoor dat elke rij in het invoerbestand een geldige implementatienaam heeft die is opgegeven in het veld Model en dat de implementatienaam consistent is in alle rijen.

  • Wanneer u uw eigen opslag gebruikt voor batchinvoergegevens, en de invoerblob is gewijzigd nadat de batchtaak is ingediend, zal de service de scoretaak als mislukt markeren.

Zie ook