- rag_eval/advisor/: new package with rules engine, LLM analyzer, writer - rules.py: 7-metric diagnostic rules (warning/critical thresholds, top-3 low samples) - llm_analyzer.py: Chinese optimization report via judge_model, graceful fallback - writer.py: writes optimization_advice.md + log summary - __init__.py: run_advisor() entry point (no-op when optimization_advisor=False) - Scenario.optimization_advisor: new bool field (default False) - ScenarioModel: same field added, loader.py透传 - RunArtifactPaths.advice_md: new path field - factory.py: build_models() now public; build_metric_pipeline() accepts pre-built llm/embeddings - runner.py: lifts llm, passes to pipeline and advisor; calls run_advisor() at end - siemens online YAML: optimization_advisor: true enabled - tests: 9 rules tests + 6 writer tests, all pass - docs: advisor section added to engine-flow.md and architecture.md Co-Authored-By: Claude <noreply@anthropic.com>
22 lines
728 B
Python
22 lines
728 B
Python
"""Helpers for deriving file-system paths for run artifacts."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
from rag_eval.shared.models import RunArtifactPaths
|
|
|
|
|
|
def build_artifact_paths(output_dir: Path, run_id: str) -> RunArtifactPaths:
|
|
"""Build the canonical artifact file paths for a single evaluation run."""
|
|
run_dir = output_dir / run_id
|
|
return RunArtifactPaths(
|
|
root_dir=run_dir,
|
|
scenario_snapshot=run_dir / "scenario.snapshot.yaml",
|
|
scores_csv=run_dir / "scores.csv",
|
|
invalid_csv=run_dir / "invalid.csv",
|
|
summary_md=run_dir / "summary.md",
|
|
metadata_json=run_dir / "metadata.json",
|
|
advice_md=run_dir / "optimization_advice.md",
|
|
)
|