# Do agent traces have to use the OpenTelemetry GenAI attribute format?

No. OpenTelemetry's GenAI semantic conventions, the `gen_ai.*` attributes, are the closest thing agent telemetry has to a standard, but two other dialects describe the same events under different names. OpenInference spells a model call `llm.model_name` and an agent step `openinference.span.kind`. Traceloop's OpenLLMetry writes prompts and completions as indexed attributes, `gen_ai.prompt.0.content` and `gen_ai.completion.0.content`, which OpenTelemetry has since deprecated in its own conventions in favor of a structured `gen_ai.input.messages`. All of these are naming the identical thing, an LLM call or a tool call, just spelling its fields differently. What matters more than which dialect you emit is that whatever reads your traces knows how to normalize between them, because a mixed fleet, one framework on `gen_ai.*`, another on OpenInference, is common once an org runs more than one agent. Pick `gen_ai.*` if you're instrumenting from scratch. It's the one the other conventions are converging on.

---

Sources:
- OpenInference specification: https://github.com/Arize-ai/openinference (fetched 2026-08-25)
- Traceloop OpenLLMetry, GenAI semantic conventions: https://www.traceloop.com/docs/openllmetry/contributing/semantic-conventions (fetched 2026-08-25)

Source: https://tessary.ai/answers/instrumentation/do-agent-traces-have-to-use-gen-ai-format
More on Instrumentation: https://tessary.ai/answers/instrumentation
From Tessary, agent reliability for AI agents in production: https://tessary.ai
