Функція виклику
Виклик функцій дозволяє мовним моделям використовувати зовнішні інструменти, генеруючи структуровані виходи, які вказують на виклики функцій, що дозволяє їм взаємодіяти з API та іншими системами.
Виклик функцій — це техніка, яка дозволяє великим мовним моделям (LLM) взаємодіяти із зовнішніми інструментами та API. Замість простого генерування тексту, LLM навчається виводити структуровані дані, такі як JSON, які визначають функцію, що викликається, та її аргументи. Це дозволяє LLM делегувати завдання, отримувати інформацію та виконувати дії, що виходять за межі її власних можливостей генерування тексту. Процес зазвичай передбачає визначення набору функцій з описами та схемами введення/виведення, які LLM може використовувати для генерування відповідних викликів. Це розширює корисність LLM, дозволяючи інтегрувати їх у робочі процеси та програми, які вимагають зовнішніх даних або дій.
graph LR
Center["Функція виклику"]:::main
Pre_logic["logic"]:::pre --> Center
click Pre_logic "/terms/logic"
Rel_api["api"]:::related -.-> Center
click Rel_api "/terms/api"
Rel_chain_of_thought["chain-of-thought"]:::related -.-> Center
click Rel_chain_of_thought "/terms/chain-of-thought"
Rel_function["function"]:::related -.-> Center
click Rel_function "/terms/function"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧠 Перевірка знань
🧒 Простими словами
Це як попросити надзвичайно розумного помічника знайти щось у конкретній книзі (функції) і сказати вам відповідь, а не просто вгадувати.
🤓 Expert Deep Dive
Функціональне викликання (function calling) в контексті великих мовних моделей (LLM) означає парадигмальний зсув від чистої генерації тексту до поведінки, подібної до агента, що дозволяє LLM виступати як оркестратори зовнішніх обчислювальних ресурсів. Архітектурно це базується на здатності LLM виконувати структуроване прогнозування, виводячи попередньо визначену схему, яка представляє сигнатури функцій та їх аргументи. Цю схему зазвичай визначає розробник, надаючи LLM "набір інструментів", яким вона може користуватися. Процес включає парсинг LLM запиту користувача природною мовою, ідентифікацію наміру та його відображення на доступні функції. Потім генерується JSON-об'єкт, що відповідає схемі, вказуючи назву функції та аргументи, які часто отримуються шляхом вилучення сутностей та заповнення слотів з підказки. Окрема шар виконання (виконавець інструментів або фреймворк агента) перехоплює цей JSON, валідує його та викликає відповідний зовнішній API або код. Значення, що повертається інструментом, потім знову подається в контекст LLM, дозволяючи їй синтезувати остаточну відповідь або ланцюгово викликати подальші функції. Цей механізм значно підвищує корисність LLM, обґрунтовуючи їхні відповіді в реальних даних та уможливлюючи складні, багатоетапні операції. Компроміси включають потенційні атаки через впровадження підказок (prompt injection), спрямовані на механізм функціонального викликання, складність управління визначеннями інструментів та обробкою помилок, а також обчислювальні накладні витрати циклу виконання. Забезпечення точного відображення наміру LLM на правильну функцію та аргументи, особливо при великій кількості або неоднозначно названих інструментах, є критичним викликом. Для покращення точності цього відображення застосовуються такі техніки, як навчання з кількома прикладами (few-shot learning) та доналаштування (fine-tuning).