Loading...
  • Construir
  • Administración
  • Modelos y precios
  • SDKs de cliente
  • Referencia de API
Search...
⌘K
Log in
Resumen legal
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Amazon Bedrock
  • Google Cloud's Vertex AI

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
Construir/Casos de uso

Resumen de documentos legales

Esta guía te muestra cómo aprovechar las capacidades avanzadas de procesamiento del lenguaje natural de Claude para resumir eficientemente documentos legales, extrayendo información clave y acelerando la investigación legal. Con Claude, puedes optimizar la revisión de contratos, preparación de litigios y trabajo regulatorio, ahorrando tiempo y garantizando precisión en tus procesos legales.

Visita el resumen de cookbook para ver una implementación de ejemplo de resumen legal usando Claude.

Antes de construir con Claude

Decide si usar Claude para resumen de documentos legales

Aquí hay algunos indicadores clave de que deberías usar un LLM como Claude para resumir documentos legales:

Determina los detalles que quieres que el resumen extraiga

No hay un único resumen correcto para ningún documento dado. Sin una dirección clara, puede ser difícil para Claude determinar qué detalles incluir. Para lograr resultados óptimos, identifica la información específica que quieres incluir en el resumen.

Por ejemplo, al resumir un acuerdo de subarrendamiento, podrías desear extraer los siguientes puntos clave:

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

Establece criterios de éxito

Evaluar la calidad de los resúmenes es una tarea notoriamente desafiante. A diferencia de muchas otras tareas de procesamiento del lenguaje natural, la evaluación de resúmenes a menudo carece de métricas claras y objetivas. El proceso puede ser altamente subjetivo, con diferentes lectores valorando diferentes aspectos de un resumen. Aquí hay criterios que podrías desear considerar al evaluar qué tan bien Claude realiza el resumen de documentos legales.

Consulta la guía sobre establecimiento de criterios de éxito para más información.


Cómo resumir documentos legales usando Claude

Selecciona el modelo Claude correcto

La precisión del modelo es extremadamente importante al resumir documentos legales. Claude Opus 4.7 es una excelente opción para casos de uso como este donde se requiere alta precisión. Si el tamaño y la cantidad de tus documentos es grande de tal manera que los costos comienzan a ser una preocupación, también puedes intentar usar un modelo más pequeño como Claude Haiku 4.5.

Para ayudarte a estimar estos costos, a continuación hay una comparación del costo de resumir 1,000 acuerdos de subarrendamiento usando tanto Sonnet como Haiku:

  • Tamaño del contenido

    • Número de acuerdos: 1,000
    • Caracteres por acuerdo: 300,000
    • Total de caracteres: 300M
  • Tokens estimados

    • Tokens de entrada: 86M (asumiendo 1 token por 3.5 caracteres)
    • Tokens de salida por resumen: 350
    • Total de tokens de salida: 350,000
  • Costo estimado de Claude Opus 4.7

    • Costo de tokens de entrada: 86 MTok * $5.00/MTok = $430
    • Costo de tokens de salida: 0.35 MTok * $25.00/MTok = $8.75
    • Costo total: $430.00 + $8.75 = $438.75
  • Costo estimado de Claude Haiku 3

    • Costo de tokens de entrada: 86 MTok * $0.25/MTok = $21.50
    • Costo de tokens de salida: 0.35 MTok * $1.25/MTok = $0.44
    • Costo total: $21.50 + $0.44 = $21.96
Los costos reales pueden diferir de estas estimaciones. Estas estimaciones se basan en el ejemplo destacado en la sección sobre prompting.

Transforma documentos a un formato que Claude pueda procesar

Antes de comenzar a resumir documentos, necesitas preparar tus datos. Esto implica extraer texto de PDFs, limpiar el texto y asegurar que esté listo para ser procesado por Claude.

Aquí hay una demostración de este proceso en un PDF de ejemplo:

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

En este ejemplo, primero descargas un PDF de un acuerdo de subarrendamiento de ejemplo utilizado en el resumen de cookbook. Este acuerdo fue obtenido de un acuerdo de subarrendamiento disponible públicamente del sitio web sec.gov.

El ejemplo utiliza la biblioteca pypdf para extraer el contenido del PDF y convertirlo a texto. Los datos de texto se limpian luego eliminando espacios en blanco adicionales y números de página.

Construye un prompt fuerte

Claude puede adaptarse a varios estilos de resumen. Puedes cambiar los detalles del prompt para guiar a Claude a ser más o menos verboso, incluir más o menos terminología técnica, o proporcionar un resumen de nivel superior o inferior del contexto en cuestión.

Aquí hay un ejemplo de cómo crear un prompt que asegure que los resúmenes generados sigan una estructura consistente al analizar acuerdos de subarrendamiento:

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


def summarize_document(
    text, details_to_extract, model="claude-opus-4-7", 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},
        ],
    )

    return response.content[0].text


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

Este código implementa una función summarize_document que usa Claude para resumir el contenido de un acuerdo de subarrendamiento. La función acepta una cadena de texto y una lista de detalles a extraer como entradas. En este ejemplo, el código llama a la función con las variables document_text y details_to_extract que fueron definidas en los fragmentos de código anteriores.

Dentro de la función, se genera un prompt para Claude, incluyendo el documento a ser resumido, los detalles a extraer e instrucciones específicas para resumir el documento. El prompt instruye a Claude a responder con un resumen de cada detalle a extraer anidado dentro de encabezados XML.

Debido a que el código genera cada sección del resumen dentro de etiquetas, cada sección puede ser fácilmente analizada como un paso de post-procesamiento. Este enfoque permite resúmenes estructurados que pueden ser adaptados para tu caso de uso, de modo que cada resumen siga el mismo patrón.

Evalúa tu prompt

El prompting a menudo requiere pruebas y optimización para estar listo para producción. Para determinar la preparación de tu solución, evalúa la calidad de tus resúmenes usando un proceso sistemático que combine métodos cuantitativos y cualitativos. Crear una evaluación empírica fuerte basada en tus criterios de éxito definidos te permite optimizar tus prompts. Aquí hay algunas métricas que podrías desear incluir dentro de tu evaluación empírica:

Despliega tu prompt

Aquí hay algunas consideraciones adicionales a tener en cuenta mientras despliegas tu solución a producción.

  1. Asegura que no haya responsabilidad: Comprende las implicaciones legales de errores en los resúmenes, que podrían llevar a responsabilidad legal para tu organización o clientes. Proporciona disclaimers o avisos legales aclarando que los resúmenes son generados por IA y deben ser revisados por profesionales legales.

  2. Maneja tipos de documentos diversos: Esta guía discute cómo extraer texto de PDFs. En el mundo real, los documentos pueden venir en una variedad de formatos (PDFs, documentos de Word, archivos de texto, etc.). Asegúrate de que tu pipeline de extracción de datos pueda convertir todos los formatos de archivo que esperes recibir.

  3. Paraleliza llamadas a la API de Claude: Los documentos largos con una gran cantidad de tokens pueden requerir hasta un minuto para que Claude genere un resumen. Para grandes colecciones de documentos, podrías desear enviar llamadas a la API de Claude en paralelo de modo que los resúmenes puedan completarse en un marco de tiempo razonable. Consulta los límites de velocidad de Anthropic para determinar la cantidad máxima de llamadas a la API que pueden realizarse en paralelo.


Mejora el rendimiento

En escenarios complejos, puede ser útil considerar estrategias adicionales para mejorar el rendimiento más allá de técnicas estándar de ingeniería de prompts. Aquí hay algunas estrategias avanzadas:

Realiza meta-resumen para resumir documentos largos

El resumen legal a menudo implica manejar documentos largos o muchos documentos relacionados a la vez, de tal manera que superes la ventana de contexto de Claude. Puedes usar un método de chunking conocido como meta-resumen para manejar este caso de uso. Esta técnica implica dividir documentos en fragmentos más pequeños y manejables y luego procesar cada fragmento por separado. Luego puedes combinar los resúmenes de cada fragmento para crear un meta-resumen del documento completo.

Aquí hay un ejemplo de cómo realizar meta-resumen:

Python
# 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-opus-4-7", 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},
        ],
    )

    return response.content[0].text


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

La función summarize_long_document se construye sobre la función anterior summarize_document dividiendo el documento en fragmentos más pequeños y resumiendo cada fragmento individualmente.

El código logra esto aplicando la función summarize_document a cada fragmento de 20,000 caracteres dentro del documento original. Los resúmenes individuales se combinan luego, y se crea un resumen final a partir de estos resúmenes de fragmentos.

Ten en cuenta que la función summarize_long_document no es estrictamente necesaria para el PDF de ejemplo, ya que el documento completo cabe dentro de la ventana de contexto de Claude. Sin embargo, se vuelve esencial para documentos que exceden la ventana de contexto de Claude o cuando se resumen múltiples documentos relacionados juntos. Independientemente, esta técnica de meta-resumen a menudo captura detalles importantes adicionales en el resumen final que fueron perdidos en el enfoque de resumen único anterior.

Usa documentos indexados por resumen para explorar una gran colección de documentos

Buscar una colección de documentos con un LLM usualmente implica generación aumentada por recuperación (RAG). Sin embargo, en escenarios que implican documentos grandes o cuando la recuperación de información precisa es crucial, un enfoque RAG básico puede ser insuficiente. Los documentos indexados por resumen es un enfoque RAG avanzado que proporciona una forma más eficiente de clasificar documentos para recuperación, usando menos contexto que métodos RAG tradicionales. En este enfoque, primero usas Claude para generar un resumen conciso para cada documento en tu corpus, y luego usas Claude para clasificar la relevancia de cada resumen a la consulta siendo hecha. Para más detalles sobre este enfoque, incluyendo un ejemplo basado en código, consulta la sección de documentos indexados por resumen en el resumen de cookbook.

Ajusta Claude para aprender de tu conjunto de datos

Otra técnica avanzada para mejorar la capacidad de Claude de generar resúmenes es el ajuste fino. El ajuste fino implica entrenar a Claude en un conjunto de datos personalizado que se alinee específicamente con tus necesidades de resumen legal, asegurando que Claude se adapte a tu caso de uso. Aquí hay una descripción general de cómo realizar el ajuste fino:

  1. Identifica errores: Comienza recopilando instancias donde los resúmenes de Claude se quedan cortos - esto podría incluir detalles legales críticos faltantes, malinterpretación del contexto o uso de terminología legal inapropiada.

  2. Cura un conjunto de datos: Una vez que hayas identificado estos problemas, compila un conjunto de datos de estos ejemplos problemáticos. Este conjunto de datos debe incluir los documentos legales originales junto con tus resúmenes corregidos, asegurando que Claude aprenda el comportamiento deseado.

  3. Realiza ajuste fino: El ajuste fino implica reentrenar el modelo en tu conjunto de datos curado para ajustar sus pesos y parámetros. Este reentrenamiento ayuda a Claude a entender mejor los requisitos específicos de tu dominio legal, mejorando su capacidad de resumir documentos de acuerdo con tus estándares.

  4. Mejora iterativa: El ajuste fino no es un proceso único. A medida que Claude continúa generando resúmenes, puedes iterativamente agregar nuevos ejemplos donde ha tenido un desempeño inferior, refinando aún más sus capacidades. Con el tiempo, este ciclo de retroalimentación continuo resultará en un modelo que es altamente especializado para tus tareas de resumen legal.

El ajuste fino actualmente solo está disponible a través de Amazon Bedrock. Detalles adicionales están disponibles en el blog de lanzamiento de AWS.
Resumen de cookbook

Ver un ejemplo de código completamente implementado de cómo usar Claude para resumir contratos.

Resumen de cookbook de citas

Explora la receta de cookbook de citas para orientación sobre cómo asegurar precisión y explicabilidad de la información.

Was this page helpful?

  • Antes de construir con Claude
  • Decide si usar Claude para resumen de documentos legales
  • Determina los detalles que quieres que el resumen extraiga
  • Establece criterios de éxito
  • Cómo resumir documentos legales usando Claude
  • Selecciona el modelo Claude correcto
  • Transforma documentos a un formato que Claude pueda procesar
  • Construye un prompt fuerte
  • Evalúa tu prompt
  • Despliega tu prompt
  • Mejora el rendimiento
  • Realiza meta-resumen para resumir documentos largos
  • Usa documentos indexados por resumen para explorar una gran colección de documentos
  • Ajusta Claude para aprender de tu conjunto de datos