You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
feat(telemetry): emit gen_ai.request.* from tracing plugin (post-#1045) #1068
gen_ai.request.temperature, gen_ai.request.top_p, and related request-parameter attributes are not emitted on backend spans today.
A model_options/_REQUEST_PARAM_MAP approach was prototyped in PR #1036 but withdrawn following review from @jakelorocco and @ajbozarth:
No backend call site passed model_options, so the code was dead.
Even if wired, the values would be pre-substitution — Mellea backends mutate model_options before handing them to the SDK (defaults merged, provider-specific renames, unsupported keys stripped). The dict visible at the top of start_generate_span is not what goes over the wire.
Per @jakelorocco: prefer pass-through as gen_ai.model_options.<key> over a hardcoded remap to OTel-standard names, since the naming differs between providers anyway.
Approach
After #1045 lands and BackendTracingPlugin exists:
Capture the final resolved model_options dict in the GENERATION_PRE_CALL hook — the point immediately before the SDK call, where values match what the provider receives.
Emit each key/value as gen_ai.model_options.<key> (pass-through, not remapped), or decide at that point whether OTel-standard names (gen_ai.request.temperature etc.) are worth the remap given cross-provider naming differences.
When implementing this, adopt the target semconv names from the start rather than emitting mellea.* attrs and renaming later — #1209 tracks the alignment and calls out two items that live in the same BackendTracingPlugin request-param path:
Activity
ajbozarth commentedon Jul 15, 2026
When implementing this, adopt the target semconv names from the start rather than emitting
mellea.*attrs and renaming later — #1209 tracks the alignment and calls out two items that live in the sameBackendTracingPluginrequest-param path:gen_ai.request.stream(notmellea.streaming)mellea.streamingas a duplicate; the semconv attr supersedes itDoing these here avoids an add-then-rename churn on the same code. (#1209 already lists this issue as the owner of
gen_ai.request.*.)