Bridges CallbackHandler events into OTelTracer spans.
Implements the CallbackHandler protocol
(src/symfonic/core/callbacks/protocol.py) plus the optional
on_llm_pre_call extension. Each handler method is a thin forwarder
into OTelTracer.recorder -- no business logic lives here so the
bridge stays small and the tracer can be unit-tested independently of
the symfonic event dataclasses.
CONTAINS opentelemetry imports transitively via OTelTracer.
Loaded only through OTelExporter.build().
CallbackBridge
CallbackBridge(tracer: OTelTracer)
Translate CallbackHandler events into OTEL span operations.
Source code in src/symfonic/observability/otel/callback_bridge.py
| def __init__(self, tracer: OTelTracer) -> None:
self._tracer = tracer
|
on_agent_end
async
on_agent_end(event: AgentEndEvent) -> None
No-op: the root span is closed by OTelTracer.start_run_span.
Source code in src/symfonic/observability/otel/callback_bridge.py
| @_safe("on_agent_end")
async def on_agent_end(self, event: AgentEndEvent) -> None:
"""No-op: the root span is closed by ``OTelTracer.start_run_span``."""
|
on_agent_start
async
on_agent_start(event: AgentStartEvent) -> None
No-op: the root span is opened by OTelTracer.start_run_span.
Source code in src/symfonic/observability/otel/callback_bridge.py
| @_safe("on_agent_start")
async def on_agent_start(self, event: AgentStartEvent) -> None:
"""No-op: the root span is opened by ``OTelTracer.start_run_span``."""
|
on_token_composition
async
on_token_composition(event: TokenCompositionEvent) -> None
Token composition is logged at INFO already; no separate span.
Source code in src/symfonic/observability/otel/callback_bridge.py
| @_safe("on_token_composition")
async def on_token_composition(self, event: TokenCompositionEvent) -> None:
"""Token composition is logged at INFO already; no separate span."""
|