Endpoints
Chamada de ferramentas
Deixe o modelo chamar funções do seu código com o formato tools da OpenAI no api14, com o ciclo de chamadas, exemplos e dicas de uso.
Teste no playgroundA chamada de ferramentas (function calling) permite que um modelo peça ao seu código para executar uma função e depois use o resultado na resposta. O api14 usa o formato tools da OpenAI para todos os modelos que suportam ferramentas: OpenAI, Anthropic, Google, Mistral, Qwen, DeepSeek e outros. Para encontrar modelos com suporte a ferramentas, filtre pelos parâmetros suportados na lista de Modelos (supported_parameters inclui tools).
Parâmetros da requisição
| Parâmetro | Tipo | Descrição |
|---|---|---|
tools | array | [{ "type": "function", "function": { "name", "description", "parameters" } }], onde parameters é um JSON Schema. |
tool_choice | string | object | "auto" (padrão), "none", "required" ou { "type": "function", "function": { "name": "get_weather" } }. |
parallel_tool_calls | boolean | Permite várias chamadas de ferramenta em um único turno (padrão true quando suportado). |
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);
O ciclo
- Envie
messagesetools. - Se a resposta tiver
finish_reason: "tool_calls", execute cada entrada emmessage.tool_calls. - Adicione a mensagem do assistente, depois uma mensagem
{ "role": "tool", "tool_call_id", "content" }por chamada, e envie a requisição novamente. - Repita até o modelo responder com conteúdo em texto simples.
Resposta com uma chamada de ferramenta:
{
"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 }
}
A requisição seguinte inclui o resultado da ferramenta:
{
"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\"}" }
]
}
Continue enviando tools em todas as requisições do ciclo. Muitos provedores rejeitam uma mensagem tool se a requisição não tiver definições de tools.
Dicas
argumentsé uma string de JSON. Faça o parse e valide, pois os modelos podem produzir JSON inválido.- Com streaming, as chamadas de ferramenta chegam em fragmentos de
delta.tool_callsindexados porindex. Junte as strings deargumentsantes de fazer o parse. - Para direcionar apenas a provedores que suportam ferramentas, defina
provider: { "require_parameters": true }. Veja Roteamento de provedores. - Cada iteração do ciclo é uma requisição cobrada separadamente.
Erros
Um modelo que não suporta ferramentas pode retornar um 400 ou 404 do provedor ("No endpoints found that support tool use"). Os demais erros são os mesmos de Chat completions. Veja Erros.