{"slug": "ai-observability-telemetry-requirements-genai-attributes", "title": "AI Observability Telemetry Requirements - GenAI Attributes", "summary": "SigNoz's AI Observability feature requires spans to carry specific OpenTelemetry GenAI semantic convention attributes, including gen_ai.request.model, gen_ai.provider.name, gen_ai.usage.input_tokens, gen_ai.usage.output_tokens, gen_ai.server.ttft, gen_ai.tool.name, and gen_ai.agent.name, and panels stay empty until those attributes are present. SigNoz counts a span with gen_ai.request.model as an LLM call and a span with gen_ai.tool.name as a tool call, while tool spans carry no model so the model and provider filters do not affect Tool calls panels or Calls per AI trace. SigNoz does not receive cost from users; it calculates cost from token counts and its Model pricing table and writes the total to signoz.gen_ai.usage.tokens.cost plus per-token-type attributes such as signoz.gen_ai.usage.input_tokens.cost and signoz.gen_ai.usage.cache_read.input_tokens.cost.", "body_md": "[AI Observability](https://signoz.io/docs/ai-observability/) reads these attributes from your spans. A panel stays empty until your spans carry the attributes that it uses. Most names come from the [OpenTelemetry GenAI semantic conventions](https://opentelemetry.io/docs/specs/semconv/gen-ai/). If your instrumentation uses other names, map them in [Attribute Mapping](https://signoz.io/docs/ai-observability-attribute-mapping/).\n\n## Span attributes\n\n| Attribute | Used by | \n|---|---|\n| `gen_ai.request.model` | All LLM panels and the **model** filter. SigNoz counts a span with this attribute as an LLM call. | \n| `gen_ai.provider.name` | **Cost by provider** and the**provider** filter. | \n| `gen_ai.usage.input_tokens` ,`gen_ai.usage.output_tokens` | Token panels and cost. | \n| `gen_ai.usage.cache_read.input_tokens` ,`gen_ai.usage.cache_creation.input_tokens` | Cache token panels, cache cost, and **Prompt cache hit ratio** . | \n| `gen_ai.server.ttft` | **TTFT (p95)** and**Time to first token** . Streaming instrumentations, such as OpenLIT, send this attribute in seconds. | \n| `gen_ai.response.finish_reasons` | **Finish reasons** . | \n| `gen_ai.tool.name` | All **Tool calls** panels. SigNoz counts a span with this attribute as a tool call. | \n| `gen_ai.agent.name` | Agent spans for the **Per-trace usage** panels. | \n\nAn AI trace is a trace with at least one LLM, tool, or agent span. Error panels use the error status of the span, not an attribute.\n\n## Resource attributes\n\n| Attribute | Used by | \n|---|---|\n| `deployment.environment` | The **environment** filter. | \n| `service.name` | The **service_name** filter and**Cost by service** . | \n\nTool spans do not carry a model. As a result, the **model** and **provider** filters do not affect the **Tool calls** panels or **Calls per AI trace**.\n\n## Cost attributes\n\nYou do not send cost. When SigNoz receives a span, it calculates cost from the token counts and the price of the model in [Model pricing](https://signoz.io/docs/ai-observability-model-pricing/). SigNoz writes the total to `signoz.gen_ai.usage.tokens.cost`, and one cost attribute for each token type:\n\n- `signoz.gen_ai.usage.input_tokens.cost`\n- `signoz.gen_ai.usage.output_tokens.cost`\n- `signoz.gen_ai.usage.cache_read.input_tokens.cost`\n- `signoz.gen_ai.usage.cache_write.input_tokens.cost`\n\n## Next steps\n\n- [AI Observability overview](https://signoz.io/docs/ai-observability/) : see cost, tokens, latency, and tool calls on one dashboard.\n- [Attribute Mapping](https://signoz.io/docs/ai-observability-attribute-mapping/) : map other attribute names to the GenAI names.\n- [LLM Observability integrations](https://signoz.io/docs/llm-observability/) : instrument OpenAI, Anthropic, LiteLLM, CrewAI, and other frameworks.\n\n## Get Help\n\nIf you need help with the steps in this topic, please reach out to us on [SigNoz Community Slack](https://signoz.io/slack/). If you are a SigNoz Cloud user, please use in product chat support located at the bottom right corner of your SigNoz instance or contact us at [cloud-support@signoz.io](mailto:cloud-support@signoz.io).", "url": "https://wpnews.pro/news/ai-observability-telemetry-requirements-genai-attributes", "canonical_source": "https://signoz.io/docs/ai-observability-telemetry-requirements", "published_at": "2026-09-29 00:00:00+00:00", "updated_at": "2026-09-30 17:18:21.938938+00:00", "lang": "en", "topics": ["ai-tools", "mlops", "developer-tools", "ai-agents"], "entities": ["SigNoz", "OpenTelemetry", "OpenLIT", "OpenAI", "Anthropic", "LiteLLM", "CrewAI"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/ai-observability-telemetry-requirements-genai-attributes", "markdown": "https://wpnews.pro/news/ai-observability-telemetry-requirements-genai-attributes.md", "text": "https://wpnews.pro/news/ai-observability-telemetry-requirements-genai-attributes.txt", "jsonld": "https://wpnews.pro/news/ai-observability-telemetry-requirements-genai-attributes.jsonld"}}