К курсу

Цикл агента

Один шаг цикла агентаПрактика: один шаг циклаЦикл в кодеПрактика: цикл в кодеОстановка и повторыПрактика: остановка и повторыЧто решает только кодПрактика: что решает код

Надёжность в проде

Таймаут и ключ идемпотентностиПрактика: таймаут и ключ идемпотентности

Устройство агентов

Workflow или агентПрактика: workflow или агентReAct и plan-and-executeПрактика: ReAct и plan-and-executeОдин агент или ройПрактика: один агент или рой

Контекст и стоимость

Почему растёт счёт за агентаПрактика: токены и кэшКонтекст-инженерияПрактика: управление окномПамять агентаПрактика: что агент хранит

Инструменты и протоколы

MCPПрактика: MCP
←→ENВойти
Агенты › Устройство агентов

Workflow или агент

Опирается наОдин шаг цикла агента

Этот блок про первый выбор в любой функции на языковой модели: кто решает, какой шаг следующий, ваш код или модель. Заодно разберём пять паттернов workflow из руководства Anthropic, которые часто принимают за пять видов агентов.

В поддержку Northwind приходит около 3000 сообщений в день. 60% из них — это «Где мой заказ?», и ходы там всегда одни и те же: найти заказ, узнать статус доставки, написать ответ. А потом покупатель пишет: «Заказ 4417 пришёл разбитым, это был подарок, замена опоздала, а платил я купоном». Заранее перечислить ходы для такого сообщения никто не сможет.

Поезд и такси

Поезд идёт по рельсам, которые проложили ещё до того, как кто-то купил билет. На каждой станции бригада может делать сложную работу, но маршрут задан. Там, где путь разветвляется, стрелка отправляет поезд на один из уже существующих путей.

Таксист получает адрес и сам выбирает улицы, а если дорогу перекрыли, выбирает другие. Он доедет туда, куда рельсы не ведут. Но может и заблудиться, пока счётчик крутится.

В терминах Anthropic workflow — это поезд: модели и инструменты связаны путями в коде, написанными заранее. Агент — это такси: модель сама управляет своим процессом и использованием инструментов. И то и другое Anthropic называет «агентными системами» и оговаривается, что у слова «агент» несколько определений, поэтому спрашивайте, что человек под ним имеет в виду.

Коллега на телефоне из первого блока — это таксист: после каждого ответа он говорит, что делать дальше. В workflow сценарий держите вы, а ему звоните ради одной узкой работы за раз. «Вытащи номер заказа из этого письма». «Напиши ответ по этим фактам».

С обеих сторон одинаковые вызовы модели. Разница в том, кто выбирает, что будет дальше.
С обеих сторон одинаковые вызовы модели. Разница в том, кто выбирает, что будет дальше.

Один workflow, не торопясь

Ваш код отправляет сообщение покупателя модели и просит вернуть поля в JSON.

Модель возвращает их:

{
  "order_id": "4417",
  "intent": "where_is_my_order",
  "language": "en"
}

Ваш код проверяет результат обычными if. В руководстве Anthropic такая проверка называется gate.

Ваш код получает заказ и статус доставки. Модель здесь не участвует.

Ваш код отправляет факты модели, и она пишет ответ.

def where_is_my_order(message, session):
    fields = extract_fields(message)      # model call
    if not fields.get("order_id"):        # gate
        return ASK_FOR_ORDER_NUMBER
    order = orders.get(fields["order_id"], session.customer_id)
    if order is None:                     # gate
        return NO_SUCH_ORDER
    status = shipping.status(order.tracking_id)
    return write_reply(fields, status)    # model call

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

Цена каждого варианта

Workflow

Агент

Кто выбирает следующий шаг

Ваш код

Модель

Вызовов модели на запрос

Обычно видно из кода

По-разному, в пределах вашего бюджета

Непредвиденные случаи

Только те пути, что вы написали

Может сменить курс

Тесты

Пути тестируются как обычный код

Anthropic советует обширные тесты в песочнице

Ценой автономии агента руководство Anthropic называет более высокую стоимость и возможное накопление ошибок. Простая арифметика показывает, почему важна длина прогона. Допустим, каждый шаг верен в 95% случаев, шаги независимы, а одна ошибка портит весь прогон. Тогда десять шагов пройдут без ошибок примерно в 60% случаев.

Шанс чистого прогона, если шаги независимы и одна ошибка портит всё. Это арифметика, а не замер.
Шанс чистого прогона, если шаги независимы и одна ошибка портит всё. Это арифметика, а не замер.

Настоящие шаги зависят друг от друга, а агент может заметить ошибку и исправить её, так что кривая даёт лишь общее представление. Gate в workflow работает против той же кривой: плохой результат, который он поймал, останавливается на том шаге, где появился.

Anthropic советует искать самое простое решение и усложнять, только когда можно показать, что это улучшает результат. Иногда это значит, что агентная система вообще не нужна, хватит одного вызова модели с найденным контекстом и примерами. Northwind разбирает сообщения так:

Сообщение

Устройство

Почему

«Вы доставляете в Норвегию?»

Один вызов модели с найденными правилами доставки

Между шагами нечего решать

«Где мой заказ?»

Workflow

Шаги известны

Разбитый подарок с купоном

Агент

Каждый ход зависит от того, что нашёл предыдущий запрос

Эти варианты можно сочетать. Роутер на входе отправляет известные категории в их workflow, а всё остальное агенту. Anthropic называет поддержку покупателей подходящим местом для агентов с открытой задачей, так что агент остаётся, но только там, где он нужен.

Пять паттернов workflow

Пять паттернов руководство Anthropic описывает как workflow, а агентов разбирает в отдельном разделе. Поэтому «пять типов агентов» — это неверная цитата. Те же формы другие авторы называют иначе, самые частые названия на рисунке серым.

Пять форм. В строке оркестратора число исполнителей определяется во время работы.
Пять форм. В строке оркестратора число исполнителей определяется во время работы.

Паттерн

Что происходит

В Northwind

Цепочка промптов

Каждый вызов читает предыдущий результат, между ними gate

Извлечь поля, проверить их, написать ответ

Маршрутизация

Классификатор отправляет вход в специализированную ветку

У возвратов, доставки и вопросов об аккаунте свои промпты

Параллельный запуск

Независимые подзадачи одновременно (sectioning) или одна задача несколько раз (voting)

Один вызов отвечает, другой ищет злоупотребления

Оркестратор и исполнители

Центральная модель во время работы делит задачу, раздаёт части и собирает результаты

Проверить те сервисы, которые окажутся связаны с сообщением об ошибке

Оценщик и оптимизатор

Один вызов пишет, другой даёт замечания, и так по кругу

Переписывать извинение, пока оно не совпадёт с руководством по тону

Ближе всего к агенту оркестратор с исполнителями, ведь подзадачи решает модель. Но Anthropic всё равно относит его к workflow. К двум последним паттернам вернёмся в следующих блоках.

Вывод

Глубже

Building effective agents (Anthropic)Откуда взято деление на workflow и агентов, со схемой для каждого паттерна. Часть про инструменты устарела, о чём сказано в начале статьи.Building effective agents cookbook (Anthropic)Короткие ноутбуки с минимальным кодом для цепочки, маршрутизации, параллельного запуска, оркестратора и оценщика.
‹ Назад
Предложить улучшениеНашёл ошибку