Claude Platform Docs
Лучшие практикиСценарии использования

Резюмирование юридических документов

В этом руководстве рассматривается, как использовать расширенные возможности Claude по обработке естественного языка для эффективного резюмирования юридических документов, извлечения ключевой информации и ускорения юридических исследований. С помощью Claude вы можете оптимизировать проверку договоров, подготовку к судебным разбирательствам и работу с нормативными требованиями, экономя время и обеспечивая точность ваших юридических процессов.

Посетите сборник рецептов по резюмированию, чтобы увидеть пример реализации резюмирования юридических документов с помощью Claude.

Перед началом работы с Claude

Вот несколько ключевых признаков того, что вам следует использовать «large language model» (большую языковую модель), или LLM, такую как Claude, для резюмирования юридических документов:

Определите, какие сведения должно извлекать резюмирование

Для любого документа не существует единственно правильного резюме. Без чётких указаний Claude может быть сложно определить, какие сведения включить. Для достижения оптимальных результатов определите конкретную информацию, которую вы хотите включить в резюме.

Например, при резюмировании договора субаренды вы можете захотеть извлечь следующие ключевые моменты:

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

Установите критерии успеха

Оценка качества резюме — общеизвестно сложная задача. В отличие от многих других задач обработки естественного языка, оценка резюме часто не имеет чётких, объективных метрик. Процесс может быть весьма субъективным, поскольку разные читатели ценят разные аспекты резюме. Вот критерии, которые вы можете учитывать при оценке того, насколько хорошо Claude справляется с резюмированием юридических документов.

Дополнительную информацию см. в руководстве по установлению критериев успеха.


Выберите подходящую модель Claude

Точность модели чрезвычайно важна при резюмировании юридических документов. Claude Opus 5 — отличный выбор для таких сценариев использования, где требуется высокая точность. Если размер и количество ваших документов настолько велики, что затраты начинают вызывать беспокойство, вы также можете попробовать использовать меньшую модель, например Claude Haiku 4.5.

Чтобы помочь оценить эти затраты, ниже приведено сравнение стоимости резюмирования 1 000 договоров субаренды с использованием моделей Opus и Haiku:

  • Размер контента

    • Количество договоров: 1 000
    • Символов на договор: 300 000
    • Всего символов: 300 млн
  • Оценочное количество токенов

    • Входные токены: 86 млн (при условии 1 токен на 3,5 символа)
    • Выходные токены на одно резюме: 350
    • Всего выходных токенов: 350 000
  • Оценочная стоимость Claude Opus 5

    • Стоимость входных токенов: 86 MTok * $5,00/MTok = $430,00 USD
    • Стоимость выходных токенов: 0,35 MTok * $25,00/MTok = $8,75 USD
    • Общая стоимость: $430,00 + $8,75 = $438,75 USD
  • Оценочная стоимость Claude Opus 4.8

    • Стоимость входных токенов: 86 MTok * $5,00/MTok = $430,00 USD
    • Стоимость выходных токенов: 0,35 MTok * $25,00/MTok = $8,75 USD
    • Общая стоимость: $430,00 + $8,75 = $438,75 USD
  • Оценочная стоимость Claude Haiku 4.5

    • Стоимость входных токенов: 86 MTok * $1,00/MTok = $86,00 USD
    • Стоимость выходных токенов: 0,35 MTok * $5,00/MTok = $1,75 USD
    • Общая стоимость: $86,00 + $1,75 = $87,75 USD

Преобразуйте документы в формат, который Claude может обработать

Прежде чем приступить к резюмированию документов, вам необходимо подготовить данные. Это включает извлечение текста из PDF-файлов, очистку текста и обеспечение его готовности к обработке Claude.

Вот демонстрация этого процесса на примере 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])

    # Удаляем номера страниц
    text = re.sub(r"\n\s*\d+\s*\n", "\n", text)

    # Удаляем лишние пробелы
    text = re.sub(r"\s+", " ", text)

    return text


# Формируем полный URL из репозитория GitHub
url = "https://raw.githubusercontent.com/anthropics/claude-cookbooks/main/capabilities/summarization/data/Sample Sublease Agreement.pdf"
url = url.replace(" ", "%20")

# Загружаем PDF-файл в память
response = requests.get(url)

# Загружаем PDF из памяти
pdf_file = BytesIO(response.content)

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

В этом примере вы сначала загружаете PDF-файл с образцом договора субаренды, используемым в сборнике рецептов по резюмированию. Этот договор был взят из общедоступного договора субаренды с сайта sec.gov.

В примере используется библиотека pypdf для извлечения содержимого PDF-файла и преобразования его в текст. Затем текстовые данные очищаются путём удаления номеров страниц и лишних пробелов.

Создайте сильную подсказку

Claude может адаптироваться к различным стилям резюмирования. Вы можете изменять детали «prompt» (подсказки), чтобы направить Claude быть более или менее многословным, включать больше или меньше технической терминологии либо предоставлять резюме рассматриваемого контекста более высокого или более низкого уровня.

Вот пример того, как создать подсказку, которая гарантирует, что создаваемые резюме следуют единообразной структуре при анализе договоров субаренды:

Python
# Инициализируем клиент Anthropic
client = anthropic.Anthropic()


def summarize_document(
    text, details_to_extract, model="claude-opus-5-5", max_tokens=1000
):
    # Форматируем извлекаемые сведения для размещения в контексте подсказки
    details_to_extract_str = "\n".join(details_to_extract)

    # Просим модель кратко изложить договор субаренды
    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)

Этот код реализует функцию summarize_document, которая использует Claude для резюмирования содержимого договора субаренды. Функция принимает в качестве входных данных текстовую строку и список сведений для извлечения. В этом примере код вызывает функцию с переменными document_text и details_to_extract, которые были определены в предыдущих фрагментах кода.

Внутри функции для Claude формируется подсказка, включающая документ для резюмирования, сведения для извлечения и конкретные инструкции по резюмированию документа. Подсказка предписывает Claude ответить резюме по каждому извлекаемому сведению, вложенным в XML-заголовки.

Поскольку код выводит каждый раздел резюме внутри тегов, каждый раздел можно легко извлечь на этапе постобработки. Такой подход позволяет получать структурированные резюме, которые можно адаптировать под ваш сценарий использования, так что каждое резюме следует одному и тому же шаблону.

Оцените вашу подсказку

Подсказки часто требуют тестирования и оптимизации, чтобы быть готовыми к промышленной эксплуатации. Чтобы определить готовность вашего решения, оцените качество ваших резюме с помощью систематического процесса, сочетающего количественные и качественные методы. Создание надёжной эмпирической оценки на основе определённых вами критериев успеха позволяет оптимизировать ваши подсказки. Вот некоторые метрики, которые вы можете включить в свою эмпирическую оценку:

Разверните вашу подсказку

Вот несколько дополнительных соображений, которые следует учитывать при развёртывании вашего решения в промышленной среде.

  1. Исключите ответственность: Осознайте юридические последствия ошибок в резюме, которые могут привести к юридической ответственности вашей организации или клиентов. Предоставьте оговорки или юридические уведомления, разъясняющие, что резюме созданы ИИ и должны быть проверены юристами.

  2. Обрабатывайте различные типы документов: В этом руководстве рассматривается, как извлекать текст из PDF-файлов. В реальном мире документы могут поступать в различных форматах (например, PDF-файлы, документы Word и текстовые файлы). Убедитесь, что ваш конвейер извлечения данных может преобразовывать все форматы файлов, которые вы ожидаете получать.

  3. Распараллеливайте вызовы API к Claude: Для длинных документов с большим количеством токенов Claude может потребоваться до минуты на создание резюме. Для больших коллекций документов вы можете отправлять вызовы API к Claude параллельно, чтобы резюме были готовы в разумные сроки. Обратитесь к ограничениям скорости Anthropic, чтобы определить максимальное количество вызовов API, которые можно выполнять параллельно.


Повышение производительности

В сложных сценариях может быть полезно рассмотреть дополнительные стратегии повышения производительности помимо стандартных техник инженерии подсказок. Вот несколько продвинутых стратегий:

Выполняйте мета-резюмирование для резюмирования длинных документов

Резюмирование юридических документов часто предполагает работу с длинными документами или множеством связанных документов одновременно, так что вы превышаете «context window» (контекстное окно) Claude. Для этого сценария использования можно применить метод разбиения на фрагменты, известный как мета-резюмирование. Эта техника предполагает разбиение документов на более мелкие, удобные для обработки фрагменты и последующую обработку каждого фрагмента отдельно. Затем вы можете объединить резюме каждого фрагмента, чтобы создать мета-резюме всего документа.

Вот пример того, как выполнить мета-резюмирование:

Python
# Инициализируем клиент Anthropic
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-5", max_tokens=1000
):
    # Форматируем извлекаемые сведения для размещения в контексте подсказки
    details_to_extract_str = "\n".join(details_to_extract)

    # Перебираем фрагменты и кратко излагаем каждый из них
    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)

Функция summarize_long_document основана на ранее описанной функции summarize_document: она разбивает документ на более мелкие фрагменты и резюмирует каждый фрагмент по отдельности.

Код достигает этого, применяя функцию summarize_document к каждому фрагменту из 20 000 символов исходного документа. Затем отдельные резюме объединяются, и на основе этих резюме фрагментов создаётся итоговое резюме.

Обратите внимание, что функция summarize_long_document не является строго необходимой для примера PDF-файла, поскольку весь документ помещается в контекстное окно Claude. Однако она становится незаменимой для документов, превышающих контекстное окно Claude, или при совместном резюмировании нескольких связанных документов. В любом случае эта техника мета-резюмирования часто позволяет отразить в итоговом резюме дополнительные важные детали, которые были упущены при более раннем подходе с единственным резюме.

Используйте документы с индексацией по резюме для изучения большой коллекции документов

Поиск по коллекции документов с помощью LLM обычно предполагает «retrieval-augmented generation» (генерацию с дополнением извлечёнными данными), или RAG. Однако в сценариях с большими документами или когда точное извлечение информации имеет решающее значение, базового подхода RAG может быть недостаточно. Документы с индексацией по резюме — это продвинутый подход RAG, который обеспечивает более эффективный способ ранжирования документов для извлечения, используя меньше контекста, чем традиционные методы RAG. В этом подходе вы сначала используете Claude для создания краткого резюме каждого документа в вашем корпусе, а затем используете Claude для ранжирования релевантности каждого резюме по отношению к заданному запросу. Подробнее об этом подходе, включая пример с кодом, см. в разделе о документах с индексацией по резюме в сборнике рецептов по резюмированию.

Дообучите Claude на вашем наборе данных

Ещё одна продвинутая техника для улучшения способности Claude создавать резюме — «fine-tuning» (дообучение). Дообучение предполагает обучение Claude на пользовательском наборе данных, который специально соответствует вашим потребностям в резюмировании юридических документов, обеспечивая адаптацию Claude к вашему сценарию использования. Вот обзор того, как выполнить дообучение:

  1. Выявите ошибки: Начните со сбора случаев, когда резюме Claude не соответствуют требованиям — это может включать пропуск критически важных юридических деталей, неправильное понимание контекста или использование неподходящей юридической терминологии.

  2. Подготовьте набор данных: После выявления этих проблем составьте набор данных из таких проблемных примеров. Этот набор данных должен включать исходные юридические документы вместе с вашими исправленными резюме, чтобы Claude усвоил желаемое поведение.

  3. Выполните дообучение: Дообучение предполагает повторное обучение модели на подготовленном вами наборе данных для корректировки её весов и параметров. Такое повторное обучение помогает Claude лучше адаптироваться к специфическим требованиям вашей правовой области, улучшая его способность резюмировать документы в соответствии с вашими стандартами.

  4. Итеративное улучшение: Дообучение — это не одноразовый процесс. По мере того как Claude продолжает создавать резюме, вы можете итеративно добавлять новые примеры, в которых он показал недостаточные результаты, дополнительно совершенствуя его возможности. Со временем этот непрерывный цикл обратной связи приведёт к созданию модели, высоко специализированной для ваших задач резюмирования юридических документов.

Посмотрите полностью реализованный пример с кодом, показывающий, как использовать Claude для резюмирования договоров.

Изучите рецепт из сборника по цитированию, чтобы получить рекомендации о том, как обеспечить точность и объяснимость информации.

Was this page helpful?