-
Notifications
You must be signed in to change notification settings - Fork 1.2k
feat(eval): standardize dataset schema, support messages format, and add multi-turn benchmarks #2078
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
feat(eval): standardize dataset schema, support messages format, and add multi-turn benchmarks #2078
Changes from 5 commits
Commits
Show all changes
15 commits
Select commit
Hold shift + click to select a range
c0f0054
feat(eval): expand evaluation datasets to messages format and modular…
jacobsimionato 48cfd06
feat(eval): add customer_a_data multi-turn dataset and tool response …
jacobsimionato f7904e2
feat(eval): rename dataset to multi_turn_conversation_dataset and add…
jacobsimionato 97a68ee
feat(skills): add a2ui-add-eval-datapoint skill
jacobsimionato c78da0e
docs(eval): update README, DESIGN, and add-eval-datapoint skill with …
jacobsimionato 0d31b66
fix(eval): apply pyink formatting and clean up relative markdown links
jacobsimionato 3820fa6
fix(eval): fix mypy typing annotations in dataset and migrate scripts
jacobsimionato 19eed17
refactor(eval): remove migrate script and enable dynamic dataset disc…
jacobsimionato e927623
docs(eval): retain migration explanation in proposal while removing m…
jacobsimionato faa7613
fix(eval): address code review feedback on gitattributes, error handl…
jacobsimionato b3188cc
feat(eval): migrate datasets and schema to native Inspect AI ToolCall…
jacobsimionato 0fbc3bd
docs(eval): reinstate transcrypt upgrade instructions and remove gita…
jacobsimionato 213adc3
docs(eval): update transcrypt flags in add-eval-datapoint skill
jacobsimionato 302e2e7
fix(eval): enforce polymorphic message schemas per role in dataset_sc…
jacobsimionato 30609c3
merge: sync latest main into datapoint branch and resolve conflicts
jacobsimionato File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,95 @@ | ||
| --- | ||
| name: a2ui-add-eval-datapoint | ||
| description: Step-by-step workflow for adding and verifying new evaluation data points in the A2UI evaluation suite. | ||
| --- | ||
|
|
||
| # Adding and verifying A2UI evaluation data points | ||
|
|
||
| Use this skill when adding new data points or datasets to the A2UI evaluation framework in `eval/`. | ||
|
|
||
| ## References | ||
|
|
||
| For full architecture and setup details, consult: | ||
| - `eval/README.md`: Evaluation quickstart, Transcrypt setup, and CLI flags. | ||
| - `eval/DESIGN.md`: Architecture, multi-stage scorers, and encryption-at-rest design. | ||
| - `eval/datasets/dataset_schema.json`: Formal JSON Schema defining required fields and structural rules for evaluation data points. | ||
|
|
||
| --- | ||
|
|
||
| ## Step-by-step workflow | ||
|
|
||
| ### 1. Unlock Transcrypt | ||
| Datasets in `eval/datasets/` are encrypted at rest. Unlock Transcrypt locally before authoring: | ||
| ```bash | ||
| cd eval | ||
| bin/transcrypt -p <PASSWORD> | ||
| ``` | ||
|
|
||
| ### 2. Author the data point | ||
| Create or update a dataset file in `eval/datasets/<dataset_name>.yaml` (e.g. `eval/datasets/my_dataset.yaml`). | ||
|
|
||
| Every data point **must conform** to the JSON Schema in `eval/datasets/dataset_schema.json`. | ||
|
|
||
| ```yaml | ||
| - name: sample_unique_identifier | ||
| dataset: my_dataset | ||
| description: Clear summary of what this scenario tests. | ||
| catalog: "specification/{version}/catalogs/basic/catalog.json" | ||
| system_prompt: | | ||
| Optional domain-specific system instructions (e.g. company policies, triage rules). | ||
| messages: | ||
| - role: user | ||
| content: "Initial user request..." | ||
| - role: assistant | ||
| content: "Assistant response..." | ||
| tool_calls: | ||
| - id: call_001 | ||
| type: function | ||
| function: | ||
| name: query_database | ||
| arguments: '{"key": "value"}' | ||
| - role: tool | ||
| tool_call_id: call_001 | ||
| function: query_database | ||
| content: '{"result": "data"}' | ||
| - role: user | ||
| content: "Render the UI card with the retrieved data..." | ||
| target: | | ||
| Expected UI outcome and scoring criteria for the LLM judge. | ||
| ``` | ||
|
|
||
| ### 3. Validate schema compliance | ||
| Verify that all data points satisfy `eval/datasets/dataset_schema.json`: | ||
| ```bash | ||
| cd eval | ||
| uv run python -m pytest tests/test_dataset.py | ||
| ``` | ||
|
|
||
| ### 4. Run an evaluation on the new data point | ||
| Always execute an evaluation run on the newly added dataset to verify model inference and scoring: | ||
| ```bash | ||
| cd eval | ||
| # Quick validation on gemini-3.1-flash-lite | ||
| uv run main.py --dataset my_dataset --sanity | ||
|
|
||
| # Full evaluation check | ||
| uv run main.py --dataset my_dataset | ||
| ``` | ||
|
|
||
| View the interactive traces and judging rationales: | ||
| ```bash | ||
| uv run inspect view start | ||
| ``` | ||
|
|
||
| ### 5. Verify encryption and commit | ||
| When staging changes, Git applies the Transcrypt clean filter. Confirm that the staged file is encrypted ciphertext before committing: | ||
| ```bash | ||
| # Stage the new dataset file | ||
| git add eval/datasets/my_dataset.yaml | ||
|
|
||
| # Verify staged content is encrypted ciphertext (not plaintext) | ||
| git diff --cached eval/datasets/my_dataset.yaml | ||
|
|
||
| # Commit the encrypted data point | ||
| git commit -m "feat(eval): add my_dataset evaluation data points" | ||
| ``` |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| #pattern filter=crypt diff=crypt merge=crypt | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.