Skip to main content

Виклик функцій (Function Calling / Tool Calling)(Function Calling: архітектура, JSON-схеми та взаємодія LLM із зовнішнім світом)

Технічний протокол та стандарт взаємодії LLM із зовнішнім програмним забезпеченням. Замість вільного тексту модель повертає валідний JSON з назвою функції та типізованими аргументами за схемою JSON Schema, дозволяючи бекенду детерміновано виконувати дії в реальних API.

1. Огляд концепції та системна проблема

Мовна модель замкнена у власному контексті: вона не знає поточного точного часу, не може списати кошти з рахунку чи перевірити стан контейнера в Docker.

Без механізму взаємодії з кодом чат-бот міг лише імітувати дії, повертаючи розмитий текст: «Я перевірив ваш баланс, там $50» (навіть якщо баланс $0).

Function Calling (Виклик функцій або Tool Calling) перетворює генератор тексту на оркестратора систем. Модель аналізує промпт, розуміє, що їй бракує даних, і замість тексту генерує машинночитаний JSON:

{
  "name": "fetch_user_balance",
  "arguments": "{\"account_id\": \"ACC-9481\"}"
}

Ментальна модель: якщо LLM — це мозок, то Function Calling — це нервові імпульси, що посилають команди до м'язів (вашого коду та API) для виконання фізичної дії.

┌─────────────────────────────────────────────────────────────┐
│                 АРХІТЕКТУРА FUNCTION CALLING                │
├─────────────────────────────────────────────────────────────┤
│ 1. ЗАПИТ КОРИСТУВАЧА:                                       │
│    «Яка погода у Львові?»                                   │
├─────────────────────────────────────────────────────────────┤
│                          │                                  │
│                          ▼ Запит до LLM (разом зі схемою)   │
├─────────────────────────────────────────────────────────────┤
│ 2. ВІДПОВІДЬ LLM (finish_reason: "tool_calls"):             │
│    { "name": "get_weather", "args": { "city": "Lviv" } }    │
├─────────────────────────────────────────────────────────────┤
│                          │                                  │
│                          ▼ Бекенд виконує реальний API-запит│
├─────────────────────────────────────────────────────────────┤
│ 3. ВАШ СЕРВЕР ➔ OpenWeatherMap ➔ Отримує { temp: 18, rain: 0}│
├─────────────────────────────────────────────────────────────┤
│                          │                                  │
│                          ▼ Відправка результату назад у LLM │
├─────────────────────────────────────────────────────────────┤
│ 4. ФІНАЛЬНА ВІДПОВІДЬ ЛЮДИНІ:                               │
│    «У Львові зараз +18°C, без опадів, гарного дня!»         │
└─────────────────────────────────────────────────────────────┘

2. Практичний приклад: опис схеми та виклик через cURL

Ось як виглядає реєстрація інструменту в стандарті OpenAI / Anthropic Tool Calling:

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4o",
    "messages": [
      {"role": "user", "content": "Заблокуй картку користувача 5501"}
    ],
    "tools": [
      {
        "type": "function",
        "function": {
          "name": "block_payment_card",
          "description": "Безпечне блокування банківської картки користувача у разі втрати",
          "parameters": {
            "type": "object",
            "properties": {
              "card_id": {
                "type": "integer",
                "description": "Унікальний ідентифікатор картки в системі"
              },
              "reason": {
                "type": "string",
                "enum": ["lost", "stolen", "fraud"],
                "description": "Причина блокування"
              }
            },
            "required": ["card_id", "reason"]
          }
        }
      }
    ],
    "tool_choice": "auto"
  }'

Що повертає модель:

{
  "role": "assistant",
  "content": null,
  "tool_calls": [
    {
      "id": "call_abc123",
      "type": "function",
      "function": {
        "name": "block_payment_card",
        "arguments": "{\"card_id\": 5501, \"reason\": \"lost\"}"
      }
    }
  ]
}

3. Чотири правила безпеки при роботі з Function Calling

  1. Сувора валідація аргументів (Pydantic / Zod): Ніколи сліпо не довіряйте аргументам із JSON моделі. Завжди парсіть їх через схему валідації перед виконанням SQL-запиту чи списанням коштів.
  2. Контрольний шлюз для руйнівних дій (Human-in-the-Loop): Якщо функція виконує незворотну операцію (delete_database, transfer_funds), бекенд повинен зупинити виконання та запросити підтвердження живої людини.
  3. Обмеження контексту інструментів: Не передавайте моделі сотні функцій одночасно. Це розмиває увагу (Attention Saturation) і збільшує ймовірність помилкового виклику. Використовуйте динамічну фільтрацію або MCP.
  4. Захист від нескінченного циклу (Infinite Tool Loop): Завжди встановлюйте жорсткий ліміт на кількість послідовних викликів функцій (наприклад, не більше 5 ітерацій на один запит).

4. Підсумковий висновок

Function Calling — це міст, що з'єднав світ статистичного моделювання мови з детермінованим світом програмування. Саме цей механізм є ядром усіх сучасних AI-агентів, MCP-серверів та автономних помічників розробника.

/ Часті запитанняSchema.org FAQPage

FAQ: Виклик функцій (Function Calling / Tool Calling)

Категорично ні! Модель — це ізольований текстово-математичний процесор. Вона не має прямого доступу до вашої бази даних чи мережі. Вона лише генерує токени у форматі JSON з проханням до вашого сервера: 'Виконай get_user_balance(user_id=42)'. Реальний код завжди виконує ваш хостовий бекенд.
/ Внутрішня перелінковка
Всі терміни
Агенти & MCP

Схеми інструментів (Tools & JSON Schema)

Стандарт формалізованого опису інтерфейсів інструментів (Tools) для великих мовних моделей за допомогою стандарту JSON Schema. Включає назву функції, детальний текстовий опис її призначення, список обов'язкових параметрів та типи значень.

Читати термін
Агенти & MCP

AI-агенти (Автономні агенти)

Автономна система на базі великої мовної моделі, яка не просто відповідає на повідомлення, а самостійно планує послідовність дій, використовує зовнішні інструменти (браузер, термінал, бази даних) та виконує комплексні завдання без постійного нагляду людини.

Читати термін
Агенти & MCP

Цикл дій агента (Thought ➔ Action ➔ Observation / ReAct)

Фундаментальний алгоритмічний патерн роботи автономних агентів (відомий як ReAct: Reasoning + Acting). Складається з нескінченного циклу трьох кроків: 1) Думка (Thought) — аналіз ситуації; 2) Дія (Action) — виклик інструменту; 3) Спостереження (Observation) — аналіз результату та коригування плану.

Читати термін
Агенти & MCP

MCP (Model Context Protocol)

Відкритий стандарт від Anthropic на базі JSON-RPC 2.0 для уніфікованого двостороннього підключення AI-асистентів до зовнішніх інструментів, баз даних і системного оточення.

Читати термін