{"id":23037,"date":"2026-01-19T13:36:22","date_gmt":"2026-01-19T13:36:22","guid":{"rendered":"https:\/\/datasciencepartners.nl\/?p=23037"},"modified":"2026-01-19T14:00:39","modified_gmt":"2026-01-19T14:00:39","slug":"function-calling","status":"publish","type":"post","link":"https:\/\/datasciencepartners.nl\/function-calling\/","title":{"rendered":"Wat is function calling? Voorbeeld tutorial in Python &#038; OpenAI"},"content":{"rendered":"<div class=\"vgblk-rw-wrapper limit-wrapper\">\n<p><strong>Function calling<\/strong> maakt het mogelijk om taalmodellen gecontroleerd samen te laten werken met externe functies en systemen.<\/p>\n<p>In plaats van alleen tekst te genereren, kan het model bepalen wanneer een functie nodig is en welke parameters daarbij horen. <\/p>\n<p>In dit blog laten we stap voor stap zien hoe function calling werkt met de <a href=\"https:\/\/datasciencepartners.nl\/chatgpt-api\/\" title=\"OpenAI API\">OpenAI API<\/a>, van een eenvoudig voorbeeld tot een volledig uitgewerkte implementatie.<\/p>\n<p><strong>Structuur<\/strong><\/p>\n<ol>\n<li>Wat is function calling?<\/li>\n<li>Waarom is function calling nuttig?<\/li>\n<li>Wanneer gebruik je function calling?<\/li>\n<li>Tutorial function calling<\/li>\n<li>Volledig voorbeeld function calling<\/li>\n<\/ol>\n<!-- This site is converting visitors into subscribers and customers with OptinMonster - https:\/\/optinmonster.com :: Campaign Title: Python & GenAI webinar inline -->\n<div id=\"om-egliqdhpxho2b2b9rtel-holder\"><\/div>\n<script>(function(d,u,ac){var s=d.createElement('script');s.type='text\/javascript';s.src='https:\/\/a.omappapi.com\/app\/js\/api.min.js';s.async=true;s.dataset.user=u;s.dataset.campaign=ac;d.getElementsByTagName('head')[0].appendChild(s);})(document,77079,'egliqdhpxho2b2b9rtel');<\/script>\n<!-- \/ OptinMonster -->\n<h2>1. Wat is function calling?<\/h2>\n<p>Function calling is een mechanisme waarbij een taalmodel kan aangeven dat een specifieke <a href=\"https:\/\/datasciencepartners.nl\/python-function\/\" title=\"functie\">functie<\/a> (tool) aangeroepen moet worden om een vraag te beantwoorden. Het model voert deze functie niet zelf uit, maar levert gestructureerde output waarin staat welke functie gebruikt moet worden en met welke parameters.<\/p>\n<p>De daadwerkelijke uitvoering van de functie gebeurt in je eigen code. Dit zorgt ervoor dat je AI-toepassing controleerbaar, veilig en goed te integreren blijft binnen bestaande systemen.<\/p>\n<div class=\"blogBanner\">\n<p>Wil je allround AI expert worden? Bekijk dan onze AI opleidingen<\/p>\n<p><a href=\"https:\/\/datasciencepartners.nl\/ai-cursus\/\"><button>1-daagse AI cursus voor niet-techneuten<\/button><\/a><br \/>\n<a href=\"https:\/\/datasciencepartners.nl\/ai-opleiding\/\"><button>5-daagse techische AI opleiding<\/button><\/a><br \/>\n<a href=\"https:\/\/datasciencepartners.nl\/ai-engineer-opleiding\/\"><button>7-daagse techische AI Engineer opleiding<\/button><\/a><br \/>\n<a href=\"https:\/\/datasciencepartners.nl\/ai-consultancy\/\"><button>AI consultancy diensten<\/button><\/a><\/p>\n<\/div>\n<h2>2. Waarom is function calling nuttig?<\/h2>\n<p>Zonder function calling is een taalmodel beperkt tot de tekst die je meegeeft. Zodra informatie nodig is uit een database, <a href=\"https:\/\/datasciencepartners.nl\/wat-is-een-api-hoe-werkt-een-api\/\" title=\"API\">API<\/a> of intern systeem, loop je vast. Function calling lost dit op door het model te laten bepalen welke actie nodig is, terwijl jij bepaalt hoe en waar die actie wordt uitgevoerd.<\/p>\n<p>Dit maakt AI geschikt voor productieomgevingen waarin betrouwbaarheid, voorspelbaarheid en integratie met andere systemen cruciaal zijn.<\/p>\n<h2>3. Wanneer gebruik je function calling?<\/h2>\n<p>Function calling gebruik je wanneer een antwoord afhankelijk is van externe data of acties. Denk aan het ophalen van orderinformatie, het uitvoeren van controles, het aanpassen van gegevens of het bouwen van <a href=\"https:\/\/datasciencepartners.nl\/ai-agents\/\" title=\"AI-agents\">AI-agents<\/a> die meerdere stappen doorlopen.<\/p>\n<p>Zodra AI meer moet doen dan alleen tekst genereren, is function calling vaak de juiste keuze.<\/p>\n<h2>4. Tutorial function calling<\/h2>\n<p>In deze tutorial laten we stap voor stap zien hoe function calling werkt aan de hand van een voorbeeld waarin een orderstatus wordt opgehaald uit een lokaal (gesimuleerd) systeem.<\/p>\n<h3>Setup: OpenAI client<\/h3>\n<p>Als je mee wilt doen dien je een eigen <a href=\"https:\/\/datasciencepartners.nl\/chatgpt-api-key\/\" title=\"OpenAI API key\">OpenAI API key<\/a> te hebben.<\/p>\n<pre><code class=\"language-python\">import os\nfrom dotenv import load_dotenv\nfrom openai import OpenAI\n\nload_dotenv(&quot;api_key.env&quot;)\n\nOPENAI_API_KEY = os.getenv(&quot;OPEN_AI_API_KEY&quot;)\n\nprint(f&quot;Length API key: {len(OPENAI_API_KEY)}&quot;)\nprint(f&quot;Last characters: ...{OPENAI_API_KEY[-30:]}&quot;)\n\nclient = OpenAI(api_key=OPENAI_API_KEY, base_url=&quot;https:\/\/api.openai.com\/v1\/&quot;)\n\nprint(client)<\/code><\/pre>\n<pre><code>Length API key: 164\nLast characters: ...xtvqYjTUfLU8_RN4xfoZMy0nQDfCkA\n&lt;openai.OpenAI object at 0x71529e4b97f0&gt;<\/code><\/pre>\n<p>Bij tool\/function calling werk je altijd in 2 stappen, met 2 API calls:<\/p>\n<ol>\n<li>Een eerste call, waarbij het model bepaalt of\/welke tool gebruikt moet worden.<\/li>\n<li>Een tweede call, waarbij het model antwoord geeft op de vraag, gebruik makend van context vanuit de functie\/tool.<\/li>\n<\/ol>\n<h3>4.1. Aanmaken te gebruiken tool met functie<\/h3>\n<p>We maken een dummy functie aan, die een status teruggeeft voor een ordernummer.<\/p>\n<p>In het echt zou deze functie bijvoorbeeld een API call uit kunnen voeren op een ERP systeem, om daaruit de orderstatus te verkrijgen.<\/p>\n<p>In onderstaande code doen we het volgende:<\/p>\n<ul>\n<li>Aanmaken dummy functie <code>get_order_status()<\/code>.<\/li>\n<li>Testen van de functie.<\/li>\n<\/ul>\n<pre><code class=\"language-python\">def get_order_status(order_id: str) -&gt; str:\n    fake_db = {\n        &quot;ORD123&quot;: &quot;Shipped&quot;,\n        &quot;ORD456&quot;: &quot;Processing&quot;,\n        &quot;ORD789&quot;: &quot;Cancelled&quot;,\n    }\n    return fake_db.get(order_id, &quot;Order not found&quot;)\n\nprint(get_order_status(order_id=&quot;ORD123&quot;))\nprint(get_order_status(order_id=&quot;ORD789&quot;))\nprint(get_order_status(order_id=&quot;ORD999&quot;))<\/code><\/pre>\n<pre><code>Shipped\nCancelled\nOrder not found<\/code><\/pre>\n<p>Je ziet dat de functie op basis van een ordernummer een status teruggeeft.<\/p>\n<h3>4.2. Opstellen van tool-schema<\/h3>\n<p>Om de OpenAI API te informeren over deze functie (tool), moet een model\/schema opgesteld worden.<\/p>\n<p>De eisen hiervan staan in de documentatie.<\/p>\n<p>In onderstaande code doen we het volgende:<\/p>\n<ul>\n<li>Aanmaken van een list met tools.<\/li>\n<li>Hierin verwerken van de functie <code>get_order_status()<\/code><\/li>\n<li>We geven onder andere mee:\n<ul>\n<li>Een omschrijving van de functie.<\/li>\n<li>Een omschrinving van de parameters.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre><code class=\"language-python\">tools = [\n    {\n        &quot;type&quot;: &quot;function&quot;,\n        &quot;function&quot;: {\n            &quot;name&quot;: &quot;get_order_status&quot;,\n            &quot;description&quot;: &quot;Retrieve the status of an order by order ID&quot;,\n            &quot;parameters&quot;: {\n                &quot;type&quot;: &quot;object&quot;,\n                &quot;properties&quot;: {\n                    &quot;order_id&quot;: {&quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;The ID of the order&quot;},\n                },\n                &quot;required&quot;: [&quot;order_id&quot;],\n            },\n        },\n    }\n]<\/code><\/pre>\n<h3>4.3. Eerste API call: Model tool laten kiezen<\/h3>\n<p>Nu we een tool (functie), en schema hebben, kunnen we bij een <a href=\"https:\/\/datasciencepartners.nl\/chatgpt-prompts\/\" title=\"prompt\">prompt<\/a> bepalen of het model de functie wil gebruiken.<\/p>\n<p>In onderstaande code doen we het volgende:<\/p>\n<ul>\n<li>Aanmaken prompt, met een vraag over een order.<\/li>\n<li>Aanmaken met een lijst met <code>messages<\/code>, deze vullen we later aan.<\/li>\n<li>Genereren van een antwoord met <code>client.chat.completions.create()<\/code>:\n<ul>\n<li>Met <code>tools=tools<\/code> verwijzen we naar het schema.<\/li>\n<li>Met <code>tool_choice=&quot;auto&quot;<\/code> laten we het model zelf kiezen of de functie gebruikt moet worden.<\/li>\n<\/ul>\n<\/li>\n<li>Toevoegen van de output-message aan de lijst <code>messages<\/code>, dit gebruiken we later.<\/li>\n<li>Bekijken het resultaat.<\/li>\n<\/ul>\n<pre><code class=\"language-python\">prompt = &quot;Can you tell me the status of order ORD456?&quot;\nmessages = [{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: prompt}]\n\nresponse = client.chat.completions.create(\n    model=&quot;gpt-4o-mini&quot;,\n    messages=messages,\n    temperature=0,\n    tools=tools,\n    tool_choice=&quot;auto&quot;,\n)\n\nmessage = response.choices[0].message\nmessages.append(message)\n\nprint(message)\nprint(message.tool_calls)<\/code><\/pre>\n<pre><code>ChatCompletionMessage(content=None, refusal=None, role='assistant', annotations=[], audio=None, function_call=None, tool_calls=[ChatCompletionMessageFunctionToolCall(id='call_D4M5w7SOhxUcSHsMsvYa4qlK', function=Function(arguments='{\"order_id\":\"ORD456\"}', name='get_order_status'), type='function')])\n[ChatCompletionMessageFunctionToolCall(id='call_D4M5w7SOhxUcSHsMsvYa4qlK', function=Function(arguments='{\"order_id\":\"ORD456\"}', name='get_order_status'), type='function')]<\/code><\/pre>\n<p>In dit resultaat kun je zien dat het antwoord aangeeft dat de tool (functie <code>get_order_status()<\/code>) gebruikt moet worden.<\/p>\n<ul>\n<li>\n<p>Ook zie je dat het ordernummer daarbij al bepaald is: <code>&quot;ORD456&quot;<\/code>.<\/p>\n<\/li>\n<li>\n<p>Dit antwoord is een voorbeeld van <a href=\"https:\/\/datasciencepartners.nl\/structured-outputs\/\" title=\"_structured output_\"><em>structured output<\/em><\/a>.<\/p>\n<\/li>\n<\/ul>\n<p>We hebben nu echter nog geen antwoord op de prompt.<\/p>\n<p>We weten alleen dat het model de functie wil gebruiken.<\/p>\n<h3>4.4. Toepassen van functie en samenstellen van messages<\/h3>\n<p>Het model heeft bepaald dat de tool (functie <code>get_order_status()<\/code>) gebruikt moet worden.<\/p>\n<p>In onderstaande code doen we het volgende:<\/p>\n<ul>\n<li>Halen de tool call op, de details van het antwoord van het model om de tool te gebruiken.<\/li>\n<li>Deze output is een JSON sting, dit zetten we om naar een dictionary met <code>json.loads()<\/code>.<\/li>\n<li>We bekijken het resultaat.<\/li>\n<\/ul>\n<pre><code class=\"language-python\">import json\n\ntool_call = message.tool_calls[0]\narguments = json.loads(tool_call.function.arguments)\nprint(arguments)<\/code><\/pre>\n<pre><code>{'order_id': 'ORD456'}<\/code><\/pre>\n<p>We zien nu de parameters die het model heeft bepaald, om te gebruiken in de functie.<\/p>\n<p>In onderstaande code doen we het volgende:<\/p>\n<ul>\n<li>Ophalen van het <code>&quot;order_id&quot;<\/code>.<\/li>\n<li>Aanroepen van de functie voor deze order, en bewaren en bekijken van het resultaat.<\/li>\n<\/ul>\n<pre><code class=\"language-python\">order_id = arguments.get(&quot;order_id&quot;)\nresult = get_order_status(order_id)\n\nprint(f&quot;Order {order_id}: {result}&quot;)<\/code><\/pre>\n<pre><code>Order ORD456: Processing<\/code><\/pre>\n<p>In onderstaande code doen we het volgende:<\/p>\n<ul>\n<li>Voegen een message toe aan de lijst met messages.\n<ul>\n<li>Dit gebruiken we hierna om met een nieuwe API call een uiteindelijk antwoord op de prompt\/vraag te krijgen.<\/li>\n<\/ul>\n<\/li>\n<li>We benoemen een nieuwe rol: <code>&quot;role&quot;: &quot;tool&quot;<\/code>.<\/li>\n<li>We verwijzen naar het ID van de tool call.<\/li>\n<li>We geven content mee in JSON formaat: het order id en de status.<\/li>\n<\/ul>\n<pre><code class=\"language-python\">messages.append({\n    &quot;role&quot;: &quot;tool&quot;,\n    &quot;tool_call_id&quot;: tool_call.id,\n    &quot;content&quot;: json.dumps({&quot;order_id&quot;: order_id, &quot;status&quot;: result}),\n})\n\nmessages<\/code><\/pre>\n<pre><code>[{'role': 'user', 'content': 'Can you tell me the status of order ORD456?'},\n ChatCompletionMessage(content=None, refusal=None, role='assistant', annotations=[], audio=None, function_call=None, tool_calls=[ChatCompletionMessageFunctionToolCall(id='call_D4M5w7SOhxUcSHsMsvYa4qlK', function=Function(arguments='{\"order_id\":\"ORD456\"}', name='get_order_status'), type='function')]),\n {'role': 'tool',\n  'tool_call_id': 'call_D4M5w7SOhxUcSHsMsvYa4qlK',\n  'content': '{\"order_id\": \"ORD456\", \"status\": \"Processing\"}'}]<\/code><\/pre>\n<h3>4.5. Tweede API call: Beantwoorden van vraag<\/h3>\n<p>We hebben nu alle details om de prompt\/vraag over de order te beantwoorden. Dit verzameld in variabele <code>messages<\/code>.<\/p>\n<p>Dit gebruiken we om met een nieuwe API call een antwoord te krijgen.<\/p>\n<p>In onderstaande code doen we het volgende:<\/p>\n<ul>\n<li>Genereren van een antwoord met <code>client.chat.completions.create()<\/code>.<\/li>\n<li>Daarbij gebruiken we variabele <code>messages<\/code>, dit bevat:\n<ul>\n<li>De originele prompt: de vraag over de order.<\/li>\n<li>Het antwoord uit de vorige API call: dat de tool (functie <code>get_order_status()<\/code>) gebruikt moet worden.<\/li>\n<li>De details van de order, verkregen door gebruikt te maken van de functie.<\/li>\n<\/ul>\n<\/li>\n<li>Bekijken het antwoord.<\/li>\n<\/ul>\n<pre><code class=\"language-python\">response = client.chat.completions.create(\n    model=&quot;gpt-4o-mini&quot;,\n    messages=messages,\n    temperature=0.2,\n)\nprint(response.choices[0].message.content)<\/code><\/pre>\n<pre><code>The status of order ORD456 is currently \"Processing.\"<\/code><\/pre>\n<p>Je zie dat er nu netjes in menselijke taal antwoord is gegeven op de vraag.<\/p>\n<p>Waarbij de functie is gebruikt om de status van de order op te halen.<\/p>\n<h2>5. Volledig voorbeeld<\/h2>\n<p>We hebben stap voor stap het toepassen van function calling laten zien.<\/p>\n<p>In onderstaande code doen we het volgende:<\/p>\n<ul>\n<li>Volledige uitwerking van de eerdere code.<\/li>\n<li>Daarbij gebruik makend van een <code>if-else-statement<\/code>, om te bepalen of er een tool-call was.<\/li>\n<li>En gebruik makend van een <code>for-loop<\/code>, om eventueel meerdere tool-calls te kunnen behandelen.<\/li>\n<\/ul>\n<pre><code class=\"language-python\">import json\n\n# Define tool function\ndef get_order_status(order_id: str) -&gt; str:\n    fake_db = {\n        &quot;ORD123&quot;: &quot;Shipped&quot;,\n        &quot;ORD456&quot;: &quot;Processing&quot;,\n        &quot;ORD789&quot;: &quot;Cancelled&quot;,\n    }\n    return fake_db.get(order_id, &quot;Order not found&quot;)\n\n# Define tool schema\ntools = [{\n    &quot;type&quot;: &quot;function&quot;,\n    &quot;function&quot;: {\n        &quot;name&quot;: &quot;get_order_status&quot;,\n        &quot;description&quot;: &quot;Retrieve the status of an order by order ID&quot;,\n        &quot;parameters&quot;: {\n            &quot;type&quot;: &quot;object&quot;,\n            &quot;properties&quot;: {\n                &quot;order_id&quot;: {&quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;The ID of the order&quot;}\n            },\n            &quot;required&quot;: [&quot;order_id&quot;],\n        },\n    },\n}]\n\n# Define prompt\nuser_message = &quot;Can you tell me the status of order ORD456?&quot;\nmessages = [{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: user_message}]\n\n# First API call: let model decide if tool must be used\ncheck_response = client.chat.completions.create(\n    model=&quot;gpt-4o-mini&quot;,\n    messages=messages,\n    tools=tools,\n    tool_choice=&quot;auto&quot;,\n)\n\ncheck_message = check_response.choices[0].message\nmessages.append(check_message)\n\n# If tool call in message: apply function, get arguments and create tool-message\nif check_message.tool_calls:\n    for tool_call in check_message.tool_calls:\n        if tool_call.function.name == &quot;get_order_status&quot;:\n            # Get arguments\n            arguments = json.loads(tool_call.function.arguments)\n            order_id = arguments[&quot;order_id&quot;]\n            status = get_order_status(order_id)\n\n            # Create tool-message\n            messages.append({\n                &quot;role&quot;: &quot;tool&quot;,\n                &quot;tool_call_id&quot;: tool_call.id,\n                &quot;content&quot;: json.dumps({&quot;order_id&quot;: order_id, &quot;status&quot;: status}),\n            })\n\n    # Second API call: generate final answer\n    final_response = client.chat.completions.create(\n        model=&quot;gpt-4o-mini&quot;,\n        messages=messages,\n        temperature=.2,\n    )\n    print(final_response.choices[0].message.content)\nelse:\n    # In case no tool call was required\n    print(check_message.content)<\/code><\/pre>\n<pre><code>The status of order ORD456 is currently \"Processing.\"<\/code><\/pre>\n<p>We zien ook nu weer een goed resultaat.<\/p>\n<p>Dit voorbeeld gebruikt slechts 1 tool\/function: voor het ophalen van de status van een order.<\/p>\n<p>Je zou het uit kunnen breiden met meerdere functies, bijvoorbeeld voor:<\/p>\n<ul>\n<li>Ophalen van andere orderdetails.<\/li>\n<li>Doorvoeren van aanpassingen in een order.<\/li>\n<li>Etc.<\/li>\n<\/ul>\n<p>Bij de eerste API call bepaalt het model dan op basis van het prompt welke functies gebruikt moeten worden. Dit kunnen er dan ook meerdere zijn. <\/p>\n<h2>Wil je AI expert worden?<\/h2>\n<p><strong>Tijdens onze <a href=\"https:\/\/datasciencepartners.nl\/ai-opleiding\/\">5-daagse AI Opleiding<\/a> of <a href=\"https:\/\/datasciencepartners.nl\/ai-engineer-opleiding\/\">7-daagse AI Engineer Opleiding<\/a> 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 <a href=\"https:\/\/datasciencepartners.nl\/ai-cursus\/\">AI cursus basis<\/a> eens. We bieden ook AI consultancy aan op allerlei thema\u2019s.<\/strong><\/p>\n<\/div>\n<p><!-- .vgblk-rw-wrapper --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Function calling maakt het mogelijk om taalmodellen gecontroleerd samen te laten werken met externe functies en systemen. In plaats van alleen tekst te genereren, kan het model bepalen wanneer een functie nodig is en welke parameters daarbij horen. In dit blog laten we stap voor stap zien hoe function calling werkt met de OpenAI API,&#8230;<\/p>\n","protected":false},"author":5,"featured_media":23042,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"footnotes":""},"categories":[111,145,110,112],"tags":[],"class_list":["post-23037","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-science-blogs","category-gen-ai","category-python","category-tutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.7 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Wat is function calling? Voorbeeld tutorial in Python &amp; OpenAI<\/title>\n<meta name=\"description\" content=\"Wat is function calling? Hoe werkt het? Wanneer gebruik ik het? In deze tutorial met voorbeeld leer je alles over function calling in Python.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/datasciencepartners.nl\/function-calling\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wat is function calling? Voorbeeld tutorial in Python &amp; OpenAI\" \/>\n<meta property=\"og:description\" content=\"Wat is function calling? Hoe werkt het? Wanneer gebruik ik het? In deze tutorial met voorbeeld leer je alles over function calling in Python.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/datasciencepartners.nl\/function-calling\/\" \/>\n<meta property=\"og:site_name\" content=\"Data Science Partners | Trainingen Data Science in Python, SQL &amp; R\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Data-Science-Partners-102566501086560\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-19T13:36:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-19T14:00:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/datasciencepartners.nl\/wp-content\/uploads\/2026\/01\/wat-is-function-calling-open-ai-python-voorbeeld.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1584\" \/>\n\t<meta property=\"og:image:height\" content=\"672\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Peter Tieleman\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Peter Tieleman\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/datasciencepartners.nl\\\/function-calling\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/datasciencepartners.nl\\\/function-calling\\\/\"},\"author\":{\"name\":\"Peter Tieleman\",\"@id\":\"https:\\\/\\\/datasciencepartners.nl\\\/#\\\/schema\\\/person\\\/2446edb5fdc88e86d93d270c736a8803\"},\"headline\":\"Wat is function calling? Voorbeeld tutorial in Python &#038; OpenAI\",\"datePublished\":\"2026-01-19T13:36:22+00:00\",\"dateModified\":\"2026-01-19T14:00:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/datasciencepartners.nl\\\/function-calling\\\/\"},\"wordCount\":1189,\"publisher\":{\"@id\":\"https:\\\/\\\/datasciencepartners.nl\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/datasciencepartners.nl\\\/function-calling\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/datasciencepartners.nl\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/wat-is-function-calling-open-ai-python-voorbeeld.jpg\",\"articleSection\":[\"Data Science\",\"Gen AI\",\"Python\",\"Tutorial\"],\"inLanguage\":\"nl-NL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/datasciencepartners.nl\\\/function-calling\\\/\",\"url\":\"https:\\\/\\\/datasciencepartners.nl\\\/function-calling\\\/\",\"name\":\"Wat is function calling? Voorbeeld tutorial in Python & OpenAI\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/datasciencepartners.nl\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/datasciencepartners.nl\\\/function-calling\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/datasciencepartners.nl\\\/function-calling\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/datasciencepartners.nl\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/wat-is-function-calling-open-ai-python-voorbeeld.jpg\",\"datePublished\":\"2026-01-19T13:36:22+00:00\",\"dateModified\":\"2026-01-19T14:00:39+00:00\",\"description\":\"Wat is function calling? Hoe werkt het? Wanneer gebruik ik het? In deze tutorial met voorbeeld leer je alles over function calling in Python.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/datasciencepartners.nl\\\/function-calling\\\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/datasciencepartners.nl\\\/function-calling\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\\\/\\\/datasciencepartners.nl\\\/function-calling\\\/#primaryimage\",\"url\":\"https:\\\/\\\/datasciencepartners.nl\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/wat-is-function-calling-open-ai-python-voorbeeld.jpg\",\"contentUrl\":\"https:\\\/\\\/datasciencepartners.nl\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/wat-is-function-calling-open-ai-python-voorbeeld.jpg\",\"width\":1584,\"height\":672,\"caption\":\"wat is function calling open ai python voorbeeld\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/datasciencepartners.nl\\\/function-calling\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/datasciencepartners.nl\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Wat is function calling? Voorbeeld tutorial in Python &#038; OpenAI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/datasciencepartners.nl\\\/#website\",\"url\":\"https:\\\/\\\/datasciencepartners.nl\\\/\",\"name\":\"Data Science Partners | Trainingen Data Science & AI in Python, SQL & R\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/datasciencepartners.nl\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/datasciencepartners.nl\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/datasciencepartners.nl\\\/#organization\",\"name\":\"Data Science Partners\",\"url\":\"https:\\\/\\\/datasciencepartners.nl\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\\\/\\\/datasciencepartners.nl\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/datasciencepartners.nl\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/data-science-partners.png\",\"contentUrl\":\"https:\\\/\\\/datasciencepartners.nl\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/data-science-partners.png\",\"width\":655,\"height\":329,\"caption\":\"Data Science Partners\"},\"image\":{\"@id\":\"https:\\\/\\\/datasciencepartners.nl\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Data-Science-Partners-102566501086560\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/23709861\\\/\"],\"description\":\"Data Science Partners helpt organisaties met Data Science & AI. We werken voornamelijk met Python, SQL & R. We geven trainingen en doen consultancy opdrachten.\",\"email\":\"info@datasciencepartners.nl\",\"telephone\":\"0202443146\",\"legalName\":\"Data Science Partners B.V.\",\"foundingDate\":\"2019-10-01\",\"vatID\":\"NL863566261B01\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"11\",\"maxValue\":\"50\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/datasciencepartners.nl\\\/#\\\/schema\\\/person\\\/2446edb5fdc88e86d93d270c736a8803\",\"name\":\"Peter Tieleman\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb4d292d1a92cd51cab3aa9697a6ed2fd45c819952fb923a01231e1282f5a0df?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb4d292d1a92cd51cab3aa9697a6ed2fd45c819952fb923a01231e1282f5a0df?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb4d292d1a92cd51cab3aa9697a6ed2fd45c819952fb923a01231e1282f5a0df?s=96&d=mm&r=g\",\"caption\":\"Peter Tieleman\"},\"description\":\"Peter is een ervaren data scientist, AI engineer en python trainer. Na zijn studie aan de Technische Universiteit Delft heeft hij zich altijd bezig gehouden met data en diverse programmeertalen. Peter heeft veel data analyses uitgevoerd en processen geautomatiseerd met Python in productieomgevingen.\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/petertieleman\\\/\"],\"honorificPrefix\":\"Heer\",\"honorificSuffix\":\"Ir.\",\"birthDate\":\"1988-05-26\",\"gender\":\"mannelijk\",\"knowsAbout\":[\"Python\",\"R\",\"Data Science\",\"AI\",\"SQL\",\"Data Engineering\"],\"knowsLanguage\":[\"Nederlands\",\"Engels\"],\"jobTitle\":\"Data Scientist & AI Engineer\",\"worksFor\":\"Data Science Partners\",\"url\":\"https:\\\/\\\/datasciencepartners.nl\\\/author\\\/peter-tieleman\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Wat is function calling? Voorbeeld tutorial in Python & OpenAI","description":"Wat is function calling? Hoe werkt het? Wanneer gebruik ik het? In deze tutorial met voorbeeld leer je alles over function calling in Python.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/datasciencepartners.nl\/function-calling\/","og_locale":"nl_NL","og_type":"article","og_title":"Wat is function calling? Voorbeeld tutorial in Python & OpenAI","og_description":"Wat is function calling? Hoe werkt het? Wanneer gebruik ik het? In deze tutorial met voorbeeld leer je alles over function calling in Python.","og_url":"https:\/\/datasciencepartners.nl\/function-calling\/","og_site_name":"Data Science Partners | Trainingen Data Science in Python, SQL &amp; R","article_publisher":"https:\/\/www.facebook.com\/Data-Science-Partners-102566501086560","article_published_time":"2026-01-19T13:36:22+00:00","article_modified_time":"2026-01-19T14:00:39+00:00","og_image":[{"width":1584,"height":672,"url":"https:\/\/datasciencepartners.nl\/wp-content\/uploads\/2026\/01\/wat-is-function-calling-open-ai-python-voorbeeld.jpg","type":"image\/jpeg"}],"author":"Peter Tieleman","twitter_card":"summary_large_image","twitter_misc":{"Geschreven door":"Peter Tieleman","Geschatte leestijd":"9 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/datasciencepartners.nl\/function-calling\/#article","isPartOf":{"@id":"https:\/\/datasciencepartners.nl\/function-calling\/"},"author":{"name":"Peter Tieleman","@id":"https:\/\/datasciencepartners.nl\/#\/schema\/person\/2446edb5fdc88e86d93d270c736a8803"},"headline":"Wat is function calling? Voorbeeld tutorial in Python &#038; OpenAI","datePublished":"2026-01-19T13:36:22+00:00","dateModified":"2026-01-19T14:00:39+00:00","mainEntityOfPage":{"@id":"https:\/\/datasciencepartners.nl\/function-calling\/"},"wordCount":1189,"publisher":{"@id":"https:\/\/datasciencepartners.nl\/#organization"},"image":{"@id":"https:\/\/datasciencepartners.nl\/function-calling\/#primaryimage"},"thumbnailUrl":"https:\/\/datasciencepartners.nl\/wp-content\/uploads\/2026\/01\/wat-is-function-calling-open-ai-python-voorbeeld.jpg","articleSection":["Data Science","Gen AI","Python","Tutorial"],"inLanguage":"nl-NL"},{"@type":"WebPage","@id":"https:\/\/datasciencepartners.nl\/function-calling\/","url":"https:\/\/datasciencepartners.nl\/function-calling\/","name":"Wat is function calling? Voorbeeld tutorial in Python & OpenAI","isPartOf":{"@id":"https:\/\/datasciencepartners.nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/datasciencepartners.nl\/function-calling\/#primaryimage"},"image":{"@id":"https:\/\/datasciencepartners.nl\/function-calling\/#primaryimage"},"thumbnailUrl":"https:\/\/datasciencepartners.nl\/wp-content\/uploads\/2026\/01\/wat-is-function-calling-open-ai-python-voorbeeld.jpg","datePublished":"2026-01-19T13:36:22+00:00","dateModified":"2026-01-19T14:00:39+00:00","description":"Wat is function calling? Hoe werkt het? Wanneer gebruik ik het? In deze tutorial met voorbeeld leer je alles over function calling in Python.","breadcrumb":{"@id":"https:\/\/datasciencepartners.nl\/function-calling\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/datasciencepartners.nl\/function-calling\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/datasciencepartners.nl\/function-calling\/#primaryimage","url":"https:\/\/datasciencepartners.nl\/wp-content\/uploads\/2026\/01\/wat-is-function-calling-open-ai-python-voorbeeld.jpg","contentUrl":"https:\/\/datasciencepartners.nl\/wp-content\/uploads\/2026\/01\/wat-is-function-calling-open-ai-python-voorbeeld.jpg","width":1584,"height":672,"caption":"wat is function calling open ai python voorbeeld"},{"@type":"BreadcrumbList","@id":"https:\/\/datasciencepartners.nl\/function-calling\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/datasciencepartners.nl\/"},{"@type":"ListItem","position":2,"name":"Wat is function calling? Voorbeeld tutorial in Python &#038; OpenAI"}]},{"@type":"WebSite","@id":"https:\/\/datasciencepartners.nl\/#website","url":"https:\/\/datasciencepartners.nl\/","name":"Data Science Partners | Trainingen Data Science & AI in Python, SQL & R","description":"","publisher":{"@id":"https:\/\/datasciencepartners.nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/datasciencepartners.nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/datasciencepartners.nl\/#organization","name":"Data Science Partners","url":"https:\/\/datasciencepartners.nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/datasciencepartners.nl\/#\/schema\/logo\/image\/","url":"https:\/\/datasciencepartners.nl\/wp-content\/uploads\/2021\/02\/data-science-partners.png","contentUrl":"https:\/\/datasciencepartners.nl\/wp-content\/uploads\/2021\/02\/data-science-partners.png","width":655,"height":329,"caption":"Data Science Partners"},"image":{"@id":"https:\/\/datasciencepartners.nl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Data-Science-Partners-102566501086560","https:\/\/www.linkedin.com\/company\/23709861\/"],"description":"Data Science Partners helpt organisaties met Data Science & AI. We werken voornamelijk met Python, SQL & R. We geven trainingen en doen consultancy opdrachten.","email":"info@datasciencepartners.nl","telephone":"0202443146","legalName":"Data Science Partners B.V.","foundingDate":"2019-10-01","vatID":"NL863566261B01","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"11","maxValue":"50"}},{"@type":"Person","@id":"https:\/\/datasciencepartners.nl\/#\/schema\/person\/2446edb5fdc88e86d93d270c736a8803","name":"Peter Tieleman","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/secure.gravatar.com\/avatar\/bb4d292d1a92cd51cab3aa9697a6ed2fd45c819952fb923a01231e1282f5a0df?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bb4d292d1a92cd51cab3aa9697a6ed2fd45c819952fb923a01231e1282f5a0df?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bb4d292d1a92cd51cab3aa9697a6ed2fd45c819952fb923a01231e1282f5a0df?s=96&d=mm&r=g","caption":"Peter Tieleman"},"description":"Peter is een ervaren data scientist, AI engineer en python trainer. Na zijn studie aan de Technische Universiteit Delft heeft hij zich altijd bezig gehouden met data en diverse programmeertalen. Peter heeft veel data analyses uitgevoerd en processen geautomatiseerd met Python in productieomgevingen.","sameAs":["https:\/\/www.linkedin.com\/in\/petertieleman\/"],"honorificPrefix":"Heer","honorificSuffix":"Ir.","birthDate":"1988-05-26","gender":"mannelijk","knowsAbout":["Python","R","Data Science","AI","SQL","Data Engineering"],"knowsLanguage":["Nederlands","Engels"],"jobTitle":"Data Scientist & AI Engineer","worksFor":"Data Science Partners","url":"https:\/\/datasciencepartners.nl\/author\/peter-tieleman\/"}]}},"_links":{"self":[{"href":"https:\/\/datasciencepartners.nl\/wp-json\/wp\/v2\/posts\/23037","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/datasciencepartners.nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/datasciencepartners.nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/datasciencepartners.nl\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/datasciencepartners.nl\/wp-json\/wp\/v2\/comments?post=23037"}],"version-history":[{"count":5,"href":"https:\/\/datasciencepartners.nl\/wp-json\/wp\/v2\/posts\/23037\/revisions"}],"predecessor-version":[{"id":23043,"href":"https:\/\/datasciencepartners.nl\/wp-json\/wp\/v2\/posts\/23037\/revisions\/23043"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/datasciencepartners.nl\/wp-json\/wp\/v2\/media\/23042"}],"wp:attachment":[{"href":"https:\/\/datasciencepartners.nl\/wp-json\/wp\/v2\/media?parent=23037"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/datasciencepartners.nl\/wp-json\/wp\/v2\/categories?post=23037"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/datasciencepartners.nl\/wp-json\/wp\/v2\/tags?post=23037"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}