Введение в AI-агентов и продакшн-подход

Что такое AI-агент и чем он отличается от чат-бота

Содержание курса

Агент, чат-бот и промпт-цепочка

Слово «агент» сейчас вешают почти на всё, где есть языковая модель. Разложим по полкам три конструкции, которые чаще всего путают, — на одной и той же задаче про клиентов и баланс.

Чат-бот

Чат-бот — диалоговый интерфейс к модели. Пользователь пишет сообщение, бот отвечает текстом. Внутри может быть что угодно: правила, поиск по базе знаний, вызов модели с историей переписки. Но результат работы — всегда сообщение в диалоге.

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

Промпт-цепочка

Промпт-цепочка — фиксированная последовательность шагов, которую вы написали сами. Модель встроена в неё как один из шагов.

from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_template(
    "Преобразуй вопрос в SQL-запрос к таблице clients(name, account_balance). "
    "Верни только SQL, без пояснений и без markdown-разметки.\nВопрос: {question}"
)

chain = prompt | llm

sql = chain.invoke({"question": "Сколько клиентов с балансом выше 1000?"}).text
print(sql)
rows = conn.execute(sql).fetchall()
print(rows)
Вывод цепочки: сгенерированный моделью SQL-запрос и результат его выполнения — [(2,)]

Задача решена, данные из базы получены. И это по-прежнему не агент: шаги здесь заданы жёстко — сгенерировать SQL, выполнить, напечатать. Если модель ошибётся в имени колонки, цепочка упадёт с исключением и на этом закончится. Исправиться она не может: второго прохода не предусмотрено.

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

Про запись через |: это LCEL, способ сборки цепочек из ранних версий LangChain. Он рабочий и никуда не делся, но набор готовых цепочек вынесен в отдельный пакет langchain-classic, а основным строительным блоком в документации стал агент. Так что не удивляйтесь, если в свежих руководствах цепочек почти не встретите — сам приём от этого хуже не стал.

Агент

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

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

Три конструкции: чат-бот, промпт-цепочка и агент — кто определяет последовательность шагов

Три ряда отличаются тем, кто задаёт порядок шагов: в чат-боте — пользователь, каждым следующим сообщением; в цепочке — автор кода, до запуска; в агенте — модель, прямо во время выполнения. Отсюда и петля в нижнем ряду: агент возвращается к модели столько раз, сколько понадобится.

Сводная таблица

Чат-бот Промпт-цепочка Агент
Кто определяет следующий шаг Пользователь в диалоге Автор кода, до запуска Модель, во время выполнения
Действия во внешних системах Нет Есть, в заданном порядке Есть, порядок и набор выбирает модель
Вызовов модели на задачу Один на сообщение Фиксированное число Заранее неизвестно, нужен лимит
Реакция на ошибку шага Отвечает текстом Падает или идёт по заранее описанной ветке Видит ошибку и может выбрать другой шаг
Повторяемость Разный текст ответа Одинаковый путь, разный текст на шагах с моделью Путь может отличаться от запуска к запуску

Про память и «обучение на опыте»

Частая формулировка «агенты, в отличие от чат-ботов, учатся на опыте» неверна и мешает потом отлаживать систему. Веса модели во время работы не меняются — ни у агента, ни у чат-бота. Всё, что выглядит как обучение, — это текст, который вы положили в контекст следующего вызова: история диалога, результаты инструментов, записи из хранилища.

Отсюда практическое следствие: «агент запомнил» означает «кто-то сохранил это и подставил обратно». Если такого механизма в коде нет, следующий запуск начнётся с чистого листа.

Как выбирать

Рабочий вопрос ровно один: можете ли вы заранее нарисовать последовательность шагов?

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

Начать заново?

Помощник начнёт новый диалог по этой задаче. Текущая переписка останется в истории до конца срока хранения.

О переписке

Можно приложить до трёх фото PNG, JPEG или WebP по 5 МБ.

Переписка и фото хранятся 90 дней после последнего принятого сообщения. Преподаватель получит доступ к диалогу, когда вы попросите его помочь.

Проверка решения остаётся отдельным действием.