Endpoint
Tool calling
Lascia che i modelli chiamino le tue funzioni con il formato tools di OpenAI: parametri, ciclo di chiamata, streaming dei tool call e gestione degli errori.
Provalo nel playgroundIl tool calling (function calling) permette a un modello di chiedere al tuo codice di eseguire una funzione e di usare poi il risultato nella sua risposta. api14 usa il formato tools di OpenAI per ogni modello che supporta gli strumenti: OpenAI, Anthropic, Google, Mistral, Qwen, DeepSeek e altri. Per trovare i modelli compatibili con gli strumenti, filtra per parametri supportati nell'elenco Modelli (supported_parameters include tools).
Parametri della richiesta
| Parametro | Tipo | Descrizione |
|---|---|---|
tools | array | [{ "type": "function", "function": { "name", "description", "parameters" } }], dove parameters è uno JSON Schema. |
tool_choice | string | object | "auto" (predefinito), "none", "required", oppure { "type": "function", "function": { "name": "get_weather" } }. |
parallel_tool_calls | boolean | Consente più chiamate di strumento in un solo turno (predefinito true dove supportato). |
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);
Il ciclo
- Invia
messagesetools. - Se la risposta ha
finish_reason: "tool_calls", esegui ogni voce inmessage.tool_calls. - Aggiungi il messaggio dell'assistente, poi un messaggio
{ "role": "tool", "tool_call_id", "content" }per ogni chiamata, e invia di nuovo la richiesta. - Ripeti finché il modello risponde con un normale contenuto.
Risposta con una chiamata di strumento:
{
"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 }
}
La richiesta successiva include il risultato dello strumento:
{
"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\"}" }
]
}
Continua a inviare tools a ogni richiesta del ciclo. Molti provider rifiutano un messaggio tool se la richiesta non contiene le definizioni di tools.
Suggerimenti
argumentsè una stringa di JSON. Analizzala e validala, perché i modelli possono produrre JSON non valido.- In streaming, le chiamate di strumento arrivano in frammenti
delta.tool_callsindicizzati daindex. Unisci le stringheargumentsprima di analizzarle. - Per instradare solo verso provider che supportano gli strumenti, imposta
provider: { "require_parameters": true }. Vedi Instradamento dei provider. - Ogni iterazione del ciclo è una richiesta fatturata separatamente.
Errori
Un modello che non supporta gli strumenti può restituire un 400 o 404 dell'upstream ("No endpoints found that support tool use"). Gli altri errori sono gli stessi di Chat completions. Vedi Errori.