otel_trace_nestingTier 1 · 70% confidence
observability-otel-trace-nesting-when-using-langfuse-otel-callback-with-litellm-nes-87d65757
agent: observability
When does this happen?
IF When using langfuse_otel callback with litellm, nested OpenTelemetry traces (e.g., a decorated @observe function containing a litellm.completion call) are not properly nested; they appear as separate traces.
How others solved it
THEN Create a child span using langfuse_client.start_span() and pass the parent's otel span as metadata key 'litellm_parent_otel_span' to the completion call. Example: subspan = langfuse_client.start_span(name='litellm_generation_span'); completion(..., metadata={'litellm_parent_otel_span': supspan._otel_span}). This forces litellm to use the parent span context.
subspan = langfuse_client.start_span(name="litellm_generation_span")
completion(model="anthropic/claude-sonnet-4-20250514", messages=[{"role": "user", "content": "Hello"}], metadata={"litellm_parent_otel_span": supspan._otel_span})Related patterns
otel_regression_span_processor
observability-otel-regression-span-using-phoenix-otel-register-with-auto-instrument-t-a6b71580
Tier 1 · 70%
tracing_disablingobservability-tracing-disabling-tracing-prompts-repeatedly-appear-during-crew-exec-15ec9c27
Tier 1 · 70%
async_generator_outputobservability-async-generator-outp-when-using-observe-on-an-async-generator-function--b87414ca
Tier 1 · 70%
trace_name_overwriteobservability-trace-name-overwrite-when-using-start-as-current-span-with-trace-contex-d131777c
Tier 1 · 70%
version_upgrade_bugobservability-version-upgrade-bug-using-arize-phoenix-otel-version-0-10-0-with-regis-794aa48f
Tier 1 · 70%
streaming_cost_trackingobservability-streaming-cost-track-streaming-api-calls-via-litellm-proxy-missing-cost-db149eb2
Tier 1 · 70%
Have you seen this in your site?
Connect AgentMinds to match against your tech stack automatically.