Besuchen Sie unser Zusammenfassungs-Cookbook, um ein Beispiel für die Implementierung einer juristischen Zusammenfassung mit Claude zu sehen.

Vor dem Aufbau mit Claude

Entscheiden Sie, ob Sie Claude für juristische Zusammenfassungen verwenden sollten

Hier sind einige wichtige Indikatoren dafür, dass Sie einen LLM wie Claude für die Zusammenfassung juristischer Dokumente einsetzen sollten:

Bestimmen Sie die Details, die die Zusammenfassung extrahieren soll

Es gibt keine einzige richtige Zusammenfassung für ein bestimmtes Dokument. Ohne klare Anweisung kann es für Claude schwierig sein zu bestimmen, welche Details einbezogen werden sollen. Um optimale Ergebnisse zu erzielen, identifizieren Sie die spezifischen Informationen, die Sie in die Zusammenfassung aufnehmen möchten.

Zum Beispiel möchten Sie bei der Zusammenfassung eines Untermietvertrags möglicherweise folgende Kernpunkte extrahieren:

details_to_extract = [
    'Beteiligte Parteien (Untervermieter, Untermieter und ursprünglicher Vermieter)',
    'Immobiliendetails (Adresse, Beschreibung und erlaubte Nutzung)',
    'Laufzeit und Miete (Beginn, Ende, monatliche Miete und Kaution)',
    'Verantwortlichkeiten (Nebenkosten, Instandhaltung und Reparaturen)',
    'Zustimmung und Mitteilungen (Zustimmung des Vermieters und Mitteilungspflichten)',
    'Sonderbestimmungen (Möbel, Parkplätze und Untervermietungsbeschränkungen)'
]

Erfolgskriterien festlegen

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, wobei verschiedene Leser unterschiedliche Aspekte einer Zusammenfassung als wichtig erachten. Hier sind Kriterien, die Sie bei der Bewertung der Leistung von Claude bei juristischen Zusammenfassungen berücksichtigen sollten.

Weitere Informationen finden Sie in unserer Anleitung zum Festlegen von Erfolgskriterien.


Wie man juristische Dokumente mit Claude zusammenfasst

Wählen Sie das richtige Claude-Modell

Die Modellgenauigkeit ist bei der Zusammenfassung juristischer Dokumente äußerst wichtig. Claude 3.5 Sonnet ist eine ausgezeichnete Wahl für Anwendungsfälle wie diesen, bei denen hohe Genauigkeit erforderlich ist. Wenn der Umfang und die Menge Ihrer Dokumente so groß sind, dass die Kosten zu einem Problem werden, können Sie auch versuchen, ein kleineres Modell wie Claude 3 Haiku zu verwenden.

Um diese Kosten abzuschätzen, finden Sie nachfolgend einen Vergleich der Kosten für die Zusammenfassung von 1.000 Untermietverträgen mit sowohl Sonnet als auch Haiku:

  • Inhaltsgröße

    • Anzahl der Verträge: 1.000
    • Zeichen pro Vertrag: 300.000
    • Gesamtzeichen: 300M
  • Geschätzte Token

    • Input-Token: 86M (bei Annahme von 1 Token pro 3,5 Zeichen)
    • Output-Token pro Zusammenfassung: 350
    • Gesamte Output-Token: 350.000
  • Claude 3.5 Sonnet geschätzte Kosten

    • Input-Token-Kosten: 86 MTok * 3,00/MTok=3,00/MTok = 258
    • Output-Token-Kosten: 0,35 MTok * 15,00/MTok=15,00/MTok = 5,25
    • Gesamtkosten: 258,00+258,00 + 5,25 = $263,25
  • Claude 3 Haiku geschätzte Kosten

    • Input-Token-Kosten: 86 MTok * 0,25/MTok=0,25/MTok = 21,50
    • Output-Token-Kosten: 0,35 MTok * 1,25/MTok=1,25/MTok = 0,44
    • Gesamtkosten: 21,50+21,50 + 0,44 = $21,96
Die tatsächlichen Kosten können von diesen Schätzungen abweichen. Diese Schätzungen basieren auf dem Beispiel, das im Abschnitt über Prompting hervorgehoben wird.

Dokumente in ein Format umwandeln, das Claude verarbeiten kann

Bevor Sie mit der Zusammenfassung von Dokumenten beginnen, müssen Sie Ihre Daten vorbereiten. Dies beinhaltet das Extrahieren von Text aus PDFs, das Bereinigen des Textes und die Sicherstellung, dass er von Claude verarbeitet werden kann.

Hier ist eine Demonstration dieses Prozesses an einem Beispiel-PDF:

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])

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

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

    return text


# Vollständige URL aus dem GitHub-Repository erstellen
url = "https://raw.githubusercontent.com/anthropics/anthropic-cookbook/main/skills/summarization/data/Sample Sublease Agreement.pdf"
url = url.replace(" ", "%20")

# PDF-Datei in den Speicher herunterladen
response = requests.get(url)

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

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

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

Wir verwenden die pypdf-Bibliothek, um den Inhalt des PDFs zu extrahieren und in Text umzuwandeln. Die Textdaten werden dann durch Entfernen überflüssiger Leerzeichen und Seitenzahlen bereinigt.

Einen starken Prompt erstellen

Claude kann sich an verschiedene Zusammenfassungsstile anpassen. Sie können die Details des Prompts ändern, um Claude zu mehr oder weniger Ausführlichkeit, mehr oder weniger technischer Terminologie oder einer höheren oder niedrigeren Zusammenfassungsebene des vorliegenden Kontexts zu führen.

Hier ist ein Beispiel, wie man einen Prompt erstellt, der sicherstellt, dass die generierten Zusammenfassungen bei der Analyse von Untermietverträgen einer einheitlichen Struktur folgen:

import anthropic

# Anthropic-Client initialisieren
client = anthropic.Anthropic()

def summarize_document(text, details_to_extract, model="claude-3-5-sonnet-20241022", max_tokens=1000):

    # Die zu extrahierenden Details formatieren, um sie in den Kontext des Prompts einzufügen
    details_to_extract_str = '\n'.join(details_to_extract)
    
    # Das Modell auffordern, den Untermietvertrag zusammenzufassen
    prompt = f"""Fassen Sie den folgenden Untermietvertrag zusammen. Konzentrieren Sie sich auf diese Schlüsselaspekte:

    {details_to_extract_str}

    Stellen Sie die Zusammenfassung in Aufzählungspunkten dar, die innerhalb des XML-Headers für jeden Abschnitt verschachtelt sind. Zum Beispiel:

    <beteiligte parteien>
    - Untervermieter: [Name]
    // Weitere Details nach Bedarf hinzufügen
    </beteiligte parteien>
    
    Wenn Informationen im Dokument nicht explizit angegeben sind, kennzeichnen Sie diese als "Nicht angegeben". Keine Einleitung.

    Untermietvertragstext:
    {text}
    """

    response = client.messages.create(
        model=model,
        max_tokens=max_tokens,
        system="Sie sind ein Rechtsanalyst, der sich auf Immobilienrecht spezialisiert hat und für hochgenaue und detaillierte Zusammenfassungen von Untermietverträgen bekannt ist.",
        messages=[
            {"role": "user", "content": prompt},
            {"role": "assistant", "content": "Hier ist die Zusammenfassung des Untermietvertrags: <summary>"}
        ],
        stop_sequences=["</summary>"]
    )

    return response.content[0].text

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

[Fortsetzung folgt…]