ALLER AU CONTENU
AGENTS IA7 minAgents en production / Ép. 12 · Niveau 12-4

Conventions GenAI : comment figer une spec sans version publiée

Les conventions GenAI n’ont aucune version à citer. Alors quelle version suit votre télémétrie, et comment un lecteur le saurait-il ?

XIN
Scène nocturne en pixel art : une table à cartes de navire sous une lampe. Des fils lumineux relient de petits robots posés sur la carte, et une punaise en laiton maintient la carte pendant que la mer bouge derrière la fenêtre.

EN 30 SECONDES

Figer, c’est verrouiller votre installation sur une version exacte. Pour les conventions GenAI, sans version publiée, cela veut dire la base v1.44.0 plus un commit complet de semantic-conventions-genai, inscrits sur chaque signal, et les simples renommages traités dans le Collector.

À RETENIR · 3

  • Figez les conventions de base sur la v1.44.0 et le dépôt GenAI à un SHA de commit complet, et inscrivez les deux sur chaque ressource.
  • Traitez les simples renommages dans le Collector. Un changement de type ou de dimensions d’une métrique, comme la #374, demande de toucher à l’instrumentation.
  • Changez de SHA délibérément : lisez les changements cassants annoncés, faites coexister anciens et nouveaux noms, puis passez au nouveau SHA.
Sur cette page

Trier chaque champ avant de figer

EN BREF Figez la base en v1.44.0 et le dépôt GenAI à un commit complet, inscrivez les deux sur chaque signal, et n’en changez que délibérément.

LES MOTS À CONNAÎTRE

Figer (pin)
Verrouiller votre installation sur une version exacte, ici un SHA de commit git complet : l’identifiant unique d’un instantané du code.
Ressource
Dans OpenTelemetry, les attributs qui décrivent ce qui envoie la télémétrie, comme service.name. Ils accompagnent chaque span, métrique et journal.
Collector
L’OpenTelemetry Collector, un service qui reçoit la télémétrie en route vers votre backend et peut la renommer ou la remodeler.
Dimension
Un libellé qui sert à regrouper les chiffres d’une métrique, par exemple texte, image ou audio.

Figer une spec sans version publiée paraît étrange, jusqu’à ce qu’on pense à Git. Figer (pin) Verrouiller votre installation sur une version exacte, ici un SHA de commit git complet : l’identifiant unique d’un instantané du code. Voir le glossaire sur un SHA de commit, c’est choisir un instantané exact : une version sans l’étiquette.

Avant de figer, rangez chaque champ émis dans l’une de quatre cases. N’inventez jamais de clé gen_ai.* pour une donnée que la spec ne couvre pas.

OÙ VA CE CHAMP
Décision : Quel genre de champ est-ce ?Arbre de décision : Quel genre de champ est-ce ? Si Stable dans les conventions de base (error.type, server.address, server.port), alors Appuyez-vous dessus. Si Un nom gen_ai.* qui alimente vos graphiques, alertes ou factures, alors Utilisez-le, figé à un commit. Si Pas d’équivalent gen_ai.* (décision, relecture, conservation), alors Votre espace com.acme.*. Si Contenu : messages, instructions, arguments d’outils, alors Désactivé par défaut.DÉCISIONQuel genre de champ est-ce ?Si stable dans lesconventions de base(error.type,server.address,server.port)Appuyez-vous dessusFigé avec la base v1.44.0Si un nom gen_ai.* quialimente vos graphiques,alertes ou facturesUtilisez-le, figé àun commitToujours au statutDevelopment ; simplesrenommages gérés dans leCollectorSi pas d’équivalentgen_ai.* (décision,relecture, conservation)Votre espacecom.acme.*com.acme désigne votredomaine inversé, comme leconseille le guide denommage. Jamais de clégen_ai.* inventéeSi contenu : messages,instructions, argumentsd’outilsDésactivé par défautConseil : stockez-leailleurs si le volume oudes données sensiblesl’exigent. Pointez-y depuisle span
Mon tri. La branche rose est celle que les équipes négligent, et celle qui fait mal quand la spec rattrape son retard.

Dans la section suivante : Alors, comment figer une spec qui n’a pas de version ?

Six étapes pour figer, puis changer de version

EN BREF Deux versions inscrites sur chaque signal, et une règle du Collector par simple renommage. C’est la procédure que je mettrais dans le dépôt.

LE GEL, ÉTAPE PAR ÉTAPE

Diagramme de flux : 6 étapesDiagramme de flux : 6 étapes. Figer la base sur la v1.44.0, puis Figer le dépôt GenAI à un commit complet. Figer le dépôt GenAI à un commit complet, puis Inscrire les deux sur la ressource. Inscrire les deux sur la ressource, puis Figer la bibliothèque, lire ses options. Figer la bibliothèque, lire ses options, puis Renommer dans le Collector, pas dans le code des agents. Renommer dans le Collector, pas dans le code des agents, puis Changer de commit, délibérément. Changer de commit, délibérément revient à Figer le dépôt GenAI à un commit complet.1Figer la base sur lav1.44.02Figer le dépôt GenAIà un commit complet3Inscrire les deux surla ressourceSur chaque signal4Figer la bibliothèque,lire ses options5Renommer dans leCollector, pas dansle code des agents6Changer de commit,délibérémentLire d’abord leschangements cassants

Étape 1. Figer la base. Figez les conventions de base sur la v1.44.0, la version dont dépend le manifest GenAI. Elle contient les attributs stables error.type et server.*.

Choisissez une étape pour la voir bouger
  1. Figer la base Figez les conventions de base sur la v1.44.0, la version dont dépend le manifest GenAI. Elle contient les attributs stables error.type et server.*.
  2. Figer le dépôt GenAI Figez semantic-conventions-genai à un SHA complet. Il n’existe aucun tag, et l’URL de schéma est provisoire (-dev).
  3. Marquer la ressource Inscrivez les deux sur la ressource, par exemple com.acme.semconv.core et com.acme.semconv.genai_commit.
  4. Figer la bibliothèque Figez aussi la bibliothèque d’instrumentation, et lisez ce que font vraiment ses options d’activation.
  5. Renommer dans le Collector Chaque simple renommage reçoit une règle, versionnée avec le SHA figé. Les changements de type ou de dimensions repassent par l’instrumentation.
  6. Changer de SHA, délibérément Lisez les nouveaux fragments changelog.d cassants, faites coexister anciens et nouveaux noms un temps, puis déplacez le SHA.
L’étape 6 revient à l’étape 2 : changer de commit est un choix délibéré avec un diff, jamais l’effet de bord d’une mise à jour de bibliothèque.

Pour l’étape 4, la base v1.41.0 et son correctif v1.41.1 avaient un plan de transition. Une bibliothèque qui envoyait déjà d’anciens noms GenAI devait les garder par défaut. Elle ne devait passer aux nouveaux que si gen_ai_latest_experimental figurait parmi les valeurs d’OTEL_SEMCONV_STABILITY_OPT_IN.

ATTENTION

Je n’ai pas retrouvé ce texte dans le nouveau dépôt, au commit consulté. Vérifiez donc ce que votre bibliothèque documente, au lieu de le supposer.

L’étape 5 est celle qui me tient le plus à cœur. Prenez un parc comme les 46 agents que j’ai fait tourner chez Integra : un renommage dans le code des agents, ce sont de nombreux changements séparés. Dans le Collector L’OpenTelemetry Collector, un service qui reçoit la télémétrie en route vers votre backend et peut la renommer ou la remodeler. Voir le glossaire, c’est un seul changement relu, et les tableaux de bord gardent leurs requêtes.

EN CLAIR

Cela ne marche que pour un vrai renommage, comme le champ de cache de la #440. La #374 a remplacé un histogramme par des compteurs et des histogrammes par opération, avec une nouvelle Dimension Un libellé qui sert à regrouper les chiffres d’une métrique, par exemple texte, image ou audio. Voir le glossaire de modalité. Aucune règle du Collector ne peut inventer une dimension jamais envoyée.

Il faut alors reprendre l’instrumentation, puis vérifier que les totaux concordent toujours. La version inscrite sur la Ressource Dans OpenTelemetry, les attributs qui décrivent ce qui envoie la télémétrie, comme service.name. Ils accompagnent chaque span, métrique et journal. Voir le glossaire dit quels spans datent d’avant.

« ne devrait pas servir en production » (« SHOULD NOT be used in production »)

Niveaux de maturité d’OpenTelemetry, statut Development

C’est ce que dit la définition de maturité pour le statut Development, dont les réglages peuvent souvent casser. Si vous l’utilisez quand même, et la plupart d’entre nous le feront, cette méthode est le prix à payer pour bien faire.

OBJET OBTENU

Figer, inscrire, renommer une fois

Deux versions sur chaque signal, et chaque simple renommage en une règle du Collector versionnée avec elles.

Sources, consultées le 7 octobre 2026 : semantic-conventions-genai, manifest, README de la base v1.41.0, spans, niveaux de maturité.

FAQ

Selon OpenTelemetry, les réglages d’un composant Development peuvent souvent casser. Un tel composant ne devrait pas servir en production (« SHOULD NOT »). Les équipes s’en servent quand même : à ma connaissance, rien d’autre ne donne aux agents un vocabulaire commun.

NIVEAU TERMINÉ

Ce que vous savez maintenant

  • Quels sont les quatre genres de champs, et où va chacun avant de figer.
  • Pourquoi une règle du Collector peut corriger un renommage, mais pas une nouvelle dimension.

Vérifiez par vous-même

Touchez ou cliquez une question pour voir la réponse.

Votre rapport de coûts interroge encore gen_ai.usage.cache_creation.input_tokens, que la #440 a renommé en gen_ai.usage.cache_write.input_tokens. Une règle du Collector suffit-elle ?

Oui, pour ce simple renommage : une règle, versionnée avec le SHA figé, ramène la nouvelle clé vers l’ancienne. La #374 était différente, car elle a changé le type et les dimensions d’une métrique.

Vous avez fini tous les niveaux publiés de cette série. Retour à la carte de la série

Adam Boudjemaa
Adam Boudjemaa

Ingénieur web3 x IA, ancien CTO d’Integra. Auteur nommé (1 sur 5) d’ERC-3643, premier auteur d’ERC-6960, co-auteur d’ERC-7410 et co-auteur d’ERC-8203, encore à l’état de brouillon.

Un projet à livrer ou un poste à pourvoir ?

Parlons de votre besoin

Mon travail entre web3 et IAMes outils open source

Suivre les notes techniques

Recevez les nouveaux articles sur l’IA en production et les smart contracts par email.