Урок по треку LLM-инженерия 6 мин

Агенты и вызов инструментов

Function calling, цикл агента, ReAct, планирование, память, MCP, ограничения и контроль агентов.

Сама модель только генерирует текст. Чтобы она могла узнать погоду, найти заказ или выполнить SQL, ей дают инструменты: описанные функции, которые вызывает ваш код по её просьбе. Агент это цикл, в котором модель сама решает, какие инструменты вызвать и когда остановиться.

Function calling

  1. Вы передаёте в запрос список инструментов: имя, описание, JSON-схема аргументов.
  2. Модель отвечает не текстом, а структурой «вызови get_order с аргументами {"order_id": "A-17"}».
  3. Ваш код проверяет аргументы, выполняет функцию и добавляет результат в историю сообщением с ролью tool.
  4. Модель получает результат и либо вызывает следующий инструмент, либо отвечает пользователю.

Модель ничего не выполняет сама. Всё исполнение, права и проверки на стороне приложения. Описание инструмента это промпт: от его ясности зависит, вызовет ли модель нужную функцию с правильными аргументами.

Хорошие инструменты:

  • Узкие и понятные: get_order_status(order_id) лучше, чем run_sql(query).
  • С точной схемой: перечисления, форматы, обязательные поля.
  • Возвращают компактный результат, а не мегабайт JSON.
  • Ошибки возвращают понятным текстом, чтобы модель могла исправиться.

Цикл агента

история = [system, user]
повторять до лимита шагов:
    ответ = модель(история, инструменты)
    если ответ без вызовов: вернуть ответ
    для каждого вызова: проверить, выполнить, добавить результат в историю

ReAct (reason + act): модель чередует рассуждение, действие и наблюдение результата. Это базовый шаблон большинства агентов. Варианты сложнее:

  • Plan-and-execute: сначала план из шагов, потом исполнение, при необходимости перепланирование.
  • Мультиагентные схемы: оркестратор раздаёт подзадачи специализированным агентам. Полезно, когда подзадачи независимы и их можно делать параллельно, но растут стоимость и сложность отладки.

Правило из практики: начинайте с самого простого. Часто фиксированная цепочка (workflow) из 2-3 вызовов модели с понятным кодом между ними надёжнее агента, который каждый раз решает сам. Агент нужен, когда путь к решению заранее неизвестен.

Память и контекст

  • Краткосрочная: история шагов в контексте. Растёт с каждым вызовом, её сжимают: удаляют старые результаты инструментов, делают резюме.
  • Долгосрочная: факты о пользователе или проекте во внешнем хранилище, подтягиваются поиском.

Каждый шаг агента это новый вызов модели со всей историей, поэтому стоимость и задержка растут быстро. Помогает prefix caching: неизменная часть промпта и истории кешируется у провайдера.

MCP

Model Context Protocol это открытый протокол, по которому приложение-клиент подключает внешние серверы с инструментами, ресурсами и промптами. Вместо того чтобы писать интеграцию с каждой системой под каждое приложение, пишут MCP-сервер один раз. С точки зрения безопасности MCP-сервер это сторонний код и сторонние данные: описания его инструментов и их результаты попадают в контекст модели и могут содержать инъекции.

Контроль и надёжность

Агент может зациклиться, вызвать не тот инструмент, выполнить опасное действие или потратить кучу денег. Что ставят:

  • Лимиты: число шагов, токенов, время, бюджет на задачу.
  • Валидация аргументов по схеме и бизнес-правилам до вызова.
  • Минимальные права: токены инструментов только на нужные операции; доступ только к данным текущего пользователя.
  • Подтверждение человеком для необратимых и дорогих действий: платежи, удаление, отправка писем.
  • Идемпотентность: повтор вызова не должен создать второй платёж.
  • Трейсинг: каждый шаг, вызов и результат пишутся, чтобы разбирать провалы.

Оценка агентов сложнее, чем RAG: смотрят не только на итоговый ответ, но и на траекторию (правильные ли инструменты, сколько шагов, были ли лишние действия) и на долю успешно выполненных задач на наборе сценариев.

Частые ошибки

  • Давать модели универсальный инструмент вроде run_sql или exec_shell с полными правами.
  • Доверять аргументам из модели без проверки: user_id должен браться из сессии, а не из ответа модели.
  • Нет лимита шагов: агент крутится, пока не кончатся деньги.
  • Мультиагентная архитектура там, где хватило бы одного вызова.

Что спросят на собесе

  • Как работает function calling и кто на самом деле исполняет функцию.
  • Цикл агента и ReAct, чем агент отличается от фиксированной цепочки.
  • Как ограничить агента: лимиты, права, подтверждение, идемпотентность.
  • Что такое MCP и какие у него риски.
  • Как оценивать агента.

Закрепите за 5 минут

После урока в тренажёре 3-5 проверочных вопросов, дальше модуль уходит в повторения.