6.3 KiB
Тесты пайплайна (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.