Używamy plików cookie. Pliki cookie i pamięć przeglądarki pozwalają utrzymać logowanie i zapamiętać Twoje preferencje. Za Twoją zgodą mierzymy też, jak korzystasz ze strony. W każdej chwili możesz . Zobacz naszą politykę cookie.

Wywoływanie narzędzi

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 playground

Wywoł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

ParametrTypOpis
toolsarray[{ "type": "function", "function": { "name", "description", "parameters" } }], gdzie parameters to JSON Schema.
tool_choicestring | object"auto" (domyślnie), "none", "required" lub { "type": "function", "function": { "name": "get_weather" } }.
parallel_tool_callsbooleanZezwala 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

  1. Wyślij messages i tools.
  2. Jeśli odpowiedź ma finish_reason: "tool_calls", wykonaj każdy wpis w message.tool_calls.
  3. 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.
  4. 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

  • arguments to 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_calls identyfikowanych przez index. Połącz ciągi arguments, 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.