Aan de slag met Azure OpenAI-batchimplementaties
De Azure OpenAI Batch-API is ontworpen om grootschalige en grote verwerkingstaken efficiënt te verwerken. Asynchrone groepen aanvragen verwerken met een afzonderlijk quotum, met 24-uurs doeltijd, tegen 50% lagere 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 ge enqueued tokenquotum om onderbrekingen van uw onlineworkloads te voorkomen.
Enkele belangrijke gebruiksvoorbeelden:
Grootschalige gegevensverwerking: analyseer snel uitgebreide gegevenssets 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 gepersonaliseerde inhoud en aanbevelingen op schaal.
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 worden alle reeds voltooide werkzaamheden 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 op elke Azure OpenAI-locatie. Meer informatie over gegevenslocatie.
Ondersteuning voor Batch
Wereldwijde beschikbaarheid van batchmodellen
Regio | gpt-4o, 2024-05-13 | gpt-4o, 2024-08-06 | gpt-4o, 2024-11-20 | gpt-4o-mini, 2024-07-18 | gpt-4, 0613 | gpt-4, turbo-2024-04-09 | gpt-35-turbo, 0613 | gpt-35-turbo, 1106 | gpt-35-turbo, 0125 |
---|---|---|---|---|---|---|---|---|---|
australiaeast | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
brazilsouth | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
canadaeast | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
eastus | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
eastus2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
francecentral | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
germanywestcentral | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
japaneast | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
koreacentral | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
northcentralus | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
norwayeast | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Polencentral | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
southafricanorth | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
US - zuid-centraal | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
southindia | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
swedencentral | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
switzerlandnorth | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
uksouth | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
westeurope | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
westus | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
westus3 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
De volgende modellen ondersteunen globale batch:
Modelleren | Versie | Invoerindeling |
---|---|---|
gpt-4o |
2024-08-06 | text + image |
gpt-4o-mini |
2024-07-18 | text + image |
gpt-4o |
2024-05-13 | text + image |
gpt-4 |
turbo-2024-04-09 | sms verzenden |
gpt-4 |
0613 | sms verzenden |
gpt-35-turbo |
0125 | sms verzenden |
gpt-35-turbo |
1106 | sms verzenden |
gpt-35-turbo |
0613 | sms verzenden |
Raadpleeg de pagina modellen voor de meest recente informatie over regio's/modellen waarin globale batch momenteel wordt ondersteund.
API-ondersteuning
API-versie | |
---|---|
Nieuwste GA API-release: | 2024-10-21 |
Nieuwste preview-API-release: | 2024-10-01-preview |
Ondersteuning voor het eerst toegevoegd in: 2024-07-01-preview
Functieondersteuning
Het volgende wordt momenteel niet ondersteund:
- Integratie met de Assistants-API.
- Integratie met Azure OpenAI op uw gegevensfunctie.
Notitie
Gestructureerde uitvoer wordt nu ondersteund met Global Batch.
Batch-implementatie
Notitie
In de Azure AI Foundry-portal worden de batchimplementatietypen weergegeven als Global-Batch
en Data Zone Batch
. Zie onze handleiding voor implementatietypen voor Azure OpenAI voor meer informatie over azure OpenAI-implementatietypen.
Tip
We raden u aan dynamisch quotum in te schakelen voor alle globale batchmodelimplementaties om taakfouten te voorkomen vanwege onvoldoende ge enqueued tokenquotum. Met dynamisch quotum 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.
Vereisten
- Een Azure-abonnement: maak er gratis een.
- Een Azure OpenAI-resource met een model van het geïmplementeerde implementatietype
Global-Batch
. Raadpleeg de handleiding voor het maken van resources en modelimplementatie voor hulp bij dit proces.
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
{"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?"}]}}
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
kenmerk moet worden ingesteld op overeenstemming met de naam van de Global Batch-implementatie die u wilt instellen voor deductiereacties.
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 starten. Het uploaden van bestanden kan zowel programmatisch als via de Studio worden uitgevoerd.
Meld u aan bij de Azure AI Foundry-portal.
Selecteer de Azure OpenAI-resource waar u een wereldwijde batchmodelimplementatie beschikbaar hebt.
Selecteer Batch-taken>+ Batch-taken maken.
Selecteer bestand uploaden in de vervolgkeuzelijst onder Batch-gegevens>uploadbestanden> en geef het pad op voor het
test.jsonl
bestand dat u in de vorige stap> Hebt gemaakt.
Batchtaak maken
Selecteer Maken om uw batchtaak te starten.
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 een status cancelling
van maximaal 10 minuten, voordat deze wordt gewijzigd cancelled
in , waar de batch gedeeltelijke resultaten (indien van toepassing) beschikbaar is in het uitvoerbestand.
Vereisten
- Een Azure-abonnement: maak er gratis een.
- Python 3.8 of nieuwere versie
- De volgende Python-bibliotheek:
openai
- Jupyter Notebooks
- Een Azure OpenAI-resource met een model van het geïmplementeerde implementatietype
Global-Batch
. Raadpleeg de handleiding voor het maken van resources en modelimplementatie voor hulp bij dit proces.
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
{"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?"}]}}
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
kenmerk moet worden ingesteld op overeenstemming met de naam van de Global Batch-implementatie die u wilt instellen voor deductiereacties.
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 die u uitvoert als uw Jupyter Notebook.
Batchbestand uploaden
Zodra het invoerbestand is voorbereid, moet u eerst het bestand uploaden om vervolgens een batchtaak te kunnen starten. Het uploaden van bestanden kan zowel programmatisch als via de Studio worden uitgevoerd. In dit voorbeeld worden omgevingsvariabelen gebruikt in plaats van de sleutel- en eindpuntwaarden. Als u niet bekend bent met het gebruik van omgevingsvariabelen met Python, raadpleegt u een van onze quickstarts waarin het proces voor het instellen van de omgevingsvariabelen stapsgewijs wordt uitgelegd.
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="2024-10-21"
)
# Upload a file with a purpose of "batch"
file = client.files.create(
file=open("test.jsonl", "rb"),
purpose="batch"
)
print(file.model_dump_json(indent=2))
file_id = file.id
Uitvoer:
{
"id": "file-9f3a81d899b4442f98b640e4bc3535dd",
"bytes": 815,
"created_at": 1722476551,
"filename": "test.jsonl",
"object": "file",
"purpose": "batch",
"status": null,
"status_details": null
}
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",
completion_window="24h",
)
# Save batch ID for later use
batch_id = batch_response.id
print(batch_response.model_dump_json(indent=2))
Notitie
Momenteel moet het voltooiingsvenster worden ingesteld op 24 uur. Als u een andere waarde dan 24 uur instelt, mislukt uw taak. Taken die langer dan 24 uur duren, worden nog steeds uitgevoerd totdat ze zijn geannuleerd.
Uitvoer:
{
"id": "batch_6caaf24d-54a5-46be-b1b7-518884fcbdde",
"completion_window": "24h",
"created_at": 1722476583,
"endpoint": null,
"input_file_id": "file-9f3a81d899b4442f98b640e4bc3535dd",
"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
}
}
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}")
Uitvoer:
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))
Uitvoer:
{
"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 is zowel error_file_id
een apart output_file_id
. Gebruik de functie error_file_id
om u te helpen bij het opsporen van fouten die zich voordoen met uw batchtaak.
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)
Uitvoer:
Voor de beknoptheid zijn we slechts één antwoord van de voltooiing van de chat in de uitvoer inbegrepen. Als u de stappen in dit artikel volgt, moet u drie antwoorden hebben die vergelijkbaar zijn met de onderstaande:
{
"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
}
Aanvullende batchopdrachten
Batch annuleren
Hiermee wordt een batch in uitvoering geannuleerd. De batch heeft een status cancelling
van maximaal 10 minuten, voordat deze wordt gewijzigd cancelled
in , waar de batch gedeeltelijke resultaten (indien van toepassing) beschikbaar is in het uitvoerbestand.
client.batches.cancel("batch_abc123") # set to your batch_id for the job you want to cancel
Batch vermelden
Batchtaken weergeven voor een bepaalde 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 weergeven (preview)
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 gemakkelijker 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://cognitiveservices.azure.com/.default')
endpoint = "https://{YOUR_RESOURCE_NAME}.openai.azure.com/"
api_version = "2024-10-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)
Uitvoer:
{
"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"
}
Vereisten
- Een Azure-abonnement: maak er gratis een.
- Een Azure OpenAI-resource met een model van het geïmplementeerde implementatietype
Global-Batch
. Raadpleeg de handleiding voor het maken van resources en modelimplementatie voor hulp bij dit proces.
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
{"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?"}]}}
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
kenmerk moet worden ingesteld op overeenstemming met de naam van de Global Batch-implementatie die u wilt instellen voor deductiereacties.
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 starten. Het uploaden van bestanden kan zowel programmatisch als via de Studio worden uitgevoerd. In dit voorbeeld worden omgevingsvariabelen gebruikt in plaats van de sleutel- en eindpuntwaarden. Als u niet bekend bent met het gebruik van omgevingsvariabelen met Python, raadpleegt u een van onze quickstarts waarin het proces voor het instellen van de omgevingsvariabelen stapsgewijs wordt uitgelegd.
Belangrijk
Als u een API-sleutel gebruikt, slaat u deze veilig op ergens anders op, zoals in Azure Key Vault. Neem de API-sleutel niet rechtstreeks in uw code op en plaats deze nooit openbaar.
Zie Aanvragen verifiëren bij Azure AI-services voor meer informatie over beveiliging van AI-services.
curl -X POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/files?api-version=2024-10-21 \
-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"
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.
Uitvoer:
{
"status": "pending",
"bytes": 686,
"purpose": "batch",
"filename": "test.jsonl",
"id": "file-21006e70789246658b86a1fc205899a4",
"created_at": 1721408291,
"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/files/{file-id}?api-version=2024-10-21 \
-H "api-key: $AZURE_OPENAI_API_KEY"
Uitvoer:
{
"status": "processed",
"bytes": 686,
"purpose": "batch",
"filename": "test.jsonl",
"id": "file-21006e70789246658b86a1fc205899a4",
"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/batches?api-version=2024-10-21 \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input_file_id": "file-abc123",
"endpoint": "/chat/completions",
"completion_window": "24h"
}'
Notitie
Momenteel moet het voltooiingsvenster worden ingesteld op 24 uur. Als u een andere waarde dan 24 uur instelt, mislukt uw taak. Taken die langer dan 24 uur duren, worden nog steeds uitgevoerd totdat ze zijn geannuleerd.
Uitvoer:
{
"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/batches/{batch_id}?api-version=2024-10-21 \
-H "api-key: $AZURE_OPENAI_API_KEY"
Uitvoer:
{
"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 uitgevoerd cancelled (dit kan tot 10 minuten duren.) |
cancelled |
de partij was cancelled . |
Uitvoerbestand van batchtaak ophalen
curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/files/{output_file_id}/content?api-version=2024-10-21 \
-H "api-key: $AZURE_OPENAI_API_KEY" > batch_output.jsonl
Aanvullende batchopdrachten
Batch annuleren
Hiermee wordt een batch in uitvoering geannuleerd. De batch heeft een status cancelling
van maximaal 10 minuten, voordat deze wordt gewijzigd cancelled
in , waar de batch gedeeltelijke resultaten (indien van toepassing) beschikbaar is in het uitvoerbestand.
curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/batches/{batch_id}/cancel?api-version=2024-10-21 \
-H "api-key: $AZURE_OPENAI_API_KEY"
Batch vermelden
Maak een lijst van bestaande batchtaken voor een bepaalde Azure OpenAI-resource.
curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/batches?api-version=2024-10-21 \
-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 weergeven (preview)
Gebruik de REST API om alle batchtaken weer te geven met extra sorteer-/filteropties.
curl "YOUR_RESOURCE_NAME.openai.azure.com/batches?api-version=2024-10-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 van limiet | Limietwaarde |
---|---|
Maximum aantal bestanden per resource | 500 |
Maximale grootte van invoerbestand | 200 MB |
Maximum aantal aanvragen per bestand | 100.000 |
Batchquotum
In de tabel wordt de limiet voor batchquota weergegeven. Quotumwaarden voor globale batch worden weergegeven in termen van enqueued tokens. Wanneer u een bestand verzendt voor batchverwerking, wordt het aantal tokens in het bestand geteld. Totdat de batchtaak een terminalstatus heeft bereikt, worden deze tokens meegeteld voor de totale limiet voor het enquêtetoken.
Globale batch
Modelleren | Enterprise Agreement | Standaardinstelling | Maandelijkse abonnementen op basis van creditcards | MSDN-abonnementen | Azure for Students, gratis proefversies |
---|---|---|---|---|---|
gpt-4o |
5 B | 200 M | 50 M | 90 K | N.v.t. |
gpt-4o-mini |
15 B | 1 B | 50 M | 90 K | N.v.t. |
gpt-4-turbo |
300 M | 80 M | 40 M | 90 K | N.v.t. |
gpt-4 |
150 M | 30 M | 5 M | 100k | N.v.t. |
gpt-35-turbo |
10 B | 1 B | 100 M | 2 M | 50 K |
B = miljard | M = miljoen | K = duizend
Gegevenszonebatch
Modelleren | Enterprise Agreement | Standaardinstelling | Maandelijkse abonnementen op basis van creditcards | MSDN-abonnementen | Azure for Students, gratis proefversies |
---|---|---|---|---|---|
gpt-4o |
500 M | 30 M | 30 M | 90 K | N.v.t. |
gpt-4o-mini |
1,5 B | 100 M | 50 M | 90 K | N.v.t. |
Batch-object
Eigenschap | Type | Definitie |
---|---|---|
id |
tekenreeks | |
object |
tekenreeks | batch |
endpoint |
tekenreeks | Het API-eindpunt dat wordt gebruikt door de batch |
errors |
object | |
input_file_id |
tekenreeks | De id van het invoerbestand voor de batch |
completion_window |
tekenreeks | Het tijdsbestek waarin de batch moet worden verwerkt |
status |
tekenreeks | De huidige status van de batch. Mogelijke waarden: validating , failed , in_progress , , finalizing , completed , expired , cancelling . cancelled |
output_file_id |
tekenreeks | De id van het bestand met de uitvoer van geslaagde aanvragen. |
error_file_id |
tekenreeks | De id van het bestand met de uitvoer van aanvragen met fouten. |
created_at |
geheel getal | Een tijdstempel toen deze batch werd gemaakt (in unix-epochs). |
in_progress_at |
geheel getal | Een tijdstempel waarop deze batch is begonnen met de voortgang (in unix-epochs). |
expires_at |
geheel getal | Een tijdstempel wanneer deze batch verloopt (in unix-epochs). |
finalizing_at |
geheel getal | Een tijdstempel wanneer deze batch is begonnen met voltooien (in unix-epochs). |
completed_at |
geheel getal | Een tijdstempel wanneer deze batch is begonnen met voltooien (in unix-epochs). |
failed_at |
geheel getal | Een tijdstempel wanneer deze batch is mislukt (in unix-epochs) |
expired_at |
geheel getal | Een tijdstempel wanneer deze batch is verlopen (in unix-epochs). |
cancelling_at |
geheel getal | Een tijdstempel wanneer deze batch is gestart cancelling (in unix-epochs). |
cancelled_at |
geheel getal | Een tijdstempel toen deze batch (in unix-epochs) 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 |
map | 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
Kunnen afbeeldingen worden gebruikt met de batch-API?
Deze mogelijkheid is beperkt tot bepaalde multimodale modellen. Momenteel ondersteunen alleen GPT-4o-installatiekopieën als onderdeel van batchaanvragen. Afbeeldingen kunnen worden opgegeven als invoer via de afbeeldings-URL of een base64-gecodeerde weergave van de afbeelding. Installatiekopieën voor batch worden momenteel niet ondersteund met GPT-4 Turbo.
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 Azure AI 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 worden alle reeds voltooide werkzaamheden 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 batcheren, maar dit is afhankelijk van het quotum voor het enquêtetoken. Uw tokenquotum met enqueued bevat het maximum aantal invoertokens dat u tegelijk kunt in de wachtrij 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 status
dit is Completed
. 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, juiste haakjes openen en sluiten, en aanhalingstekens volgens de JSON-standaard, en verzend de aanvraag opnieuw. |
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 implementatienaam van het Azure OpenAI-model die is opgegeven in de model eigenschap van het invoerbestand, is niet gevonden.Zorg ervoor dat deze naam verwijst naar een geldige implementatie van het Azure OpenAI-model. |
duplicate_custom_id |
De aangepaste id voor deze aanvraag is een duplicaat van de aangepaste id in een andere aanvraag. |
empty_batch |
Controleer het invoerbestand om ervoor te zorgen dat de aangepaste id-parameter uniek is voor elke aanvraag in de batch. |
model_mismatch |
De implementatienaam van het Azure OpenAI-model die is opgegeven in de model eigenschap van deze aanvraag in het invoerbestand komt niet overeen met de rest van het bestand.Zorg ervoor dat alle aanvragen in het batchpunt naar dezelfde Azure OpenAI-servicemodelimplementatie in de model eigenschap 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 uw invoerbestand overeenkomen met de verwachte invoereigenschappen en dat de Azure OpenAI-implementatie-SKU voor batch-API-aanvragen is globalbatch . |
Bekende problemen
- Resources die met Azure CLI zijn geïmplementeerd, werken niet standaard met de globale Azure OpenAI-batch. 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.
Zie ook
- Meer informatie over Azure OpenAI-implementatietypen
- Meer informatie over Azure OpenAI-quota en -limieten