Архитектура агентов
▼AI-агент — это система, где LLM в цикле принимает решения, выполняет действия и получает обратную связь. Ниже — четыре основных паттерна, которые лежат в основе большинства продакшн-агентов.
ReAct Reasoning + Acting
Агент чередует размышление (Thought) и действие (Action), получая наблюдения (Observation) после каждого шага. Самый распространённый паттерн — используется в ChatGPT, Claude, большинстве чат-агентов.
Когда использовать: задачи с неизвестным числом шагов, исследовательские запросы, работа с инструментами. Минус: может зациклиться — нужен лимит итераций.
Plan-and-Execute Планирование
Сначала агент создаёт полный план из шагов, затем выполняет каждый шаг последовательно. План может обновляться по ходу выполнения (re-planning).
Когда использовать: сложные многошаговые задачи (написание кода, исследования, рефакторинг). Плюс: структурированность, легче отлаживать. Минус: overhead на планирование, плохо для простых задач.
Multi-agent Systems Несколько агентов
Несколько специализированных агентов работают вместе, каждый с собственным system prompt, набором инструментов и ответственностью. Координация через supervisor или прямое общение.
Когда использовать: сложные задачи, требующие разных компетенций (разработка + ревью + тестирование). Плюс: разделение ответственности, лучше масштабируется. Минус: сложнее отлаживать, overhead на координацию.
Tool-use Pattern Function Calling
Простейший агентный паттерн: LLM решает, какой инструмент вызвать, получает результат и формирует ответ. Основа для всех остальных паттернов.
Ключевой принцип: LLM генерирует структурированный запрос на вызов инструмента — runtime выполняет вызов и возвращает результат. LLM никогда не выполняет код напрямую.
Фреймворки
▼Сравнение основных фреймворков для построения AI-агентов. Выбор зависит от задачи, языка и уровня контроля.
| Фреймворк | Язык | Сложность | Лучше для | Модели |
|---|---|---|---|---|
| Claude Agent SDK | Python | Низкая | Быстрый старт, tool use, guardrails | Claude |
| LangGraph | Python, TS | Средняя | Сложные графы, state machines, persistence | Любые |
| CrewAI | Python | Низкая | Multi-agent с ролями, быстрый прототип | Любые |
| AutoGen | Python | Средняя | Conversational agents, code execution | Любые |
Claude Agent SDK Anthropic
Официальный SDK от Anthropic для создания агентов на базе Claude. Минимальный boilerplate, встроенные guardrails и handoffs между агентами.
Handoffs — ключевая фича: агент может передать управление другому агенту. Это позволяет строить multi-agent системы декларативно.
LangChain / LangGraph Граф состояний
LangGraph — расширение LangChain для построения агентов как графов состояний. Поддержка циклов, условных переходов, persistence, human-in-the-loop.
Когда выбрать: нужен полный контроль над графом выполнения, persistence состояния между сессиями, поддержка множества LLM-провайдеров.
CrewAI Роли и задачи
Фреймворк для multi-agent систем с фокусом на ролях. Каждый агент — это роль (researcher, writer, reviewer) с чёткими задачами.
AutoGen Microsoft
Фреймворк от Microsoft для conversational multi-agent систем. Агенты общаются друг с другом в чат-формате. Встроенная поддержка code execution.
Когда выбрать: задачи с генерацией и выполнением кода, исследовательские сценарии с несколькими итерациями диалога.
Промпт-инжиниринг для агентов
▼Промпт агента — это не просто текст запроса. Это операционная система агента: роль, правила, ограничения, формат вывода. Качество промпта определяет 80% поведения агента.
System Prompt Structure
Хорошо структурированный system prompt содержит 5 блоков. Порядок важен — модели уделяют больше внимания началу и концу промпта.
Используй XML-теги для разделения секций в system prompt — это помогает модели чётко разграничивать контекст. Claude особенно хорошо работает с тегами <role>, <rules>, <output_format>.
Tool Descriptions Best Practices
Описание инструмента — это промпт для модели. От его качества зависит, правильно ли модель выберет tool и передаст аргументы.
Хорошо
search_database: Поиск по базе данных клиентов. Принимает SQL-подобный запрос. Возвращает до 10 результатов в JSON. Используй для: поиск клиента по имени, email, ID заказа.
Плохо
search: Ищет данные. (Непонятно: что ищет, где ищет, какой формат, когда использовать?)
Chain-of-Thought CoT
Явная инструкция модели «думать вслух» перед ответом. Критично для сложных задач с multi-step reasoning.
Chain-of-thought увеличивает расход токенов. Для простых tool-use задач (вызов API, поиск) он не нужен. Включай CoT только для задач с неочевидной логикой.
Few-shot Examples
Примеры — лучший способ показать модели формат и стиль ответа. Для агентов — показываем примеры корректного использования инструментов.
Включай примеры отказа и запроса подтверждения. Это учит модель не выполнять опасные действия автоматически.
Tool Use
▼Инструменты (tools) — это способ дать агенту возможность взаимодействовать с внешним миром: базы данных, API, файловая система, браузер. Два основных подхода: Function Calling (встроен в API) и MCP (универсальный протокол).
Function Calling OpenAI / Anthropic
Модель получает описание доступных функций и возвращает структурированный JSON с именем функции и аргументами. Runtime выполняет вызов и передаёт результат обратно.
Anthropic формат (Claude)
TypeScript вариант
MCP Model Context Protocol
MCP — открытый стандарт от Anthropic для подключения инструментов к LLM. Единый протокол вместо кастомных интеграций. Работает как USB — подключил сервер, и все его tools доступны.
MCP поддерживает три типа данных: tools (агент вызывает), resources (агент читает, как файл), prompts (шаблоны промптов). Для агентов tools — самое важное.
Практические примеры Tool Definitions
Паттерны, которые работают в продакшне. Ключ — чёткие описания, enum для ограниченных значений, примеры в description.
Паттерны надёжности
▼Агент в продакшне должен быть предсказуемым и устойчивым. LLM могут галлюцинировать, API могут падать, контекст может переполниться. Вот паттерны, которые решают эти проблемы.
Retry with Exponential Backoff
API-вызовы и tool calls могут проваливаться. Повторные попытки с экспоненциальной задержкой — базовый паттерн надёжности.
Guardrails / Validation
Guardrails — это проверки до и после каждого действия агента. Они предотвращают опасные операции и валидируют output.
Human-in-the-Loop
Агент запрашивает подтверждение человека для критических действий. Три уровня автономности:
Full Auto
Агент выполняет все действия без подтверждения. Подходит для read-only операций и задач с низким риском.
Approve & Continue
Агент показывает план и ждёт OK/Cancel. Подходит для мутирующих операций (отправка email, изменение данных).
Step-by-Step
Подтверждение на каждое действие. Для критических систем (финансы, медицина, production deploy).
Error Recovery
Агент должен уметь восстанавливаться после ошибок, а не падать. Ключевые стратегии:
Context Window Management
LLM имеют ограниченное context window. Для длинных сессий агента нужна стратегия управления контекстом.
Sliding Window
Сохраняем последние N сообщений. System prompt + последние сообщения. Простое решение, теряется ранний контекст.
Summarization
Периодически суммируем историю в краткое описание. Вставляем summary в начало контекста. Сохраняет ключевую информацию.
RAG-based
Сохраняем всю историю в vector store. При каждом запросе извлекаем релевантные фрагменты. Лучшее решение для длинных сессий.
Для tool results — сохраняйте только summary результата, а не полный output. Ответ API на 10KB можно сжать до 200 байт с ключевыми данными. Это экономит до 80% контекста.
Оркестрация
▼Когда одного агента недостаточно — нужна оркестрация нескольких. Три основных паттерна координации.
Supervisor Pattern Самый популярный
Один «главный» агент (supervisor) решает, какому подчинённому агенту делегировать задачу. Supervisor видит все результаты и принимает финальное решение.
Pipeline Pattern Последовательный
Агенты работают последовательно, как конвейер. Выход одного — вход следующего. Подходит для задач с чётким порядком этапов.
Debate / Consensus Параллельный
Несколько агентов решают одну задачу независимо, затем результаты сравниваются или обсуждаются. Повышает качество за счёт разных «точек зрения».
Debate pattern особенно полезен для задач, где важна полнота (code review, risk analysis, research). Параллельный запуск не увеличивает latency, но увеличивает стоимость пропорционально числу агентов.