arach's picture
Sync local-intelligence eval harness
0d1866c verified
Raw History Blame Contribute Delete
1.85 kB
#!/usr/bin/env python3
from __future__ import annotations
import argparse
import json
from pathlib import Path
from config import EXPORT_DIR, JSONL_EXPORT_PATH, MANIFEST_EXPORT_PATH, load_cards
def main() -> int:
parser = argparse.ArgumentParser(description="Export local-intelligence eval cards for Hugging Face or notebook use.")
parser.add_argument("--cards", default=None)
parser.add_argument("--dry-run", action="store_true")
args = parser.parse_args()
cards = load_cards(Path(args.cards)) if args.cards else load_cards()
EXPORT_DIR.mkdir(parents=True, exist_ok=True)
rows = []
for card in cards:
payload = card.payload
rows.append(
{
"id": payload["id"],
"title": payload["title"],
"tier": payload["tier"],
"task": payload["prompt"]["task"],
"system": payload["prompt"]["system"],
"user_template": payload["prompt"]["user"],
"test_input": payload["testCase"]["input"],
"assertions": payload["testCase"]["assertions"],
}
)
if args.dry_run:
print(json.dumps({"rows": len(rows), "export_dir": str(EXPORT_DIR)}, indent=2))
return 0
JSONL_EXPORT_PATH.write_text("\n".join(json.dumps(row) for row in rows) + "\n")
MANIFEST_EXPORT_PATH.write_text(
json.dumps(
{
"version": 1,
"rows": len(rows),
"tiers": sorted({row["tier"] for row in rows}),
"primary_file": str(JSONL_EXPORT_PATH.name),
},
indent=2,
)
)
print(f"Wrote {len(rows)} rows to {JSONL_EXPORT_PATH}")
print(f"Wrote manifest to {MANIFEST_EXPORT_PATH}")
return 0
if __name__ == "__main__":
raise SystemExit(main())