astraeus-framework

0

Описание

Языки

  • Python85,8%
  • Dockerfile6,2%
  • Shell5,2%
  • Go2,8%
7 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
README.md

Astraeus: Эталонная архитектура для промышленных мультиагентных систем

Build Status License: MIT ADRs

Astraeus — это не просто набор агентов. Это эталонная, готовая к использованию архитектура для создания производительных, отказоустойчивых и безопасных мультиагентных систем. Проект демонстрирует применение событийно-ориентированного подхода с Apache Kafka для оркестрации роя полиглот-агентов (Python, Go, Java) в промышленном масштабе.

Ключевые архитектурные принципы

Эта система построена на четырех столпах, которые отличают ее от простых прототипов:

  1. Асинхронность и Событийная модель: Агенты полностью декаплированы и общаются через события, что обеспечивает масштабируемость.
  2. Персистентное состояние: Отказоустойчивость достигается за счет вынесения состояния задач во внешний stateful-движок.
  3. Гибридная модель интеллекта: Оптимизация затрат и производительности за счет комбинации больших LLM для планирования и дообученных SLM для рутинных операций.
  4. Безопасность через изоляцию: Применение принципа "нулевого доверия", где каждый агент работает в изолированной "песочнице" с минимальными привилегиями.

Подробнее о принятых решениях читайте в наших Architecture Decision Records (ADR).

Бизнес-кейс: Автоматизация скрининга для клинических исследований

В качестве демонстрации архитектура применяется для решения реальной задачи из фармацевтической отрасли. Рой из 6+ агентов автоматизирует процесс предварительного отбора пациентов, сокращая время скрининга с недель до минут и обеспечивая соответствие регуляторным требованиям.

Быстрый старт (Локальное развертывание)

Эта инструкция позволяет поднять полную, идентичную продакшену, копию инфраструктуры и всех агентов на вашей локальной машине.

Предварительные требования

  • Docker и Docker Compose (v2.x+)
  • Создайте файл
    .env
    в корне проекта из шаблона
    .env.example
    и укажите в нем ваши API-ключи (например,
    OPENAI_API_KEY
    ).

Запуск

Из корневой директории репозитория выполните одну команду:

Bash docker-compose exec kafka kcat -P -b kafka:29092 -t patient.unstructured.new -K: <<EOF {"task_id": "local-test-001", "document_url": "https://example.com/fake.pdf", "document_type": "PDF"} EOF```

  1. Наблюдайте за логами:
    docker-compose logs -f

Структура репозитория

Проект организован как монорепозиторий с четким разделением на: agents/: Независимые микросервисы-агенты. shared/: Общие библиотеки и схемы данных. infra/: Инфраструктура как код (Docker Compose, Terraform). docs/: Архитектурная документация.

astraeus-agent-swarm/

├── .github/ # Автоматизация и CI/CD │ └── workflows/ │ ├── data-ingestor-ci-cd.yml # Пример пайплайна для одного агента │ └── global-lint.yml # Пайплайн для проверки качества кода во всем репо │ ├── .gitignore ├── README.md # Главный README проекта (как мы уже описывали) ├── docker-compose.yml # Для локального запуска всей экосистемы ├── .env.example # Шаблон для переменных окружения │ ├── agents/ # Директория для всех независимых микросервисов-агентов │ ├── 0-orchestrator/ # Агент-Оркестратор (мозг роя) │ │ ├── Dockerfile │ │ ├── requirements.txt │ │ ├── main.py # Точка входа, логика работы с Kafka │ │ └── src/ │ │ ├── init.py │ │ ├── agent.py # LangGraph с логикой планирования и обработки ошибок │ │ └── tests/ # Unit- и интеграционные тесты │ │ │ ├── 1-data-ingestor/ # Агент-Парсер (как описывали ранее) │ │ ├── Dockerfile │ │ ├── requirements.txt │ │ ├── main.py │ │ └── src/ │ │ ├── init.py │ │ ├── processor.py │ │ └── tests/ │ │ │ ├── 2-criteria-parser/ # Агент-Аналитик протоколов │ │ ├── ... (структура аналогична) │ │ │ ├── 3-ehr-query-agent/ # Агент для запросов к МИС │ │ ├── Dockerfile │ │ ├── go.mod │ │ ├── go.sum │ │ ├── main.go │ │ └── main_test.go │ │ │ ├── 4-guideline-lookup/ # Агент для проверки по гайдлайнам │ │ ├── ... (структура аналогична) │ │ └── data/ # Локальная база знаний для RAG │ │ └── guidelines/ │ │ └── diabetes_guideline_2025.txt │ │ │ ├── 5-eligibility-engine/ # Детерминированный движок решений │ │ ├── Dockerfile │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/com/astraeus/ │ │ └── resources/ │ │ └── application.yml │ │ │ ├── 6-compliance-auditor/ # Агент-Аудитор │ │ ├── Dockerfile │ │ ├── go.mod │ │ ├── main.go │ │ └── main_test.go │ │ │ └── 7-dlq-handler/ # Агент для обработки "мертвых" сообщений │ ├── ... (простая структура, т.к. агент выполняет одну функцию) │ ├── shared/ # Общие библиотеки, схемы и утилиты │ ├── event_schemas/ # Строго типизированные контракты данных │ │ ├── commands.avsc # Схемы для команд от Оркестратора │ │ ├── patient_events.avsc │ │ ├── trial_events.avsc │ │ └── system_events.avsc # Схемы для событий ошибок и аудита │ │ │ ├── python_libs/ # Общая Python-библиотека │ │ ├── README.md │ │ ├── setup.py │ │ └── astraeus_lib/ │ │ ├── init.py │ │ ├── kafka_client.py │ │ └── state_client.py │ │ │ └── go_libs/ # Общая Go-библиотека (для будущих расширений) │ ├── infra/ # Инфраструктура как код (IaC) │ ├── docker-compose/ │ │ ├── kafka/ │ │ │ └── create-topics.sh # Скрипт для создания топиков Kafka │ │ └── opa/ │ │ └── policy.rego # Файл с политиками безопасности для OPA │ │ │ └── terraform/ # Terraform-код для облачного развертывания │ ├── README.md │ ├── environments/ │ └── modules/ │ └── docs/ ├── README.md ├── adr/ # Записи об архитектурных решениях │ ├── 001-event-driven-architecture.md │ ├── 002-hybrid-llm-model.md │ └── 003-testing-strategy.md └── diagrams/ # Исходники диаграмм в PlantUML ├── c4_context.puml ├── c4_container.puml └── sequence_diagram.puml

Дальнейшие шаги

Ознакомьтесь с ADR 001, чтобы понять, почему мы выбрали EDA. Изучите код OrchestratorAgent в agents/0-orchestrator/, чтобы понять логику планирования.