From 61a517481ef544db2c05d67b21c5e9e29ec37161 Mon Sep 17 00:00:00 2001 From: Pedro Mora Date: Wed, 22 Jul 2026 12:34:11 -0500 Subject: [PATCH 1/2] Adding test --- py/src/braintrust/test_parameters.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/py/src/braintrust/test_parameters.py b/py/src/braintrust/test_parameters.py index b5ff3bca..d6f353fa 100644 --- a/py/src/braintrust/test_parameters.py +++ b/py/src/braintrust/test_parameters.py @@ -635,3 +635,26 @@ def test_prompt_parameter_defaults_omit_none_values_from_dict(): assert "function_call" not in default["prompt"]["messages"][0] assert "tool_calls" not in default["prompt"]["messages"][0] _assert_no_none_values(default) + + +@pytest.mark.skipif(not HAS_PYDANTIC, reason="pydantic not installed") +def test_serialize_eval_parameters_omits_description_when_absent(): + from pydantic import BaseModel + + class TemplateParam(BaseModel): + value: str = "default template" + + serialized = serialize_eval_parameters( + { + "template": TemplateParam, + "main": {"type": "prompt"}, + "judge_model": {"type": "model"}, + } + ) + + assert serialized["template"]["type"] == "data" + assert serialized["template"]["default"] == "default template" + assert serialized["main"]["type"] == "prompt" + assert serialized["judge_model"]["type"] == "model" + for name in ("template", "main", "judge_model"): + assert "description" not in serialized[name] From 50b9f21463f3d4f1c2359ba78bbb55e8a57b7728 Mon Sep 17 00:00:00 2001 From: Pedro Mora Date: Wed, 22 Jul 2026 12:41:34 -0500 Subject: [PATCH 2/2] Fix attempt --- py/src/braintrust/parameters.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/py/src/braintrust/parameters.py b/py/src/braintrust/parameters.py index 31dea194..a99cee42 100644 --- a/py/src/braintrust/parameters.py +++ b/py/src/braintrust/parameters.py @@ -424,19 +424,19 @@ def serialize_eval_parameters(parameters: EvalParameters) -> dict[str, Any]: for name, schema in parameters.items(): if _is_prompt_parameter(schema): - prompt_parameter_data: dict[str, Any] = { - "type": "prompt", - "description": schema.get("description"), - } + prompt_parameter_data: dict[str, Any] = {"type": "prompt"} + prompt_description = schema.get("description") + if prompt_description is not None: + prompt_parameter_data["description"] = prompt_description prompt_default = schema.get("default") if prompt_default is not None: prompt_parameter_data["default"] = _prompt_data_to_dict(prompt_default) result[name] = prompt_parameter_data elif _is_model_parameter(schema): - model_parameter_data: dict[str, Any] = { - "type": "model", - "description": schema.get("description"), - } + model_parameter_data: dict[str, Any] = {"type": "model"} + model_description = schema.get("description") + if model_description is not None: + model_parameter_data["description"] = model_description model_default = schema.get("default") if model_default is not None: model_parameter_data["default"] = model_default @@ -451,8 +451,10 @@ def serialize_eval_parameters(parameters: EvalParameters) -> dict[str, Any]: data_parameter_data: dict[str, Any] = { "type": "data", "schema": schema_json, - "description": schema_json.get("description"), } + data_description = schema_json.get("description") + if data_description is not None: + data_parameter_data["description"] = data_description if "default" in schema_json: data_parameter_data["default"] = schema_json["default"] result[name] = data_parameter_data