carepath-api / scribe /training /scripts /llm_rag_baseline.py
tranth3truong's picture
Deploy public Scribe-only CarePath Space
cc678b9
Raw
History Blame Contribute Delete
2.2 kB
"""CLI: LLM/RAG correction baseline (paper's +GEC comparison row).
Runs the live CarePath retrieval + LLM correction over GEC pairs, adding a
``corrected_text`` column so ``evaluate``/``gate`` can compare the trained adapter
against the no-training LLM/RAG baseline.
python scribe/training/scripts/llm_rag_baseline.py \
--input artifacts/gec_pairs/vimedcss_gipformer_pairs_smoke.jsonl \
--output artifacts/evaluations/ckey_rag_smoke.jsonl --limit 20
"""
from __future__ import annotations
import argparse
import json
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parents[3] / "scribe" / "training"))
sys.path.insert(0, str(Path(__file__).resolve().parents[3] / "scribe"))
from gec.cliutil import configure_stdout # noqa: E402
configure_stdout()
from carepath.config import Settings # noqa: E402
from gec.data import read_jsonl # noqa: E402
from carepath.services.pipeline import CarePathPipeline # noqa: E402
def main() -> None:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--input", required=True)
parser.add_argument("--output", required=True)
parser.add_argument("--limit", type=int, default=None)
args = parser.parse_args()
rows = read_jsonl(Path(args.input))
if args.limit:
rows = rows[: args.limit]
pipeline = CarePathPipeline(Settings.from_env())
output_path = Path(args.output)
output_path.parent.mkdir(parents=True, exist_ok=True)
with output_path.open("w", encoding="utf-8") as handle:
for row in rows:
result = pipeline.process_text(row["raw_asr"])
handle.write(
json.dumps(
{
**row,
"corrected_text": result.corrected_transcript,
"llm_rag_retrieved_terms": [t.term for t in result.retrieved_terms],
"correction_metadata": result.metadata,
},
ensure_ascii=False,
)
+ "\n"
)
print(f"Wrote {len(rows)} LLM/RAG-corrected rows to {output_path}")
if __name__ == "__main__":
main()