Фикс состояния
This commit is contained in:
118
tests/pipeline_setup_v2/README.md
Normal file
118
tests/pipeline_setup_v2/README.md
Normal file
@@ -0,0 +1,118 @@
|
||||
# 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` — верхнеуровневый entrypoint
|
||||
- `llm_prompts.yaml` — общий каталог LLM-промтов для `full_chain`
|
||||
- `cases/` — папки с YAML-наборами кейсов
|
||||
- `core/` — общий harness: модели, loader, validator, session provider, artifact writer, orchestration
|
||||
- `runtime/` — конкретные исполнители для `runtime` и `code_qa_eval`
|
||||
- `test_results/` — артефакты прогонов
|
||||
|
||||
## Запуск
|
||||
|
||||
```bash
|
||||
PYTHONPATH=. python -m tests.pipeline_setup_v2.run \
|
||||
--cases-dir tests/pipeline_setup_v2/cases/suite_01_synthetic \
|
||||
--run-name suite_01_smoke
|
||||
```
|
||||
|
||||
```bash
|
||||
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` заранее и подставлять его в кейсы, можно отдельно запустить индексатор:
|
||||
|
||||
```bash
|
||||
PYTHONPATH=. python -m tests.pipeline_setup.suite_02_pipeline.cli.index_repo \
|
||||
--repo-path /absolute/path/to/repo \
|
||||
[--project-id my-project]
|
||||
```
|
||||
|
||||
На выходе индексатор печатает:
|
||||
|
||||
```bash
|
||||
rag_session_id=<uuid>
|
||||
```
|
||||
|
||||
После этого `rag_session_id` можно использовать в описании кейса:
|
||||
|
||||
```yaml
|
||||
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_eval`
|
||||
- `defaults.mode`: `router_only`, `router_rag`, `full_chain`
|
||||
- `defaults.input.repo_path`
|
||||
- `defaults.input.project_id`
|
||||
- `defaults.input.rag_session_id`
|
||||
|
||||
На уровне кейса:
|
||||
|
||||
- `id`
|
||||
- `query`
|
||||
- `runner`
|
||||
- `mode`
|
||||
- `input`
|
||||
- `expected.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`
|
||||
Reference in New Issue
Block a user