ReqLLM.Telemetry.OpenTelemetry
(ReqLLM v1.9.0)
View Source
Dependency-free helpers for mapping ReqLLM telemetry metadata to OpenTelemetry GenAI span data.
This module does not depend on an OpenTelemetry SDK and does not start or stop
spans on your behalf. Instead, it translates ReqLLM's native :telemetry
metadata into:
- GenAI span names
- GenAI span attributes
- span status hints
- exception event payloads
Content capture is opt-in through content: :attributes. To emit
gen_ai.input.messages and gen_ai.output.messages, ReqLLM request telemetry
must also enable payload capture with telemetry: [payloads: :raw].
Thinking and reasoning text remain redacted even when content capture is enabled, so reasoning parts are intentionally omitted from OpenTelemetry content attributes.
Summary
Functions
Builds terminal span data for a [:req_llm, :request, :exception] event.
Builds span creation data for a [:req_llm, :request, :start] event.
Builds terminal span data for a [:req_llm, :request, :stop] event.
Types
@type content_mode() :: :none | :attributes
@type request_terminal_stub() :: %{ attributes: map(), status: span_status(), events: [otel_event()] }
@type span_status() :: :ok | {:error, String.t()}
Functions
@spec request_exception( map(), keyword() ) :: request_terminal_stub()
Builds terminal span data for a [:req_llm, :request, :exception] event.
@spec request_start( map(), keyword() ) :: request_start_stub()
Builds span creation data for a [:req_llm, :request, :start] event.
@spec request_stop( map(), keyword() ) :: request_terminal_stub()
Builds terminal span data for a [:req_llm, :request, :stop] event.