VESICA
FQSYS_FQ_2Brouillon

SYS_FQ_2 — Enregistrement d'un appel LLM (`telemetrie.appels_llm`)

Formulaire· Direction des Systèmes d'Information (DSI) — Système & Infrastructure IA· émetteur VESICA SYS_PRO_2

SYS_FQ_2 — Enregistrement d'un appel LLM (telemetrie.appels_llm)

Formulaire / enregistrement de référence. Table Postgres réelle, en production (créée 2026-06-02). Prototype direct du schéma cible (ADR-033). DDL : 90_Reference_SQL/lot6g0_telemetrie_appels_llm.sql. [CORPUS]

Objet (quoi enregistrer)

Un enregistrement = un appel LLM (réussi ou échoué) émis par un agent via agent_call. Trace les axes coût / vitesse / tokens / attribution pour le pilotage et l'audit. Append-only (1 appel = 1 ligne immuable). [CORPUS]

Champs / structure (prototype de table M2/telemetrie — colonne: type)

ColonneTypeRôleProvenance
idbigint IDENTITY PKclé technique (auto, non modifiable)Postgres [CORPUS]
tstimestamptz DEFAULT now()horodatage de l'appelPostgres [CORPUS]
agent_keytextagent appelant CODE-NN (futur FK config.agents)prepare_agent_call [CORPUS]
code_directiontextDirection (dénormalisé ; futur FK config.directions)prepare_agent_call [CORPUS]
task_typetextnature analytique (4ᵉ axe ; vocab v0)workflow appelant [CORPUS]
dossier_idtextdossier rattaché (nullable, sans FK)workflow appelant [CORPUS]
modeltextmodèle effectif (jamais FK stricte)prepare_agent_call [CORPUS]
providertextfournisseur (ex. openrouter)prepare_agent_call [CORPUS]
resolved_from_modetextmodel | profil | dynamicprepare_agent_call [CORPUS]
prompt_tokensintegertokens entréeusage.prompt_tokens [CORPUS]
completion_tokensintegertokens sortieusage.completion_tokens [CORPUS]
reasoning_tokensintegerthinking (⊂ completion)usage.completion_tokens_details.reasoning_tokens [CORPUS]
cache_read_tokensintegertokens lus en cacheusage.prompt_tokens_details.cached_tokens [CORPUS]
cache_write_tokensintegertokens écrits en cachebest-effort [CORPUS]
total_tokensinteger= prompt + completionusage.total_tokens [CORPUS]
cost_usdnumeric(12,6)coût natif OpenRouterusage.cost [CORPUS]
openrouter_generation_idtextid de génération (réconciliation)response.id [CORPUS]
latency_msintegerlatence round-trip HTTPDate.now() − t0 [CORPUS]
successbooleanissue de l'appelagent_call [CORPUS]
errortextmessage d'erreur si échecagent_call [CORPUS]

Total : 20 colonnes. [CORPUS]

Règles de remplissage

  • id et ts : ne jamais fournir — posés par Postgres (insertion manuelle de id rejetée). [CORPUS]
  • cost_usd : copier le coût natif ; interdiction de recalculer via une grille tarifaire. [CORPUS]
  • reasoning_tokens : depuis le champ dédié uniquement (P-6g0-1). [CORPUS]
  • dossier_id / task_type : renseigner dès que connus (axes de pilotage) ; null acceptés. [CORPUS]
  • Échec : success=false, error rempli, tokens/cost_usd à null (cf. SYS_PRO_5). [CORPUS]
  • Aucune correction a posteriori (append-only) : une erreur de saisie reste, on n'UPDATE pas. [CORPUS]

Rattachement (procédure/instruction)

  • Procédure : SYS_PQ_2 (mapping + déroulement). [CORPUS]
  • Workflow producteur : log_llm_call (07 §B2.12). [CORPUS]

Enregistrement résultant

  • 1 ligne en telemetrie.appels_llm. Exemple réel validé (Lot 6g) : prompt=419 / completion=28 / total=447, cost_usd=0.001677, latency_ms=4330, success=t, openrouter_generation_id réel. [CORPUS]