VESICA
PQSYS_PQ_1Brouillon

SYS_PQ_1 — Procédure d'orchestration des appels LLM

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

SYS_PQ_1 — Procédure d'orchestration des appels LLM

Procédure légère (Direction technique déjà construite). Le comment détaillé vit dans les workflows n8n et les ADR — cette procédure cadre les responsabilités et renvoie aux textes. [CORPUS]

Objet

Décrire comment VESICA exécute, de façon homogène et tracée, tout appel à un modèle de langage, en passant par l'orchestrateur unique agent_call. [CORPUS]

Domaine d'application

S'applique à tout appel LLM du système, quels que soient la Direction appelante, l'agent et le fournisseur de modèle. Exclusions : les appels Mistral d'ingestion documentaire (OCR, transcription Voxtral) ne sont pas des appels d'agent et ne passent pas par agent_call (cf. 07 B2bis ; ils ne sont pas télémétrés). [CORPUS]

Références

  • Workflows : agent_call (orchestrateur), prepare_agent_call (assemblage), get_agent_config (DAL config). Contrats : 07_Reference_Systeme.md §B2.11 / §B2.3 / §B2.3ter. [CORPUS]
  • ADR-028 — sortie structurée « Voie A robuste » : plancher (schéma injecté dans le prompt, tous modèles) + plafond (response_format: json_schema natif si modèle capable). [CORPUS]
  • ADR-029 — télémétrie LLM souveraine, capture synchrone non bloquante, coût natif OpenRouter. [CORPUS]
  • ADR-033 — magasin cible Postgres ; lecture config via DAL get_* (aucune lecture fichier directe par l'orchestrateur). [CORPUS]
  • ADR-039 — pattern T (transactionnel, agent_call télémétré) vs C (conversationnel, wrapper mémoire — jamais le nœud agent natif n8n). [CORPUS]
  • Pas de norme AFNOR ni de procédure franchiseur applicable (processus purement technique interne). [STANDARD]

Définitions

  • agent_key : clé canonique d'un agent au format CODE-NN (Direction + matricule local). [CORPUS]
  • Plancher : injection du schéma de sortie dans le message système (déterminisme du format, tous modèles). [CORPUS]
  • Plafond : response_format: json_schema strict:true envoyé à OpenRouter quand le modèle supporte structured_outputs. [CORPUS]
  • Fire-and-forget : l'écriture de télémétrie ne peut jamais bloquer ni corrompre la sortie de l'appel (onError:continueRegularOutput). [CORPUS]
  • Soft-error (D2) : réponse HTTP 200 mais corps invalide (body.error présent ou choices vide) → routée vers la branche d'échec. [CORPUS]

Responsabilités (RACI)

Activitéagent_callprepare_agent_callget_agent_configWorkflow appelantGérant
Fournir agent_key + messageRC
Résoudre config + modèle (DAL)ACR
Assembler messages + plancherARC
Exécuter l'appel HTTP OpenRouterR
Appliquer le plafond response_formatRCC
Capturer la télémétrieR (via log_llm_call)II
Gérer l'échec (notif + sortie propre)RII
Maintenir les workflows / credentialsCR/A

Déroulement (qui/quoi/quand/où)

  1. Qui : workflow appelant — Quoi : appelle agent_call en Execute Workflow avec le contrat d'entrée — : n8n (main/worker). [CORPUS]
  2. agent_call valide l'input (exige agent_key), pose les défauts dossier_id/task_type=null. [CORPUS]
  3. agent_call délègue à prepare_agent_call, qui délègue lui-même à get_agent_config (DAL) la résolution config/modèle/capacité/schéma, puis assemble messages[system,user] (+ plancher si schéma actif). [CORPUS]
  4. agent_call route sur type_agent : chain → appel HTTP ; agent_tools → throw (Lot 11). [CORPUS]
  5. agent_call pose t0, exécute POST openrouter.ai/api/v1/chat/completions (avec usage:{include:true} et le plafond response_format si capable), parse la réponse. [CORPUS]
  6. agent_call appelle log_llm_call (fire-and-forget) puis renvoie la sortie succès. [CORPUS]
  7. En cas d'échec (HTTP non-2xx ou soft-error D2) : convergence vers Build error log payloadlog_llm_call(success=false) → notif llm_errorError output { success:false } sans throw (cf. SYS_PQ_5). [CORPUS]

Enregistrements associés

  • telemetrie.appels_llm (1 ligne / appel) — cf. SYS_FQ_2 (enregistrement partagé, propriété SYS_PRO_2). [CORPUS]

Annexes

  • Topologie complète des nœuds + IDs réels : 07_Reference_Systeme.md §B2.11. [CORPUS]
  • Décisions de conception : ADR-028, ADR-029 (D1–D5), ADR-033. [CORPUS]