Мультиагентные системы

Материал из Wiki - Факультет компьютерных наук
Перейти к навигации Перейти к поиску

Мультиагентные Системы

Преподаватель: Александр Алгазинов — https://algazinovaleksandr.github.io/

Аннотация

Курс о том, как устроены большие языковые модели и как из них собираются работающие агентные системы. Мы идем снизу вверх: сначала механика самой модели - токенизация, трансформер, генерация текста, инференс LLM; затем агент и его части - инструменты и function calling, RAG, память и управление контекстом; затем системы - многоагентные архитектуры, фреймворки, продвинутые методы рассуждений; и, наконец, практика: agentic coding, разбор реальных агентных систем и того, какие у них есть критерии работоспособности, а также эксплуатация агентов в проде - оценка качества, безопасность, стоимость. Основной упор сделан на концепции, а не на конкретные библиотеки: инструментарий в этой области обновляется очень быстро, а идеи под ним - цикл агента, контракт инструмента, решение о том, что попадает в контекст, остаются.

План лекций

План не финальный: порядок тем, их состав и распределение по лекциям могут меняться.

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