# What are the OpenTelemetry GenAI semantic conventions?

They're a shared vocabulary for describing an LLM call, a tool call, or an agent step as a span, so a trace from one framework means the same thing as a trace from another and a backend can read both without a per-framework adapter. Each span carries `gen_ai.operation.name`, one of a fixed set of values like `chat`, `embeddings`, `execute_tool`, and `invoke_agent`, plus the provider and model name and token counts for an LLM call, or the tool's name and call id for a tool call. Grouping related spans into one conversation uses `gen_ai.conversation.id`, populated only when the framework actually has one to give, never a generated fallback.

None of it is stable yet. Every GenAI span, metric, and attribute still carries OpenTelemetry's "development" marker, and a name has already changed once: `gen_ai.system` became `gen_ai.provider.name`. Anything reading these fields today has to [tolerate that churn](/answers/instrumentation/are-genai-semantic-conventions-stable-enough-to-build-on) rather than assume today's names survive the next revision.

---

Sources:
- OpenTelemetry semantic-conventions-genai repository: https://github.com/open-telemetry/semantic-conventions-genai (fetched 2026-09-11)

Source: https://tessary.ai/answers/otel-genai-conventions/what-are-the-opentelemetry-genai-semantic-conventions
More on Otel genai conventions: https://tessary.ai/answers/otel-genai-conventions
From Tessary, agent reliability for AI agents in production: https://tessary.ai
