Why was gen_ai.system renamed to gen_ai.provider.name?
To fit a naming pattern OpenTelemetry adopted project-wide, not something specific to GenAI. A 2025 naming guideline said a system-identifying attribute should follow {system}.{thing}.{property} instead of a bare .system field, the same change that turned db.system into db.system.name and rpc.system into rpc.system.name. gen_ai.provider.name fits that shape and opens a gen_ai.provider.* namespace for fields the old flat attribute had no room for, like a future gen_ai.provider.version.
The new name is also more precise about what the value means: it’s the client’s own label for whichever backend served the call, openai, anthropic, or a self-hosted model, not a description of the system as a whole. OpenTelemetry made the change while every GenAI attribute still carried a development stability marker, since a rename after the conventions are declared stable breaks every backend already keying dashboards off the old field name.