[Bug Fix] input extraction of _serialize_inputs() in custom evaluators #1686
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.
Bug Description
When using evaluate() with custom evaluators, the LangSmith trace UI displays raw Run and Example objects instead of rendering their inputs and outputs as plain text:
Root Cause & Solution
The issue originates from the _serialize_inputs() method, which is passed as the input processor to run_helpers.ensure_traceable by both the DynamicRunEvaluator and DynamicComparisonRunEvaluator. Currently, _serialize_inputs() returns entire Run and Example objects, which are not serializable in a meaningful way for the UI.
This PR updates _serialize_inputs() to properly extract and return the .inputs from both Run and Example objects, ensuring that the trace UI displays these values as expected.
Testing
I tested this fix by running a custom evaluator (based on this example) with the changes applied. The trace UI now correctly displays inputs as shown below:
Additional Considerations
While this PR fixes input serialization, the trace currently still lacks visibility into the Example.output (i.e., reference output). A similar output_processor should ideally be introduced in a follow-up to improve trace clarity further.