Skip to content

Commit 8dfaaf3

Browse files
authored
Merge pull request #36 from braintrustdata/ark/metadata-for-dataset-case
support tagging metadata for eval cases
2 parents f48a5f3 + db9d546 commit 8dfaaf3

2 files changed

Lines changed: 33 additions & 0 deletions

File tree

src/main/java/dev/braintrust/eval/Eval.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,10 @@ private void evalOne(String experimentId, DatasetCase<INPUT, OUTPUT> datasetCase
9999
rootSpan.setAttribute(
100100
AttributeKey.stringArrayKey("braintrust.tags"), datasetCase.tags());
101101
}
102+
if (!datasetCase.metadata().isEmpty()) {
103+
rootSpan.setAttribute(
104+
AttributeKey.stringKey("braintrust.metadata"), toJson(datasetCase.metadata()));
105+
}
102106
try (var rootScope = BraintrustContext.ofExperiment(experimentId, rootSpan).makeCurrent()) {
103107
final TaskResult<INPUT, OUTPUT> taskResult;
104108
{ // run task

src/test/java/dev/braintrust/eval/EvalTest.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,35 @@ public List<Score> score(
204204
assertTrue(
205205
tags.contains("sweet") || tags.contains("savory"),
206206
"tags should contain taste");
207+
var metadata =
208+
span.getAttributes().get(AttributeKey.stringKey("braintrust.metadata"));
209+
assertNotNull(metadata, "root span should have metadata");
210+
211+
// Parse metadata JSON and verify values based on which case this is
212+
@SuppressWarnings("unchecked")
213+
Map<String, Object> metadataMap = fromJson(metadata, Map.class);
214+
assertNotNull(metadataMap, "metadata should parse as a map");
215+
assertTrue(metadataMap.containsKey("calories"), "metadata should contain calories");
216+
assertTrue(metadataMap.containsKey("season"), "metadata should contain season");
217+
218+
if (tags.contains("red")) {
219+
// strawberry case
220+
assertEquals(
221+
32, metadataMap.get("calories"), "strawberry should have 32 calories");
222+
assertEquals(
223+
"summer",
224+
metadataMap.get("season"),
225+
"strawberry should be summer season");
226+
} else {
227+
// asparagus case
228+
assertEquals(
229+
20, metadataMap.get("calories"), "asparagus should have 20 calories");
230+
assertEquals(
231+
"spring",
232+
metadataMap.get("season"),
233+
"asparagus should be spring season");
234+
}
235+
207236
numRootSpans.incrementAndGet();
208237
}
209238
}

0 commit comments

Comments
 (0)