English translation is not available yet. Showing Russian content.

Назовите 12+ слоёв эталонной архитектуры Harness?

Краткий тезис

Эталонная архитектура Harness (проект harness-one) — это многослойный шаблон для построения production‑ready AI-агентов, объединяющих RAG, мульти‑агентную оркестрацию и гибкий цикл вызова LLM. Она насчитывает 12+ слоёв, каждый из которых решает отдельную задачу: от управления агентом и инженерии промптов до безопасности, наблюдаемости и эволюции системы. Понимание этих слоёв позволяет проектировать модульные, масштабируемые и устойчивые агентные системы, готовые к изменению требований и данных.


1. Agent Loop (Цикл агента)

Agent Loop — это ядро архитектуры. Он реализует реактивный цикл: агент получает запрос → вызывает LLMLLM решает, какие инструменты (tools) запустить → dispatcher запускает инструменты → результаты возвращаются LLM для финального ответа или следующей итерации. Цикл может быть:

  • синхронным (один запрос — один ответ)
  • итеративным (reasoning|многошаговое рассуждение, ReAct)
  • рекурсивным (агент вызывает сам себя)

Слой отвечает за управление состоянием цикла, обработку ошибок, таймауты и лимит итераций.


2. Prompt Engineering (Инженерия промптов)

Слой управляет многослойными промптами: системный промпт, динамический промпт (с контекстом), инструкции для инструментов.
Ключевые элементы:

  • KV‑cache — кеширование ключей/значений для ускорения инференса больших моделей.
  • Skills — переиспользуемые шаблоны промптов (например, "суммаризация", "извлечение сущностей").
  • Сборка промпта — объединение системного сообщения, истории диалога, результатов инструментов и контекста RAG.

3. Context Engineering (Инженерия контекста)

Слой отвечает за эффективное использование контекстного окна LLM.

  • Token budgets — выделение лимита токенов на каждую часть запроса (инструкция, история, документы, инструменты).
  • Packing — упаковка нескольких коротких запросов в один для повышения throughput.
  • Compression — сжатие длинного контекста (например, через суммаризацию или удаление избыточных фрагментов).

Этот слой критичен, когда в контекст попадает много извлечённых чанков RAG.


4. Tool System (Система инструментов)

Здесь определяются, валидируются и выполняются инструменты — функции, которые агент может вызывать (поиск, калькулятор, базы данных, внешние API).

  • Defintion — описание инструмента (имя, параметры, возвращаемый тип).
  • Validation — проверка типов и ограничений на входные данные.
  • Registry — реестр всех доступных инструментов, часто с метаданными (версия, автор).
  • Rate limiting — ограничение частоты вызовов для защиты внешних сервисов и управления затратами.

5. Safety & Guardrails (Безопасность и ограждения)

Слой фильтрует и модерирует входные запросы (input guardrails) и выходные ответы (output guardrails).

  • Проверка на вредоносный контент (мат, личные данные, инъекции).
  • Проверка на соблюдение политик (например, отказ в ответах на медицинские темы).
  • Использование классификаторов, регулярных выражений, а также отдельных LLM для сложных проверок.

6. Observability (Наблюдаемость)

Слой собирает трассировки (tracing) каждого вызова LLM и инструмента, логи (logging) шагов агента и метрики (cost per request, latency, токены).

  • Distributed tracing — отслеживание запроса через все слои.
  • Cost tracking — привязка к моделям и инструментам.
  • Алерты — оповещения при росте ошибок или превышении бюджета.

7. Session Management (Управление сессиями)

Управляет сессиями пользователей: TTL (время жизни), LRU (вытеснение старых сессий при нехватке памяти), GC (сборка мусора для удаления мёртвых сессий) и locking (блокировка для предотвращения гонок при параллельных запросах).
Обеспечивает сохранение истории диалога между шагами.


8. Memory & Persistence (Память и сохранение)

Слой отвечает за хранение данных, выходящих за рамки одной сессии.

  • In-memory — кеш последних диалогов.
  • File system — долговременное хранение логов, конфигураций.
  • Vector stores — долговременная память в виде эмбеддингов (например, для сохранения извлечённых фактов).

Используется для long‑term memory агента (профиль пользователя, история предпочтений).


9. Evaluation (Оценка)

Слой автоматически оценивает качество работы агента по скорингам (scorers): faithfulness, answer relevance, toolusage correctness.

  • Quality gates — пороговые значения метрик, при которых агент перезапускается или отправляется на доработку.
  • Flywheel — маховик улучшения: результаты оценки отправляются обратно в цикл для дообучения или смены промптов.

10. Evolution (Эволюция)

Слой позволяет системе адаптироваться к изменениям:

  • Drift detection — обнаружение изменения распределения запросов или поведения LLM (например, падение точности).
  • Component registry — реестр версий всех компонентов (промпты, инструменты, модели), позволяющий A/B тестирование и быстрый откат.
  • Автоматическая замена — замена модели или инструмента при обнаружении дрейфа.

11. Multi‑Agent Orchestration (Оркестрация мульти‑агентов)

Когда система состоит из нескольких агентов, этот слой управляет:

  • AgentPool — пул агентов для балансировки нагрузки.
  • Handoff — передача запроса от одного агента другому (например, от агента‑классификатора к профильному агенту).
  • Координация — синхронизация состояния между агентами (через общую память или шину сообщений).

12. RAG Pipeline (Конвейер RAG)

Слой отвечает за извлечение релевантных документов из базы знаний:

  • Loaders — загрузчики данных (PDF, веб, базы данных).
  • Chunking — разбиение документов на чанки.
  • Embedding — получение векторных представлений.
  • Retrieval — поиск (kNN, гибридный, многоходовой).

Взаимодействует с Context Engineering для упаковки найденных документов в промпт.


13. Дополнительные слои (Infrastructure & Deployment)

Хотя в классическом списке Harness их часто выделяют отдельно, можно добавить:

  • Infrastructure Layer — контейнеризация (Docker), оркестрация (Kubernetes), автоскейлинг.
  • Data Pipeline — потоковая загрузка новых документов, обновление эмбеддингов.
  • CI/CD — непрерывная интеграция новых моделей и конфигураций.

Они обеспечивают надёжность и автоматизацию эксплуатации.


Пет-проект для закрепления

Задача: реализовать минимальную версию архитектуры Harness — агента, который использует RAG и инструменты (калькулятор, поиск в Wikipedia) с базовыми слоями безопасности и наблюдаемости.

Инструменты: Python 3.10+, LangChain (агент с ReAct), FastAPI (веб‑интерфейс), FAISS (векторное хранилище), pytest для оценки.

Шаги:

  1. Создайте класс AgentLoop, который принимает модель (LLM) и реестр инструментов.
  2. Добавьте слой ToolSystem с инструментами Calculator и WikiSearch.
  3. Реализуйте слой SafetyGuardrails для фильтрации запросов (блокировка мата через регулярки).
  4. Встройте Observability с помощью логирования каждого шага (используйте logging + json).
  5. Добавьте RAGPipeline на базе FAISS и OpenAI Embeddings для ответа по документам.
  6. Оберните всё в FastAPI‑эндпоинт /ask, который принимает сессию (идентификатор) и вопрос.
  7. Реализуйте SessionManagement с TTL = 10 минут и in‑memory хранилищем.
  8. Напишите тест с помощью pytest, оценивающий корректность вызова инструментов и фильтрацию.

Ожидаемый результат: агент, который на вопрос "Сколько будет 5+3?" вызывает калькулятор и возвращает 8, на вопрос "Найди информацию о Франции" ищет в Wikipedia и возвращает суммаризацию, а на запрос с матом отвечает "Запрос отклонён". Все шаги логируются в файл.


Связь с другими вопросами

ВопросТема
737Что такое Agentic RAG?
739Как спроектировать multi‑agent систему?
740Как обеспечить safety в AI‑агентах?
741Как настроить observability для агентов?
742Как организовать память (memory) в агентах?
743Как устроен RAG‑конвейер в архитектуре Harness?

Навигация