Schémas de prompts pour le domaine juridique
Analyse de contrats, extraction de clauses et prompts juridiques tenant compte de la juridiction.
Schémas de prompts pour le domaine juridique est une leçon AI Prompt Engineering gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AI Prompt Engineering, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Prompt Engineering comprend 4 leçons au total.
Pourquoi les invites du domaine juridique sont différentes
La conception d'invites juridiques exige une prise en compte de la juridiction, un langage précis, une conscience des risques et des avertissements obligatoires. Un outil d'IA juridique qui donne des conseils sans réserves expose les utilisateurs à une responsabilité juridique. Des modèles propres au domaine permettent de gérer systématiquement ces contraintes.
Invite système définissant un profil d'avocat
La définition d'un profil d'expert avec une portée juridictionnelle explicite oriente correctement l'analyse du modèle. Incluez toujours un avis de confidentialité et un avertissement.
LEGAL_SYSTEM_PROMPT = '''You are an experienced commercial lawyer reviewing contracts
under New York law (NYCL, UCC Article 2, and applicable federal law).
When analyzing contracts:
1. Identify the governing law clause and note if it conflicts with NY law.
2. Flag any provisions that deviate from NY commercial norms.
3. Use precise legal terminology — do not paraphrase statutes.
4. Always cite the relevant section or clause number from the contract.
5. Structure your analysis as: [Issue] -> [Risk Level: LOW/MEDIUM/HIGH] -> [Recommendation].
DISCLAIMER: This analysis is for informational purposes only and does not
constitute legal advice. Always consult a licensed attorney before acting
on any legal analysis. Attorney-client privilege does not apply to this
communication.'''
import anthropic
client = anthropic.Anthropic(api_key='YOUR_API_KEY')Modèle d'extraction de clauses contractuelles
Les invites d'extraction doivent être structurées pour renvoyer une sortie analysable automatiquement. Précisez les champs exacts souhaités ainsi que le format de sortie afin de garantir la cohérence entre les documents.
EXTRACTION_PROMPT = '''Extract the following clauses from the contract below.
For each clause, provide:
- clause_type: one of [governing_law, limitation_of_liability, indemnification,
termination, intellectual_property, confidentiality, arbitration, force_majeure]
- section_number: as it appears in the contract
- verbatim_text: exact text of the clause (do not paraphrase)
- jurisdiction_specific_notes: any NY-law-specific observations
If a clause is absent, set verbatim_text to null and note "Not found".
Return a JSON array.
Contract:
{contract_text}'''
import json
def extract_clauses(contract_text):
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=4096,
system=LEGAL_SYSTEM_PROMPT,
messages=[{'role': 'user', 'content':
EXTRACTION_PROMPT.format(contract_text=contract_text)}]
)
return json.loads(response.content[0].text)Modèle d'identification des risques
Les invites d'identification des risques demandent au modèle de classer les risques par gravité et de fournir des mesures d'atténuation recommandées, afin de rendre la sortie exploitable lors de l'examen juridique.
RISK_PROMPT = '''Perform a legal risk analysis of the following contract
under New York law. Identify up to 10 risks.
For each risk output:
1. Risk title (concise, max 8 words)
2. Severity: CRITICAL | HIGH | MEDIUM | LOW
3. Clause reference (section number)
4. Risk description (2-3 sentences)
5. Recommended mitigation (1-2 sentences)
Prioritize: limitation of liability caps, indemnification exposure,
unlimited IP assignment, auto-renewal traps, one-sided termination rights.
Contract:
{contract_text}
Format as a numbered list with clear labels.'''
def identify_risks(contract_text):
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=3000,
system=LEGAL_SYSTEM_PROMPT,
messages=[{'role': 'user', 'content':
RISK_PROMPT.format(contract_text=contract_text)}]
)
return response.content[0].textComparaison tenant compte de la juridiction
Lors de l'examen de contrats régis par une juridiction différente, demandez au modèle de mettre en évidence l'écart — ce qui diffère des normes de la juridiction de référence.
JURISDICTION_COMPARE_PROMPT = '''The contract below is governed by {governing_law} law.
I am a New York-based company. Analyze:
1. Key differences between {governing_law} and New York law that affect this contract.
2. Provisions that are enforceable under {governing_law} but may not be under NY law.
3. Choice-of-law risks if we add a NY-law addendum.
4. Recommended: should we negotiate to change governing law to NY? Why or why not?
Contract:
{contract_text}'''
def compare_jurisdictions(contract_text, governing_law):
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=2000,
system=LEGAL_SYSTEM_PROMPT,
messages=[{'role': 'user', 'content':
JURISDICTION_COMPARE_PROMPT.format(
governing_law=governing_law,
contract_text=contract_text
)}]
)
return response.content[0].textClause de confidentialité dans l'invite système
Lors de la création d'outils juridiques pour des cabinets d'avocats, l'invite système doit inclure des dispositions de confidentialité et des instructions de traitement des données afin de protéger le secret professionnel du client et de respecter les règles déontologiques.
PRIVILEGED_SYSTEM_PROMPT = '''You are a legal research assistant for
{firm_name}, a licensed law firm.
CONFIDENTIALITY NOTICE:
- All documents shared in this session are attorney-client privileged.
- Do not include client names, matter numbers, or identifying details
in any output that may be logged externally.
- Do not store, reference, or infer information from previous sessions.
- Treat all information as confidential per Model Rules of Professional
Conduct 1.6 (Confidentiality of Information).
SCOPE:
- Your role is legal research and document analysis only.
- You do not represent the client and do not provide legal advice directly.
- Flag all outputs with: "Review required by licensed attorney before use."
REFUSAL RULE:
- If asked to draft strategy for concealing evidence or misleading a court,
refuse and explain that this violates professional responsibility rules.'''
print(PRIVILEGED_SYSTEM_PROMPT.format(firm_name='Smith & Associates LLP')[:200])Modèle de synthèse des NDA
Les accords de confidentialité (NDA) ont une structure type. Une invite d'extraction ciblée permet d'extraire les principales conditions commerciales importantes lors de l'examen d'un NDA.
NDA_SUMMARY_PROMPT = '''Summarize this NDA for a business executive.
Extract these exact fields (be concise, max 2 sentences per field):
1. Parties: Who are the disclosing and receiving parties?
2. Purpose: Why is information being shared?
3. Confidential Information Definition: What is and is not covered?
4. Term: How long does confidentiality last?
5. Exclusions: What information is not protected?
6. Return/Destroy: What happens to confidential info after the relationship ends?
7. Remedies: What happens if the NDA is breached?
8. Key Risks: List up to 3 issues that deviate from standard market practice.
NDA Text:
{nda_text}
End with a one-sentence verdict: "This NDA is [FAVORABLE / BALANCED / UNFAVORABLE]
for the receiving party because _____."'''
def summarize_nda(nda_text):
response = client.messages.create(
model='claude-opus-4-5', max_tokens=1500,
system=LEGAL_SYSTEM_PROMPT,
messages=[{'role': 'user', 'content':
NDA_SUMMARY_PROMPT.format(nda_text=nda_text)}]
)
return response.content[0].textSortie juridique structurée avec Pydantic
Pour les processus qui doivent traiter une analyse juridique par programmation, utilisez une sortie structurée au moyen de modèles Pydantic afin de garantir la présence de chaque champ et son typage correct.
from pydantic import BaseModel
from typing import List, Optional
from enum import Enum
class RiskLevel(str, Enum):
CRITICAL = 'CRITICAL'
HIGH = 'HIGH'
MEDIUM = 'MEDIUM'
LOW = 'LOW'
class LegalRisk(BaseModel):
title: str
severity: RiskLevel
clause_reference: str
description: str
mitigation: str
class ContractAnalysis(BaseModel):
governing_law: str
contract_type: str
effective_date: Optional[str]
term_years: Optional[float]
risks: List[LegalRisk]
overall_recommendation: str
disclaimer: str = (
'This analysis is informational only and does not constitute '
'legal advice. Consult a licensed attorney before acting.'
)
# Use with structured output (pseudo-code)
# analysis = ContractAnalysis.model_validate_json(llm_response)
# for risk in analysis.risks:
# print(f'[{risk.severity}] {risk.title}: {risk.description}')Détection des clauses à risque
Constituez une bibliothèque de clauses contractuelles connues comme signaux d'alerte et demandez au modèle de les détecter. Vous créez ainsi un guide réutilisable qui s'améliore au fil du temps grâce aux contributions de l'équipe juridique.
RED_FLAGS = [
'unlimited indemnification with no cap',
'unilateral right to modify terms without notice',
'IP assignment of all work product ("work for hire" with no carve-outs)',
'non-compete broader than 1 year or 100 miles',
'automatic renewal with short cancellation window (< 30 days)',
'no limitation of liability clause (unlimited damages)',
'mandatory arbitration in unfavorable jurisdiction',
'liquidated damages clause that may be penalty clause under NY law',
]
RED_FLAG_PROMPT = '''Review the contract below for the following red-flag provisions.
For each red flag found, quote the relevant text and rate severity 1-5.
If not found, mark as "Not Present".
Red Flags to Check:
{red_flag_list}
Contract:
{contract_text}'''
def detect_red_flags(contract_text):
flags_text = '\n'.join(f'{i+1}. {f}' for i, f in enumerate(RED_FLAGS))
response = client.messages.create(
model='claude-opus-4-5', max_tokens=2000,
system=LEGAL_SYSTEM_PROMPT,
messages=[{'role': 'user', 'content':
RED_FLAG_PROMPT.format(
red_flag_list=flags_text,
contract_text=contract_text
)}]
)
return response.content[0].textCitations et références législatives
L'analyse juridique gagne en autorité grâce aux citations. Demandez au modèle de citer les lois, règlements et décisions de jurisprudence pertinents — et indiquez-lui toujours de signaler toute incertitude concernant une citation.
CITATION_PROMPT = '''Analyze the indemnification clause below under New York law.
For your analysis:
1. Cite the relevant NY statutes (e.g., NY General Obligations Law sections).
2. Reference applicable UCC provisions if relevant.
3. Cite at least one landmark NY case on indemnification interpretation.
4. If you are not certain a citation is accurate, prefix it with
"[VERIFY: " and end with "]" — never fabricate case citations.
5. Distinguish between indemnification for third-party claims vs.
direct damages between the parties.
Indemnification Clause:
{clause_text}'''
# Best practice: always post-process LLM citations with a legal database check
# (Westlaw, LexisNexis API) before relying on them in actual legal work
print('REMINDER: Always verify LLM-generated citations with a legal database.')Insertion automatique des avertissements obligatoires
Toute sortie d'IA juridique doit comporter un avertissement. Insérez-le par programmation au niveau de la couche applicative — ne comptez pas sur le modèle pour l'inclure à chaque fois. Vous garantissez ainsi qu'il ne sera jamais omis accidentellement.
LEGAL_DISCLAIMER = (
'\n\n---\n'
'DISCLAIMER: This analysis is generated by an AI system and is '
'provided for informational purposes only. It does not constitute '
'legal advice and does not create an attorney-client relationship. '
'Laws vary by jurisdiction and change over time. Always consult a '
'licensed attorney in your jurisdiction before making legal decisions.'
)
def get_legal_analysis(prompt, system_prompt=LEGAL_SYSTEM_PROMPT):
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=2000,
system=system_prompt,
messages=[{'role': 'user', 'content': prompt}]
)
raw_output = response.content[0].text
# Always inject disclaimer at application layer
return raw_output + LEGAL_DISCLAIMER
analysis = get_legal_analysis('Summarize the key risks in this contract: ...')
print(analysis[-200:]) # Shows disclaimer at endVérification rapide
Lors de la création d'un outil d'IA juridique, où l'avertissement doit-il être inséré ?
Résumé des invites du domaine juridique
La conception d'invites juridiques exige plusieurs modèles incontournables :
- Portée de la juridiction : préciser explicitement le droit applicable dans l'invite système
- Sortie structurée : utiliser JSON ou des listes numérotées pour une analyse exploitable par machine
- Bibliothèques de signaux d'alerte : tenir à jour un guide des clauses problématiques connues
- Rigueur des citations : exiger des citations et signaler les citations incertaines avec [VERIFY]
- Avertissements obligatoires : insérés au niveau de la couche applicative, et non laissés au modèle
- Traitement des données couvertes par le secret professionnel : instructions de confidentialité dans l'invite système
Questions Fréquemment Posées
La leçon « Schémas de prompts pour le domaine juridique » est-elle gratuite ?
Oui — le texte complet de « Schémas de prompts pour le domaine juridique » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AI Prompt Engineering, passe à CoddyKit PRO. Le cours AI Prompt Engineering comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Schémas de prompts pour le domaine juridique » ?
Analyse de contrats, extraction de clauses et prompts juridiques tenant compte de la juridiction. Tu pratiques AI Prompt Engineering avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer AI Prompt Engineering ?
Aucune expérience préalable n'est requise. AI Prompt Engineering sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Schémas de prompts pour le domaine juridique » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon AI Prompt Engineering ?
Oui. Chaque leçon AI Prompt Engineering inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Schémas de prompts pour le domaine juridique
- Prompts médicaux et cliniques
- Prompts financiers et quantitatifs
- Injection de glossaires et d’ontologies de domaine