Endpoint
Tool calling
Biarkan model memanggil fungsi Anda dengan format tools OpenAI, lengkap dengan alur loop, tool_choice, dan tips streaming.
Coba di playgroundTool calling (function calling) memungkinkan model meminta kode Anda menjalankan sebuah fungsi lalu memakai hasilnya dalam jawabannya. api14 memakai format tools OpenAI untuk setiap model yang mendukung tool: OpenAI, Anthropic, Google, Mistral, Qwen, DeepSeek, dan lainnya. Untuk menemukan model yang mampu memakai tool, filter berdasarkan parameter yang didukung pada daftar Model (supported_parameters memuat tools).
Parameter request
| Parameter | Tipe | Deskripsi |
|---|---|---|
tools | array | [{ "type": "function", "function": { "name", "description", "parameters" } }], dengan parameters berupa JSON Schema. |
tool_choice | string | object | "auto" (default), "none", "required", atau { "type": "function", "function": { "name": "get_weather" } }. |
parallel_tool_calls | boolean | Izinkan beberapa panggilan tool dalam satu giliran (default true jika didukung). |
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);
Loop
- Kirim
messagesdantools. - Jika respons memiliki
finish_reason: "tool_calls", jalankan setiap entri dimessage.tool_calls. - Tambahkan pesan assistant, lalu satu pesan
{ "role": "tool", "tool_call_id", "content" }untuk setiap panggilan, dan kirim request lagi. - Ulangi sampai model menjawab dengan konten biasa.
Respons dengan panggilan tool:
{
"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 }
}
Request lanjutan menyertakan hasil tool:
{
"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\"}" }
]
}
Terus kirim tools pada setiap request dalam loop. Banyak provider menolak pesan tool jika request tidak memiliki definisi tools.
Tips
argumentsadalah string JSON. Parse dan validasi, karena model bisa menghasilkan JSON yang tidak valid.- Saat streaming, panggilan tool tiba dalam fragmen
delta.tool_callsdengan kunciindex. Gabungkan stringargumentssebelum mem-parse-nya. - Untuk mengarahkan hanya ke provider yang mendukung tool, atur
provider: { "require_parameters": true }. Lihat Provider routing. - Setiap iterasi loop adalah request terpisah yang ditagih.
Error
Model yang tidak mendukung tool dapat mengembalikan 400 atau 404 dari upstream ("No endpoints found that support tool use"). Error lainnya sama seperti pada Chat completions. Lihat Error.