Разработка ИИ-агентов · Модуль 1 · Урок 1.1

Что такое ИИ-агент: LLM + инструменты + цикл

Три составляющие агента

ИИ-агент — это программа, в которой языковая модель (LLM) сама решает, какие действия предпринять, чтобы выполнить задачу. У агента три части. Модель — это «мозг»: она рассуждает и выбирает следующий шаг. Инструменты (tools) — это «руки»: функции, которыми модель может что-то узнать или изменить во внешнем мире (поиск, запрос к базе, вызов API). Цикл (agentic loop) — это то, что связывает их вместе: программа снова и снова спрашивает модель, выполняет запрошенные инструменты, возвращает результаты обратно модели — и так до тех пор, пока задача не решена.

Ключевая идея: управление потоком (control flow) отдаётся модели. В обычной программе порядок шагов жёстко задаёт разработчик. В агенте модель на каждом ходу динамически выбирает, что делать дальше, опираясь на то, что уже произошло. Именно поэтому агент справляется с задачами, у которых нет заранее известного плана.

Агент vs чат-бот vs workflow

Эти три понятия легко спутать, но разница принципиальная.

  • Чат-бот отвечает текстом на сообщение. Один вход — один ответ, без действий во внешнем мире и без цикла. Это просто обёртка над вызовом модели.
  • Workflow — это система, где LLM и инструменты соединены по заранее заданному разработчиком маршруту: сначала классифицируем запрос, потом достаём данные, потом генерируем ответ. Шаги фиксированы в коде; модель не выбирает порядок.
  • Агент сам определяет последовательность действий во время выполнения. Сколько раз и какие инструменты вызвать, когда остановиться — решает модель, а не заранее написанный сценарий.

Грубое правило: если задачу можно разложить на предсказуемые шаги — это workflow, и он надёжнее. Если шаги и их число заранее неизвестны (исследование, отладка, работа с открытым вводом) — нужен агент.

Когда агент оправдан, а когда нет

Гибкость агента стоит денег: больше вызовов модели — выше задержка, стоимость и риск ошибки на каждом шаге. Поэтому начинать стоит с самого простого решения. Если хватает одного вызова модели — берите его. Если нужен фиксированный конвейер — стройте workflow. Полноценный агент оправдан там, где ценность гибкости перевешивает потерю предсказуемости: открытые задачи, динамическое число шагов, необходимость реагировать на промежуточные результаты.

В этом курсе мы сознательно строим агентов с нуля на Go, без фреймворков. Так видно, что «магии» внутри нет: есть HTTP-запрос к модели, разбор ответа и цикл. Понимая механику, вы сможете и пользоваться фреймворками осознанно, и обходиться без них.

Скелет агентного цикла (псевдокод): модель решает, что делать дальше
// messages — растущая история диалога; tools — доступные инструменты.
for {
    resp := callLLM(messages, tools) // 1. спросить модель

    // 2. модель закончила? выходим с финальным ответом.
    if resp.StopReason == "end_turn" {
        return resp.Text
    }

    // 3. модель попросила вызвать инструменты — выполняем их.
    results := runTools(resp.ToolCalls)

    // 4. дозаписываем ход модели и результаты в историю — и повторяем.
    messages = append(messages, resp.AssistantMessage)
    messages = append(messages, results...)
}

Anti-patterns

Анти-паттернПочему плохоКак правильно
Называть «агентом» любой вызов LLMРазмывает понятие; маркетинг вместо архитектурыАгент — это цикл, где модель выбирает действия. Нет цикла и инструментов — это чат-бот
Строить агента там, где хватит workflowЛишние вызовы, выше стоимость и непредсказуемостьСначала простейшее решение; агент — только при динамическом числе шагов
Цикл без условия остановкиБесконечный цикл, расход токенов, зависаниеЧёткий стоп по структурному сигналу модели плюс safety-cap на число итераций
Жёстко зашить порядок инструментов в «агенте»Это уже workflow, выдаваемый за агентаЕсли порядок фиксирован — честно делайте workflow; агент сам выбирает шаги

Практическое задание

  • Возьмите конкретную задачу (например, «ответить на вопрос по документации») и решите: это чат-бот, workflow или агент? Обоснуйте.
  • Нарисуйте на бумаге агентный цикл из 4 шагов для этой задачи: что отправляем модели, как понимаем «готово», какие инструменты нужны.
  • Выпишите 2–3 инструмента, которые понадобятся агенту, и для каждого — что он принимает и что возвращает.
  • Сформулируйте условие остановки структурно (по сигналу модели), а не «по словам в тексте».

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

Чем агент принципиально отличается от workflow?

  • A Агент использует более крупную модель, чем workflow
  • B В агенте порядок действий выбирает модель во время выполнения, а в workflow он задан разработчиком заранее
  • C Агент работает без вызовов LLM, а workflow — с ними
  • D Агент всегда быстрее и дешевле workflow

Задача: классифицировать входящее письмо в одну из 5 категорий и отправить шаблонный ответ. Шаги известны и неизменны.

Что разумнее построить?

  • A Полноценного агента с циклом — на всякий случай
  • B Workflow с фиксированными шагами: классификация → выбор шаблона → отправка
  • C Чат-бот без инструментов
  • D Мультиагентную систему из пяти агентов по категориям

Какой из компонентов делает программу именно агентом, а не разовым вызовом модели?

  • A Системный промпт
  • B Температура генерации
  • C Цикл, который выполняет инструменты и возвращает их результаты модели до достижения цели
  • D Потоковый вывод (streaming)