How to trace speech‑to‑speech (voice‑native) agents like Gemini Live and the OpenAI Realtime API, and why the common modeling choices differ.
Prior art: Arize / OpenInference · LangSmith voice fundamentals · OTel GenAI semconv PR #390
How to trace speech‑to‑speech (voice‑native) agents like Gemini Live and the OpenAI Realtime API, and why the common modeling choices differ.
Prior art: Arize / OpenInference · LangSmith voice fundamentals · OTel GenAI semconv PR #390
| attributes: | |
| - key: android.app.state | |
| type: | |
| members: | |
| - id: created | |
| value: created | |
| brief: | | |
| Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time. | |
| stability: development | |
| - id: background |
| attributes: | |
| - key: android.app.state | |
| type: | |
| members: | |
| - id: created | |
| value: created | |
| brief: | | |
| Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time. | |
| stability: development | |
| - id: background |
Here're some items that we've considered in the past to be useful in azure-core or clientcore related to observability,
but never got to it.
[Azure Core only] Make slf4j dependency optional - backport Slf4JLoggerShim. Related to Azure/azure-sdk-for-java#38421
[Azure Core only] Merge tracing and metrics plugins into one - Azure/azure-sdk-for-java#41436 or backport plugin-free OTel support from clientcore
Allow adding arbitrary key-value-pairs on instrumentation context and stamping them on all nested logs and spans (similar to MDC):
TODOs:
Phases:
| signal/object | identity property in semsonv | in proto |
| package live_check_advice | |
| import rego.v1 | |
| required_attributes := [ | |
| "http.request.method", | |
| "server.address", | |
| "server.port", | |
| "url.full", | |
| ] |
| from enum import Enum | |
| import json | |
| from typing import Annotated, Any, List, Literal, Optional, Union | |
| from pydantic import BaseModel, Field, RootModel | |
| class TextPart(BaseModel): | |
| """ | |
| Describes text content sent to or received from the model. | |
| """ | |
| type: Literal['text'] |
These are the scenarios we support today, not necessarily the ones we have to provide in the final design.
Users can provide static (for a group of operations) configuration. E.g.: configure custom logger for all requests peformed in scope of this API call
Provide dynamic (per-request) configuration. E.g. set request body or operation-specific context
So RequestOptions is a mix of (usually) per-request and (usually) static config.