fix(semconv): attach spec-mandated explicit bucket boundaries to GenAI histogram helpers#5084
fix(semconv): attach spec-mandated explicit bucket boundaries to GenAI histogram helpers#5084alliasgher wants to merge 2 commits intoopen-telemetry:mainfrom
Conversation
…I histogram helpers The four GenAI histogram helpers in opentelemetry-semantic-conventions called meter.create_histogram without passing explicit_bucket_boundaries_advisory. The SDK therefore fell back to _DEFAULT_EXPLICIT_BUCKET_HISTOGRAM_AGGREGATION_BOUNDARIES, which is tuned for request-duration metrics in the seconds range and produces unusable histograms for latency-per-token and TTFT metrics — the exact problem flagged in the semconv spec which says these metrics SHOULD be specified with ExplicitBucketBoundaries. Pass the semconv-prescribed boundaries for all four helpers: * gen_ai.client.operation.duration / gen_ai.server.request.duration / gen_ai.server.time_to_first_token share the latency boundary set [0.01 .. 81.92] seconds. * gen_ai.server.time_per_output_token uses the per-token boundary set [0.01 .. 2.5] seconds. Add tests asserting each factory passes the correct explicit_bucket_boundaries_advisory to Meter.create_histogram. Fixes open-telemetry#4946 Signed-off-by: Ali <alliasgher123@gmail.com>
The link pointed to opentelemetry-python-contrib/pull/5076 (404) but should reference opentelemetry-python/pull/5076, matching the main branch. Signed-off-by: Ali <alliasgher123@gmail.com>
|
Fixed the two CI failures: check-links: The CHANGELOG had a stale link pointing to pypy-3.10 Windows: The failing test |
tammy-baylis-swi
left a comment
There was a problem hiding this comment.
Overall lgtm, and this dir isn't generally tested.
It would be good if @open-telemetry/python-approvers who make regular GenAI instrumentation changes could also look at this please.
Description
The four GenAI histogram helpers in
opentelemetry-semantic-conventionscalledmeter.create_histogramwithout passingexplicit_bucket_boundaries_advisory. The SDK therefore fell back to_DEFAULT_EXPLICIT_BUCKET_HISTOGRAM_AGGREGATION_BOUNDARIES, which is tuned for request-duration metrics in the seconds range and produces unusable histograms for latency-per-token and TTFT metrics — the exact problem flagged in the semconv spec, which says these metrics SHOULD be specified withExplicitBucketBoundaries.Pass the semconv-prescribed boundaries for all four helpers:
gen_ai.client.operation.duration,gen_ai.server.request.duration,gen_ai.server.time_to_first_tokenshare the latency boundary set[0.01 … 81.92]seconds.gen_ai.server.time_per_output_tokenuses the per-token boundary set[0.01 … 2.5]seconds.Fixes #4946
Checklist
pytest opentelemetry-semantic-conventions/tests/test_gen_ai_metrics.pyexplicit_bucket_boundaries_advisorytoMeter.create_histogramSigned-off-by: Ali alliasgher123@gmail.com