We gebruiken cookies. Cookies en browseropslag houden je ingelogd en onthouden je voorkeuren. Met je toestemming meten we ook hoe de site wordt gebruikt. Je kunt je wanneer je wilt. Zie ons cookiebeleid.

Tool calling

Endpoints

Tool calling

Laat modellen jouw functies aanroepen met het OpenAI tools-formaat: parameters, de aanroeploop, voorbeeldresponses en tips voor streaming.

Probeer het in de playground

Met tool calling (function calling) kan een model je code vragen een functie uit te voeren en daarna het resultaat in zijn antwoord gebruiken. api14 gebruikt het OpenAI-formaat tools voor elk model dat tools ondersteunt: OpenAI, Anthropic, Google, Mistral, Qwen, DeepSeek en andere. Om modellen met toolondersteuning te vinden, filter je op ondersteunde parameters in de lijst Modellen (supported_parameters bevat tools).

Requestparameters

ParameterTypeBeschrijving
toolsarray[{ "type": "function", "function": { "name", "description", "parameters" } }], waarbij parameters een JSON Schema is.
tool_choicestring | object"auto" (standaard), "none", "required", of { "type": "function", "function": { "name": "get_weather" } }.
parallel_tool_callsbooleanSta meerdere tool calls in één beurt toe (standaard true waar ondersteund).
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api14.com/api/v1",
  apiKey: process.env.API14_API_KEY,
});

const result = await client.chat.completions.create({
  "model": "openai/gpt-5-mini",
  "messages": [
    {
      "role": "user",
      "content": "What is the weather in Istanbul?"
    }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Get the current weather",
        "parameters": {
          "type": "object",
          "properties": {
            "city": {
              "type": "string"
            }
          },
          "required": [
            "city"
          ]
        }
      }
    }
  ]
});
console.log(result.choices[0].message.tool_calls);

De loop

  1. Stuur messages en tools.
  2. Als de response finish_reason: "tool_calls" heeft, voer dan elk item in message.tool_calls uit.
  3. Voeg het assistentbericht toe, daarna per aanroep één bericht { "role": "tool", "tool_call_id", "content" }, en verstuur het request opnieuw.
  4. Herhaal totdat het model met gewone content antwoordt.

Response met een tool call:

{
  "id": "gen-1760000000-tool1",
  "model": "anthropic/claude-sonnet-4.5",
  "choices": [
    {
      "index": 0,
      "finish_reason": "tool_calls",
      "message": {
        "role": "assistant",
        "content": null,
        "tool_calls": [
          {
            "id": "call_01",
            "type": "function",
            "function": { "name": "get_weather", "arguments": "{\"city\":\"Istanbul\"}" }
          }
        ]
      }
    }
  ],
  "usage": { "prompt_tokens": 182, "completion_tokens": 21, "total_tokens": 203, "cost": 0.000861 }
}

Het vervolgrequest bevat het toolresultaat:

{
  "model": "anthropic/claude-sonnet-4.5",
  "tools": [ ... same tools ... ],
  "messages": [
    { "role": "user", "content": "What's the weather in Istanbul?" },
    { "role": "assistant", "content": null, "tool_calls": [ { "id": "call_01", "type": "function", "function": { "name": "get_weather", "arguments": "{\"city\":\"Istanbul\"}" } } ] },
    { "role": "tool", "tool_call_id": "call_01", "content": "{\"temp_c\": 21, \"sky\": \"clear\"}" }
  ]
}

Blijf tools meesturen met elk request in de loop. Veel providers weigeren een tool-bericht als het request geen tools-definities bevat.

Tips

  • arguments is een string met JSON. Parse en valideer die, want modellen kunnen ongeldige JSON produceren.
  • Bij streaming komen tool calls binnen als fragmenten in delta.tool_calls, gesleuteld op index. Voeg de arguments-strings samen voordat je ze parset.
  • Om alleen te routeren naar providers die tools ondersteunen, stel je provider: { "require_parameters": true } in. Zie Provider routing.
  • Elke iteratie van de loop is een apart gefactureerd request.

Fouten

Een model dat geen tools ondersteunt, kan een upstream 400 of 404 teruggeven ("No endpoints found that support tool use"). Overige fouten zijn dezelfde als bij Chat completions. Zie Fouten.