Перейти к содержанию

Проектирование Автономных AI Агентов

Для программистов, желающих строить промышленные AI-агенты


Оглавление

Часть I: Основы

Часть II: Practice-first (собрать агента)

Часть III: Архитектура и Runtime Core

  • 09. Анатомия Агента — Memory, Tools, Planning, Runtime
  • 10. Planning и Workflow-паттерны — Plan→Execute, Plan-and-Revise, декомпозиция задач, DAG/workflow, условия остановки
  • 11. State Management — Идемпотентность инструментов, retries с экспоненциальным backoff, дедлайны, persist state, возобновление задач
  • 12. Системы Памяти Агента — Два горизонта памяти (рабочая в Run vs долгосрочная между сессиями), линейная история как иммутабельный лог, prompt cache и почему system prompt стабилен, compact vs condense vs recall, опциональная блочная память
  • 13. Context Engineering — Стабильный системный префикс, единый порог и одна реакция (condense с лимитом 1/Run), usage.PromptTokens как первичный источник, ошибки оверинжиниринга (LayeredContext, скоринг сообщений, динамический system prompt)
  • 14. Экосистема и Фреймворки — Выбор между собственным runtime и фреймворками, portability, избежание vendor lock-in

Часть IV: Практика (кейсы/практики)

Часть V: Инфраструктура/безопасность платформы

  • 17. Security и Governance — Threat modeling, категоризация инструментов, защита от prompt injection (канон), sandboxing инструментов, allowlists, policy-as-code, RBAC, dry-run режимы, аудит
  • 18. Протоколы Инструментов и Tool Servers — Контракт tool↔runtime на уровне процесса/сервиса, версионирование схем, authn/authz

Часть VI: Прод-готовность

  • 19. Observability и Tracing — Структурированное логирование, трейсинг agent runs и tool calls, метрики, кореляция логов
  • 20. Cost & Latency Engineering — Бюджеты токенов, лимиты итераций, кэширование, fallback-модели, таймауты
  • 21. Workflow и State Management в продакшене — Очереди и асинхронность, масштабирование, распределённое состояние
  • 22. Prompt и Program Management — Версионирование промптов, промпт-регрессии через evals, конфиги и feature flags, A/B тестинг
  • 23. Evals в CI/CD — Quality gates в CI/CD, версионирование датасетов, обработка flaky-кейсов, тесты на безопасность
  • 24. Data и Privacy — Обнаружение и маскирование PII, защита секретов, redaction логов, хранение и TTL логов
  • 25. Индекс Прод-готовности — Руководство по приоритизации (1 день / 1–2 недели) и быстрые ссылки на прод-темы

Приложения


Маршрут чтения

Для начинающих (рекомендуемый путь — practice-first)

  1. Начните с Предисловия — что такое агент, уравнение Brain + Tools + Memory + Planning, и обязательно раздел «Ментальная модель: агент — это новый сотрудник». Без неё security-главы будут читаться как «специальная LLM-машинерия» вместо «здравый смысл, который вы уже знаете».
  2. Изучите Физику LLM — фундамент для понимания всего остального
  3. Освойте Промптинг — это основа работы с агентами
  4. Соберите работающего агента:
  5. Расширьте возможности:
  6. Углубитесь в архитектуру:
  7. Практикуйтесь: Проходите лабораторные работы параллельно с чтением глав

Для опытных программистов

Можете пропустить базовые главы и сразу перейти к:

Быстрый трек: Основные концепции за 10 минут

Если вы опытный разработчик и хотите быстро понять суть:

  1. Что такое агент?

    • Агент = LLM + Tools + Memory + Planning
    • LLM — это "мозг", который принимает решения
    • Tools — это "руки", которые выполняют действия
    • Memory — это история и долговременное хранилище
    • Planning — это способность разбить задачу на шаги
  2. Ментальная модель (важнее, чем вам сейчас кажется):

    • Агент — это новый сотрудник на испытательном сроке, не «новый софт».
    • Доступы по роли, апрув для опасного, audit log, постепенное расширение доверия — то же самое, что для человека.
    • Четыре асимметрии (где модель «как с человеком» ломается): скорость в 1000× быстрее, параллелизм, отсутствие чувства последствий, prompt injection как социальная инженерия.
    • Подробно: Предисловие → Ментальная модель.
  3. Как работает цикл агента?

    While (задача не решена):
      1. Отправить историю в LLM
      2. Получить ответ (текст или tool_call)
      3. Если tool_call → выполнить инструмент → добавить результат в историю → повторить
      4. Если текст → показать пользователю и остановиться
    

  4. Ключевые моменты:

    • LLM не выполняет код. Она генерирует JSON с запросом на выполнение.
    • Runtime (ваш код) выполняет реальные функции Go.
    • LLM не "помнит" прошлое. Она видит его в messages[], который собирает Runtime.
    • Для агентных циклов типична низкая Temperature (0.0–0.3); воспроизводимость дают schema, валидация и гарды в коде, а не «детерминизм» температуры.
    • История — иммутабельный лог, system prompt стабилен между итерациями (иначе теряется prompt cache, см. гл. 12, гл. 13).
    • Число токенов берите из usage.PromptTokens ответа провайдера, не из своих счётчиков.
  5. Минимальный пример:

    // 1. Определяем инструменты (схема — JSON Schema параметров)
    tools := []ToolDef{{
        Name:        "check_status",
        Description: "Проверить статус сервера по имени хоста",
        Parameters:  json.RawMessage(`{"type":"object","properties":{"host":{"type":"string"}},"required":["host"]}`),
    }}
    
    // 2. Запрос к модели (один HTTP-вызов к любому провайдеру с tool calling)
    resp, err := client.Complete(ctx, Request{
        Model: "glm-5.3",
        Messages: []Message{
            {Role: "system", Content: "Ты DevOps инженер"},
            {Role: "user", Content: "Проверь статус сервера web-01"},
        },
        Tools: tools,
    })
    if err != nil {
        return err // ошибки клиента обрабатывает код, не модель (гл. 04)
    }
    
    // 3. Проверяем tool_call
    if len(resp.Choices[0].Message.ToolCalls) > 0 {
        // 4. Выполняем инструмент (Runtime)
        result := checkStatus(resp.Choices[0].Message.ToolCalls[0].Arguments)
        // 5. Добавляем результат в историю (со ссылкой на ID вызова)
        messages = append(messages,
            resp.Choices[0].Message,
            Message{Role: "tool", ToolCallID: resp.Choices[0].Message.ToolCalls[0].ID, Content: result},
        )
        // 6. Отправляем обновленную историю обратно в модель
    }
    

  6. Что читать дальше:

После завершения основного курса

После изучения глав 1-16 переходите к:


Связь с лабораторными работами

Глава руководства Соответствующие лабораторные работы
01. Физика LLM Lab 00 (Capability Check)
02. Промптинг Lab 01 (Basics)
03. Инструменты Lab 02 (Tools), Lab 03 (Architecture)
04. Автономность Lab 04 (Autonomy)
05. Безопасность Lab 05 (Human-in-the-Loop)
02. Промптинг (SOP) Lab 06 (Incident)
06. RAG Lab 07 (RAG)
07. Multi-Agent Lab 08 (Multi-Agent)
09. Анатомия Агента Lab 01 (Basics), Lab 09 (Context Optimization)
10. Planning и Workflow-паттерны Lab 10 (Planning & Workflow)
11. State Management Lab 10 (Planning & Workflow) — частично
12. Системы Памяти Агента, 13. Context Engineering Lab 11 (Memory & Context Engineering)
18. Протоколы Инструментов и Tool Servers Lab 12 (Tool Server Protocol), Lab 13 (Tool Retrieval & Pipelines) — Опционально
17. Security и Governance — (читается как теория-капстоун; практика безопасности встроена в Lab 02 / Lab 05 / Lab 12)
19–21, 23–25. Прод-часть — (лабы для прод-тем планируются; теория самодостаточна)
22. Prompt и Program Management Lab 01 (Basics) — частично

Примечание: главы и лабы с LLM-клиентом (00–02, 04–11, 13) переведены на нейтральный клиент (пакет llm в репозитории); лабы 03 и 12 не имеют LLM-клиента по дизайну. Примеры в главах каноничны; лабы выполняйте, сверяясь с каноническим материалом глав.


Как пользоваться руководством

  1. Читайте последовательно — каждая глава опирается на предыдущие
  2. Практикуйтесь параллельно — после каждой главы выполняйте соответствующую лабораторную работу
  3. Используйте как справочник — возвращайтесь к нужным разделам при работе над проектами
  4. Изучайте примеры — в каждой главе есть примеры из разных доменов (DevOps, Support, Data, Security, Product)
  5. Выполняйте упражнения — мини-упражнения в каждой главе помогают закрепить материал
  6. Проверяйте себя — используйте чек-листы для самопроверки

Удачного обучения.