Claude Platform Docs
Best PracticesAnwendungsfälle

Zusammenfassung juristischer Dokumente

Dieser Leitfaden zeigt, wie du die fortschrittlichen Fähigkeiten von Claude zur Verarbeitung natürlicher Sprache nutzen kannst, um juristische Dokumente effizient zusammenzufassen, wichtige Informationen zu extrahieren und die juristische Recherche zu beschleunigen. Mit Claude kannst du die Prüfung von Verträgen, die Prozessvorbereitung und regulatorische Arbeit optimieren, Zeit sparen und Genauigkeit in deinen juristischen Prozessen sicherstellen.

Besuche das Summarization-Cookbook, um eine Beispielimplementierung für die Zusammenfassung juristischer Dokumente mit Claude zu sehen.

Vor dem Entwickeln mit Claude

Hier sind einige wichtige Indikatoren dafür, dass du ein „large language model“ (großes Sprachmodell), oder LLM, wie Claude zur Zusammenfassung juristischer Dokumente einsetzen solltest:

Lege fest, welche Details die Zusammenfassung extrahieren soll

Es gibt keine einzig richtige Zusammenfassung für ein bestimmtes Dokument. Ohne klare Vorgaben kann es für Claude schwierig sein zu bestimmen, welche Details aufgenommen werden sollen. Um optimale Ergebnisse zu erzielen, identifiziere die konkreten Informationen, die in der Zusammenfassung enthalten sein sollen.

Wenn du beispielsweise einen Untermietvertrag zusammenfasst, möchtest du vielleicht die folgenden Kernpunkte extrahieren:

details_to_extract = [
    "Parties involved (sublessor, sublessee, and original lessor)",
    "Property details (address, description, and permitted use)",
    "Term and rent (start date, end date, monthly rent, and security deposit)",
    "Responsibilities (utilities, maintenance, and repairs)",
    "Consent and notices (landlord's consent, and notice requirements)",
    "Special provisions (furniture, parking, and subletting restrictions)",
]

Lege Erfolgskriterien fest

Die Bewertung der Qualität von Zusammenfassungen ist eine bekanntermaßen schwierige Aufgabe. Anders als bei vielen anderen Aufgaben der Verarbeitung natürlicher Sprache fehlen bei der Bewertung von Zusammenfassungen oft eindeutige, objektive Metriken. Der Prozess kann sehr subjektiv sein, da verschiedene Leserinnen und Leser unterschiedliche Aspekte einer Zusammenfassung schätzen. Hier sind Kriterien, die du berücksichtigen kannst, wenn du beurteilst, wie gut Claude juristische Dokumente zusammenfasst.

Weitere Informationen findest du im Leitfaden zum Festlegen von Erfolgskriterien.


Wähle das richtige Claude-Modell

Die Modellgenauigkeit ist bei der Zusammenfassung juristischer Dokumente äußerst wichtig. Claude Opus 5 ist eine ausgezeichnete Wahl für Anwendungsfälle wie diesen, bei denen hohe Genauigkeit erforderlich ist. Wenn Umfang und Anzahl deiner Dokumente so groß sind, dass die Kosten zu einem Problem werden, kannst du auch ein kleineres Modell wie Claude Haiku 4.5 ausprobieren.

Um diese Kosten abzuschätzen, folgt hier ein Vergleich der Kosten für die Zusammenfassung von 1.000 Untermietverträgen mit Opus- und Haiku-Modellen:

  • Umfang der Inhalte

    • Anzahl der Verträge: 1.000
    • Zeichen pro Vertrag: 300.000
    • Zeichen insgesamt: 300 Mio.
  • Geschätzte Token

    • Input-Token: 86 Mio. (bei angenommen 1 Token pro 3,5 Zeichen)
    • Output-Token pro Zusammenfassung: 350
    • Output-Token insgesamt: 350.000
  • Geschätzte Kosten für Claude Opus 5

    • Kosten für Input-Token: 86 MTok * 5,00 $ / MTok = 430,00 $ USD
    • Kosten für Output-Token: 0,35 MTok * 25,00 $ / MTok = 8,75 $ USD
    • Gesamtkosten: 430,00 $ + 8,75 $ = 438,75 $ USD
  • Geschätzte Kosten für Claude Opus 4.8

    • Kosten für Input-Token: 86 MTok * 5,00 $ / MTok = 430,00 $ USD
    • Kosten für Output-Token: 0,35 MTok * 25,00 $ / MTok = 8,75 $ USD
    • Gesamtkosten: 430,00 $ + 8,75 $ = 438,75 $ USD
  • Geschätzte Kosten für Claude Haiku 4.5

    • Kosten für Input-Token: 86 MTok * 1,00 $ / MTok = 86,00 $ USD
    • Kosten für Output-Token: 0,35 MTok * 5,00 $ / MTok = 1,75 $ USD
    • Gesamtkosten: 86,00 $ + 1,75 $ = 87,75 $ USD

Wandle Dokumente in ein Format um, das Claude verarbeiten kann

Bevor du mit dem Zusammenfassen von Dokumenten beginnst, musst du deine Daten vorbereiten. Dazu gehört, Text aus PDFs zu extrahieren, den Text zu bereinigen und sicherzustellen, dass er von Claude verarbeitet werden kann.

Hier ist eine Demonstration dieses Prozesses anhand eines Beispiel-PDFs:

from io import BytesIO
import re

import pypdf
import requests


def get_llm_text(pdf_file):
    reader = pypdf.PdfReader(pdf_file)
    text = "\n".join([page.extract_text() for page in reader.pages])

    # Seitenzahlen entfernen
    text = re.sub(r"\n\s*\d+\s*\n", "\n", text)

    # Überflüssige Leerzeichen entfernen
    text = re.sub(r"\s+", " ", text)

    return text


# Erstelle die vollständige URL aus dem GitHub-Repository
url = "https://raw.githubusercontent.com/anthropics/claude-cookbooks/main/capabilities/summarization/data/Sample Sublease Agreement.pdf"
url = url.replace(" ", "%20")

# Lade die PDF-Datei in den Speicher herunter
response = requests.get(url)

# Lade das PDF aus dem Speicher
pdf_file = BytesIO(response.content)

document_text = get_llm_text(pdf_file)
print(document_text[:50000])

In diesem Beispiel lädst du zunächst ein PDF eines Beispiel-Untermietvertrags herunter, der im Summarization-Cookbook verwendet wird. Dieser Vertrag stammt aus einem öffentlich zugänglichen Untermietvertrag von der Website sec.gov.

Das Beispiel verwendet die pypdf-Bibliothek, um den Inhalt des PDFs zu extrahieren und in Text umzuwandeln. Die Textdaten werden anschließend bereinigt, indem Seitenzahlen und überflüssige Leerzeichen entfernt werden.

Erstelle einen starken Prompt

Claude kann sich an verschiedene Zusammenfassungsstile anpassen. Du kannst die Details des Prompts ändern, um Claude anzuleiten, ausführlicher oder knapper zu sein, mehr oder weniger Fachterminologie zu verwenden oder eine allgemeinere oder detailliertere Zusammenfassung des jeweiligen Kontexts zu liefern.

Hier ist ein Beispiel dafür, wie du einen Prompt erstellst, der sicherstellt, dass die generierten Zusammenfassungen bei der Analyse von Untermietverträgen einer einheitlichen Struktur folgen:

Python
# Initialisiere den Anthropic-Client
client = anthropic.Anthropic()


def summarize_document(
    text, details_to_extract, model="claude-opus-5", max_tokens=1000
):
    # Formatiere die zu extrahierenden Details, damit sie in den Kontext des Prompts eingefügt werden können
    details_to_extract_str = "\n".join(details_to_extract)

    # Fordere das Modell auf, den Untermietvertrag zusammenzufassen
    prompt = f"""Summarize the following sublease agreement. Focus on these key aspects:

    {details_to_extract_str}

    Provide the summary in bullet points nested within the XML header for each section. For example:

    <parties involved>
    - Sublessor: [Name]
    // Add more details as needed
    </parties involved>

    If any information is not explicitly stated in the document, note it as "Not specified". Do not preamble.

    Sublease agreement text:
    {text}
    """

    response = client.messages.create(
        model=model,
        max_tokens=max_tokens,
        system="You are a legal analyst specializing in real estate law, known for highly accurate and detailed summaries of sublease agreements.",
        messages=[
            {"role": "user", "content": prompt},
        ],
    )

    return next(block.text for block in response.content if block.type == "text")


sublease_summary = summarize_document(document_text, details_to_extract)
print(sublease_summary)

Dieser Code implementiert eine Funktion summarize_document, die Claude verwendet, um den Inhalt eines Untermietvertrags zusammenzufassen. Die Funktion akzeptiert als Eingaben einen Textstring und eine Liste der zu extrahierenden Details. In diesem Beispiel ruft der Code die Funktion mit den Variablen document_text und details_to_extract auf, die in den vorherigen Code-Snippets definiert wurden.

Innerhalb der Funktion wird ein Prompt für Claude generiert, der das zusammenzufassende Dokument, die zu extrahierenden Details und konkrete Anweisungen zur Zusammenfassung des Dokuments enthält. Der Prompt weist Claude an, mit einer Zusammenfassung jedes zu extrahierenden Details zu antworten, eingebettet in XML-Header.

Da der Code jeden Abschnitt der Zusammenfassung innerhalb von Tags ausgibt, lässt sich jeder Abschnitt in einem Nachbearbeitungsschritt leicht herausparsen. Dieser Ansatz ermöglicht strukturierte Zusammenfassungen, die an deinen Anwendungsfall angepasst werden können, sodass jede Zusammenfassung demselben Muster folgt.

Evaluiere deinen Prompt

Prompting erfordert oft Tests und Optimierung, bevor es produktionsreif ist. Um die Einsatzreife deiner Lösung zu bestimmen, evaluiere die Qualität deiner Zusammenfassungen mit einem systematischen Prozess, der quantitative und qualitative Methoden kombiniert. Eine starke empirische Evaluierung auf Basis deiner definierten Erfolgskriterien ermöglicht es dir, deine Prompts zu optimieren. Hier sind einige Metriken, die du in deine empirische Evaluierung aufnehmen kannst:

Stelle deinen Prompt bereit

Hier sind einige zusätzliche Überlegungen, die du beachten solltest, wenn du deine Lösung in Produktion bringst.

  1. Stelle sicher, dass keine Haftung entsteht: Verstehe die rechtlichen Folgen von Fehlern in den Zusammenfassungen, die zu einer rechtlichen Haftung für deine Organisation oder deine Mandanten führen könnten. Stelle Haftungsausschlüsse oder rechtliche Hinweise bereit, die klarstellen, dass die Zusammenfassungen von KI generiert wurden und von juristischen Fachleuten geprüft werden sollten.

  2. Verarbeite unterschiedliche Dokumenttypen: Dieser Leitfaden behandelt, wie Text aus PDFs extrahiert wird. In der Praxis können Dokumente in einer Vielzahl von Formaten vorliegen (etwa PDFs, Word-Dokumente und Textdateien). Stelle sicher, dass deine Datenextraktions-Pipeline alle Dateiformate konvertieren kann, die du erwartest.

  3. Parallelisiere API-Aufrufe an Claude: Bei langen Dokumenten mit einer großen Anzahl von Token kann Claude bis zu einer Minute benötigen, um eine Zusammenfassung zu generieren. Bei großen Dokumentensammlungen solltest du API-Aufrufe an Claude möglicherweise parallel senden, damit die Zusammenfassungen in einem angemessenen Zeitrahmen fertiggestellt werden können. Sieh dir die Ratenlimits von Anthropic an, um die maximale Anzahl von API-Aufrufen zu bestimmen, die parallel ausgeführt werden können.


Verbessere die Leistung

In komplexen Szenarien kann es hilfreich sein, über die standardmäßigen Prompt-Engineering-Techniken hinaus zusätzliche Strategien zur Leistungsverbesserung in Betracht zu ziehen. Hier sind einige fortgeschrittene Strategien:

Führe eine Meta-Zusammenfassung durch, um lange Dokumente zusammenzufassen

Die Zusammenfassung juristischer Dokumente erfordert oft die Verarbeitung langer Dokumente oder vieler zusammenhängender Dokumente auf einmal, sodass du das „context window“ (Kontextfenster) von Claude überschreitest. Für diesen Anwendungsfall kannst du eine „Chunking“-Methode (Aufteilung in Abschnitte) verwenden, die als „meta-summarization“ (Meta-Zusammenfassung) bekannt ist. Bei dieser Technik werden Dokumente in kleinere, handhabbare Abschnitte zerlegt und jeder Abschnitt separat verarbeitet. Anschließend kannst du die Zusammenfassungen der einzelnen Abschnitte kombinieren, um eine Meta-Zusammenfassung des gesamten Dokuments zu erstellen.

Hier ist ein Beispiel dafür, wie du eine Meta-Zusammenfassung durchführst:

Python
# Initialisiere den Anthropic-Client
client = anthropic.Anthropic()


def chunk_text(text, chunk_size=20000):
    return [text[i : i + chunk_size] for i in range(0, len(text), chunk_size)]


def summarize_long_document(
    text, details_to_extract, model="claude-opus-5", max_tokens=1000
):
    # Formatiere die zu extrahierenden Details, damit sie in den Kontext des Prompts eingefügt werden können
    details_to_extract_str = "\n".join(details_to_extract)

    # Iteriere über die Chunks und fasse jeden einzeln zusammen
    chunk_summaries = [
        summarize_document(
            chunk, details_to_extract, model=model, max_tokens=max_tokens
        )
        for chunk in chunk_text(text)
    ]

    final_summary_prompt = f"""

    You are looking at the chunked summaries of multiple documents that are all related.
    Combine the following summaries of the document from different truthful sources into a coherent overall summary:

    <chunked_summaries>
    {"".join(chunk_summaries)}
    </chunked_summaries>

    Focus on these key aspects:
    {details_to_extract_str}

    Provide the summary in bullet points nested within the XML header for each section. For example:

    <parties involved>
    - Sublessor: [Name]
    // Add more details as needed
    </parties involved>

    If any information is not explicitly stated in the document, note it as "Not specified". Do not preamble.
    """

    response = client.messages.create(
        model=model,
        max_tokens=max_tokens,
        system="You are a legal expert that summarizes notes on one document.",
        messages=[
            {"role": "user", "content": final_summary_prompt},
        ],
    )

    return next(block.text for block in response.content if block.type == "text")


long_summary = summarize_long_document(document_text, details_to_extract)
print(long_summary)

Die Funktion summarize_long_document baut auf der früheren Funktion summarize_document auf, indem sie das Dokument in kleinere Abschnitte aufteilt und jeden Abschnitt einzeln zusammenfasst.

Der Code erreicht dies, indem er die Funktion summarize_document auf jeden Abschnitt von 20.000 Zeichen innerhalb des Originaldokuments anwendet. Die einzelnen Zusammenfassungen werden dann kombiniert, und aus diesen Abschnittszusammenfassungen wird eine endgültige Zusammenfassung erstellt.

Beachte, dass die Funktion summarize_long_document für das Beispiel-PDF nicht unbedingt erforderlich ist, da das gesamte Dokument in das Kontextfenster von Claude passt. Sie wird jedoch unverzichtbar für Dokumente, die das Kontextfenster von Claude überschreiten, oder wenn mehrere zusammenhängende Dokumente gemeinsam zusammengefasst werden. Unabhängig davon erfasst diese Technik der Meta-Zusammenfassung in der endgültigen Zusammenfassung oft zusätzliche wichtige Details, die beim früheren Ansatz mit einer einzelnen Zusammenfassung übersehen wurden.

Verwende zusammenfassungsindizierte Dokumente, um eine große Dokumentensammlung zu erkunden

Das Durchsuchen einer Dokumentensammlung mit einem LLM erfolgt in der Regel über „retrieval-augmented generation“ (abrufgestützte Generierung), oder RAG. In Szenarien mit großen Dokumenten oder wenn ein präziser Informationsabruf entscheidend ist, kann ein einfacher RAG-Ansatz jedoch unzureichend sein. „Summary indexed documents“ (zusammenfassungsindizierte Dokumente) ist ein fortgeschrittener RAG-Ansatz, der eine effizientere Methode zum Ranking von Dokumenten für den Abruf bietet und dabei weniger Kontext benötigt als herkömmliche RAG-Methoden. Bei diesem Ansatz verwendest du zunächst Claude, um für jedes Dokument in deinem Korpus eine prägnante Zusammenfassung zu erstellen, und anschließend Claude, um die Relevanz jeder Zusammenfassung für die gestellte Anfrage zu bewerten. Weitere Details zu diesem Ansatz, einschließlich eines codebasierten Beispiels, findest du im Abschnitt zu zusammenfassungsindizierten Dokumenten im Summarization-Cookbook.

Führe ein Fine-tuning von Claude durch, um aus deinem Datensatz zu lernen

Eine weitere fortgeschrittene Technik, um die Fähigkeit von Claude zur Erstellung von Zusammenfassungen zu verbessern, ist „Fine-tuning“ (Feinabstimmung). Beim Fine-tuning wird Claude auf einem benutzerdefinierten Datensatz trainiert, der speziell auf deine Anforderungen an die Zusammenfassung juristischer Dokumente abgestimmt ist, sodass sich Claude an deinen Anwendungsfall anpasst. Hier ist ein Überblick darüber, wie du ein Fine-tuning durchführst:

  1. Identifiziere Fehler: Beginne damit, Fälle zu sammeln, in denen die Zusammenfassungen von Claude unzureichend sind – dazu können fehlende wichtige juristische Details, ein falsch verstandener Kontext oder die Verwendung unangemessener juristischer Terminologie gehören.

  2. Stelle einen Datensatz zusammen: Sobald du diese Probleme identifiziert hast, stelle einen Datensatz mit diesen problematischen Beispielen zusammen. Dieser Datensatz sollte die ursprünglichen juristischen Dokumente zusammen mit deinen korrigierten Zusammenfassungen enthalten, damit Claude das gewünschte Verhalten lernt.

  3. Führe das Fine-tuning durch: Beim Fine-tuning wird das Modell auf deinem zusammengestellten Datensatz neu trainiert, um seine Gewichte und Parameter anzupassen. Dieses erneute Training hilft Claude, sich besser an die spezifischen Anforderungen deines Rechtsgebiets anzupassen, und verbessert seine Fähigkeit, Dokumente nach deinen Standards zusammenzufassen.

  4. Iterative Verbesserung: Fine-tuning ist kein einmaliger Prozess. Während Claude weiterhin Zusammenfassungen erstellt, kannst du iterativ neue Beispiele hinzufügen, bei denen es unterdurchschnittlich abgeschnitten hat, und so seine Fähigkeiten weiter verfeinern. Im Laufe der Zeit führt diese kontinuierliche Feedbackschleife zu einem Modell, das hochgradig auf deine Aufgaben zur Zusammenfassung juristischer Dokumente spezialisiert ist.

Sieh dir ein vollständig implementiertes codebasiertes Beispiel dafür an, wie du Claude zur Zusammenfassung von Verträgen verwendest.

Erkunde das Citations-Cookbook-Rezept für Hinweise dazu, wie du die Genauigkeit und Erklärbarkeit von Informationen sicherstellst.

Was this page helpful?