Débutant 15 minJuridique

Juriste : analyser un contrat sans fuite

Un contrat client sur ChatGPT, c'est une fuite de données selon la majorité des déontologies. Pourtant, un LLM est l'outil parfait pour repérer une clause de non-concurrence abusive, une limitation de responsabilité étrange, ou une clause de renouvellement automatique cachée. Ce guide monte un pipeline 100 % local qui lit un PDF de contrat, liste les risques, cite les passages. Rien ne sort de votre poste.

Par Mohamed Meguedmi·Màj 2026-03-08·Testé sur Windows, macOS, Linux

#L'enjeu de confidentialité

Les CGU d'OpenAI, Claude et Gemini autorisent (sauf opt-out payant) l'utilisation de vos prompts pour entraîner les futurs modèles. Pour un contrat client, c'est juridiquement incompatible avec le secret professionnel de la plupart des barreaux francophones et avec la plupart des NDAs signés.

!
Le mode "no training" ne suffit pas
Même avec un plan Enterprise "no training", les prompts passent par les serveurs du provider. Pour des données vraiment sensibles (compliance, médical, défense), la seule réponse acceptable reste le local.

#La stack minimale

Ollama
Serveur LLM local. Chargez Mistral 7B ou Qwen 2.5 14B selon votre VRAM.
Un parseur PDF
pdfplumber ou PyMuPDF pour extraire le texte proprement.
Un script Python
~40 lignes. Pas besoin de framework RAG pour des contrats qui tiennent en 30 pages.
RAG optionnel
Pour un contrat de 20-30 pages, tout tient dans un contexte de 16k tokens. Pas besoin de RAG. Au-delà de 100 pages, ou pour une base de plusieurs contrats, passez au RAG (voir guide RAG avec ChromaDB).

#1. Installer les outils

Terminal
# Ollama et modèle
ollama pull mistral  # ou qwen2.5:14b-instruct si vous avez la VRAM

# Python
pip install pdfplumber requests

#2. Le system prompt juridique

System prompt
Tu es un assistant juridique spécialisé en droit français
des contrats commerciaux. Tu analyses des contrats pour un
avocat qui a besoin d'un premier repérage rapide.

RÈGLES STRICTES
- Tu n'émets JAMAIS d'avis juridique formel. Tu signales.
- Pour chaque point soulevé, cite TEXTUELLEMENT le passage.
- Si une information n'est pas dans le contrat, dis-le explicitement.
- Ne spécule jamais sur l'intention des parties.

FORMAT DE SORTIE
- Liste à puces.
- Chaque puce : 1. l'élément, 2. le passage (entre guillemets),
  3. pourquoi c'est à regarder (1 phrase).

#3. Analyser un contrat : script complet

analyser.py
import sys, requests
import pdfplumber

SYSTEM = open("system_prompt.txt").read()

def pdf_to_text(path):
    with pdfplumber.open(path) as pdf:
        return "\n".join(page.extract_text() or "" for page in pdf.pages)

def ask(question, contract_text, model="mistral"):
    prompt = f"CONTRAT :\n{contract_text}\n\nQUESTION : {question}"
    r = requests.post("http://localhost:11434/api/chat", json={
        "model": model,
        "messages": [
            {"role": "system", "content": SYSTEM},
            {"role": "user",   "content": prompt},
        ],
        "stream": False,
        "options": {"temperature": 0.1, "num_ctx": 16384},
    })
    return r.json()["message"]["content"]

if __name__ == "__main__":
    pdf = sys.argv[1]
    text = pdf_to_text(pdf)
    print(ask("Résume le contrat en 5 puces factuelles.", text))
    print("\n=== RISQUES ===\n")
    print(ask("Liste les clauses à risque pour le signataire.", text))

#4. Questions-type pour lister les risques

Non-concurrence
"Y a-t-il une clause de non-concurrence ? Si oui, cite-la et précise sa durée, son périmètre géographique et la contrepartie financière."
Responsabilité
"Quelle est la limitation de responsabilité ? Est-elle réciproque ?"
Résiliation
"Quelles sont les conditions de résiliation ? Y a-t-il un préavis asymétrique ?"
Reconduction
"Y a-t-il une clause de reconduction tacite ? Quel est le délai pour la dénoncer ?"
Pénalités
"Liste les pénalités en cas de retard, de rupture, ou d'inexécution. Sont-elles équilibrées ?"
Droit applicable
"Quelle est la loi applicable ? Le tribunal compétent ?"
Propriété intellectuelle
"Comment la propriété des livrables est-elle attribuée ? Y a-t-il une cession ou une licence ?"

#5. Comparer à un contrat-modèle

Si vous avez un modèle-type validé (ex : CGV standard de votre cabinet), l'analyse comparative est puissante :

Prompt de comparaison
Compare le CONTRAT proposé au MODÈLE-TYPE ci-dessous.
Liste les ÉCARTS en 3 catégories :

1. FAVORABLES au signataire (par rapport au modèle)
2. DÉFAVORABLES (par rapport au modèle)
3. CLAUSES MANQUANTES (absentes du proposé mais présentes au modèle)

Pour chaque écart, cite les deux passages textuellement.

MODÈLE :
<<<
[texte du modèle-type]
>>>

CONTRAT :
<<<
[texte du contrat à analyser]
>>>

#Limites à garder en tête

Pas un avocat
Un LLM passe à côté de jurisprudence récente, de subtilités de rédaction qui changent tout. Son rôle : premier tri rapide. Pas plus.
Hallucinations
Un modèle 7B peut inventer une clause qui n'est pas dans le contrat. D'où la règle "cite TEXTUELLEMENT" — vérifiez toujours.
Français juridique
Mistral et Qwen comprennent le français juridique, mais avec une précision limitée. Pour du haut vol, un modèle spécialisé juridique (BlackSwanAI, DeepJudge) donne de meilleurs résultats.
Documents scannés
Un PDF image nécessite de l'OCR avant (tesseract, Azure Document Intelligence en local). Le texte extrait reste bruité.
Ce guide vous a aidé ?

Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.