diff --git a/langfuse/_client/resource_manager.py b/langfuse/_client/resource_manager.py index daa462177..3adac223f 100644 --- a/langfuse/_client/resource_manager.py +++ b/langfuse/_client/resource_manager.py @@ -277,20 +277,26 @@ def add_score_task(self, event: dict, *, force_sample: bool = False): try: # Sample scores with the same sampler that is used for tracing tracer_provider = cast(TracerProvider, otel_trace_api.get_tracer_provider()) - should_sample = force_sample or ( - ( - tracer_provider.sampler.should_sample( - parent_context=None, - trace_id=int(event["body"].trace_id, 16), - name="score", - ).decision - == Decision.RECORD_AND_SAMPLE - if hasattr(event["body"], "trace_id") + should_sample = ( + force_sample + or isinstance( + tracer_provider, otel_trace_api.ProxyTracerProvider + ) # default to in-sample if otel sampler is not available + or ( + ( + tracer_provider.sampler.should_sample( + parent_context=None, + trace_id=int(event["body"].trace_id, 16), + name="score", + ).decision + == Decision.RECORD_AND_SAMPLE + if hasattr(event["body"], "trace_id") + else True + ) + if event["body"].trace_id + is not None # do not sample out session / dataset run scores else True ) - if event["body"].trace_id - is not None # do not sample out session / dataset run scores - else True ) if should_sample: