Генеративный AI

AI Agents: архитектура и провалы

Devin (Cognition, 2024) - первый 'автономный software engineer'. Репортаж: Devin решает реальные GitHub issues. Позже независимые тесты: success rate 13.86% на SWE-Bench. 86% задач не решены. Это не провал - это leading 2024. Агенты мощнее любого отдельного инструмента. И опаснее при неправильной архитектуре.

  • GitHub Copilot Workspace - агент для code review и рефакторинга: tool calling + ReAct + multi-step planning поверх Claude и GPT-4. USD 10/мес, 1M+ пользователей
  • Perplexity.ai - search agent: RAG + real-time web search + synthesis. Не просто retrieval - агент решает достаточно ли информации или нужен ещё один search
  • Cursor Agent Mode - автономное редактирование кодовой базы: file system tools + test runner + terminal = полноценный ReAct loop над реальным кодом

Предварительные знания

  • Prompt Engineering

ReAct и год агентского хайпа

В 2022 году Shunyu Yao и коллеги из Принстона и Google представили ReAct - паттерн, чередующий рассуждение (reasoning) и действие (acting). До этого модель либо размышляла без действий (chain-of-thought), либо действовала вслепую. ReAct связал их в цикл Thought-Action-Observation и стал фундаментом современных агентов. Весной 2023 года вышел AutoGPT (Toran Bruce Richards, март 2023), следом BabyAGI - оба за дни набрали десятки тысяч звёзд на GitHub. Начался агентский хайп: обещали автономные системы, решающие любую задачу. Реальность 2023 года оказалась жёстче - бесконечные циклы, потерянный контекст, сжигание токенов на недостижимых целях. Именно эти провалы научили индустрию ставить hard limits и human-in-the-loop.

Tool Use: LLM как оркестратор

Schick et al. 2023 - Toolformer: первая LLM обученная вызывать инструменты самостоятельно. До этого - prompt engineering. После - специальная обучающая процедура. GPT-4 function calling (2023): OpenAI обучила модель выводить структурированные вызовы инструментов как первоклассный capability.

Tool use паттерн: LLM получает список инструментов с описаниями (JSON schema), генерирует JSON вызов, код выполняет вызов, результат возвращается обратно в LLM как tool result message. Цикл продолжается до получения final answer. Модель не выполняет код - только принимает решения о вызовах.

Failure modes tool use: hallucinated tool calls (вызывает несуществующие параметры), infinite loops (модель не может завершить задачу), token overflow (история растёт без ограничений), side effects (необратимые действия без confirmation). Cursor, Claude Code, Devin - все сталкивались с этими проблемами в production.

Кто выполняет код инструментов при tool use?

ReAct: рассуждение + действие

Yao et al. 2022 - ReAct (Reasoning + Acting). До ReAct: либо chain-of-thought (думаем, не действуем), либо tool use (действуем, не думаем). ReAct: чередование Thought -> Action -> Observation. Модель объясняет что собирается делать, делает, видит результат, объясняет что это означает.

Plan-and-Execute (AutoGPT style): сначала LLM строит полный план, затем выполняет. Плюс: предсказуемо, можно прервать между шагами. Минус: план устаревает при unexpected results. ReAct адаптивен - план меняется на ходу. Tree-of-Thought: параллельное исследование нескольких ветвей плана, выбор лучшей.

Max iterations - обязательная защита от infinite loop. Если агент за 20 шагов не пришёл к ответу - остановить. Temporal.io Workflow для дурейшей защиты: workflow timeout + step timeout + max_attempts per activity. Без этих ограничений - первый же нестандартный input может запустить бесконечный loop с затратами USD 50/час на API.

Чем ReAct отличается от chain-of-thought prompting?

Memory: что помнит агент

Агент без памяти - amnesia каждый запрос. Четыре типа памяти: in-context (текущее окно, исчезает по завершении), episodic (история сессий в БД), semantic (факты и знания в vector DB), procedural (как делать задачи - через fine-tuning или system prompt).

In-context memory ограничена window size: GPT-4o - 128K токенов, Claude - 200K, Gemini 1.5 Pro - 1M. При длинных сессиях нужен compression: summarize older messages, keep recent verbatim. LangChain ConversationSummaryBufferMemory: автоматически суммирует старые сообщения когда buffer переполнен.

Character.ai обрабатывает 20B+ сообщений в день. Их memory система: episodic memory (последние N сообщений), summary of older sessions, entity memory (что агент знает о пользователе). Проблема: memory отравление - пользователи намеренно вводят ложные факты в память агента. Нужна validation и source trust scoring.

Почему нужен ConversationSummaryBuffer при длинных сессиях?

Reflection и Self-Critique: агент проверяет себя

Shinn et al. 2023 - Reflexion: LLM оценивает свои предыдущие попытки и улучшает на основе critique. Не просто 'попробуй снова', а 'проанализируй почему не получилось и как исправить'. На HumanEval benchmark (code generation): GPT-4 + Reflexion 91.0% vs GPT-4 alone 67.0%.

Critic Loop паттерн: агент генерирует ответ, отдельный LLM вызов оценивает ('critique'), оригинальный агент улучшает. Можно использовать одну и ту же модель в разных ролях. Constitutional AI (Anthropic) использует похожий принцип: модель критикует свои ответы относительно набора принципов.

Multi-agent: разные агенты специализируются на разных задачах. Orchestrator агент делегирует. Эксперт-агент выполняет. Critic-агент проверяет. CrewAI, AutoGen, LangGraph - фреймворки для multi-agent систем. Главная проблема: error propagation - ошибка одного агента заражает весь pipeline. Checkpoint и human-in-the-loop для критичных шагов.

Агент с достаточно умной моделью выполнит любую задачу без ограничений итераций

Любой агент без hard limits может уйти в бесконечный loop или израсходовать весь token budget. Ограничения - не костыль, а архитектурный принцип

GPT-4, Claude, Gemini - все могут залупиться при неоднозначных задачах или недостижимых целях. AutoGPT 2023 стал мемом именно из-за бесконечных loops. Temporal Workflow с step limits, max_tokens per session, human checkpoint на необратимых действиях - необходимая инфраструктура для production агентов

Почему Reflexion значительно улучшает code generation benchmark?

Связанные темы

Агенты строятся поверх function calling, RAG и structured output:

  • Function Calling — Tool use основан на structured function calling
  • RAG — RAG как основной knowledge tool для агентов
  • Structured Output — Надёжный JSON для tool calls

Ключевые идеи

  • Tool use: LLM оркестрирует, человеческий код выполняет. Failure modes: hallucinated calls, loops
  • ReAct: Thought -> Action -> Observation цикл. Max iterations обязательны против infinite loops
  • Memory: in-context (window), episodic (DB), semantic (vector DB), procedural (prompt/fine-tune)
  • Reflection: critique + retry итеративно. Reflexion +23% на HumanEval без изменения модели

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

  • Как решить проблему необратимых действий (удаление файлов, отправка email) в автономном агенте?
  • При каком уровне сложности задачи multi-agent система эффективнее single agent с reflection?
  • Как не допустить отравления памяти агента пользователем, инжектирующим ложные факты?

Связанные уроки

  • gai-14 — Function calling - основа tool use для агентов
  • gai-16 — RAG - ключевой инструмент для агентской памяти
  • gai-13 — Structured output для надёжного tool calling
  • dl-08 — Трансформеры - архитектура под капотом агента
  • ml-01-intro
AI Agents: архитектура и провалы

0

1

Войти