from __future__ import annotations
"""Load FAQ evaluation samples from CSV files."""
import csv
from pathlib import Path
from typing import List
from chatbot_eval.types import Sample
[docs]
def load_samples_from_csv(path: str | Path) -> List[Sample]:
"""Load samples from a CSV file with ``question`` and ``expected_answer`` columns."""
rows: list[Sample] = []
with open(path, 'r', encoding='utf-8', newline='') as handle:
reader = csv.DictReader(handle)
required = {'question', 'expected_answer'}
missing = required.difference(reader.fieldnames or [])
if missing:
raise ValueError(f'CSV is missing required columns: {sorted(missing)}')
for row in reader:
rows.append(
Sample(
question=(row.get('question') or '').strip(),
expected_answer=(row.get('expected_answer') or '').strip(),
)
)
return rows