Files
agent/tests/pipeline_setup
2026-03-12 16:55:23 +03:00
..
2026-03-12 16:55:23 +03:00
2026-03-12 16:55:23 +03:00
2026-03-12 16:55:23 +03:00
2026-03-12 16:55:23 +03:00
2026-03-12 16:55:23 +03:00

Тесты пайплайна (pipeline_setup)

Каталог содержит тесты и вспомогательные модули для настройки и проверки пайплайна: intent router → RAG retrieval → LLM.

Содержимое

Каталог / файл Назначение
suite_01_synthetic/ Синтетические тесты на fixture-репозитории и golden-кейсах для CODE_QA.
suite_02_pipeline/ Интеграционные наборы router_only, router_rag, full_chain и CLI для их запуска.
test_results/ Результаты прогонов: JSONL и отчёты тестовых пайплайнов, артефакты CODE_QA eval.
utils/ Общие низкоуровневые утилиты. Сейчас здесь живёт переиспользуемый RAG-индексатор.

Структура наборов

  • suite_01_synthetic — fixture-репозиторий code_qa_repo, golden-кейсы и evaluation harness.
  • suite_02_pipeline — интеграционные сценарии router_only, router_rag, full_chain и CLI-скрипты запуска.

CLI для pipeline-набора

Запуск — из корня проекта (agent):

# Из каталога agent
python -m tests.pipeline_setup.suite_02_pipeline.cli.<скрипт> [параметры]

1. Индексация репозитория

Создаёт RAG-сессию и индексирует указанную директорию. Результат — rag_session_id, который передаётся в пайплайны с retrieval или full_chain.

python -m tests.pipeline_setup.suite_02_pipeline.cli.index_repo --repo-path <путь_к_репо> [--project-id ID]
Параметр Обязательный Описание
--repo-path да Путь к корню индексируемого репозитория.
--project-id нет Идентификатор проекта для сессии; по умолчанию — имя директории репо.

Пример:

python -m tests.pipeline_setup.suite_02_pipeline.cli.index_repo --repo-path ./tests/pipeline_setup/suite_01_synthetic/fixtures/code_qa_repo --project-id code_qa_repo
# Вывод: rag_session_id=<uuid>

2. Пайплайн «только intent router»

Цепочка: классификация запроса (intent_router_v2), без RAG и LLM.

python -m tests.pipeline_setup.suite_02_pipeline.cli.run_router_only [--case-id ID ...] [--verbose] [--test-name PREFIX]
Параметр Описание
--case-id Запустить только указанные кейсы (можно повторять).
--verbose Выводить диагностику по каждому кейсу.
--test-name Префикс имени файла с результатами (по умолчанию cli_router_only).

3. Пайплайн «intent router + retrieval»

Цепочка: intent_router_v2 → RAG retrieval. Требуется предварительная индексация (или --reindex-repo-path).

# С уже полученным rag_session_id:
python -m tests.pipeline_setup.suite_02_pipeline.cli.run_router_rag --rag-session-id <uuid> [--case-id ID ...] [--verbose]

# С индексацией перед прогоном:
python -m tests.pipeline_setup.suite_02_pipeline.cli.run_router_rag --reindex-repo-path <путь_к_репо> [--reindex-project-id ID] [--case-id ID ...]
Параметр Описание
--rag-session-id UUID RAG-сессии (результат индексации).
--reindex-repo-path Индексировать репо перед прогоном и использовать новую сессию.
--reindex-project-id project_id для новой сессии при --reindex-repo-path.
--case-id Запустить только указанные кейсы.
--verbose Диагностика по каждому кейсу.
--test-name Префикс файла результатов (по умолчанию cli_router_rag).

Переменная окружения: RUN_INTENT_PIPELINE_ROUTER_RAG=1 — включить режим router_rag. Обязательна DATABASE_URL.

4. Пайплайн «полная цепочка» (router + retrieval + LLM)

Цепочка: intent_router_v2 → RAG retrieval → ответ LLM (например GigaChat).

# С уже полученным rag_session_id:
python -m tests.pipeline_setup.suite_02_pipeline.cli.run_full_chain --rag-session-id <uuid> [--case-id ID ...] [--verbose]

# С индексацией перед прогоном:
python -m tests.pipeline_setup.suite_02_pipeline.cli.run_full_chain --reindex-repo-path <путь_к_репо> [--reindex-project-id ID] [--case-id ID ...]

Параметры — те же, что у run_router_rag. Дополнительно: RUN_INTENT_PIPELINE_FULL_CHAIN=1 и настройки доступа к LLM (см. .env и suite_02_pipeline/pipeline_intent_rag/.env.test).

Запуск через pytest

  • Только intent router (без RAG/LLM):
    pytest tests/pipeline_setup/suite_02_pipeline/pipeline_intent_rag/test_intent_router_only_matrix.py -q

  • С RAG (нужны RUN_INTENT_PIPELINE_ROUTER_RAG=1 и БД):
    RUN_INTENT_PIPELINE_ROUTER_RAG=1 pytest -m router_rag tests/pipeline_setup/suite_02_pipeline/pipeline_intent_rag/ -q

  • Полная цепочка (нужны RUN_INTENT_PIPELINE_FULL_CHAIN=1, БД и LLM):
    RUN_INTENT_PIPELINE_FULL_CHAIN=1 pytest -m full_chain tests/pipeline_setup/suite_02_pipeline/pipeline_intent_rag/ -q

Подробнее — в suite_02_pipeline/pipeline_intent_rag/README.md и suite_01_synthetic/code_qa_eval/README.md.

Окружение

  • Загрузка env: сначала suite_02_pipeline/pipeline_intent_rag/.env.test, затем workspace .env.
  • Для retrieval и full_chain нужны DATABASE_URL и (для full_chain) настройки LLM.