Мультиагентные системы
Мультиагентные Системы
Преподаватель: Александр Алгазинов — https://algazinovaleksandr.github.io/
Аннотация
Курс о том, как устроены большие языковые модели и как из них собираются работающие агентные системы. Мы идем снизу вверх: сначала механика самой модели - токенизация, трансформер, генерация текста, инференс LLM; затем агент и его части - инструменты и function calling, RAG, память и управление контекстом; затем системы - многоагентные архитектуры, фреймворки, продвинутые методы рассуждений; и, наконец, практика: agentic coding, разбор реальных агентных систем и того, какие у них есть критерии работоспособности, а также эксплуатация агентов в проде - оценка качества, безопасность, стоимость. Основной упор сделан на концепции, а не на конкретные библиотеки: инструментарий в этой области обновляется очень быстро, а идеи под ним - цикл агента, контракт инструмента, решение о том, что попадает в контекст, остаются.
План лекций
План не финальный: порядок тем, их состав и распределение по лекциям могут меняться.
- Основы LLM
- Токенизация (BPE) и словарные эмбеддинги
- Архитектура трансформера на уровне механизма: Q/K/V и что считает attention
- Предсказание следующего токена - почему модель «не думает», а генерирует
- Параметры генерации: temperature, top-p, top-k, min-p, штрафы за повторы
- Инференс и сервинг LLM
- Фазы prefill и decode
- Метрики сервинга: TTFT, TPOT
- KV-кэш и переиспользование префикса
- Статический и continuous батчинг, PagedAttention
- Constrained decoding
- Обзорно: speculative decoding, квантизация, vLLM и SGLang как бэкенды
- Введение в агентов
- От классического ML к LLM и далее к LLM-агентам
- Что такое агент (не обязательно на LLM): rule-based и RL-агенты как примеры
- Анатомия LLM-агента
- ReAct и Plan-and-Execute
- Build vs adopt: писать свой цикл или взять готовый harness
- Когда агент не нужен
- Основы разработки агентов
- Инструменты агента и их таксономия
- Function calling от начала до конца и его внутреннее устройство
- Skills
- Structured output - связь с constrained decoding
- Валидация и ретраи на невалидном JSON
- Практика на «сырых» SDK провайдеров: сначала формат запроса, потом абстракции
- RAG: базис, практика и собственный retrieval
- Проблема знаний, чанкинг, эмбеддинги для поиска
- Векторные хранилища и ANN, retrieve-then-generate, гибридный поиск (dense + sparse)
- Демо: сборка RAG-пайплайна на LlamaIndex
- Двухстадийный retrieval, hard negative mining, сбор обучающей выборки
- Признаки ранжирования, реранкинг: GBDT против cross-encoder
- Метрики поиска: recall@k, MRR, nDCG
- Память агентов и Agentic RAG
- Таксономия памяти: рабочая, внешняя, параметрическая; эпизодическая и семантическая
- Работа с контекстом, который не помещается в окно: map-reduce, суммаризация чанков, иерархическая суммаризация, выбор контекста поиском, выгрузка в файлы
- Что и когда записывать в память, стратегии извлечения, MemGPT
- Agentic RAG: corrective, self, adaptive, multi-hop
- Многоагентные системы
- Зачем вообще несколько агентов
- Паттерны взаимодействия: последовательный, оркестратор, групповой чат
- Субагенты: порождение оркестратором и изоляция контекста
- Общая память и условия остановки
- Примеры реальных систем
- Ландшафт агентных фреймворков
- LangChain: цепочки, LCEL, AgentExecutor - и что из этого выросло в LangGraph
- LangGraph: графы, состояние, условные ребра, checkpointers, human-in-the-loop
- CrewAI, AutoGen
- SGLang со стороны структурированного исполнения
- Матрица выбора и сравнительное демо
- Продвинутые методы рассуждений
- Zero-shot и few-shot
- Chain-of-thought как метод, self-consistency
- Tree of Thoughts, SGR
- Парадигма «генератор - верификатор»
- DSPy, демо
- Agentic coding: vibe coding и spec-driven development (демо/семинар)
- Vibe coding: что это и где он ломается
- Spec-driven development: спека → гейт → генерация → ревью
- Создание агентов и промптинг в Claude Code, файлы инструкций для агента
- Автоматизация рутины, MCP и собственный MCP-сервер
- Демо: FastAPI-сервис, собранный по SDD-циклу
- Реальные агентные системы: механика, свидетельства, паттерны
- Системы, давшие механику: поток памяти и рефлексия в Smallville, ролевой пайплайн ChatDev
- Системы с измеримым результатом: кодовые агенты уровня SWE-bench, Voyager, Reflexion
- Бенчмарки агентов как отдельная тема: SWE-bench, GAIA, WebArena, OSWorld
- AgentOps
- Стабильность и предсказуемость вывода: юнит-тесты, анализ траекторий
- Метрики качества агентов и почему классические (recall, precision, MSE) не переносятся на открытые задачи
- Task success rate, пошаговая и траекторная оценка, LLM-as-judge, попарное сравнение, человеческая оценка
- Работа с галлюцинациями, бюджетирование токенов
- Prompt injection: прямая и косвенная, проблема confused deputy - на примерах «до и после»
- Кэширование промптов и проектирование агента с учетом кэша, стриминг
- Frontiers
- Агентный harness как исследовательский фронтир
- Самоулучшающиеся и самосоздающиеся агенты (Ouroboros)
- World models
- Открытые исследовательские проблемы и будущее AI
Формула оценивания
Оценка = 0.4 × защита идеи + 0.6 × финальная защита
Проект выполняется командами по четыре человека. Каждый этап оценивается из 10 баллов.
Защита идеи - 10 баллов
- 4 - состоятельная идея: какая именно задача решается, и причем здесь LLM
- 4 - работающий MVP: 1 балл - запускается вживую, 1 балл - понятный оформленный репозиторий, 2 балла - ключевая LLM-функциональность
- 2 - ответы на технические вопросы
Финальная защита - 10 баллов
- 4 - законченность: 2 балла - задеплоено и доступно по ссылке, 2 балла - соответствует заявленному на защите идеи
- 4 - инструментарий и техническая глубина
- 2 - ответы на технические вопросы
Что понимается под технической глубиной
Это не гонка за сложностью: проект с чистым, аккуратно структурированным кодом и сложной прикладной концепцией под ним ничего не теряет из-за того, что в нем нет, например, function calling, если вы можете объяснить, почему он вам не понадобился. Обоснуйте выбор в презентации или в ответах на вопросы.