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 playgroundMet 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
| Parameter | Type | Beschrijving |
|---|---|---|
tools | array | [{ "type": "function", "function": { "name", "description", "parameters" } }], waarbij parameters een JSON Schema is. |
tool_choice | string | object | "auto" (standaard), "none", "required", of { "type": "function", "function": { "name": "get_weather" } }. |
parallel_tool_calls | boolean | Sta 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
- Stuur
messagesentools. - Als de response
finish_reason: "tool_calls"heeft, voer dan elk item inmessage.tool_callsuit. - Voeg het assistentbericht toe, daarna per aanroep één bericht
{ "role": "tool", "tool_call_id", "content" }, en verstuur het request opnieuw. - 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
argumentsis 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 opindex. Voeg dearguments-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.