{"slug": "ai-observability-attribute-mapping-remap-llm-spans", "title": "AI Observability Attribute Mapping - Remap LLM Spans", "summary": "SigNoz's AI Observability feature now lets Admins remap LLM, agent, and tool span attributes to OpenTelemetry GenAI semantic convention names through an Attribute Mapping tab, with default groups gen_ai.llm, gen_ai.agent, and gen_ai.tool covering libraries such as OpenInference and the Vercel AI SDK. Each mapping writes the first matching source attribute to a target attribute and supports Copy or Move operations, and a Test tab validates sample spans against unsaved changes before saving.", "body_md": "The AI Observability panels expect LLM, agent, and tool attributes to use the [OpenTelemetry GenAI](https://opentelemetry.io/docs/specs/semconv/gen-ai/) names. If your instrumentation library uses other names, map them in the **Attribute Mapping** tab of [AI Observability](https://signoz.io/docs/ai-observability/). SigNoz includes default mappings for common LLM libraries, and you can add your own. For prerequisites, see the [AI Observability overview](https://signoz.io/docs/ai-observability/#prerequisites).\n\nTo open the tab, select **More** > **AI Observability** in the side navigation, then select the **Attribute Mapping** tab.\n\n## How groups and mappings work\n\nA group holds a set of mappings and the conditions that decide which spans the group runs on. A group runs on a span when a span attribute key or a resource key contains the text of one of its conditions. For example, the default `gen_ai.llm` group has the condition `model`, so it runs on spans with keys such as `llm.model_name` or `ai.model.id`.\n\nA mapping names one target attribute and one or more source attributes. For each span, SigNoz takes the first source attribute that exists on the span and writes its value to the target attribute. If the span already has the target attribute, SigNoz does not change it. For example, the default mapping for `gen_ai.request.model` starts with `llm.model_name`, then `llm.request.model`, then `ai.model.id`.\n\nEach source has an operation:\n\n- **Copy** (default) keeps the source attribute on the span.\n- **Move** removes the source attribute after SigNoz writes the target.\n\nTo see the condition keys of a group, hover over its condition count. To edit or delete a mapping, open its menu (⋮).\n\n## Default groups\n\nSigNoz creates three default groups: `gen_ai.llm`, `gen_ai.agent`, and `gen_ai.tool`. They map the attributes of common LLM libraries, such as OpenInference and the Vercel AI SDK, to the GenAI names.\n\nIn a default group, you can turn the group and its mappings on or off. You can also add your own conditions, mappings, and sources. You cannot rename or delete a default group or a default mapping, and you cannot change the key or the operation of a default source.\n\n## Add a group\n\nOnly Admins can add, edit, or delete groups and mappings.\n\n1. On the **Attribute Mappings** tab, select**Add a new group** .\n2. In **Group Name** , type a name for the group.\n3. Add at least one condition in **Condition · span attribute keys** or**Condition · resource keys** . SigNoz does not save a group without one.\n4. Select **Create group** .\n\nTo edit a group later, open the menu (⋮) on the group row and select **Edit**.\n\n## Add a mapping\n\n1. Expand the group and select **Add mapping** .\n2. In **Target attribute** , type the attribute to write, for example`gen_ai.usage.input_tokens` . You cannot change the target attribute after you create the mapping.\n3. In **Write target to** , select**Span attribute** or**Resource** .\n4. In **Source attributes** , add the attribute that your instrumentation sends.\n5. Select **Attribute** or**Resource** for the source.\n6. Select **Copy** or**Move** for the source.\n7. If you need a fallback, select **Add another source** . Drag the sources into priority order.\n8. Select **Create mapping** .\n\n## Test your mappings\n\nBefore you save, use the **Test** tab to check that a sample span gets the attributes that you expect. The test uses your current groups and mappings, including unsaved changes.\n\n1. Paste a span as JSON into the editor. The span can have `attributes` and`resource` objects, or it can be one attributes object. You can paste a full span export. The test ignores top-level keys other than`attributes` and`resource` , such as`name` ,`spanId` , or`kind` .\n2. Select **Run Test** .\n3. In the result panel, look at **Resulting attributes** and**Resulting resource** . A badge shows each attribute that a mapping populated, remapped, or moved out.\n\nTo restore the sample span, select **Reset to Default Span**.\n\n## Save your changes\n\nSigNoz does not apply a new group, a new mapping, or an edit until you save it. When you have unsaved changes, the tab bar shows **Unsaved changes** and two buttons:\n\n- Select **Save changes** to apply all the changes.\n- Select **Discard** to remove all the changes. To confirm, select**Discard changes** .\n\nSaved mappings apply only to spans that SigNoz receives after you save. Stored spans do not change.\n\n## Validate\n\n1. Send a new span from your application.\n2. In the [Explorer](https://signoz.io/docs/ai-observability-explorer/)**List View** , run a filter on the target attribute, for example`gen_ai.request.model EXISTS` .\n3. Select a span. The span opens in Trace Details.\n4. In the span attributes, or in the resource attributes if you selected **Resource** in**Write target to** , make sure that the target attribute has the value of the source attribute.\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- [Explorer](https://signoz.io/docs/ai-observability-explorer/) : query your LLM and agent traces.\n- [Model pricing](https://signoz.io/docs/ai-observability-model-pricing/) : set the price for each model.\n- [Telemetry Requirements](https://signoz.io/docs/ai-observability-telemetry-requirements/) : check the attributes that each panel and filter needs.\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-attribute-mapping-remap-llm-spans", "canonical_source": "https://signoz.io/docs/ai-observability-attribute-mapping", "published_at": "2026-09-29 00:00:00+00:00", "updated_at": "2026-09-30 17:18:28.582936+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "mlops", "structured-data"], "entities": ["SigNoz", "OpenTelemetry GenAI", "OpenInference", "Vercel AI SDK"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/ai-observability-attribute-mapping-remap-llm-spans", "markdown": "https://wpnews.pro/news/ai-observability-attribute-mapping-remap-llm-spans.md", "text": "https://wpnews.pro/news/ai-observability-attribute-mapping-remap-llm-spans.txt", "jsonld": "https://wpnews.pro/news/ai-observability-attribute-mapping-remap-llm-spans.jsonld"}}