Files
agent/tests/pipeline_setup_v2/README.md
2026-03-12 16:55:23 +03:00

119 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`