-
Notifications
You must be signed in to change notification settings - Fork 265
docs(v4): clarify evaluator transition bridge #3353
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
marliessophie
wants to merge
1
commit into
claude/langfuse-versioning-research-a52a58
Choose a base branch
from
codex/trace-eval-v4-transition
base: claude/langfuse-versioning-research-a52a58
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+2
−2
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,3 @@ | ||
| **Evaluators** | ||
|
|
||
| Migrate trace-level LLM-as-a-judge evaluators to the [observation level](/faq/all/llm-as-a-judge-migration). | ||
| Upgrade trace-level LLM-as-a-judge evaluators to the [observation level](/faq/all/llm-as-a-judge-migration). If an existing evaluator reads trace input or output, keep supplying those values with the deprecated trace I/O methods (`set_current_trace_io()` or `span.set_trace_io()` in Python; `setActiveTraceIO()` or `span.setTraceIO()` in JS/TS) until the new evaluator is validated. Any future multi-span support will also use the observation-centric model. | ||
|
Check warning on line 3 in components-mdx/v4/step-evaluators.mdx
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🟡 The new bridge sentence in
step-evaluators.mdxonly mentions Python (set_current_trace_io()/span.set_trace_io()) and JS/TS (setActiveTraceIO()/span.setTraceIO()) methods for keeping trace I/O populated during the evaluator transition, but this shared component is also rendered in the "Direct API and OpenTelemetry users" section, whose readers by definition aren't using either SDK. Consider scoping the parenthetical (e.g. "if you use the Python/JS SDK") or adding a short note for OTel/direct-API users so that audience isn't left assuming an inapplicable method.Extended reasoning...
components-mdx/v4/step-evaluators.mdxis rendered via<V4StepEvaluators />in all four upgrade paths oncontent/docs/v4.mdx, including### Direct API and OpenTelemetry users [#api-otel](line ~181). That section's own Ingestion step is explicit that its audience is not using the Langfuse Python/JS SDK — it instructs readers to point a generic OTel span exporter atPOST /api/public/otel/v1/traces, with SDK users routed to the separatecloud-older-sdks/cloud-current-sdkssections instead.The sentence this PR adds says: "If an existing evaluator reads trace input or output, keep supplying those values with the deprecated trace I/O methods (
set_current_trace_io()orspan.set_trace_io()in Python;setActiveTraceIO()orspan.setTraceIO()in JS/TS) until the new evaluator is validated." Walking through the api-otel reader's experience: they land on this Step expecting guidance for their setup, see two method names that are explicitly qualified "in Python"/"in JS/TS", and have no way to apply either one, since they aren't calling into an SDK at all. There's no OTel/API-level equivalent offered (e.g., an attribute name to set on a span via the raw ingestion payload), so this subset of readers gets no actionable instruction for the trace-I/O bridge if they have an existing trace-level evaluator they want to keep working during the transition.That said, the risk here is genuinely limited, which is why this should not block merge. Before this PR, the shared sentence was just "Migrate trace-level LLM-as-a-judge evaluators to the observation level" — equally generic for all four audiences, with the same link to the migration FAQ. This PR only adds an optional bridging clause for SDK users; it doesn't remove or weaken anything OTel users previously had, and the core instruction (upgrade to observation-level evaluators, see the migration guide) still applies to and works for every audience, including api-otel. The added clause is clearly self-scoped ("in Python", "in JS/TS"), so an OTel reader will recognize it doesn't apply to them rather than being misled into calling a nonexistent method. It's also not obviously fixable within this doc sentence alone — if OTel/direct-API ingestion has no equivalent way to keep trace I/O populated (this looks like a genuine product gap, not a doc omission), the best available fix is to explicitly scope the parenthetical to SDK users, so OTel readers aren't left wondering why it doesn't apply to them, or to add a short pointer to whatever mechanism (if any) exists for raw OTel spans.
Net effect: a documentation completeness gap affecting one of four audiences for an edge case (readers with a pre-existing trace-level evaluator, mid-transition), not an incorrect or misleading instruction. Recommend scoping the parenthetical (e.g. "if you use the Python or JS/TS SDK, keep supplying...") or adding a one-line OTel-specific caveat, but this is a nit rather than a blocking issue.