Endpoints
Verktygsanrop
Låt modeller anropa dina funktioner med OpenAI:s verktygsformat, med parametrar, hela anropsloopen, exempel och tips för strömmade verktygsanrop.
Testa i playgroundVerktygsanrop (function calling) låter en modell be din kod köra en funktion och sedan använda resultatet i sitt svar. api14 använder OpenAI:s tools-format för alla modeller som stöder verktyg: OpenAI, Anthropic, Google, Mistral, Qwen, DeepSeek och andra. För att hitta modeller med verktygsstöd, filtrera på stödda parametrar i listan Modeller (supported_parameters innehåller tools).
Anropsparametrar
| Parameter | Typ | Beskrivning |
|---|---|---|
tools | array | [{ "type": "function", "function": { "name", "description", "parameters" } }], där parameters är ett JSON Schema. |
tool_choice | string | object | "auto" (standard), "none", "required" eller { "type": "function", "function": { "name": "get_weather" } }. |
parallel_tool_calls | boolean | Tillåt flera verktygsanrop i en tur (standard true där det stöds). |
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);
Loopen
- Skicka
messagesochtools. - Om svaret har
finish_reason: "tool_calls", kör varje post imessage.tool_calls. - Lägg till assistentmeddelandet, sedan ett
{ "role": "tool", "tool_call_id", "content" }-meddelande per anrop, och skicka anropet igen. - Upprepa tills modellen svarar med vanligt innehåll.
Svar med ett verktygsanrop:
{
"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 }
}
Uppföljningsanropet innehåller verktygsresultatet:
{
"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\"}" }
]
}
Fortsätt skicka tools med varje anrop i loopen. Många leverantörer avvisar ett tool-meddelande om anropet saknar tools-definitioner.
Tips
argumentsär en sträng med JSON. Tolka och validera den, eftersom modeller kan producera ogiltig JSON.- Vid streaming kommer verktygsanrop i
delta.tool_calls-fragment medindexsom nyckel. Slå ihoparguments-strängarna innan du tolkar dem. - För att bara routa till leverantörer som stöder verktyg, ange
provider: { "require_parameters": true }. Se Leverantörsroutning. - Varje varv i loopen är ett separat debiterat anrop.
Fel
En modell som inte stöder verktyg kan returnera ett uppströms 400 eller 404 ("No endpoints found that support tool use"). Övriga fel är desamma som för Chat completions. Se Fel.