Documentation Index
Fetch the complete documentation index at: https://docs.lighton.ai/llms.txt
Use this file to discover all available pages before exploring further.
Derniere mise a jour : Avril 2026 — L’API Paradigm evolue rapidement. Consultez toujours la derniere reference API et privilegiez les cookbooks les plus recents.
Presentation
Les equipes juridiques consacrent des heures a la revue des NDA entrants au regard de leur politique interne — verifier que la responsabilite est correctement plafonnee, que les exceptions de communication existent, que la clause de restitution des informations contient les bonnes exceptions. Ce cookbook montre comment construire un pipeline qui charge un NDA dans Paradigm, execute un ensemble configurable de controles juridiques, et pour chaque controle en echec propose une reformulation issue d’un NDA deja signe (ou, a defaut, d’un modele par defaut). Le pattern se generalise a tout workflow de revue contractuelle : MSA, contrats fournisseurs, DPA, contrats de travail. Partout ou un controle de politique et une proposition de correction feraient gagner du temps au relecteur.Demo
Decouvrez le pipeline revisant un NDA d’exemple, echouant sur deux controles sur quatre, et proposant des reformulations extraites d’une reference precedemment signee :Fonctionnement
- L’utilisateur charge un NDA entrant, plus zero a plusieurs NDA de reference deja signes.
- Chaque document est charge dans Paradigm et indexe via embedding.
- Le co-contractant (Target Company) est extrait de chaque document et sert a apparier le NDA entrant avec la reference la plus proche.
- Quatre controles de conformite sont executes sur le NDA entrant. Chaque controle est un petit arbre de questions juridiques oui/non — chaque question est resolue en combinant une Document Search agentique (pour localiser la clause) et une Chat Completion structuree (pour classifier la clause et renvoyer la citation exacte).
- Pour chaque controle en echec, le meme flux d’extraction est applique au NDA de reference apparie pour proposer une reformulation. Si aucune reference n’a ete appariee, un modele par defaut est utilise a la place.
- Les resultats sont compiles dans un rapport JSON avec, pour chaque controle, le statut, les citations extraites et la reformulation proposee.

Prerequis
- Une cle API Paradigm (obtenir une cle)
- Python 3.10+
- Au moins un NDA a revoir (des NDA d’exemple sont fournis dans le depot GitHub)
- Optionnel : des NDA precedemment signes a utiliser comme sources de reformulation
Endpoints API utilises
| Endpoint | Role dans ce pipeline |
|---|---|
POST /api/v2/files | Charger un NDA (PDF ou DOCX) dans Paradigm |
GET /api/v2/files/{id} | Attendre que le document termine son embedding |
POST /api/v3/threads/turns | Recherche documentaire agentique (RAG) pour localiser les clauses |
POST /api/v2/chat/completions | Classification JSON structuree via un response format base sur un JSON schema |
Implementation etape par etape
Etape 1 : Charger et attendre l’embedding
Contrairement aux workflows bases sur les upload sessions, les NDA sont charges en tant que fichiers uniques viaPOST /api/v2/files. Parce que Document Search requiert que le document soit pleinement embed, on interroge GET /api/v2/files/{id} en boucle jusqu’a ce que son statut passe a embedded.
Etape 2 : Poser une question juridique oui/non
Chaque verification de conformite se reduit au meme pattern en deux etapes : d’abord une Document Search fait remonter la clause pertinente, puis une Chat Completion structuree la classifie et renvoie la citation exacte. Le JSON schema garantit un format de reponse toujours previsible.Etape 3 : Utiliser force_tool et response_format pour la structure
Deux fonctionnalites Paradigm font le gros du travail. Premierement, force_tool: "document_search" sur l’endpoint V3 threads garantit que le modele effectue un lookup RAG sur le fichier specifie plutot que de repondre depuis sa connaissance generale :
response_format avec un JSON schema sur chat/completions garantit que la reponse de classification est un objet JSON valide et parseable — fini le parsing par regex de reponses en texte libre :
Etape 4 : Modeliser les controles sous forme d’arbres de requetes
Chaque controle de conformite est un arbre de questions oui/non avec des regles de branchement. Garder les controles sous forme de donnees — pas de code — les rend faciles a auditer, a ajuster, ou a deleguer a une personne non-technique._run_control. Le controle 1, par exemple, se lit ainsi : “s’il existe une clause de responsabilite, alors elle doit etre plafonnee aux dommages directs ; sinon, le NDA doit etre gouverne par le droit francais.”
Etape 5 : Extraire le co-contractant pour l’appariement
Avant d’executer les controles, on identifie la Target Company dans le NDA. Dans un contexte M&A, jusqu’a trois parties peuvent apparaitre — la Receiving Party (l’acquereur), un Financial Advisor intermediaire, et la Target Company dont les informations sont partagees. On veut la Target Company, pas les deux autres. Un prompt soigneusement redige plus un JSON schema a un seul champ suffisent a garder la sortie propre :difflib.SequenceMatcher (un substitut leger a la similarite trigram PostgreSQL).
Etape 6 : Reformuler les clauses en echec
Lorsqu’un controle echoue, on propose un correctif. La chaine de fallback est : “essayer d’extraire la clause equivalente du NDA de reference apparie ; si rien d’utilisable ne revient, utiliser un modele pre-redige.”Etape 7 : Compiler le rapport
Le rapport final regroupe le co-contractant, la reference appariee, et unControlResult par controle (statut, requetes avec citations, reformulation proposee). Un sommaire de haut niveau rend trivial le branchement de la revue dans un check CI ou un tableau de bord.
Code complet
Code source complet
Clonez le depot pour executer le pipeline complet avec les NDA d’exemple.
Reference API
Documentation complete de l’API Paradigm.
Personnalisation
| Parametre | Description | Valeur par defaut | A ajuster si… |
|---|---|---|---|
CONTROLS (dans src/pipeline.py) | Liste des controles de conformite, chacun avec un arbre de requetes et des modeles par defaut | 4 controles M&A NDA | Vous avez des exigences de politique differentes |
match_reference_nda(threshold=...) | Seuil de similarite du co-contractant | 0.5 | Votre bibliotheque de references contient beaucoup de quasi-doublons (augmenter) ou tres peu d’entrees (reduire) |
model (dans ParadigmClient) | Modele Paradigm utilise pour la recherche et la completion | alfred-ft5 | Vous avez besoin d’arbitrages vitesse/qualite differents |
temperature | Determinisme de la completion | 0.1 | Vous voulez des reformulations plus creatives depuis le fallback modele |
Prompt systeme _JSON_SYSTEM_PROMPT | Instructions de langue / format de sortie | Francais, JSON uniquement | Vos documents ou votre equipe travaillent dans une autre langue |
Ajouter votre propre controle
Chaque controle est une entree de la listeCONTROLS. Etapes pour en ajouter un :
- Definir les requetes — une question juridique oui/non par noeud de votre arbre de decision.
- Ajouter la logique de branchement dans
_run_control— sous quelle combinaison de reponses le controle estPASSouFAIL, et quel template de requete est utilise pour la reformulation. - Rediger un modele par defaut — la formulation fallback utilisee quand aucun NDA de reference n’est apparie.
Bonnes pratiques
- Gardez les controles sous forme de donnees, pas de code — mettre le texte des requetes et les modeles dans une liste (pas disperses dans des fonctions) fait de la revue de conformite une tache que votre equipe juridique peut auditer directement. Les petits gains pour les juristes sont de gros gains pour le pipeline.
- Utilisez toujours
force_tool: "document_search"pour les recherches de clauses — cela force Paradigm a citer le document reel plutot qu’a s’appuyer sur sa connaissance generale, ce qui compte enormement pour la revue juridique. - Utilisez
response_formatavec un JSON schema pour la classification — le parsing de texte libre pour “oui/non plus citation” est fragile ; le JSON impose par schema est infaillible. - Privilegiez les reformulations issues de reference plutot que les modeles — une formulation deja acceptee par le co-contractant est bien plus facile a faire signer qu’une clause modele generique. Le fallback modele n’intervient que si aucune reference n’a ete appariee.
- Appariez les co-contractants, pas les noms de fichiers — extraire la Target Company avant l’appariement permet d’utiliser un inventaire de centaines de NDA signes sans se soucier de leur nommage. Un seuil de similarite souple (0.5) pardonne les variations de nommage.
- Validez le co-contractant extrait — les NDA M&A impliquent souvent trois parties ; un extracteur bon marche soutenu par un schema, avec des regles explicites “exclure ces roles” dans le champ description, evite des re-executions couteuses.