ChatGPT API: hoe werkt de API? Uitleg voordelen & voorbeelden
ChatGPT en large language models in het algemeen worden steeds meer toegepast in de praktijk. Dit komt onder andere omdat de modellen achter de bekende chatbot ook kunnen worden aangeroepen via de ChatGPT API. Hiermee kan de functionaliteit van taalmodellen als ChatGPT worden geautomatiseerd of geïmplementeerd in andere applicaties.
In deze blog leggen we uit wat de voordelen zijn en hoe je de ChatGPT API gebruikt. Mocht je niet weten wat een API is, lees dan onze blog: Wat is een API en hoe werkt een API?.
Voordelen van de ChatGPT API
Voordelen van de API zijn:
- Je kunt het gebruik van taalmodellen integreren in bestaande applicaties of op een andere manier automatiseren.
- De API biedt meer mogelijkheden voor dan de chatfunctionaliteit zoals op ChatGPT.com.
- De API biedt aanvullende functionaliteiten aan die niet in de webapplicatie te vinden zijn.
Deze voordelen zullen we één voor één nader toelichten.
Voordeel 1. Integratie en automatisering
Door de API te integreren in bijvoorbeeld Python-scripts kun je relatief eenvoudig de API gebruiken in combinatie met bestaande datasets. Voorbeelden zijn:
- Je hebt een lijst van productbeschrijvingen en wilt afbeeldingen genereren voor een webshop.
- Een verzameling aan teksten moet worden samengevat.
- Het genereren van gepersonaliseerde teksten. Een bedrijf wil klanten informeren over nieuwe producten en gebruikt klantgegevens om de teksten te personaliseren zodat dit beter aansluit bij de lezer.
Dit zijn handelingen die via de applicatie op ChatGPT.com veel tijd zouden kosten, of zelfs onmogelijk zouden zijn op grotere schaal. Door de ChatGPT API aan te roepen vanuit bijvoorbeeld een Python script zijn deze zaken gemakkelijk te automatiseren of te integreren in systemen die je al gebruikt.
Voordeel 2. Meer mogelijkheden met de chatfunctionaliteit
Een tweede voordeel is dat je middels de API meer controle hebt over de mogelijkheden van ChatGPT. Zo kun je voor text-to-text modellen o.a. de volgende dingen configureren middels de API:
- Temperatuur: bepaalt de creativiteit of willekeurigheid van de antwoorden.
- Maximaal aantal tokens: hiermee kan je de lengte van de antwoorden limiteren.
- Controleer hoe divers de antwoorden zijn middels parameters als seed, top_p, frequency penalty en presence penalty.
- Gestructureerde output: krijg output terug in een gestructureerd JSON-formaat in plaats van een platte tekst.
- Expliciet onderscheid maken tussen user en system prompts. Een user prompt is een bericht dat je als gebruiker aan het model stuurt, een system prompt bevat instructies voor het model waarin beschreven staat hoe het model moet antwoorden.
Lees ook: alles over ChatGPT prompts
Voordeel 3. Extra functionaliteit
De API biedt naast de chatfunctionaliteit ook andere waardevolle functionaliteit zoals embeddings, vision en en function calling.
Door middel van embeddings kunnen teksten met elkaar vergeleken worden. Heel kort gezegd worden middels embeddings teksten omgezet in lijsten van getallen (vectoren). Met een cosine similarity
kan in 1 getal worden uitgedrukt in hoeverre teksten op elkaar lijken. Dit kan bijvoorbeel handig zijn om teksten te doorzoeken op termen die niet letterlijk in een tekst voorkomen, of om juist afwijkende teksten in een lijst te detecteren.
Vision is een image-to-text API. Afbeeldingen kunnen worden omgezet in tekst. Hierdoor wordt het mogelijk om bijvoorbeeld een lijst van afbeeldingen te doorzoeken, zelfs als er geen beschrijving van beschikbaar is.
Tot slot is function calling een manier om het model functies aan te laten roepen. Je beschrijft in welke gevallen een functie aangeroepen moet worden. Indien het model denkt dat een functie aangeroepen moet worden, zal in de response een tool_call
zitten. Dit kan je vervolgens in in je eigen code uitvoeren. Op deze manier kan je ChatGPT verbinden met bijvoorbeeld interne bedrijfssystemen.
Hoe werkt de ChatGPT API?
De API kan eenvoudig gebruikt worden middels Python via het OpenAI package. Documentatie is beschikbaar op de OpenAI website.
De API is betaald: na betaling krijg je een API-key waarmee je kan authenticeren. Je kunt op de volgende manier gebruik maken van de API:
from openai import OpenAI
client = OpenAI(api_key=<API_KEY>)
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "user", "content": "schrijf een gedicht van vier regels over Python en AI"}
]
)
print(response.choices[0].message.content)
Als je deze code uitvoert, krijg je een resultaat dat lijkt op het volgende:
Python weeft code, AI ontwaakt in licht,
Algoritmen dansen, kennis bereikt haar zicht.
Samen vormen zij een wereld vol magie,
Waar dromen van techniek werkelijkheid zien.
Het package geeft een object van class Response
terug. De structuur van dit object kun je achterhalen met je IDE (bijvoorbeeld Visual Studio Code), maar het staat ook beschreven in de documentatie.
De API maakt gebruik van zogenaamde endpoints, zoals chat.completions
, image
en audio.speech
. Elke endpoint verwijst naar het type data dat je terug krijgt.
Tekst genereren (chat completions)
Generative AI modellen genereren elke keer nieuwe outputs. Indien gewenst kan je de mate van variatie aanpassen, bijvoorbeeld op de volgende manier:
client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "user", "content": "schrijf een gedicht van vier regels over Python en AI"}
],
temperature=0.2,
max_tokens=100,
frequency_penalty=0.0,
presence_penalty=0.0,
)
Daarnaast kun je ook gebruik maken van de seed
-parameter. Hiervoor kan je een willekeurig getal invullen, de output zal dan elke keer hetzelfde zijn.
De chat completions API kan je verder gebruiken om een tekst te genereren op basis van een afbeelding:
client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Geef een omschrijving van deze afbeelding in twee zinnen."},
{
"type": "image_url",
"image_url": {
"url": "https://datasciencepartners.nl/wp-content/uploads/2021/11/data-science-bootcamp-data-science-partners.jpg",
},
},
],
}
]
)
We voeden dus deze afbeelding en vragen een omschrijving in twee zinnen op via de ChatGPT API:
Hierop krijgen we het volgende antwoord:
"De afbeelding toont vier mensen die aan een tafel zitten en werken op hun laptops. Een man staat en kijkt aandachtig naar het scherm van de vrouw naast hem, terwijl de andere vrouwen zich concentreren op hun eigen werk.".
Afbeeldingen genereren (images)
Een afbeelding genereren is heel eenvoudig. Je definieërt een prompt en krijgt vervolgens een link terug waarop je de afbeelding kunt zien.
response = client.images.generate(
model="dall-e-3",
prompt="een kat in een gele auto",
size="1024x1024",
quality="standard",
n=1,
)
print(response.data[0].url)
Middels deze code wordt een link naar een afbeelding gegenereerd. Deze afbeelding kun je vervolgens opslaan. Het resultaat mag er zijn:
Het genereren van afbeeldingen is op de volgende manieren configureerbaar voor Dall-E 3:
n
: het aantal te genereren afbeeldingenquality
: 'standard' of 'hd'size
: '1024x1024', '1792x1024', '1024x1792'style
: 'vivid' of 'natural'
Embeddings
Zoals hierboven uitgelegd, kun je met embeddings een tekst omzetten naar een een vector (een lijst van getallen). De mate waarin de betekenis van teksten met elkaar overeenkomen kun je dankzij deze techniek uitdrukken in een getal, ook als niet dezelfde woorden gebruikt worden.
Een voorbeeld:
texts = [
"Python en SQL zijn handige talen",
"Met Pandas kan je Excel-bestanden inlezen",
"Hoe laat is het?",
]
response = client.embeddings.create(
model="text-embedding-3-small", # Use the appropriate embedding model
input=texts
)
embeddings = [
response.data[0].embedding,
response.data[1].embedding,
response.data[2].embedding,
]
We hebben op deze manier een lijst van teksten omgezet in een lijst van vectoren.
Vervolgens gaan we deze getallen met elkaar vergelijken:
from scipy.spatial.distance import cosine
import numpy as np
def get_similarity(vector_a: list[float], vector_b: list[float]):
return 1 - cosine(vector_a, vector_b)
for index_compare, text_compare in enumerate(texts):
for index_origin, text_origin in enumerate(texts):
similarity = get_similarity(embeddings[index_origin], embeddings[index_compare])
print(f"Similarity {similarity:.3f} for '{text_origin}' and '{text_compare}'")
We doen hier het volgende:
- We definiëren een functie 'get_similarity' waarmee we door middel van de cosine similarity de gelijkenis tussen twee vectoren kunnen uitdrukken in een getal.
- We definiëren een loop waarin de teksten met elkaar worden vergeleken.
Dit geeft het volgende resultaat:
Similarity 1.000 for 'Python en SQL zijn handige talen' and 'Python en SQL zijn handige talen'
Similarity 0.461 for 'Met Pandas kan je Excel-bestanden inlezen' and 'Python en SQL zijn handige talen'
Similarity 0.151 for 'Hoe laat is het?' and 'Python en SQL zijn handige talen'
Je ziet dat dat de overeenkomst in de laatste vergelijking veel lager is dan de overige vergelijkingen, ondanks dat in alle zinnen andere woorden zijn gekozen.
Conclusie
De OpenAI API biedt veel mogelijkheden. Niet alleen kun je de kracht van modellen inzetten in bestaande scripts of applicaties, ook zijn er simpelweg meer mogelijkheden dan wat er zichtbaar is ChatGPT.com. Als je meer wilt weten over het toepassen van AI in de praktijk, neem dan deel aan onze AI Opleiding en leer hoe je gemakkelijk AI kunt integreren in Python scripts en applicaties.
Wil je allround AI expert worden?
Tijdens onze AI 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.
Terry is afgestudeerd aan de TU Delft als ingenieur en heeft zich in zijn carrière beziggehouden met het optimaal benutten van data om bedrijfsprestaties te verbeteren. Dit heeft hij gedaan in verschillende rollen, als software ontwikkelaar en als data scientist.