Grote taalmodellen (LLM’s) hebben vaak moeite om consistent gestructureerde output te genereren, zoals JSON, zelfs met geavanceerde prompt-engineering. Prompt-engineering kan de resultaten verbeteren, maar is niet waterdicht: tijdens het testen kunnen nog steeds fouten optreden, met af en toe mislukte resultaten. Hoe zorg je er dus voor dat je elke keer nauwkeurige en betrouwbare gestructureerde output krijgt?
Function calling in LLM’s verwijst naar het vermogen van deze modellen om gestructureerde dataresponsen te produceren, meestal in de vorm van JSON-objecten. Deze functie stelt LLM’s in staat om verder te gaan dan eenvoudige tekstgeneratie en te communiceren met externe systemen, API’s en tools. Door gebruik te maken van function calling kunnen LLM’s complexere, contextgestuurde taken uitvoeren, terwijl ze de vereiste structuur en nauwkeurigheid behouden.
In deze tutorial leren we hoe je GPT-4.5, het meest nauwkeurige en feitelijke model, gebruikt om een script met functie-aanroepen te maken. Eerst implementeren we één functie om aandelenkoersen van internet te halen. Daarna voegen we een extra functie toe, zodat de LLM kan kiezen tussen meerdere tools en op basis van de gebruikersprompt de meest geschikte selecteert.
Aan het einde van deze tutorial kun je je eigen slimme applicatie bouwen die voor elk bedrijf aandelenkoersen kan geven en ook nieuwsfeeds kan leveren.
Afbeelding van de auteur
De mogelijkheden voor function calling van GPT-4.5
GPT-4.5, het nieuwste model van OpenAI, introduceert verschillende geavanceerde features, waaronder verbeterde mogelijkheden voor function calling. Deze zijn bedoeld om het vermogen van het model te verbeteren om met externe systemen te interageren en complexe taken uit te voeren door specifieke functies aan te roepen op basis van gebruikersinvoer.
Hier zijn de belangrijkste features van de function calling in GPT-4.5:
1. Integratie met API’s
GPT-4.5 ondersteunt function calling via de Chat Completions API, Assistants API en Batch API. Hierdoor kunnen developers het model naadloos integreren in hun applicaties, zodat het taken kan uitvoeren zoals data ophalen, verwerken en zelfs commando’s uitvoeren binnen een softwareomgeving.
2. Gestructureerde output
Het model kan gestructureerde output retourneren, zoals JSON. Dat is vooral handig voor developers die het model willen laten interacteren met andere systemen of tools die specifieke dataformaten vereisen.
3. Vision-mogelijkheden
Hoewel GPT-4.5 geen multimodale output zoals spraak of video ondersteunt, biedt het wel vision-mogelijkheden via afbeeldingsinvoer. Het model kan zo visuele data verwerken en analyseren, wat je kunt combineren met function calling voor taken die zowel tekst- als beelddata omvatten.
4. Geavanceerde functionaliteiten
De function calling in GPT-4.5 is ontworpen om complexe workflows te vereenvoudigen door het model functies te laten suggereren of aanroepen die in je code zijn geschreven. Dit is vooral handig om repetitieve taken te automatiseren of AI-gestuurde besluitvorming in bestaande softwaresystemen te integreren.
We bouwen nu een eenvoudig systeem voor functie-aanroepen met het GPT-4.5-model en de Yahooquery-bibliotheek. De Yahooquery-bibliotheek helpt ons om allerlei aandelen-gerelateerde data uit Yahoo Finance te halen.
Onze oplossing laat gebruikers vragen stellen over aandelenkoersen, waarna een specifieke functie wordt getriggerd die de koers van internet ophaalt en een antwoord genereert. Zo simpel is het.
We beginnen met het installeren van de libraries openai en yahooquery met het PIP-commando.
Maak een Python-functie die een ticker (bijv. AAPL) accepteert en de koers van die ticker retourneert. Onder de motorkap gebruikt deze yahooquery om relevante data te extraheren.
from openai import OpenAI
import json
from yahooquery import Ticker
defget_stock_price(ticker):try:# Create a Ticker object for the provided ticker symbol
t = Ticker(ticker)# Retrieve the price data
price_data = t.price
# Check if we received valid data for the tickerif ticker in price_data and price_data[ticker].get("regularMarketPrice")isnotNone:
price = price_data[ticker]["regularMarketPrice"]else:returnf"Price information for {ticker} is unavailable."except Exception as e:returnf"Failed to retrieve data for {ticker}: {str(e)}"returnf"{ticker} is currently trading at ${price:.2f}"Mogelijk gemaakt door
De tools definiëren met de functie
De OpenAI-client begrijpt de Python-functie niet, dus moeten we een tool maken met een lijst van dictionaries. We moeten de benodigde naam, beschrijving en outputtype opgeven.
Wanneer deze functie wordt aangeroepen, haalt hij de tickersymbol uit de prompt en geeft die terug in een gestructureerd formaat.
tools =[{"type":"function","function":{"name":"get_stock_price","description":"Get current stock price for a provided ticker symbol from Yahoo Finance using the yahooquery Python library.","parameters":{"type":"object","properties":{"ticker":{"type":"string"}},"required":["ticker"],"additionalProperties":False},"strict":True}}]Mogelijk gemaakt door
Het model laten beslissen of het de functie moet aanroepen
Laten we onze zojuist gemaakte OpenAI-functie testen. Geef de chat completion het gebruikersbericht, de modelnaam en de tools mee.
client = OpenAI()
messages =[{"role":"user","content":"What's the current price of Meta stock?"}]
completion = client.chat.completions.create(
model="gpt-4.5-preview",
messages=messages,
tools=tools,)print(completion.choices[0].message.tool_calls)Mogelijk gemaakt door
Zoals we zien heeft GPT-4.5 de get_stock_price correct aangeroepen en de juiste ticker (META) geretourneerd.
[ChatCompletionMessageToolCall(id='call_uVGbahRiMnn4AkOJYbv8gfIV', function=Function(arguments='{"ticker":"META"}', name='get_stock_price'),type='function')]Mogelijk gemaakt door
De functie uitvoeren met de meegegeven ticker
We kunnen deze ticker nu doorgeven aan onze Python-functie get_stock_price.
tool_call = completion.choices[0].message.tool_calls[0]
args = json.loads(tool_call.function.arguments)
result = get_stock_price(args["ticker"])print(result)Mogelijk gemaakt door
Als resultaat krijg je een respons met de tickernaam en de bijbehorende koers.
Je kunt hier stoppen, maar om een goed antwoord in natuurlijke taal te geven, moet je de resultaten opnieuw aan de chat completion doorgeven.
De functieaanroep en toolresultaat toevoegen
We voegen de gegenereerde respons uit het vorige gesprek toe en nemen ook de toolaanroep op met tool-ID en toolresultaten.
messages.append(completion.choices[0].message)# Model's function call message
messages.append({"role":"tool","tool_call_id": tool_call.id,"content":str(result)})Mogelijk gemaakt door
Het bijgewerkte gesprek terug naar het model sturen
Voer de chat completion opnieuw uit met het bericht dat de inhoud van de toolaanroepen bevat.
completion_2 = client.chat.completions.create(
model="gpt-4.5-preview",
messages=messages,
tools=tools,)# The final model response incorporating the stock price informationprint(completion_2.choices[0].message.content)Mogelijk gemaakt door
Je denkt misschien dat dit een nutteloze stap is, maar bij complexe output helpt deze stap je om de resultaten in gewoon Engels te begrijpen in plaats van in JSON-formaat.
Ben je nog niet helemaal thuis in de OpenAI API en wil je meer leren? Overweeg dan de OpenAI Fundamentals-carrièretrack om te leren hoe je de OpenAI API gebruikt voor prompts met OpenAI’s GPT- en Whisper-modellen.
Meerdere functies aanroepen met GPT-4.5
Nu leren we hoe we nog een functie aan ons AI-systeem toevoegen, zodat GPT-4.5 automatisch kan beslissen welke functie moet worden aangeroepen op basis van de gebruikersprompt. We voegen een nieuwe feed-functie toe die de top 3 nieuwsartikelen retourneert met links voor de opgegeven ticker.
Begin met het installeren van de feedparser-bibliotheek met het pip-commando. We gebruiken deze bibliotheek om de headlines voor de opgegeven ticker op te halen.
Maak de Python-functie get_stock_news die de ticker als input neemt en de drie belangrijkste nieuwskoppen met hun links retourneert.
import feedparser
defget_stock_news(ticker):# Construct the RSS feed URL for the given ticker.
rss_url =f"https://feeds.finance.yahoo.com/rss/2.0/headline?s={ticker}®ion=US&lang=en-US"try:
feed = feedparser.parse(rss_url)ifnot feed.entries:returnf"No news found for {ticker}."# Extract the top 3 news items (title and link)
news_items =[]for entry in feed.entries[:3]:
title = entry.get("title","No Title")
link = entry.get("link","No Link")
news_items.append(f"{title} ({link})")
news_str ="\n".join(news_items)except Exception as e:returnf"Failed to retrieve news for {ticker}: {str(e)}"returnf"Latest news for {ticker}:\n{news_str}"
get_stock_news("AAPL")Mogelijk gemaakt door
We hebben de drie belangrijkste headlines over Apple verzameld met bijbehorende links.
'Latest news for AAPL:\nNvidia AI Server Maker Hon Hai Posts 25% Jump in Two-Month Sales
(https://finance.yahoo.com/news/nvidia-ai-server-maker-hon-075011863.html?.tsrc=rss)\nFoxconn says February revenue rose 56.43% y/y
(https://finance.yahoo.com/news/foxconn-says-february-revenue-rose-074433615.html?.tsrc=rss)\nApple Inc.(AAPL): Among the Best Stocks To Invest In According to Billionaires
(https://finance.yahoo.com/news/apple-inc-aapl-among-best-051548210.html?.tsrc=rss)'Mogelijk gemaakt door
Meerdere tools definiëren voor koers en nieuws
We moeten nu een extra OpenAI-functie toevoegen genaamd get_stock_news met de juiste beschrijving en output.
tools =[{"type":"function","function":{"name":"get_stock_price","description":"Get current stock price for a provided ticker symbol using yahooquery.","parameters":{"type":"object","properties":{"ticker":{"type":"string"}},"required":["ticker"],"additionalProperties":False},"strict":True}},{"type":"function","function":{"name":"get_stock_news","description":"Get the latest news for a provided ticker symbol by parsing the Yahoo Finance RSS feed using feedparser.","parameters":{"type":"object","properties":{"ticker":{"type":"string"}},"required":["ticker"],"additionalProperties":False},"strict":True}}]Mogelijk gemaakt door
Het model laten beslissen of het één of beide functies moet aanroepen
Laten we de functie testen door GPT-4.5 te vragen naar de Google-aandelen en het laatste nieuws over Google.
messages =[{"role":"user","content":"What's the current price of Google stock and can you show me the latest news about it?"}]
completion = client.chat.completions.create(
model="gpt-4.5-preview",
messages=messages,
tools=tools,)
completion.choices[0].message.tool_callsMogelijk gemaakt door
Zoals we zien heeft het beide functies aangeroepen voor aandelenkoers en het laatste nieuws.
[ChatCompletionMessageToolCall(id='call_zfcRJ4EcIUUqHCcN8SErjeoi', function=Function(arguments='{"ticker": "GOOGL"}', name='get_stock_price'),type='function'),
ChatCompletionMessageToolCall(id='call_jBv8TlSPOyFKcRWHwByxLMb4', function=Function(arguments='{"ticker": "GOOGL"}', name='get_stock_news'),type='function')]Mogelijk gemaakt door
Het resultaat van de functieaanroep opslaan
Het probleem is dat beide functies de ticker als resultaat retourneren. We moeten met een if-else-structuur bepalen welke functie is aangeroepen. We slaan de resultaten van de functie op in de dictionary.
# The model returns function call requests.
tool_calls = completion.choices[0].message.tool_calls
# Execute each function call based on the tool the model requested
tool_results ={}for tool_call in tool_calls:
func_name = tool_call.function.name
args = json.loads(tool_call.function.arguments)if func_name =="get_stock_price":
tool_results["price"]= get_stock_price(args["ticker"])elif func_name =="get_stock_news":
tool_results["news"]= get_stock_news(args["ticker"])Mogelijk gemaakt door
De functieaanroep en toolresultaten toevoegen
We voegen nu de eerder gegenereerde resultaten toe en het functieresultaat met de tool-ID.
messages.append(completion.choices[0].message)# Append the model's function call messagefor tool_call in tool_calls:
func_name = tool_call.function.name
result_content = tool_results.get("price")if func_name =="get_stock_price"else tool_results.get("news")
messages.append({"role":"tool","tool_call_id": tool_call.id,"content": result_content
})Mogelijk gemaakt door
Het bijgewerkte gesprek terug naar het model sturen
Wanneer we het resulterende bericht aan GPT-4.5 doorgeven, genereert het geweldige resultaten die helemaal logisch zijn.
from IPython.display import display, Markdown
completion_2 = client.chat.completions.create(
model="gpt-4.5-preview",
messages=messages,
tools=tools,)# The final model response incorporates both stock price and news.
Markdown(completion_2.choices[0].message.content)Mogelijk gemaakt door
We hebben de Google-aandelenkoers en links naar het belangrijkste nieuws over Google verkregen.
De broncode en outputs zijn beschikbaar in de DataLab-werkruimte. Je hoeft alleen je eigen OpenAI API-sleutel toe te voegen aan de omgevingsvariabele en je kunt alles zelf draaien.
Conclusie
We hebben LLM’s gedwongen om gestructureerde output te genereren en die vervolgens door te geven aan een API of een andere Python-functie om een specifieke taak uit te voeren. Geavanceerde AI, zoals GPT-4.5, kan meerdere services of API’s gebruiken om sterk geïntegreerde antwoorden te genereren.
In de toekomst zullen we function calling en agents gebruiken om alles om ons heen te besturen; geef simpelweg een spraakcommando aan je AI, en die roept de benodigde tools aan op basis van je opdracht en brengt wijzigingen aan in het systeem.
We hebben GPT-4.5, maar veel AI-experts wachten op GPT-5, waarvan wordt verwacht dat het dichter bij AGI ligt. Je kunt alles over het aankomende model lezen in de blog Everything We Know About GPT-5 .
Als gecertificeerd data scientist haal ik met passie het maximale uit de nieuwste technologie om innovatieve machinelearning-toepassingen te bouwen. Met een sterke achtergrond in spraakherkenning, data-analyse en -rapportage, MLOps, conversationele AI en NLP heb ik mijn vaardigheden aangescherpt in het ontwikkelen van intelligente systemen die echt impact maken. Naast mijn technische expertise ben ik ook een sterke communicator met een talent om complexe concepten terug te brengen tot heldere, beknopte taal. Daardoor ben ik uitgegroeid tot een veelgelezen blogger over data science, waar ik mijn inzichten en ervaringen deel met een groeiende community van data-professionals. Op dit moment richt ik me op contentcreatie en redactie, waarbij ik met large language models werk aan krachtige en aansprekende content die zowel bedrijven als individuen helpt het beste uit hun data te halen.
Begin je reis met het ontwikkelen van AI-gestuurde applicaties met de OpenAI API. Leer over de functionaliteit achter populaire AI-toepassingen zoals ChatGPT.
Grote taalmodellen (LLM’s) hebben vaak moeite om consistent gestructureerde output te genereren, zoals JSON, zelfs met geavanceerde prompt-engineering. Prompt-engineering kan de resultaten verbeteren, maar is niet waterdicht: tijdens het testen kunnen nog steeds fouten optreden, met af en toe mislukte resultaten. Hoe zorg je er dus voor dat je elke keer nauwkeurige en betrouwbare gestructureerde output krijgt?
Function calling in LLM’s verwijst naar het vermogen van deze modellen om gestructureerde dataresponsen te produceren, meestal in de vorm van JSON-objecten. Deze functie stelt LLM’s in staat om verder te gaan dan eenvoudige tekstgeneratie en te communiceren met externe systemen, API’s en tools. Door gebruik te maken van function calling kunnen LLM’s complexere, contextgestuurde taken uitvoeren, terwijl ze de vereiste structuur en nauwkeurigheid behouden.
In deze tutorial leren we hoe je GPT-4.5, het meest nauwkeurige en feitelijke model, gebruikt om een script met functie-aanroepen te maken. Eerst implementeren we één functie om aandelenkoersen van internet te halen. Daarna voegen we een extra functie toe, zodat de LLM kan kiezen tussen meerdere tools en op basis van de gebruikersprompt de meest geschikte selecteert.
Aan het einde van deze tutorial kun je je eigen slimme applicatie bouwen die voor elk bedrijf aandelenkoersen kan geven en ook nieuwsfeeds kan leveren.
Afbeelding van de auteur
De mogelijkheden voor function calling van GPT-4.5
GPT-4.5, het nieuwste model van OpenAI, introduceert verschillende geavanceerde features, waaronder verbeterde mogelijkheden voor function calling. Deze zijn bedoeld om het vermogen van het model te verbeteren om met externe systemen te interageren en complexe taken uit te voeren door specifieke functies aan te roepen op basis van gebruikersinvoer.
Bron: Model - OpenAI API
Hier zijn de belangrijkste features van de function calling in GPT-4.5:
1. Integratie met API’s
GPT-4.5 ondersteunt function calling via de Chat Completions API, Assistants API en Batch API. Hierdoor kunnen developers het model naadloos integreren in hun applicaties, zodat het taken kan uitvoeren zoals data ophalen, verwerken en zelfs commando’s uitvoeren binnen een softwareomgeving.
2. Gestructureerde output
Het model kan gestructureerde output retourneren, zoals JSON. Dat is vooral handig voor developers die het model willen laten interacteren met andere systemen of tools die specifieke dataformaten vereisen.
3. Vision-mogelijkheden
Hoewel GPT-4.5 geen multimodale output zoals spraak of video ondersteunt, biedt het wel vision-mogelijkheden via afbeeldingsinvoer. Het model kan zo visuele data verwerken en analyseren, wat je kunt combineren met function calling voor taken die zowel tekst- als beelddata omvatten.
4. Geavanceerde functionaliteiten
De function calling in GPT-4.5 is ontworpen om complexe workflows te vereenvoudigen door het model functies te laten suggereren of aanroepen die in je code zijn geschreven. Dit is vooral handig om repetitieve taken te automatiseren of AI-gestuurde besluitvorming in bestaande softwaresystemen te integreren.
Ontdek alle details over het nieuwe OpenAI-model in de blog GPT 4.5: features, toegang, vergelijking met GPT-4o & meer.
Één functie aanroepen met GPT-4.5
We bouwen nu een eenvoudig systeem voor functie-aanroepen met het GPT-4.5-model en de Yahooquery-bibliotheek. De Yahooquery-bibliotheek helpt ons om allerlei aandelen-gerelateerde data uit Yahoo Finance te halen.
Onze oplossing laat gebruikers vragen stellen over aandelenkoersen, waarna een specifieke functie wordt getriggerd die de koers van internet ophaalt en een antwoord genereert. Zo simpel is het.
We beginnen met het installeren van de libraries
openaienyahooquerymet het PIP-commando.Een functie voor de aandelenkoers maken
Maak een Python-functie die een ticker (bijv. AAPL) accepteert en de koers van die ticker retourneert. Onder de motorkap gebruikt deze
yahooqueryom relevante data te extraheren.De tools definiëren met de functie
De OpenAI-client begrijpt de Python-functie niet, dus moeten we een tool maken met een lijst van dictionaries. We moeten de benodigde naam, beschrijving en outputtype opgeven.
Wanneer deze functie wordt aangeroepen, haalt hij de tickersymbol uit de prompt en geeft die terug in een gestructureerd formaat.
Het model laten beslissen of het de functie moet aanroepen
Laten we onze zojuist gemaakte OpenAI-functie testen. Geef de chat completion het gebruikersbericht, de modelnaam en de tools mee.
Zoals we zien heeft GPT-4.5 de
get_stock_pricecorrect aangeroepen en de juiste ticker (META) geretourneerd.De functie uitvoeren met de meegegeven ticker
We kunnen deze ticker nu doorgeven aan onze Python-functie
get_stock_price.Als resultaat krijg je een respons met de tickernaam en de bijbehorende koers.
Je kunt hier stoppen, maar om een goed antwoord in natuurlijke taal te geven, moet je de resultaten opnieuw aan de chat completion doorgeven.
De functieaanroep en toolresultaat toevoegen
We voegen de gegenereerde respons uit het vorige gesprek toe en nemen ook de toolaanroep op met tool-ID en toolresultaten.
Het bijgewerkte gesprek terug naar het model sturen
Voer de chat completion opnieuw uit met het bericht dat de inhoud van de toolaanroepen bevat.
Zoals je ziet kregen we het juiste resultaat.
Je denkt misschien dat dit een nutteloze stap is, maar bij complexe output helpt deze stap je om de resultaten in gewoon Engels te begrijpen in plaats van in JSON-formaat.
Ben je nog niet helemaal thuis in de OpenAI API en wil je meer leren? Overweeg dan de OpenAI Fundamentals-carrièretrack om te leren hoe je de OpenAI API gebruikt voor prompts met OpenAI’s GPT- en Whisper-modellen.
Meerdere functies aanroepen met GPT-4.5
Nu leren we hoe we nog een functie aan ons AI-systeem toevoegen, zodat GPT-4.5 automatisch kan beslissen welke functie moet worden aangeroepen op basis van de gebruikersprompt. We voegen een nieuwe feed-functie toe die de top 3 nieuwsartikelen retourneert met links voor de opgegeven ticker.
Begin met het installeren van de
feedparser-bibliotheek met het pip-commando. We gebruiken deze bibliotheek om de headlines voor de opgegeven ticker op te halen.De functie voor beursnieuws definiëren
Maak de Python-functie
get_stock_newsdie de ticker als input neemt en de drie belangrijkste nieuwskoppen met hun links retourneert.We hebben de drie belangrijkste headlines over Apple verzameld met bijbehorende links.
Meerdere tools definiëren voor koers en nieuws
We moeten nu een extra OpenAI-functie toevoegen genaamd
get_stock_newsmet de juiste beschrijving en output.Het model laten beslissen of het één of beide functies moet aanroepen
Laten we de functie testen door GPT-4.5 te vragen naar de Google-aandelen en het laatste nieuws over Google.
Zoals we zien heeft het beide functies aangeroepen voor aandelenkoers en het laatste nieuws.
Het resultaat van de functieaanroep opslaan
Het probleem is dat beide functies de ticker als resultaat retourneren. We moeten met een if-else-structuur bepalen welke functie is aangeroepen. We slaan de resultaten van de functie op in de dictionary.
De functieaanroep en toolresultaten toevoegen
We voegen nu de eerder gegenereerde resultaten toe en het functieresultaat met de tool-ID.
Het bijgewerkte gesprek terug naar het model sturen
Wanneer we het resulterende bericht aan GPT-4.5 doorgeven, genereert het geweldige resultaten die helemaal logisch zijn.
We hebben de Google-aandelenkoers en links naar het belangrijkste nieuws over Google verkregen.
De broncode en outputs zijn beschikbaar in de DataLab-werkruimte. Je hoeft alleen je eigen OpenAI API-sleutel toe te voegen aan de omgevingsvariabele en je kunt alles zelf draaien.
Conclusie
We hebben LLM’s gedwongen om gestructureerde output te genereren en die vervolgens door te geven aan een API of een andere Python-functie om een specifieke taak uit te voeren. Geavanceerde AI, zoals GPT-4.5, kan meerdere services of API’s gebruiken om sterk geïntegreerde antwoorden te genereren.
In de toekomst zullen we function calling en agents gebruiken om alles om ons heen te besturen; geef simpelweg een spraakcommando aan je AI, en die roept de benodigde tools aan op basis van je opdracht en brengt wijzigingen aan in het systeem.
We hebben GPT-4.5, maar veel AI-experts wachten op GPT-5, waarvan wordt verwacht dat het dichter bij AGI ligt. Je kunt alles over het aankomende model lezen in de blog Everything We Know About GPT-5 .