Endpointy
Wywoływanie narzędzi
Pozwól modelom wywoływać Twoje funkcje w formacie OpenAI tools: parametry tools i tool_choice, pętla wywołań oraz obsługa strumieniowania.
Wypróbuj w playgroundWywoływanie narzędzi (function calling) pozwala modelowi poprosić Twój kod o wykonanie funkcji, a następnie wykorzystać wynik w odpowiedzi. api14 używa formatu OpenAI tools dla każdego modelu, który obsługuje narzędzia: OpenAI, Anthropic, Google, Mistral, Qwen, DeepSeek i innych. Aby znaleźć modele z obsługą narzędzi, filtruj po obsługiwanych parametrach na liście Modeli (supported_parameters zawiera tools).
Parametry żądania
| Parametr | Typ | Opis |
|---|---|---|
tools | array | [{ "type": "function", "function": { "name", "description", "parameters" } }], gdzie parameters to JSON Schema. |
tool_choice | string | object | "auto" (domyślnie), "none", "required" lub { "type": "function", "function": { "name": "get_weather" } }. |
parallel_tool_calls | boolean | Zezwala na kilka wywołań narzędzi w jednej turze (domyślnie true, jeśli jest obsługiwane). |
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);
Pętla
- Wyślij
messagesitools. - Jeśli odpowiedź ma
finish_reason: "tool_calls", wykonaj każdy wpis wmessage.tool_calls. - Dodaj wiadomość asystenta, a potem po jednej wiadomości
{ "role": "tool", "tool_call_id", "content" }na każde wywołanie i wyślij żądanie ponownie. - Powtarzaj, aż model odpowie zwykłą treścią.
Odpowiedź z wywołaniem narzędzia:
{
"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 }
}
Kolejne żądanie zawiera wynik narzędzia:
{
"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\"}" }
]
}
Wysyłaj tools w każdym żądaniu pętli. Wielu dostawców odrzuca wiadomość tool, jeśli żądanie nie zawiera definicji tools.
Wskazówki
argumentsto ciąg znaków z JSON. Sparsuj go i zwaliduj, ponieważ modele mogą wygenerować nieprawidłowy JSON.- Przy streamingu wywołania narzędzi przychodzą we fragmentach
delta.tool_callsidentyfikowanych przezindex. Połącz ciągiarguments, zanim je sparsujesz. - Aby kierować żądania tylko do dostawców obsługujących narzędzia, ustaw
provider: { "require_parameters": true }. Zobacz Routing dostawców. - Każda iteracja pętli to osobne, rozliczane żądanie.
Błędy
Model, który nie obsługuje narzędzi, może zwrócić błąd 400 lub 404 od dostawcy ("No endpoints found that support tool use"). Pozostałe błędy są takie same jak w Chat completions. Zobacz Błędy.