Skip to content

Commit 9628bbc

Browse files
committed
WIP
1 parent 0aafaf1 commit 9628bbc

2 files changed

Lines changed: 26 additions & 8 deletions

File tree

scripts/functions-runner.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,15 @@ def collect_evaluator_entries(evals_registry: Any, source_file: str) -> list[dic
340340
},
341341
}
342342
else:
343-
serialized = to_json_value(raw_params)
343+
# Use the braintrust SDK's parameters_to_json_schema when
344+
# available so that Pydantic model classes are converted to
345+
# proper staticParametersSchema entries (type: "data" with a
346+
# JSON Schema) that the UI can parse.
347+
try:
348+
from braintrust.parameters import parameters_to_json_schema
349+
serialized = parameters_to_json_schema(raw_params)
350+
except Exception:
351+
serialized = to_json_value(raw_params)
344352
if serialized is not None:
345353
evaluator_definition["parameters"] = serialized
346354

src/eval.rs

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1218,9 +1218,21 @@ fn encode_eval_event_for_http(event: &EvalEvent) -> Option<String> {
12181218
EvalEvent::Summary(summary) => serde_json::to_string(summary)
12191219
.ok()
12201220
.map(|data| serialize_sse_event("summary", &data)),
1221-
EvalEvent::Progress(progress) => serde_json::to_string(progress)
1222-
.ok()
1223-
.map(|data| serialize_sse_event("progress", &data)),
1221+
EvalEvent::Progress(progress) => {
1222+
// Filter out internal eval_progress events (start/increment/stop)
1223+
// which are used for CLI progress bars but crash the UI stream
1224+
// parser. Only forward external progress events (e.g. json_delta).
1225+
if serde_json::from_str::<EvalProgressData>(&progress.data)
1226+
.map(|p| p.kind_type == "eval_progress")
1227+
.unwrap_or(false)
1228+
{
1229+
None
1230+
} else {
1231+
serde_json::to_string(progress)
1232+
.ok()
1233+
.map(|data| serialize_sse_event("progress", &data))
1234+
}
1235+
}
12241236
EvalEvent::Dependencies { .. } => None,
12251237
EvalEvent::Done => Some(serialize_sse_event("done", "")),
12261238
EvalEvent::Error {
@@ -4010,7 +4022,7 @@ mod tests {
40104022
}
40114023

40124024
#[test]
4013-
fn encode_eval_event_for_http_forwards_eval_progress() {
4025+
fn encode_eval_event_for_http_filters_internal_eval_progress() {
40144026
let event = EvalEvent::Progress(SseProgressEventData {
40154027
id: "id-1".to_string(),
40164028
object_type: "task".to_string(),
@@ -4022,9 +4034,7 @@ mod tests {
40224034
data: r#"{"type":"eval_progress","kind":"start","total":1}"#.to_string(),
40234035
});
40244036

4025-
let encoded = encode_eval_event_for_http(&event).expect("eval_progress should be forwarded");
4026-
assert!(encoded.contains("event: progress"));
4027-
assert!(encoded.contains("eval_progress"));
4037+
assert!(encode_eval_event_for_http(&event).is_none());
40284038
}
40294039

40304040
#[test]

0 commit comments

Comments
 (0)