Intent Pipeline Test Module
Что тестируется
router_only: толькоintent_router_v2.router_rag:intent_router_v2 -> RAG retrieval.full_chain:intent_router_v2 -> RAG -> GigaChat.
Каталог фраз
Фразы лежат в [fixtures/phrases.yaml](/Users/alex/Dev_projects_v2/ai driven app process/v2/agent/tests/pipeline_setup/suite_02_pipeline/pipeline_intent_rag/fixtures/phrases.yaml).
Поля кейса:
id— уникальный ID.text— запрос пользователя.tags— в каких режимах кейс участвует (router_only,router_rag,full_chain).expected_intent— опциональная проверка intent.expect_non_empty_rag— ожидание непустого RAG-контекста.rag_session_id— опционально; можно не указывать, если задан через env.
Env для тестов
Сначала загружается [.env.test](/Users/alex/Dev_projects_v2/ai driven app process/v2/agent/tests/pipeline_setup/suite_02_pipeline/pipeline_intent_rag/.env.test), затем workspace .env.
Ключи:
DATABASE_URL— подключение к тестовой БД.RUN_INTENT_PIPELINE_ROUTER_RAG=1— включитьrouter_rag.RUN_INTENT_PIPELINE_FULL_CHAIN=1— включитьfull_chain.INTENT_PIPELINE_FORCE_RAG_SESSION_ID— принудительныйrag_session_idдля всех кейсов.INTENT_PIPELINE_RAG_SESSION_ID— дефолтныйrag_session_idдля кейсов.INTENT_PIPELINE_REINDEX_REPO_PATH— путь к репозиторию для новой индексации.INTENT_PIPELINE_REINDEX_PROJECT_ID—project_idдля новой сессии (опционально).
Если указан INTENT_PIPELINE_REINDEX_REPO_PATH, раннер создаёт новую rag_session, индексирует репозиторий и использует этот rag_session_id для retrieval.
Артефакты
Каждый прогон пишет JSONL в tests/pipeline_setup/test_results.
Формат имени:
<test_name>_<YYYYMMDD_HHMMSS>.jsonl
Примеры:
test_intent_router_only_matrix_20260305_183010.jsonltest_intent_router_rag_pipeline_20260305_183045.jsonl
Запуск
pytest tests/pipeline_setup/suite_02_pipeline/pipeline_intent_rag/test_intent_router_only_matrix.py -qRUN_INTENT_PIPELINE_ROUTER_RAG=1 pytest -m router_rag tests/pipeline_setup/suite_02_pipeline/pipeline_intent_rag/test_intent_router_rag_pipeline.py -qRUN_INTENT_PIPELINE_FULL_CHAIN=1 pytest -m full_chain tests/pipeline_setup/suite_02_pipeline/pipeline_intent_rag/test_intent_router_rag_llm_pipeline.py -q
CLI
Запуск без pytest:
python3 -m tests.pipeline_setup.suite_02_pipeline.pipeline_intent_rag run --mode router_onlypython3 -m tests.pipeline_setup.suite_02_pipeline.pipeline_intent_rag run --mode router_rag --rag-session-id <sid>python3 -m tests.pipeline_setup.suite_02_pipeline.pipeline_intent_rag run --mode full_chain --rag-session-id <sid>
Переиндексация репозитория в новую rag_session:
python3 -m tests.pipeline_setup.suite_02_pipeline.pipeline_intent_rag reindex --repo-path /abs/path/to/repo- опционально:
--project-id my-project
Команда печатает итог:
rag_session_id=<uuid>
Далее этот rag_session_id можно передать в тестовый прогон:
python3 -m tests.pipeline_setup.suite_02_pipeline.pipeline_intent_rag run --mode router_rag --rag-session-id <uuid>
Полезные опции:
--case-id <id>(можно повторять)--reindex-repo-path /abs/path/to/repo--reindex-project-id <project_id>--test-name <artifact_prefix>