gen_ai.* attributes for model calls. Any application emitting these attributes on spans or log records gets first-class, searchable prompt/response, token usage, and model fields in Bronto automatically — no Bronto-specific SDK.
This documentation was verified on July 17, 2026 and uses the latest OpenTelemetry GenAI semantic conventions available on that date. GenAI instrumentation evolves rapidly: current library releases may add the latest conventions while retaining legacy output for compatibility, so the schema emitted by default can vary by library and version.
Convention version and opt-in
To avoid breaking existing dashboards and queries, instrumentation libraries are not required to switch their default output when a newer Development convention is released. Where supported, enable the current convention with this OpenTelemetry migration opt-in:1. Instrument your application
Pick your language for the genericgen_ai.* mechanics — auto-instrumentation where it exists, manual spans where it doesn’t, and the experimental content-capture flags:
Python
GenAI auto-instrumentation for supported Python model clients.
Node.js
Auto-instrumentation for OpenAI, plus alternatives.
Java
Javaagent-based GenAI coverage (also covers Kotlin).
All languages
.NET, Go, Ruby, PHP, Rust, C++, Swift, Erlang/Elixir.
Amazon Bedrock
Converse / InvokeModel via botocore instrumentation.Amazon Bedrock AgentCore
Agent-loop traces with the Strands framework.
OpenLLMetry
Broad provider and framework instrumentation from Traceloop.
LangChain
Chain instrumentation, with optional LangSmith OTel routing.
2. Send it to Bronto
Export through an OTel Collector or directly — see Connect OpenTelemetry to Bronto or the “Direct export to Bronto” section on any language page.3. Know what you’ll see
The most usefulgen_ai.* attributes:
OpenTelemetry also defines latency metric instruments for aggregate analysis:
Instrumentation does not yet use these boundaries consistently. Traceloop and Strands releases may emit
gen_ai.server.time_to_first_token from client or framework instrumentation, while Amazon Bedrock publishes a separate CloudWatch TimeToFirstToken metric for streaming APIs. Preserve the field emitted by your instrumentation and confirm its unit and measurement boundary before comparing providers.4. Search and aggregate
Open Log Search and use field predicates to select GenAI calls. For example, select Bedrock calls that report input-token usage:$gen_ai.provider.name as the group-by field:
Bronto time-series views also provide Count, Average, Min, Max, Sum, and Median; median is the 50th percentile. Dashboard percentile views provide P75, P90, P95, and P99. Use a median to compare typical token consumption and the higher percentiles to find providers or models producing unusually large responses.
For streaming latency on spans, apply the same median and percentile views to
$gen_ai.response.time_to_first_chunk, grouped by $gen_ai.provider.name. If your instrumentation exports metrics, chart gen_ai.client.operation.time_to_first_chunk for client-observed streaming latency, gen_ai.client.operation.duration for total completion time, or gen_ai.server.time_to_first_token for model-server TTFT.
gen_ai.response.finish_reasons remains an OpenTelemetry array attribute. Bronto indexes its first element as $gen_ai.response.finish_reasons.0; .0 is not part of the semantic-convention name and is not normally added by the Collector.
See Visualizations for building these views into a dashboard.

