pipeline_setup_v2
Новый общий harness для двух семейств прогонов:
code_qa_eval— synthetic/golden проверкиruntime— router_only / router_rag / full_chain
Идея
Один runner:
- читает все
*.yamlиз папки с кейсами - для кейса принимает либо
repo_path, либоrag_session_id - при
repo_pathсам индексирует репозиторий и получаетrag_session_id - запускает выбранный runner/mode
- проверяет ожидания
- пишет per-case артефакты и
summary.md
Структура
run.py— верхнеуровневый entrypointllm_prompts.yaml— общий каталог LLM-промтов дляfull_chaincases/— папки с YAML-наборами кейсовcore/— общий harness: модели, loader, validator, session provider, artifact writer, orchestrationruntime/— конкретные исполнители дляruntimeиcode_qa_evaltest_results/— артефакты прогонов
Запуск
PYTHONPATH=. python -m tests.pipeline_setup_v2.run \
--cases-dir tests/pipeline_setup_v2/cases/suite_01_synthetic \
--run-name suite_01_smoke
PYTHONPATH=. python -m tests.pipeline_setup_v2.run \
--cases-dir tests/pipeline_setup_v2/cases/suite_02_pipeline \
--run-name suite_02_smoke
Индексация RAG
Если вы хотите получить rag_session_id заранее и подставлять его в кейсы, можно отдельно запустить индексатор:
PYTHONPATH=. python -m tests.pipeline_setup.suite_02_pipeline.cli.index_repo \
--repo-path /absolute/path/to/repo \
[--project-id my-project]
На выходе индексатор печатает:
rag_session_id=<uuid>
После этого rag_session_id можно использовать в описании кейса:
cases:
- id: explain-existing-session
runner: runtime
mode: router_rag
query: "Как работает OrderService?"
input:
rag_session_id: "<uuid>"
Если в кейсе вместо rag_session_id указан repo_path, то pipeline_setup_v2 сам выполнит индексацию перед прогоном.
Формат кейсов
Runner читает несколько YAML-файлов из одной папки.
Поддерживаемые поля:
defaults.runner:runtimeилиcode_qa_evaldefaults.mode:router_only,router_rag,full_chaindefaults.input.repo_pathdefaults.input.project_iddefaults.input.rag_session_id
На уровне кейса:
idqueryrunnermodeinputexpected.router.*expected.retrieval.*expected.llm.*expected.pipeline.answer_mode
LLM Промпты
Общий каталог промтов для full_chain находится в:
tests/pipeline_setup_v2/llm_prompts.yaml
Выбор шаблона идёт в таком порядке:
intent + sub_intent- fallback на
intent - fallback на
default
Артефакты
Результаты пишутся в:
tests/pipeline_setup_v2/test_results/<run_name>/<timestamp>/
Там создаются:
*.jsonпо каждому кейсу*.mdпо каждому кейсуsummary.md