Passer au contenu principal
POST /v2/retrieve est le chemin principal. Il enchaîne, en un appel :
  1. query maker — qualifie ce que le dernier message apporte (nouvelle question, précision, fait patient) et le reformule ;
  2. retrieving deux voies — sémantique ‖ concepts + graphe, en parallèle ;
  3. contexte — les unités de connaissance retenues, leurs tables de décision, leurs documents ;
  4. rédaction — une réponse en Markdown, citée sur ces unités et rien d’autre.
Pas de juge, pas de passe de sécurité : ces deux-là se demandent explicitement (voir deliberate ci-dessous).

Requête minimale

Les champs qui comptent

Les réglages de retrieving (concept_k, chunk_k, mku_k, mku_weight, table_k, use_cross_refs) sont exposés, mais leurs défauts sont le point de fonctionnement mesuré. Les changer, c’est sortir de ce que les évaluations couvrent. Le détail de chacun est dans l’onglet API Reference.

Ce que rend la réponse

Les unités logiques : score et arbre

Toutes les unités de connaissance ne sont pas des règles plates. Deux formes portent une logique exécutable :
  • un score — des questions cotées, un total, des paliers d’interprétation ;
  • un arbre — des nœuds, des branches, des conduites terminales.
Le serveur ne les fait jamais calculer au modèle. Il énumère des choix bornés (elicitations[].steps[]), le client les affiche, le praticien répond, et le tour suivant repasse ses réponses dans logic_answers : le calcul est alors fait par un moteur déterministe, et c’est son résultat (computed) qui entre dans le contexte de rédaction.
L’unité se désigne par mku_id (l’identité citable) ou par mku_key (la clé lisible) : la seconde survit à une ré-extraction, ce qui compte quand un formulaire reste ouvert entre deux tours. Selon la forme du score, on répond par answers (question → modalité), checked (les cases retenues) ou level (un palier d’échelle) ; un arbre répond par answers, du nœud vers la branche choisie. Chaque étape porte un kind : question, items, niveau (un palier à choisir) ou branchement (une branche d’arbre). Un client qui ignore elicitations reçoit la même réponse rédigée qu’avant — l’unité est alors citée sans être exécutée.

Une seule unité est dépliée

Une réponse peut retrouver plusieurs unités logiques. Un praticien n’en remplit qu’une : celle qu’il est venu chercher. Une seule porte donc ses steps — expanded: true — et c’est la mieux classée, ou celle que la question nomme si elle en nomme une. Les autres restent dans elicitations avec expanded: false et steps: []. Elles gardent tout le reste : identité, titre, total_max, bands, graph. De quoi les proposer sans les afficher, et les ouvrir soi-même sans un second appel. Une unité pour laquelle la requête portait des logic_answers est toujours dépliée, quel que soit son rang : un formulaire ouvert ne se referme pas parce qu’un autre score est mieux classé.

Un score porte son interprétation — bands

bands donne les paliers d’un score : ce que vaut un total, tel que la source le publie à côté du barème. Le client peut donc afficher une conduite dès que le praticien coche, sans aller-retour.
L’ordre fait foi. Ces paliers sont une chaîne si / sinon si : chacun est borné par ceux qui le précèdent. Les évaluer par rang croissant, premier satisfait, premier servi, et s’arrêter là. Les lire comme des intervalles indépendants fait apparaître trous et recouvrements — mesuré sur 43 scores sur 85.Et une bande pur_total: false dépend d’autre chose que du total : le moteur refuse d’y conclure. Afficher sa condition, jamais une conclusion.
computed.outcome reste la seule conclusion opposable — elle vient du moteur. bands sert à afficher le barème et à situer un total, pas à trancher.

Un arbre porte son graphe — graph

steps ne contient que les nœuds qui demandent une décision. Les nœuds de passage et les conduites terminales n’en sont pas — or le moteur traverse les premiers tout seul et conclut sur les seconds. graph rend l’arbre entier, et lève l’asymétrie : ce que le moteur traverse, le client le voit. Côté options, to porte l’identifiant du nœud d’arrivée ; leads_to porte son libellé. Naviguer par to : deux nœuds peuvent porter le même texte, et un nœud de passage n’apparaît dans aucun steps[].key. computed.path_ids donne le chemin parcouru en identifiants, computed.path les mêmes nœuds en libellés — un pour un.

Calculer sans re-chercher

Pour les tours intermédiaires d’un formulaire ouvert — cocher une case, choisir une branche — utilisez /v2/logic/compute plutôt que de rappeler /v2/retrieve. C’est plus rapide, et surtout c’est déterministe : l’unité y est désignée par sa clé, pas re-classée.

Trois formats pour une même réponse

La négociation se fait sur Accept, plutôt que par un ?format= : le client déclare ce qu’il sait lire. En JSON, les sauts de ligne d’answer sont échappés en \n : lire avec jq -r '.answer'.

Erreurs