От чат-бота к агенту
Этот урок объясняет ключевое различие: чат-бот отвечает текстом, а агент действует — рассуждает, вызывает инструменты и идёт к цели сам.
AI-агент — это система, в которой LLM не просто генерирует ответ, а в цикле сама решает, какие действия выполнить (вызвать инструмент, посмотреть результат, продолжить), чтобы достичь поставленной цели.
Чат-бот: один вход — один выход
Обычное применение LLM выглядит так: вы шлёте промпт — модель возвращает текст. Один запрос, один ответ. Если ответ неполный, вы сами шлёте уточнение. Модель здесь — пассивный «отвечатель»: она не может посмотреть в интернет, посчитать на калькуляторе или запустить код. Всё, что она умеет, — продолжить текст на основе того, что видела на обучении.
Этого хватает для огромного числа задач: переписать письмо, объяснить концепцию, набросать функцию. Но как только нужно достоверное действие во внешнем мире — узнать сегодняшний курс валюты, выполнить SQL-запрос, отправить письмо — голая LLM бессильна. Она может только выдумать правдоподобный ответ.
Агент: цикл, инструменты, цель
Агент превращает LLM из «отвечателя» в «деятеля». Добавляются четыре вещи:
- Цель — задача, которую нужно решить («найди и посчитай», а не «продолжи текст»).
- Инструменты — функции, которые агент может вызвать: калькулятор, поиск, доступ к API, выполнение кода.
- Цикл управления — повторяющийся процесс: наблюдение → мысль → действие → наблюдение… пока цель не достигнута.
- Память — то, что агент помнит между шагами (что уже сделал, что узнал).
Ключевое слово — автономность. Агенту не диктуют последовательность шагов; он сам решает, что делать дальше, исходя из того, что уже узнал. Именно поэтому агента трудно предсказать — и именно поэтому он мощнее.
Один шаг цикла на простом примере
Чтобы увидеть механику без настоящей LLM, заменим модель детерминированной функцией-заглушкой. Она по наблюдению решает, что делать. «Среда» выполняет действие и возвращает результат. Получается мини-цикл агента.
def fake_llm(observation):
# Заглушка вместо настоящей LLM: по наблюдению решает следующий шаг.
if "task:" in observation:
return "THOUGHT: нужно посчитать. ACTION: calc(2+2)"
if "result: 4" in observation:
return "FINISH: ответ равен 4"
return "FINISH: не знаю"
def environment(action):
if action == "calc(2+2)":
return "result: 4"
return "result: unknown"
observation = "task: сколько будет 2+2?"
for step in range(1, 4):
response = fake_llm(observation)
print(f"Шаг {step} | наблюдение: {observation}")
print(f" | модель: {response}")
if "FINISH:" in response:
print("Агент завершил работу.")
break
action = response.split("ACTION: ")[1]
observation = environment(action)
Вывод:
Шаг 1 | наблюдение: task: сколько будет 2+2?
| модель: THOUGHT: нужно посчитать. ACTION: calc(2+2)
Шаг 2 | наблюдение: result: 4
| модель: FINISH: ответ равен 4
Агент завершил работу.
Обратите внимание: здесь нет жёстко прописанного «сначала посчитай, потом ответь». Модель сама на каждом шаге решает — действовать или закончить. В настоящем агенте вместо fake_llm стоит вызов реальной LLM, а в environment — настоящие инструменты. Логика цикла — та же.
Чат-бот против агента: сравнение
| Свойство | Чат-бот | Агент |
| Число шагов | один | много (цикл) |
| Действия во внешнем мире | нет | да, через инструменты |
| Кто решает следующий шаг | пользователь | сама модель |
| Предсказуемость | высокая | низкая |
| Типичная задача | «перепиши текст» | «найди, посчитай и сделай» |
Итог
- Чат-бот — это «один промпт, один ответ»; агент — это LLM в цикле с инструментами и целью.
- Главное свойство агента — автономность: он сам выбирает действия, а не следует фиксированному сценарию.
- Механику агента видно даже без настоящей LLM — достаточно заменить модель детерминированной заглушкой.