# Tracer les requêtes IA : observabilité ou preuve ?

> L'observabilité sert à comprendre et corriger : elle garde des traces détaillées, que votre équipe lit et peut modifier. La preuve signée sert à convaincre quelqu'un d'extérieur : un certificat que l'on ne peut pas altérer sans que cela se voie, et qu'un tiers vérifie sans passer par vous. Subsidia émet cette preuve pour chaque réponse, avec des empreintes et aucun contenu ; ce n'est pas un remplaçant d'un tableau de bord de débogage.

Source : https://subsidia.protypa.fr/guides/tracer-requetes-ia-observabilite-ou-preuve · mis à jour le 2026-10-25 · Protypa

## La réponse courte

« Tracer » une requête d'IA peut vouloir dire deux choses très différentes.

- **Comprendre ce qui s'est passé** : pourquoi cette réponse est lente, combien elle coûte, quelle étape a échoué. C'est de l'**observabilité**. Elle sert votre équipe et reste sous son contrôle.
- **Démontrer ce qui s'est passé à quelqu'un d'autre** : un client qui conteste, un assureur, un auditeur. C'est de la **preuve**. Elle doit tenir même si vous avez intérêt à ce qu'elle soit différente.

Les deux se complètent. Aucune ne remplace l'autre.

## Observabilité ou preuve signée : le tableau

| Critère | Observabilité (journaux, traces, métriques) | Preuve signée (certificat) |
|---|---|---|
| Question à laquelle elle répond | Que s'est-il passé, et pourquoi si lentement ou si cher ? | Peut-on établir, face à un tiers, ce qui a été demandé et répondu ? |
| Lecteur | Votre équipe d'ingénierie | Un client, un assureur, un auditeur, un régulateur |
| Qui l'écrit | Vous, dans votre propre système | Un émetteur qui signe, avec une clé que l'on peut contrôler |
| Peut-on la modifier après coup ? | Oui, par son propriétaire | Non sans que cela se voie : l'empreinte et la signature ne correspondent plus |
| Un tiers peut-il la vérifier seul ? | Non, il doit croire celui qui la fournit | Oui, avec le certificat et une clé publique |
| Contenu conservé | Souvent le texte complet des prompts et réponses, pour pouvoir déboguer | Des empreintes, jamais le texte |
| Granularité | Fine : étapes, latence, erreurs, nombre de jetons | Une ligne par réponse, plus l'ordre dans une chaîne |
| Sert à déboguer | Oui | Non |
| Sert en cas de litige | Faiblement | Oui, c'est sa raison d'être |

Pour l'observabilité de l'IA, le projet OpenTelemetry maintient des [conventions sémantiques pour l'IA générative](https://github.com/open-telemetry/semantic-conventions-genai) (spans, métriques et événements pour les clients d'IA). C'est la référence si vous cherchez un format ouvert côté débogage ; ce guide ne compare pas d'outils particuliers.

## Quand vous avez besoin de quoi

- **Vous développez et mettez au point un produit à base d'IA** : observabilité. Vous voulez voir les prompts, les latences, les erreurs.
- **Vous devez justifier un usage de l'IA face à un tiers** (secret professionnel, contrat client, audit, AI Act) : preuve. Un journal que vous éditez vous-même ne suffit pas.
- **Vous avez les deux besoins** : les deux, reliés par un identifiant. C'est le cas le plus courant.

## Ce qu'un certificat Subsidia contient

Chaque appel qui passe par la [passerelle](/guides/passerelle-compatible-openai-anthropic) reçoit un certificat. Son identifiant (`pf_` suivi de 32 caractères hexadécimaux) est dans l'en-tête `x-pulse-proof`. Il contient :

| Champ | Contenu |
|---|---|
| `request.model`, `request.sha256` | Le nom de modèle envoyé et l'empreinte de la demande |
| `egress.provider`, `egress.model`, `egress.sha256` | Qui a répondu, et l'empreinte du texte tel qu'il est parti, après masquage |
| `egress.pii.masked`, `egress.pii.categories` | Combien de valeurs ont été masquées et de quelles catégories, jamais les valeurs |
| `response.sha256`, `response.finishReason`, `response.usage` | L'empreinte de la réponse, la raison d'arrêt, le décompte d'usage du modèle |
| `routing.taskType`, `routing.reason` | La tâche détectée et l'explication du routage |
| `grounding[]` | Si des documents ont été utilisés, une empreinte par passage (le nom du fichier n'apparaît pas : il est remplacé par une empreinte calculée avec une clé de l'espace de travail) |
| `chainIndex`, `prevHash` | Sa position dans la chaîne et l'empreinte du certificat précédent |

Ce document est **signé** (Ed25519 ; les certificats de format v2 portent en plus une signature post-quantique ML-DSA-65) et **chaîné** : retirer un certificat laisse un trou visible. Il ne contient **aucun texte** de la demande ni de la réponse. La documentation détaillée est sur la page [Certificats de preuve](https://dev.subsidia.protypa.fr/docs/proofs), et la procédure de vérification dans le guide [Vérifier un certificat de réponse IA](/guides/verifier-un-certificat-de-reponse-ia).

## Relier les deux mondes

La façon la plus simple de combiner observabilité et preuve : mettre l'identifiant de preuve dans vos journaux.

```python
import logging, os
from openai import OpenAI

log = logging.getLogger("llm")
client = OpenAI(
    base_url="https://api.subsidia.protypa.fr/v1",
    api_key=os.environ["SUBSIDIA_API_KEY"],
)

trace_id = "..."  # l'identifiant de trace de votre outil d'observabilité

raw = client.chat.completions.with_raw_response.create(
    model="pulse-auto",
    messages=[{"role": "user", "content": "Résume le dossier."}],
)
completion = raw.parse()

log.info(
    "llm_call",
    extra={
        "trace_id": trace_id,
        "proof_id": raw.headers.get("x-pulse-proof"),
        "provider": raw.headers.get("x-pulse-provider"),
        "pii_masked": raw.headers.get("x-pulse-pii-masked"),
    },
)
```

Plus tard, pour une réclamation, vous retrouvez la trace par `trace_id`, puis le certificat par `proof_id` (`GET /v1/proofs/{id}`) et vous demandez la vérification (`GET /v1/proofs/{id}/verify`) ou vous la faites hors ligne.

## Ce que Subsidia propose côté suivi

Subsidia enregistre chaque appel du moteur (fournisseur, modèle, tâche, volume traité, coût estimé, nombre de valeurs masquées) et les expose de deux façons : l'écran Ressources de la plateforme (trafic et coût sur 30 jours, par modèle) et le [Registre](/guides/registre-usages-ia-ai-act), qui rassemble les appels, les certificats et les relectures humaines et s'exporte signé. Cela répond à « combien et quoi ». Ce n'est pas un outil de débogage par étapes.

## Ce que cela ne fait pas

- **Subsidia ne remplace pas un tableau de bord de débogage.** Ni traçage détaillé par étapes avec arbre de spans, ni rejeu de prompts, ni évaluation de la qualité des réponses ne font partie de ce que nous proposons, et nous ne documentons pas d'export OpenTelemetry. Si vous mettez au point une application d'IA, gardez votre outil d'observabilité.
- **Le certificat ne prouve pas que la réponse est exacte.** Il prouve l'échange. Pour confronter un texte à vos pièces, c'est le rôle du Vérificateur.
- **Il ne couvre que ce qui passe par la passerelle.** Un appel direct au fournisseur n'a pas de certificat. Dans le Registre, la colonne « sur quelles données » n'est complète que pour le trafic de la passerelle.
- **L'émetteur reste la partie signataire.** C'est l'installation Subsidia qui détient la clé de signature. Un tiers vérifie que le certificat n'a pas été modifié et qu'il a bien été signé par cette clé ; il ne constate pas indépendamment que l'appel a eu lieu. Plus vous conservez de certificats de votre côté, plus un retrait est détectable.
- **La date est déclarée par l'émetteur**, sauf si le certificat est couvert par une ancre d'horodatage RFC 3161 (active par défaut sur le cloud, désactivée par défaut en installation locale).
- **La chaîne est globale à l'installation.** Vos certificats sont mélangés à d'autres, vous ne pouvez reconstruire un lien hors ligne que si vous détenez les deux certificats voisins ; la vérification côté serveur contrôle ce lien pour vous.
- **Des empreintes simples restent confirmables par dictionnaire** pour certains champs (étapes d'outils d'un agent, empreintes de passages, exports du Registre). Les empreintes de la demande et de la réponse, pour un appel rattaché à un espace de travail, sont calculées avec un secret propre à cet espace.
- **Ce n'est pas un avis juridique ni une attestation de conformité.** Le Registre rassemble ce que le règlement sur l'IA demande de pouvoir produire ; il ne vous déclare pas conforme.

## Checklist

1. Quel est le lecteur de la trace : votre équipe ou un tiers extérieur ?
2. Un tiers doit-il pouvoir vérifier sans vous croire ? Si oui, il faut une signature et une chaîne.
3. Faut-il conserver le texte (débogage) ou surtout éviter de le conserver (confidentialité) ?
4. Tous les appels passent-ils par le même point d'entrée ?
5. L'identifiant de preuve est-il enregistré à côté de l'identifiant de trace ?
6. Savez-vous où est conservée une copie des certificats et de la clé publique, hors de l'émetteur ?

## Questions fréquentes

### Quelle différence entre un outil d'observabilité IA et une preuve signée ?

Un outil d'observabilité enregistre ce qui s'est passé pour que vos équipes déboguent, mesurent la latence et suivent les coûts ; ses données sont modifiables par son propriétaire. Une preuve signée est un document qui engage, par des empreintes et une signature, ce qui a été demandé et répondu, et qu'un tiers vérifie seul avec une clé publique, sans accès à vos systèmes.

### Un certificat Subsidia contient-il mes prompts ?

Non. Il contient des empreintes SHA-256 de la demande, du texte réellement parti vers le fournisseur (après masquage) et de la réponse, le fournisseur et le modèle qui ont répondu, le nombre de valeurs masquées et leurs catégories, la position dans la chaîne et la signature. Il peut être remis tel quel à un client ou à un auditeur.

### Subsidia remplace-t-il mon outil de traçage de requêtes IA ?

Non, pas pour déboguer. Subsidia n'est pas un outil de traçage détaillé par étapes, de rejeu de prompts ou d'évaluation de qualité, et ne documente pas d'export OpenTelemetry. Il compte l'usage (écran Ressources sur 30 jours, Registre des appels) et signe chaque réponse. Beaucoup d'équipes auront besoin des deux, reliés par l'identifiant de preuve.

### Que prouve exactement le certificat, et que ne prouve-t-il pas ?

Il prouve qu'un texte précis a été demandé et qu'une réponse précise a été produite par un fournisseur et un modèle précis, dans un ordre donné, et que ni l'un ni l'autre n'a été modifié depuis. Il ne prouve pas que la réponse est exacte, ni que tous vos appels sont passés par la passerelle.

### Comment relier une trace d'observabilité à un certificat ?

En enregistrant l'identifiant de preuve (en-tête x-pulse-proof) dans vos journaux ou dans l'attribut d'une trace, à côté de l'identifiant de trace. Vous retrouvez ensuite le certificat par GET /v1/proofs/{id} et le faites vérifier.

### Existe-t-il un standard pour tracer les appels d'IA ?

Le projet OpenTelemetry publie des conventions sémantiques pour l'IA générative, qui décrivent des spans, des métriques et des événements pour les clients d'IA. C'est un format d'observabilité ; il ne fournit pas de signature opposable à un tiers.
