сеньорчикОткрыть в Telegram
← вся теориятеория к собесу · LLM и RAG

Агенты и tool-use

Зачем это спрашивают

Агенты - LLM, которым дали руки, и вопросы тут про ответственность инженера: лимиты, идемпотентность, подтверждения. Красивую демку соберёт любой; надёжность - то, что проверяют.

// Ключевая рамка: модель решает «что дальше», твой код решает «что ей можно».

Цикл агента и tool calling

Агент - LLM в цикле ReAct: рассуждение → вызов инструмента → наблюдение результата → следующее действие. Модель планирует, код исполняет.

Tool calling: инструменты описываются схемами, модель возвращает структурный вызов. Валидация аргументов и обработка ошибок - на твоей стороне: свободные невалидируемые аргументы дают мусорные вызовы вместо честных ошибок схемы.

// Хорошая ошибка инструмента - тоже интерфейс: агент прочитает сообщение и поправится; молчаливый провал заведёт его в тупик.

ReAct
цикл reasoning → action → observation
tool calling
структурные вызовы функций по схеме; валидация - твоя

Планирование и память

Сложные задачи - через декомпозицию на подзадачи; длинные цепочки без чекпоинтов копят ошибки как снежный ком. Критик или шаг рефлексии («проверь свой план») заметно повышают надёжность.

Память: контекст - рабочая, всё долговременное - внешнее (векторное хранилище, заметки агента) и подмешивается retrieval'ом по мере надобности.

// Мультиагентность (роли, критик-исполнитель) помогает на сложных пайплайнах, но умножает цену и точки отказа. Начинай с одного агента с хорошими инструментами.

Надёжность - главный боттлнек

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

Оценка агентов - end-to-end: success rate на наборе сценариев с критериями успеха. «Красота рассуждений» и удачные демки - не метрика.

// Права инструментов это и есть безопасность агента: чего в наборе нет, того он не сделает. Системный промпт «будь осторожен» - не контроль доступа.

идемпотентность
повторный вызов инструмента не меняет результат
human-in-the-loop
подтверждение человеком необратимых действий

Как отвечать: «Как сделать LLM-агента надёжным для прода?»

Ограничениями со стороны кода, не промптом. Лимит итераций против зацикливания; инструменты со строгими схемами аргументов и внятными сообщениями об ошибках - агент умеет поправляться по ним; идемпотентность, чтобы ретрай не удвоил эффект; для необратимых действий - подтверждение человеком. Права даю по минимуму: чего нет в наборе инструментов, того агент не сделает. И меряю не демками, а success rate на наборе сценариев - прогон на каждое изменение промпта или модели.

Все контуры надёжности со стороны системы + правильная метрика. Ответ инженера, который отвечает за последствия, а не за впечатление.

На чём валят

  • Необратимые действия без подтверждения - вопрос времени, когда агент воспользуется ими не так.
  • Без лимита итераций - зацикливание и счёт за токены.
  • Инструменты со свободными аргументами - мусорные вызовы вместо ошибок схемы.
  • Оценка демками вместо сценариев с критериями успеха.

Проверьте себя

Пять вопросов из банка по этой подтеме. Всего их 11, остальные разбираются в тренажёре.

  1. #agents_tooluse1 / 5
    Когда агент с инструментами оправдан, а когда лучше один вызов LLM?
    A)Агент с инструментами лучше одиночного вызова: чем больше в нём шагов, тем выше итоговое качество
    B)Агент — для многошаговых задач с внешними данными/действиями; для простого ответа один вызов дешевле и надёжнее
    C)Один вызов подходит для перевода текста
    D)Разницы нет, выбор чисто стилистический
    показать ответ и разбор
    +B)Агент — для многошаговых задач с внешними данными/действиями; для простого ответа один вызов дешевле и надёжнее

    // разбор: Агент оправдан, когда задача требует внешних данных, действий или ветвления на несколько шагов (найти → посчитать → записать). За это платят латентностью, стоимостью (много вызовов) и хрупкостью (ошибка на шаге ломает цепочку). Если задача решается одним ответом — один вызов дешевле, быстрее и предсказуемее. Дисциплина: минимально достаточная агентность, а не «агент ради агента».

  2. #agents_tooluse2 / 5
    Частый провал tool-use агента в проде — это...
    A)Модель физически не способна вернуть корректно структурированный JSON-вызов в этом случае
    B)Инструменты исполняются мгновенно и без ошибок
    C)Агент не умеет прочитать текст ответа инструмента
    D)модель зовёт не тот инструмент или с кривыми аргументами, либо зацикливается на повторных вызовах
    показать ответ и разбор
    +D)модель зовёт не тот инструмент или с кривыми аргументами, либо зацикливается на повторных вызовах

    // разбор: Реальные провалы: неверный выбор инструмента, галлюцинированные/невалидные аргументы (не по схеме), зацикливание (повторяет вызов, игнорируя результат), плохая обработка ошибки инструмента. Лечат: строгие схемы + валидация аргументов, повтор с сообщением об ошибке модели, лимит шагов/бюджет, few-shot удачных вызовов, узкий набор инструментов. Вернуть JSON модель умеет — проблема в семантике вызова.

  3. #agents_tooluse3 / 5
    Когда мульти-агентная схема (несколько специализированных агентов) оправдана против одного агента?
    A)Когда задача делится на роли с раздельными инструментами/контекстом; иначе — лишняя координация без выгоды
    B)Чем больше специализированных агентов вовлечено в задачу, тем выше её итоговое качество
    C)Когда у системы нет доступа к инструментам
    D)Мульти-агент нужен для задач перевода
    показать ответ и разбор
    +A)Когда задача делится на роли с раздельными инструментами/контекстом; иначе — лишняя координация без выгоды

    // разбор: Мульти-агент выигрывает, когда задача естественно распадается на роли с разными инструментами, промптами или контекстами (планировщик/исполнитель/критик), давая изоляцию и специализацию. Но каждый агент — это координация, передача контекста, лишние вызовы и новые точки отказа. Для монолитной задачи один хорошо оснащённый агент проще и дешевле. Правило то же: минимально достаточная сложность.

  4. #agents_tooluse4 / 5
    Длинный агентный диалог упирается в переполнение контекста. Что из перечисленного НЕ решение?
    A)Суммаризация ранней истории в компактную сводку
    B)Вынос ключевых фактов во внешнюю память (векторную или структурную) с подтягиванием нужного по запросу
    C)Обрезка истории до скользящего окна последних сообщений
    D)Полагаться на то, что модель сама бесконечно помнит весь диалог в своих весах
    показать ответ и разбор
    +D)Полагаться на то, что модель сама бесконечно помнит весь диалог в своих весах

    // разбор: Контекст конечен, и в весах модель диалог не «помнит» — между вызовами состояние держит приложение, целиком передавая историю в промпт. Управляют бюджетом: суммаризация старого, скользящее окно, вынос фактов во внешнюю память с retrieval по нужде, компрессия. Ошибка — рассчитывать, что модель сама сохранит всё: за пределами окна информация просто не подаётся и «забывается».

  5. #agents_tooluse5 / 5
    У агента есть инструменты, меняющие состояние (удалить, оплатить, отправить). Главная предосторожность?
    A)Дать полный автономный доступ ко всем действиям — так быстрее и удобнее пользователю
    B)Запретить агенту инструменты
    C)Ограничить права, валидировать аргументы и требовать подтверждения человека для необратимых действий (least privilege, human-in-the-loop)
    D)Просто попросить модель в промпте быть аккуратной
    показать ответ и разбор
    +C)Ограничить права, валидировать аргументы и требовать подтверждения человека для необратимых действий (least privilege, human-in-the-loop)

    // разбор: Модель вероятностна и уязвима к prompt injection, поэтому давать ей необратимые действия без страховки опасно. Принципы: least privilege (узкие права инструментов), валидация и санитайзинг аргументов, идемпотентность/лимиты, подтверждение человеком (human-in-the-loop) или dry-run для разрушительных операций, аудит-лог. Просьба «будь осторожен» — не контроль: инъекция её перебьёт. Тотальный запрет убивает пользу — нужен баланс.

дальше

Теорию прочитали. Навык ставится повторением

В Сеньорчике эта подтема идёт в ежедневных сессиях: движок возвращает её, пока ответы не станут уверенными, и ведёт прогресс отдельно по каждой подтеме. Теория внутри тоже бесплатна, лимит только на количество вопросов в день.