Async jobs met OpenAI in Python Tutorial

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 .env bestand
  • Maakt een OpenAI client 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.
asyncio

Nadeel van deze aanpak

  • elke API-call wacht op de vorige
  • bij veel prompts loopt de totale verwerkingstijd snel op

Async jobs met OpenAI in Python Tutorial

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 def in plaats van def
  • await bij 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, await en asyncio.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.

by: