Function Calling

Вызов функций позволяет языковым моделям использовать внешние инструменты, генерируя структурированные выходные данные, которые указывают вызовы функций, что позволяет им взаимодействовать с API и другими системами.

Вызов функций — это метод, который позволяет большим языковым моделям (LLM) взаимодействовать с внешними инструментами и API. Вместо простого генерирования текста, LLM обучается выдавать структурированные данные, такие как JSON, которые указывают вызываемую функцию и ее аргументы. Это позволяет LLM делегировать задачи, получать информацию и выполнять действия, выходящие за рамки ее собственных возможностей генерации текста. Процесс обычно включает определение набора функций с описаниями и схемами ввода/вывода, которые LLM затем может использовать для генерации соответствующих вызовов. Это расширяет полезность LLM, позволяя интегрировать их в рабочие процессы и приложения, требующие внешних данных или действий.

        graph LR
  Center["Function Calling"]:::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;

      

🧠 Проверка знаний

1 / 3

🧒 Простыми словами

Это как попросить очень умного помощника найти что-то в конкретной книге (функции) и сказать вам ответ, вместо того чтобы просто угадывать.

🤓 Expert Deep Dive

Функциональные вызовы в контексте больших языковых моделей (LLM) представляют собой сдвиг парадигмы от чистого генерации текста к поведению, похожему на агента, позволяя LLM выступать в роли оркестраторов внешних вычислительных ресурсов. Архитектурно это опирается на способность LLM выполнять структурированное прогнозирование, выдавая предопределенную схему, представляющую сигнатуры функций и их аргументы. Эта схема обычно определяется разработчиком, предоставляя LLM набор "инструментов", которые она может использовать. Процесс включает в себя парсинг LLM запроса пользователя на естественном языке, определение намерения и сопоставление его с доступными функциями. Затем LLM генерирует JSON-объект, соответствующий схеме, указывая имя функции и аргументы, часто полученные путем извлечения сущностей и заполнения слотов из запроса. Отдельный слой выполнения ( "исполнитель инструментов" или "фреймворк агента") перехватывает этот JSON, проверяет его и вызывает соответствующий внешний API или код. Возвращаемое значение от инструмента затем передается обратно в контекст LLM, позволяя ей синтезировать окончательный ответ или инициировать дальнейшие вызовы функций. Этот механизм значительно повышает полезность LLM, привязывая их ответы к данным в реальном времени и обеспечивая выполнение сложных многошаговых операций. К недостаткам относятся потенциальные атаки внедрения в запросы, нацеленные на механизм функциональных вызовов, сложность управления определениями инструментов и обработкой ошибок, а также вычислительные накладные расходы цикла выполнения. Обеспечение точного сопоставления намерения с правильной функцией и аргументами, особенно при наличии большого количества или неоднозначно названных инструментов, является критической проблемой. Для повышения точности этого сопоставления используются такие методы, как обучение на нескольких примерах (few-shot learning) и дообучение (fine-tuning).

🔗 Связанные термины

Предварительные знания:

📚 Источники