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

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

Решите, использовать ли Claude для резюмирования юридических документов

Вот некоторые ключевые показатели того, что вы должны использовать LLM, такой как Claude, для резюмирования юридических документов:
Крупномасштабная проверка документов может быть трудоемкой и дорогостоящей при выполнении вручную. Claude может быстро обрабатывать и резюмировать огромные объемы юридических документов, значительно сокращая время и затраты, связанные с проверкой документов. Эта возможность особенно ценна для таких задач, как комплексная проверка, анализ контрактов или судебное раскрытие информации, где эффективность имеет решающее значение.
Claude может эффективно извлекать и категоризировать важные метаданные из юридических документов, такие как стороны, даты, условия контракта или конкретные пункты. Это автоматизированное извлечение может помочь организовать информацию, облегчив поиск, анализ и управление большими наборами документов. Это особенно полезно для управления контрактами, проверки соответствия или создания доступных для поиска баз данных юридической информации.
Claude может создавать структурированные резюме, которые следуют заранее определенным форматам, облегчая юридическим специалистам быстро понять ключевые моменты различных документов. Эти стандартизированные резюме могут улучшить читаемость, облегчить сравнение между документами и повысить общее понимание, особенно при работе со сложным юридическим языком или техническим жаргоном.
При создании юридических резюме надлежащее указание авторства и цитирование имеют решающее значение для обеспечения достоверности и соответствия юридическим стандартам. Claude можно попросить включить точные цитаты для всех упомянутых юридических пунктов, облегчив юридическим специалистам проверку и верификацию резюмированной информации.
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 выполняет резюмирование юридических документов.
Резюме должно точно представлять факты, юридические концепции и ключевые моменты в документе.
Терминология и ссылки на законы, судебную практику или нормативные акты должны быть правильными и соответствовать юридическим стандартам.
Резюме должно сжимать юридический документ до его существенных моментов без потери важных деталей.
При резюмировании нескольких документов LLM должен поддерживать последовательную структуру и подход к каждому резюме.
Текст должен быть четким и легким для понимания. Если аудитория не является юридическими экспертами, резюме не должно включать юридический жаргон, который может запутать аудиторию.
Резюме должно представлять беспристрастное и справедливое изображение юридических аргументов и позиций.
Дополнительную информацию см. в нашем руководстве по установлению критериев успеха.

Как резюмировать юридические документы с помощью Claude

Выберите правильную модель Claude

Точность модели чрезвычайно важна при резюмировании юридических документов. Claude Sonnet 4.5 — отличный выбор для таких случаев использования, где требуется высокая точность. Если размер и количество ваших документов велики, так что затраты начинают становиться проблемой, вы также можете попробовать использовать меньшую модель, такую как Claude Haiku 4.5. Чтобы помочь оценить эти затраты, ниже приведено сравнение стоимости резюмирования 1000 договоров субаренды с использованием как Sonnet, так и Haiku:
  • Размер контента
    • Количество соглашений: 1000
    • Символов на соглашение: 300000
    • Всего символов: 300M
  • Предполагаемые токены
    • Входные токены: 86M (при условии 1 токена на 3,5 символа)
    • Выходные токены на резюме: 350
    • Всего выходных токенов: 350000
  • Предполагаемая стоимость Claude Sonnet 4.5
    • Стоимость входных токенов: 86 MTok * $3.00/MTok = $258
    • Стоимость выходных токенов: 0.35 MTok * $15.00/MTok = $5.25
    • Общая стоимость: $258.00 + $5.25 = $263.25
  • Предполагаемая стоимость Claude Haiku 3
    • Стоимость входных токенов: 86 MTok * $0.25/MTok = $21.50
    • Стоимость выходных токенов: 0.35 MTok * $1.25/MTok = $0.44
    • Общая стоимость: $21.50 + $0.44 = $21.96
Фактические затраты могут отличаться от этих оценок. Эти оценки основаны на примере, выделенном в разделе о подсказках.

Преобразуйте документы в формат, который 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])

    # Remove extra whitespace
    text = re.sub(r'\s+', ' ', text) 

    # Remove page numbers
    text = re.sub(r'\n\s*\d+\s*\n', '\n', text) 

    return text


# Create the full URL from the GitHub repository
url = "https://raw.githubusercontent.com/anthropics/anthropic-cookbook/main/skills/summarization/data/Sample Sublease Agreement.pdf"
url = url.replace(" ", "%20")

# Download the PDF file into memory
response = requests.get(url)

# Load the PDF from memory
pdf_file = BytesIO(response.content)

document_text = get_llm_text(pdf_file) 
print(document_text[:50000]) 
В этом примере мы сначала загружаем PDF-файл примера договора субаренды, используемого в справочнике по резюмированию. Это соглашение было получено из общедоступного договора субаренды с веб-сайта sec.gov. Мы используем библиотеку pypdf для извлечения содержимого PDF-файла и преобразования его в текст. Текстовые данные затем очищаются путем удаления дополнительных пробелов и номеров страниц.

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

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

# Initialize the Anthropic client
client = anthropic.Anthropic()

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

    # Format the details to extract to be placed within the prompt's context
    details_to_extract_str = '\n'.join(details_to_extract)
    
    # Prompt the model to summarize the sublease agreement
    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},
            {"role": "assistant", "content": "Here is the summary of the sublease agreement: <summary>"}
        ],
        stop_sequences=["</summary>"]
    )

    return response.content[0].text

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

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

Подсказки часто требуют тестирования и оптимизации, чтобы быть готовыми к производству. Чтобы определить готовность вашего решения, оцените качество ваших резюме, используя систематический процесс, сочетающий количественные и качественные методы. Создание сильной эмпирической оценки на основе ваших определенных критериев успеха позволит вам оптимизировать ваши подсказки. Вот некоторые метрики, которые вы можете захотеть включить в вашу эмпирическую оценку:
Это измеряет перекрытие между созданным резюме и резюме, созданным экспертом. Эта метрика в основном сосредоточена на полноте и полезна для оценки охвата контента.
Хотя первоначально разработано для машинного перевода, эта метрика может быть адаптирована для задач резюмирования. Оценки BLEU измеряют точность совпадений n-грамм между созданным резюме и справочными резюме. Более высокий балл указывает на то, что созданное резюме содержит похожие фразы и терминологию на справочное резюме.
Эта метрика включает создание векторных представлений (встраиваний) как созданного, так и справочного резюме. Затем вычисляется сходство между этими встраиваниями, часто используя косинусное сходство. Более высокие оценки сходства указывают на то, что созданное резюме захватывает семантическое значение и контекст справочного резюме, даже если точная формулировка отличается.
Этот метод включает использование LLM, такого как Claude, для оценки качества созданных резюме в соответствии с рубрикой оценки. Рубрика может быть адаптирована к вашим конкретным потребностям, оценивая ключевые факторы, такие как точность, полнота и согласованность. Для руководства по реализации оценки на основе LLM см. эти советы.
В дополнение к созданию справочных резюме, юридические эксперты также могут оценить качество созданных резюме. Хотя это дорого и требует много времени в масштабе, это часто делается на нескольких резюме как проверка здравомыслия перед развертыванием в производство.

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

Вот некоторые дополнительные соображения, которые следует учитывать при развертывании вашего решения в производство.
  1. Обеспечьте отсутствие ответственности: Поймите юридические последствия ошибок в резюме, которые могут привести к юридической ответственности для вашей организации или клиентов. Предоставьте отказы от ответственности или юридические уведомления, уточняющие, что резюме созданы ИИ и должны быть проверены юридическими специалистами.
  2. Обработайте разнообразные типы документов: В этом руководстве мы обсудили, как извлекать текст из PDF-файлов. В реальном мире документы могут быть в различных форматах (PDF-файлы, документы Word, текстовые файлы и т. д.). Убедитесь, что ваш конвейер извлечения данных может преобразовывать все форматы файлов, которые вы ожидаете получить.
  3. Параллелизируйте вызовы API к Claude: Длинные документы с большим количеством токенов могут потребовать до минуты для Claude, чтобы создать резюме. Для больших коллекций документов вы можете захотеть отправлять вызовы API к Claude параллельно, чтобы резюме можно было завершить в разумные сроки. Обратитесь к ограничениям скорости Anthropic, чтобы определить максимальное количество вызовов API, которые можно выполнять параллельно.

Улучшите производительность

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

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

Резюмирование юридических документов часто включает работу с длинными документами или многими связанными документами одновременно, так что вы превышаете контекстное окно Claude. Вы можете использовать метод разбиения, известный как мета-резюмирование, чтобы справиться с этим случаем использования. Этот метод включает разбиение документов на меньшие, управляемые части и последующую обработку каждой части отдельно. Затем вы можете объединить резюме каждой части, чтобы создать мета-резюме всего документа. Вот пример того, как выполнить мета-резюмирование:
import anthropic

# Initialize the 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-sonnet-4-5", max_tokens=1000):

    # Format the details to extract to be placed within the prompt's context
    details_to_extract_str = '\n'.join(details_to_extract)

    # Iterate over chunks and summarize each one
    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},
            {"role": "assistant", "content": "Here is the summary of the sublease agreement: <summary>"}

        ],
        stop_sequences=["</summary>"]
    )
    
    return response.content[0].text

long_summary = summarize_long_document(document_text, details_to_extract)
print(long_summary)
Функция summarize_long_document расширяет более раннюю функцию summarize_document, разделяя документ на меньшие части и резюмируя каждую часть отдельно. Код достигает этого, применяя функцию summarize_document к каждому фрагменту из 20000 символов в исходном документе. Отдельные резюме затем объединяются, и из этих резюме фрагментов создается окончательное резюме. Обратите внимание, что функция summarize_long_document не является строго необходимой для нашего примера PDF-файла, так как весь документ помещается в контекстное окно Claude. Однако это становится необходимым для документов, превышающих контекстное окно Claude, или при резюмировании нескольких связанных документов вместе. Независимо от этого, этот метод мета-резюмирования часто захватывает дополнительные важные детали в окончательном резюме, которые были пропущены в более раннем подходе с одним резюме.

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

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

Тонко настройте Claude, чтобы учиться на вашем наборе данных

Еще один продвинутый метод для улучшения способности Claude создавать резюме — это тонкая настройка. Тонкая настройка включает обучение Claude на пользовательском наборе данных, который специально соответствует вашим потребностям в резюмировании юридических документов, обеспечивая адаптацию Claude к вашему случаю использования. Вот обзор того, как выполнить тонкую настройку:
  1. Определите ошибки: Начните с сбора экземпляров, где резюме Claude не соответствуют — это может включать пропуск критических юридических деталей, неправильное понимание контекста или использование неподходящей юридической терминологии.
  2. Подготовьте набор данных: После того как вы определили эти проблемы, составьте набор данных из этих проблемных примеров. Этот набор данных должен включать исходные юридические документы вместе с вашими исправленными резюме, обеспечивая, чтобы Claude изучил желаемое поведение.
  3. Выполните тонкую настройку: Тонкая настройка включает переобучение модели на вашем подготовленном наборе данных для корректировки ее весов и параметров. Это переобучение помогает Claude лучше понять конкретные требования вашего юридического домена, улучшая его способность резюмировать документы в соответствии с вашими стандартами.
  4. Итеративное улучшение: Тонкая настройка — это не одноразовый процесс. По мере того как Claude продолжает создавать резюме, вы можете итеративно добавлять новые примеры, где он показал недостаточную производительность, дополнительно совершенствуя его возможности. Со временем этот непрерывный цикл обратной связи приведет к модели, которая высоко специализирована для ваших задач резюмирования юридических документов.
Тонкая настройка в настоящее время доступна только через Amazon Bedrock. Дополнительные детали доступны в блоге запуска AWS.