
Async jobs met OpenAI in Python Tutorial
Wanneer je met AI werkt in productieomgevingen, wil je efficiënt omgaan met API-calls. Zeker als je meerdere prompts tegelijk wilt verwerken. Door gebruik te maken van asynchrone jobs kun je meerdere AI-aanvragen parallel uitvoeren, zonder dat je code vastloopt door wachttijden.
In deze blog laat ik zien:
- waarom asynchroon werken belangrijk is
- hoe een synchrone aanpak eruitziet
- hoe je dezelfde logica omzet naar asynchrone jobs met Python en OpenAI
Alle codevoorbeelden kun je één-op-één gebruiken in een Jupyter Notebook of Python-script.
Wat zijn async jobs en waarom zijn ze handig?
Met async jobs:
- voer je meerdere API-calls tegelijk uit
- voorkom je dat je applicatie wacht op één enkele response
- schaal je eenvoudiger op bij grotere aantallen verzoeken
Dit is vooral relevant bij:
- batchverwerking van prompts
- dashboards of tools met veel AI-calls
- productieomgevingen met hogere belasting
Setup: OpenAI client en async client
We beginnen met het opzetten van de OpenAI-clients.
Eén reguliere client en één asynchrone variant (AsyncOpenAI).
Wat doet deze code?
- Laadt de API key vanuit een
.envbestand - Maakt een
OpenAIclient aan voor synchrone calls
import os
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv("api_key.env")
OPENAI_API_KEY = os.getenv("OPEN_AI_API_KEY")
print(f"Length API key: {len(OPENAI_API_KEY)}")
print(f"Last characters: ...{OPENAI_API_KEY[-30:]}")
client = OpenAI(api_key=OPENAI_API_KEY, base_url="https://api.openai.com/v1/")
print(client)Length API key: 164
Last characters: ...xtvqYjTUfLU8_RN4xfoZMy0nQDfCkA
<openai.OpenAI object at 0x79e6b1a597f0>Asynchrone client
Daarnaast maken we een asynchrone client aan die we later nodig hebben.
from openai import AsyncOpenAI
import asyncio
async_client = AsyncOpenAI() 1. Voorbeeld zonder asynchrone jobs
Laten we eerst kijken naar een klassieke, synchrone aanpak.
Stap 1: prompts definiëren
We maken een lijst met prompts die we willen beantwoorden.
prompts = [
"What are the most used machine learning models? Return only the names.",
"Explain the meaning of AI in a short sentence.",
"Which default Python module would you use for working with asynchronous jobs? Return only the name.",
]Stap 2: hulpfunctie voor een enkele prompt
Deze functie:
- stuurt één prompt naar het OpenAI-model
- wacht op een antwoord
- geeft het antwoord terug
def ask(prompt: str) -> str:
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{
"role": "user",
"content": prompt,
},
],
temperature=0,
)
answer = response.choices[0].message.content
return answer
Stap 3: prompts één voor één uitvoeren
Hier worden de prompts achter elkaar verwerkt.
De volgende start pas als de vorige klaar is.
for prompt in prompts:
print(prompt)
print(ask(prompt))
print()What are the most used machine learning models? Return only the names.
1. Linear Regression
2. Logistic Regression
3. Decision Trees
4. Random Forest
5. Support Vector Machines (SVM)
6. K-Nearest Neighbors (KNN)
7. Naive Bayes
8. Neural Networks
9. Gradient Boosting Machines (GBM)
10. XGBoost
Explain the meaning of AI in a short sentence.
AI, or artificial intelligence, refers to the simulation of human intelligence in machines that are programmed to think, learn, and make decisions like humans.
Which default Python module would you use for working with asynchronous jobs? Return only the name.
asyncioNadeel van deze aanpak
- elke API-call wacht op de vorige
- bij veel prompts loopt de totale verwerkingstijd snel op

2. Gebruik van asynchrone jobs
Nu gaan we hetzelfde doen, maar dan parallel.
We gebruiken hiervoor de standaard Python-package asyncio.
Asynchrone versie van de ask-functie
De belangrijkste aanpassingen:
async defin plaats vandefawaitbij de API-call- gebruik van
AsyncOpenAI
import asyncio
async def ask(prompt: str) -> str:
resp = await async_client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}],
temperature=0,
)
return resp.choices[0].message.content
Meerdere prompts tegelijk uitvoeren
Met asyncio.gather():
- start je alle taken tegelijk
- wacht je tot alles klaar is
- krijg je de resultaten terug als lijst
async def main():
answers = await asyncio.gather(*[ask(prompt) for prompt in prompts])
for prompt, answer in zip(prompts, answers):
print("Q:", prompt)
print("A:", answer, "\n")Uitvoeren van de async functie
await main()Q: What are the most used machine learning models? Return only the names.
A: 1. Linear Regression
2. Logistic Regression
3. Decision Trees
4. Random Forest
5. Support Vector Machines (SVM)
6. K-Nearest Neighbors (KNN)
7. Naive Bayes
8. Neural Networks
9. Gradient Boosting Machines (GBM)
10. XGBoost
Q: Explain the meaning of AI in a short sentence.
A: AI, or artificial intelligence, refers to the simulation of human intelligence in machines that are programmed to think, learn, and make decisions like humans.
Q: Which default Python module would you use for working with asynchronous jobs? Return only the name.
A: asyncio Wat is hier het voordeel?
- vergelijkbaar resultaat als de synchrone aanpak
- aanzienlijk sneller bij meerdere prompts
- ideaal voor productiegebruik
Om te onthouden
Zonder async jobs
- prompts worden één voor één uitgevoerd
- eenvoudige setup, maar minder schaalbaar
Met async jobs
- prompts worden parallel uitgevoerd
- gebruik
AsyncOpenAI - combineer
async,awaitenasyncio.gather()
Werk je met meerdere AI-aanvragen tegelijk?
Dan is asynchroon werken geen nice-to-have, maar een must.
Wil je AI expert worden?
Tijdens onze 5-daagse AI Opleiding of 7-daagse AI Engineer Opleiding leer je het hele AI spectrum kennen; van klassieke machine learning modellen tot generative AI met o.a. ChatGPT. Je leert programmeren in Python zodat je op uiteenlopende vlakken aan de slag kunt met AI. Of ben je op zoek naar een introductie in AI? Bekijk dan onze AI cursus basis eens. We bieden ook AI consultancy aan op allerlei thema’s.










