What problem does this solve?
Chatbot and RAG pipeline teams who want to evaluate their systems through
EvalHub currently need to write custom scripts outside of EvalHub to:
- Take a set of test questions (e.g. a golden Q&A dataset created by sdg_hub)
- Query their chatbot endpoint with each question
- Collect and format the responses into the structure their evaluation framework expects
- Only then submit an EvalHub job with the pre-formatted data
This manual glue code is rewritten from scratch by every team. There is no SDK-level capability to collect
responses from a live endpoint as part of an evaluation job.
Proposed solution
Add a data collection module to the SDK that any adapter can call during
the LOADING_DATA phase of run_benchmark_job() to query a chatbot endpoint
and collect responses.
The module would:
- Accept a pre-existing set of test questions as input (CSV/JSON/JSONL file)
- Query the chatbot endpoint for each question
- Collect responses with metadata
- Write an evaluation-ready dataset to an output directory
Existing adapters remain unchanged, this is opt-in for adapters that want to support live collection.
Alternatives considered
Build a standalone adapter that handles both collection and evaluation. Rejected because it would only serve one evaluation framework, whereas an SDK-level module benefits all adapters.
What problem does this solve?
Chatbot and RAG pipeline teams who want to evaluate their systems through
EvalHub currently need to write custom scripts outside of EvalHub to:
This manual glue code is rewritten from scratch by every team. There is no SDK-level capability to collect
responses from a live endpoint as part of an evaluation job.
Proposed solution
Add a data collection module to the SDK that any adapter can call during
the LOADING_DATA phase of run_benchmark_job() to query a chatbot endpoint
and collect responses.
The module would:
Existing adapters remain unchanged, this is opt-in for adapters that want to support live collection.
Alternatives considered
Build a standalone adapter that handles both collection and evaluation. Rejected because it would only serve one evaluation framework, whereas an SDK-level module benefits all adapters.