Push evaluation results you already computed into HoneyHive experiments - no server-side evaluators or SDK required
You do not need server-side evaluators to run experiments in HoneyHive. If you already score your AI app offline - in a notebook, a CI job, or your own evaluation harness - you can sync those results into an experiment run and get the same dashboard, comparison, and regression-detection views. Your scores can come from any framework, or none.
The HoneyHive client wraps the three calls with typed methods: create a run, log each result as a session carrying your precomputed metrics, then complete the run.
import uuidfrom honeyhive import HoneyHivefrom honeyhive.models import PostExperimentRunRequest, PutExperimentRunRequestclient = HoneyHive() # reads HH_API_KEY (and HH_API_URL) from your environment# Results you computed offline, with any framework (or none).results = [ { "inputs": {"question": "What is the capital of France?"}, "outputs": {"answer": "Paris"}, "metrics": {"exact_match": 1.0, "relevance": 0.95}, }, { "inputs": {"question": "Who wrote Hamlet?"}, "outputs": {"answer": "Shakespeare"}, "metrics": {"exact_match": 1.0, "relevance": 0.88}, },]# 1. Create a pending experiment run (the project is scoped by your API key)run = client.experiments.create_run( PostExperimentRunRequest(name="offline-eval-v1", event_ids=[], status="pending"))run_id = run.run_id# 2. Log each result as a session, attaching your precomputed scores as metricssession_ids = []for item in results: response = client.sessions.start( { "session": { "session_name": "offline-eval-v1", "source": "evaluation", "session_id": str(uuid.uuid4()), "inputs": item["inputs"], "outputs": item["outputs"], "metrics": item["metrics"], "metadata": {"run_id": run_id, "datapoint_id": str(uuid.uuid4())}, } } ) session_ids.append(response.session_id)# 3. Complete the run, linking every sessionclient.experiments.update_run( run_id, PutExperimentRunRequest(event_ids=session_ids, status="completed"))
metadata.run_id on each session is what links it to the run and rolls its metrics up. Set metadata.datapoint_id too, so cross-run comparison can pair the same test case across runs.
Logs in a CSV or database? With pandas, df.to_dict("records") turns each row into a dict - map your columns into inputs, outputs, and metrics, then loop over the list.
Want HoneyHive to run your scoring during the experiment instead of syncing precomputed metrics? Use client-side evaluators with evaluate().
Open Experiments in the dashboard to see your synced run. Each session appears as a row with its inputs, outputs, and metric columns, and you can compare runs to spot improvements and regressions across versions.