LLM Powered Autonomous Agents: архитектура и практика
Как LLM превращаются в автономных агентов: планирование, память, инструменты, мультиагентность и реальные примеры кода на LangChain.
LLM Powered Autonomous Agents: как языковые модели становятся самостоятельными агентами
Представьте сотрудника, которому вы ставите задачу утром — а к вечеру он уже нашёл нужные данные, написал код, запустил тесты и прислал отчёт. Без единого промежуточного вопроса. Именно это обещают LLM-powered autonomous agents — системы, где большая языковая модель выступает не просто собеседником, а полноценным исполнителем.
Но за красивым маркетинговым словом «агент» скрывается конкретная архитектура с четырьмя ключевыми подсистемами: планирование, память, инструменты и действие. Разберём каждую — с примерами кода и реальными ограничениями.
Что такое автономный LLM-агент и чем он отличается от чат-бота
Обычная языковая модель оптимизирована под одно: предсказать наиболее вероятный следующий токен. Автономный агент на её основе оптимизирован под другое — достичь наиболее вероятного успешного результата.
«Agentic LLMs optimize for the most probable successful outcome» — именно в этом их фундаментальное отличие от классических чат-моделей.
Автономный агент — это программная система на базе LLM, которая умеет планировать, действовать и адаптироваться для достижения поставленной цели: вызывать инструменты, выполнять задачи и учиться на собственных действиях.
Ключевые характеристики агентной системы:
| Характеристика | Чат-бот | LLM-агент |
|---|---|---|
| Цель | Ответить на вопрос | Выполнить задачу |
| Память | Только контекст сессии | Кратко- и долгосрочная |
| Инструменты | Нет | API, код, поиск, БД |
| Итерации | Одна | Множество (цикл) |
| Автономность | Низкая | Высокая |
Архитектура: четыре кита автономного агента
Стандартная агентная система строится вокруг четырёх взаимосвязанных компонентов. Посмотрим на них в виде схемы:
graph TD
A[Пользователь / Задача] --> B[Планировщик]
B --> C{Нужен инструмент?}
C -->|Да| D[Вызов инструмента]
D --> E[Результат]
E --> F[Память]
F --> B
C -->|Нет| G[Финальный ответ]
B --> F
style A fill:#6366f1,color:#fff
style G fill:#22c55e,color:#fff
1. Планирование (Planning)
Сложная задача состоит из множества шагов — агент должен знать их заранее и уметь перестраивать план на лету. Именно здесь LLM выступает как «мозг».
Chain of Thought (CoT) — базовая техника: модель инструктируется «думать пошагово», декомпозируя сложную задачу на простые шаги. Это позволяет использовать вычислительный ресурс во время инференса более эффективно.
Tree of Thoughts (ToT) идёт дальше: на каждом шаге генерируется несколько вариантов мышления, образуя дерево. Поиск по нему может вестись в ширину (BFS) или в глубину (DFS), а каждое состояние оценивается через промпт или мажоритарное голосование.
ReWOO — более свежий подход 2025 года: разделяет планирование и исполнение на три фазы. Планировщик строит полный граф зависимостей заранее, воркеры выполняют шаги параллельно, а «решатель» синтезирует итог. Это существенно снижает задержку при работе с длинными цепочками инструментов.
2. Память (Memory)
Любая LLM «забывает» всё между вызовами — это её архитектурное ограничество. Агентная система обязана компенсировать это явно.
Различают несколько типов памяти:
- Кратковременная (short-term) — история текущей сессии. LangGraph управляет ею как частью состояния агента, сохраняемой через чекпоинты в рамках треда.
- Долговременная (long-term) — знания между сессиями. Реализуется через векторные хранилища: входящий запрос превращается в эмбеддинг, а хранилище возвращает K ближайших релевантных воспоминаний, которые добавляются в промпт.
- Эпизодическая — конкретные прошлые взаимодействия с временны́м контекстом. В 2025 году именно её назвали «недостающим звеном» для долгосрочных LLM-агентов.
- Семантическая — абстрактные знания, дистиллированные из эпизодов. Например, не «в сессии 42 пользователь исправил SQL-запрос», а «пользователь использует snake_case в именах столбцов».
- Процедурная — переиспользуемые навыки и паттерны действий, закешированные планы для типовых задач.
MemorySaver (данные теряются при перезапуске) на PostgresSaver или RedisSaver. Состояние сериализуется и хранится во внешней БД, переживая рестарты и горизонтальное масштабирование.Два подхода к обновлению памяти:
- «В горячем пути» (hot path) — агент явно решает запомнить факты (через вызов инструмента) до ответа. Именно так работает ChatGPT. Минус — дополнительная задержка.
- «В фоне» (background) — фоновый процесс обновляет память во время или после диалога. Нет лишней латентности, но память обновляется не мгновенно.
3. Инструменты (Tool Use)
Любой агент учится вызывать внешние API для получения информации, недоступной в весах модели: актуальные данные, выполнение кода, работа с файлами.
Эволюция использования инструментов прошла три этапа:
- Файн-тюнинг под вызов конкретных API (Toolformer, 2023)
- LLM как роутер — модель диспетчеризует подзадачи к специализированным модулям (MRKL, HuggingGPT)
- Стандартизированный function calling — сегодняшний стандарт де-факто
Архитектура MRKL показательна: общий LLM выступает маршрутизатором, который отправляет подзадачи к специализированным экспертам — калькуляторам, поисковикам, базам данных, другим моделям.
4. Профиль и действие
Профиль задаёт «личность» агента: контекст, роль, ограничения и цели. Действие — это исполнение плана: вызов инструментов, запись в память, формирование финального ответа. Вместе они замыкают цикл.
Практика: ReAct-агент на LangChain
ReAct (Reason + Act) — наиболее распространённый паттерн агентного поведения. Каждый шаг создаёт цепочку рассуждений на естественном языке и набор применимых действий, на основе которых LLM решает, продолжать ли и какой инструмент использовать.
Приведённый ниже код требует установки зависимостей и API-ключа OpenAI (или другого провайдера). Установите пакеты командой:
pip install langchain langchain-openai langchain-community
Затем задайте переменную окружения:
export OPENAI_API_KEY="sk-..."
Если у вас нет ключа OpenAI, вы можете заменить ChatOpenAI на любой совместимый провайдер — например, ChatAnthropic или локальную модель через Ollama.
from langchain_openai import ChatOpenAI
from langchain.agents import create_react_agent, AgentExecutor
from langchain.tools import DuckDuckGoSearchRun, tool
from langchain import hub
# 1. Инициализируем LLM
llm = ChatOpenAI(model="gpt-4o", temperature=0)
# 2. Определяем инструменты агента
search = DuckDuckGoSearchRun()
@tool
def calculator(expression: str) -> str:
"""Вычисляет математическое выражение. Пример: '2 + 2 * 10'"""
try:
return str(eval(expression))
except Exception as e:
return f"Ошибка: {e}"
tools = [search, calculator]
# 3. Загружаем стандартный ReAct-промпт из LangChain Hub
prompt = hub.pull("hwchase17/react")
# 4. Создаём агента и его исполнитель
agent = create_react_agent(llm, tools, prompt)
executor = AgentExecutor(
agent=agent,
tools=tools,
verbose=True, # покажет цепочку Thought → Action → Observation
max_iterations=5 # защита от бесконечного цикла
)
# 5. Запускаем
result = executor.invoke({
"input": "Сколько параметров у GPT-4o и какой процент от числа 175 млрд?"
})
print(result["output"])
Агент выполнит примерно следующий цикл:
- Thought: «Мне нужно найти число параметров GPT-4o»
- Action:
search("GPT-4o parameters count") - Observation: получает результат поиска
- Thought: «Теперь посчитаю процент»
- Action:
calculator("X / 175000000000 * 100") - Final Answer: формирует итоговый ответ
Thought: I need to find the number of parameters in GPT-4o.
Action: duckduckgo_search
Action Input: GPT-4o number of parameters
Observation: GPT-4o reportedly has around 200 billion parameters...
Thought: Now I can calculate the percentage.
Action: calculator
Action Input: 200000000000 / 175000000000 * 100
Observation: 114.28...
Final Answer: GPT-4o предположительно содержит ~200 млрд параметров, что составляет ~114% от 175 млрд.
Мультиагентные системы и новые стандарты
Одиночный агент ограничен контекстным окном, фокусом задачи и возможностями памяти. Реальные сложные задачи требуют ролевой мультиагентной коллаборации.
Фреймворки вроде CrewAI и LangGraph позволяют строить системы, где несколько агентов взаимодействуют, передают результаты друг другу и специализируются на разных ролях. Например, AutoResearchClaw реализует мультиагентный пайплайн с дебатами для выдвижения гипотез, самовосстанавливающимся исполнителем и верификацией ссылок.
В 2025 году оформились открытые стандарты межагентного взаимодействия:
- MCP (Model Context Protocol) — стандарт от Anthropic для подключения инструментов
- A2A (Agent-to-Agent) — протокол координации между агентами
Эти стандарты решают критическую проблему интероперабельности: агент, написанный на одном фреймворке, должен уметь взаимодействовать с агентом на другом.
Ограничения и риски: что мешает массовому внедрению
Было бы нечестно говорить об агентах без разговора о реальных проблемах.
Технические ограничения:
- Ведущие модели достигают лишь ~42.9% на бенчмарке OSworld (выполнение задач на компьютере), тогда как люди показывают >72%. Разрыв огромен.
- Контекстное окно, архитектура памяти и стоимость API-вызовов ограничивают масштабируемость.
- Агенты уязвимы к галлюцинациям инструментальных вызовов, дрейфу контекста и ложным воспоминаниям.
Риски безопасности:
- Автономные агенты в CBRN-доменах могут предпринимать катастрофические действия даже при наличии явных ограничений на естественном языке.
- Ограничения на естественном языке, включая требование одобрения супервайзера, недостаточны для предотвращения нежелательных действий.
- Предоставление агенту слишком широких прав — слишком много инструментов, плохо ограниченных действий или нечётких целей — может привести к хаотичному поведению.
| Проблема | Уровень критичности | Текущее решение |
|---|---|---|
| Галлюцинации | Высокий | Верификация вывода, RAG |
| Бесконечные циклы | Средний | max_iterations, таймауты |
| Утечка памяти контекста | Высокий | Summary memory, векторный поиск |
| Безопасность действий | Критический | Human-in-the-loop, sandbox |
| Стоимость API-вызовов | Средний | Кеширование, локальные модели |
Заключение: где мы находимся и куда движемся
LLM-агенты — это не будущее, это настоящее. Уже сегодня они работают в роли ассистентов для кодирования, исследовательских инструментов, автоматических email-обработчиков и агентов поддержки клиентов. Но разрыв между маркетингом и реальностью по-прежнему велик.
Главные направления развития на 2025–2026:
- Память как центральный элемент архитектуры: движение от буферного хранения к иерархическим, Zettelkasten-подобным системам (A-MEM)
- Стандартизация протоколов MCP и A2A для межагентного взаимодействия
- Гибридные подходы к обучению: сочетание RL и SFT для преодоления разреженности наград
- Human-in-the-loop как обязательный компонент для критических задач
Если вы хотите начать работу с агентами прямо сейчас — начните с простого ReAct-агента на LangChain или LangGraph, добавьте один-два конкретных инструмента и строго ограничьте область его действий. Сложность можно наращивать постепенно, а доверие к системе — только через реальные испытания в контролируемой среде.