Skip to content

Conversation

EugeneJinXin
Copy link
Contributor

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:

Trace UI showing raw objects

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:

Fixed trace UI showing inputs

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.

@EugeneJinXin EugeneJinXin marked this pull request as ready for review April 24, 2025 00:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant