# Тесты пайплайна (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)**: ```bash # Из каталога agent python -m tests.pipeline_setup.suite_02_pipeline.cli.<скрипт> [параметры] ``` ### 1. Индексация репозитория Создаёт RAG-сессию и индексирует указанную директорию. Результат — `rag_session_id`, который передаётся в пайплайны с retrieval или full_chain. ```bash python -m tests.pipeline_setup.suite_02_pipeline.cli.index_repo --repo-path <путь_к_репо> [--project-id ID] ``` | Параметр | Обязательный | Описание | |----------|--------------|----------| | `--repo-path` | да | Путь к корню индексируемого репозитория. | | `--project-id` | нет | Идентификатор проекта для сессии; по умолчанию — имя директории репо. | Пример: ```bash 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= ``` ### 2. Пайплайн «только intent router» Цепочка: классификация запроса (intent_router_v2), без RAG и LLM. ```bash 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`). ```bash # С уже полученным rag_session_id: python -m tests.pipeline_setup.suite_02_pipeline.cli.run_router_rag --rag-session-id [--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). ```bash # С уже полученным rag_session_id: python -m tests.pipeline_setup.suite_02_pipeline.cli.run_full_chain --rag-session-id [--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.