Claude Platform Docs
  • 消息
  • 托管智能体
  • 管理

Search...
⌘K
用例
概览工单路由客户支持智能体内容审核法律摘要
提示工程
概览提示最佳实践为 Claude Fable 5 编写提示为 Claude Opus 4.8 编写提示控制台提示工具
测试与评估
定义成功标准并构建评估在控制台中使用评估工具降低延迟
加强防护措施
减少幻觉提高输出一致性缓解越狱攻击减少提示泄露
参考
术语表

Log in
法律摘要
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Claude Platform Docs

Solutions

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

Partners

  • Claude on AWS
  • Claude on Google Cloud

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
最佳实践/用例

法律文档摘要

本指南将介绍如何利用 Claude 先进的自然语言处理能力来高效地总结法律文档,提取关键信息并加快法律研究进程。借助 Claude,您可以简化合同审查、诉讼准备和监管工作,从而节省时间并确保法律流程的准确性。

访问摘要 cookbook,查看使用 Claude 实现法律文档摘要的示例。

使用 Claude 构建之前

决定是否使用 Claude 进行法律文档摘要

以下是一些关键指标,表明您应该使用像 Claude 这样的 LLM 来总结法律文档:

确定您希望摘要提取的详细信息

对于任何给定的文档,都不存在唯一正确的摘要。如果没有明确的指示,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 模型

在总结法律文档时,模型的准确性极为重要。对于此类需要高准确性的用例,Claude Opus 4.8 是一个绝佳的选择。如果您的文档规模和数量较大,以至于成本开始成为一个问题,您也可以尝试使用较小的模型,如 Claude Haiku 4.5。

为了帮助估算这些成本,以下是使用 Opus 和 Haiku 总结 1,000 份转租协议的成本对比:

  • 内容规模

    • 协议数量:1,000
    • 每份协议的字符数:300,000
    • 总字符数:3 亿
  • 预估令牌数

    • 输入令牌:8,600 万(假设每 3.5 个字符对应 1 个令牌)
    • 每份摘要的输出令牌:350
    • 总输出令牌:350,000
  • Claude Opus 4.8 预估成本

    • 输入令牌成本:86 MTok * $5.00/MTok = $430.00 美元
    • 输出令牌成本:0.35 MTok * $25.00/MTok = $8.75 美元
    • 总成本:$430.00 + $8.75 = $438.75 美元
  • Claude Haiku 4.5 预估成本

    • 输入令牌成本:86 MTok * $1.00/MTok = $86.00 美元
    • 输出令牌成本:0.35 MTok * $5.00/MTok = $1.75 美元
    • 总成本:$86.00 + $1.75 = $87.75 美元

实际成本可能与这些估算有所不同。这些估算基于提示部分中重点介绍的示例。

将文档转换为 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


# 根据 GitHub 仓库创建完整 URL
url = "https://raw.githubusercontent.com/anthropics/anthropic-cookbook/main/skills/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])

在此示例中,您首先下载摘要 cookbook 中使用的示例转租协议的 PDF。该协议来源于 sec.gov 网站上公开提供的转租协议。

该示例使用 pypdf 库提取 PDF 的内容并将其转换为文本。然后通过删除页码和多余的空白来清理文本数据。

构建强大的提示

Claude 可以适应各种摘要风格。您可以更改提示的细节,引导 Claude 生成更详细或更简洁的内容、包含更多或更少的专业术语,或者提供更高层次或更低层次的上下文摘要。

以下示例展示了如何创建提示,以确保在分析转租协议时生成的摘要遵循一致的结构:

Python
# 初始化 Anthropic 客户端
client = anthropic.Anthropic()


def summarize_document(
    text, details_to_extract, model="claude-opus-4-8", 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 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 标头中的形式响应每个要提取的详细信息的摘要。

由于代码将摘要的每个部分输出在标签内,因此可以在后处理步骤中轻松解析出每个部分。这种方法可以生成适用于您的用例的结构化摘要,使每个摘要都遵循相同的模式。

评估您的提示

提示通常需要经过测试和优化才能投入生产使用。要确定您的解决方案是否就绪,请使用结合定量和定性方法的系统化流程来评估摘要的质量。基于您定义的成功标准创建强大的实证评估,可以帮助您优化提示。以下是您可能希望在实证评估中包含的一些指标:

部署您的提示

在将解决方案部署到生产环境时,请牢记以下一些额外的注意事项。

  1. 确保无责任风险: 了解摘要中的错误可能带来的法律影响,这些错误可能导致您的组织或客户承担法律责任。提供免责声明或法律声明,明确说明摘要由 AI 生成,应由法律专业人士审查。

  2. 处理多种文档类型: 本指南讨论了如何从 PDF 中提取文本。在实际应用中,文档可能以多种格式出现(PDF、Word 文档、文本文件等)。确保您的数据提取流程能够转换您预期接收的所有文件格式。

  3. 并行化对 Claude 的 API 调用: 包含大量令牌的长文档可能需要 Claude 花费长达一分钟的时间来生成摘要。对于大型文档集合,您可能希望并行向 Claude 发送 API 调用,以便在合理的时间范围内完成摘要。请参阅 Anthropic 的速率限制,以确定可以并行执行的最大 API 调用数量。


提升性能

在复杂场景中,除了标准的提示工程技术之外,考虑其他策略来提升性能可能会有所帮助。以下是一些高级策略:

执行元摘要以总结长文档

法律文档摘要通常涉及同时处理长文档或许多相关文档,以至于超出 Claude 的上下文窗口。您可以使用一种称为元摘要(meta-summarization)的分块方法来处理这种用例。该技术涉及将文档分解为更小、更易于管理的块,然后分别处理每个块。之后,您可以将每个块的摘要组合起来,创建整个文档的元摘要。

以下是如何执行元摘要的示例:

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-4-8", 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 response.content[0].text


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

summarize_long_document 函数基于前面的 summarize_document 函数构建,通过将文档拆分为更小的块并分别总结每个块来实现。

代码通过对原始文档中每 20,000 个字符的块应用 summarize_document 函数来实现这一点。然后将各个摘要组合起来,并从这些块摘要中创建最终摘要。

请注意,对于示例 PDF 而言,summarize_long_document 函数并非严格必需,因为整个文档可以放入 Claude 的上下文窗口中。然而,对于超出 Claude 上下文窗口的文档,或者在一起总结多个相关文档时,该函数就变得至关重要。无论如何,这种元摘要技术通常能够在最终摘要中捕捉到早期单一摘要方法所遗漏的其他重要细节。

使用摘要索引文档来探索大型文档集合

使用 LLM 搜索文档集合通常涉及 "retrieval-augmented generation"(检索增强生成),即 RAG。然而,在涉及大型文档或需要精确信息检索的场景中,基本的 RAG 方法可能不够用。摘要索引文档(summary indexed documents)是一种高级 RAG 方法,它提供了一种更高效的方式来对文档进行检索排序,使用的上下文比传统 RAG 方法更少。在这种方法中,您首先使用 Claude 为语料库中的每个文档生成简洁的摘要,然后使用 Claude 对每个摘要与所提问题的相关性进行排序。有关此方法的更多详细信息(包括基于代码的示例),请查看摘要 cookbook 中的摘要索引文档部分。

微调 Claude 以从您的数据集中学习

另一种提高 Claude 生成摘要能力的高级技术是 "fine-tuning"(微调)。微调涉及在专门符合您的法律摘要需求的自定义数据集上训练 Claude,确保 Claude 适应您的用例。以下是如何执行微调的概述:

  1. 识别错误: 首先收集 Claude 摘要不足的实例——这可能包括遗漏关键法律细节、误解上下文或使用不恰当的法律术语。

  2. 整理数据集: 一旦识别出这些问题,就编制一个包含这些问题示例的数据集。该数据集应包括原始法律文档以及您修正后的摘要,确保 Claude 学习到期望的行为。

  3. 执行微调: 微调涉及在您整理的数据集上重新训练模型,以调整其权重和参数。这种重新训练有助于 Claude 更好地理解您的法律领域的具体要求,提高其按照您的标准总结文档的能力。

  4. 迭代改进: 微调不是一次性的过程。随着 Claude 持续生成摘要,您可以迭代地添加其表现不佳的新示例,进一步完善其能力。随着时间的推移,这种持续的反馈循环将产生一个高度专门化于您的法律摘要任务的模型。


微调目前仅通过 Amazon Bedrock 提供。更多详细信息请参阅 AWS 发布博客。

摘要 cookbook


查看完整实现的基于代码的示例,了解如何使用 Claude 总结合同。


引用 cookbook


探索引用 cookbook 示例,获取有关如何确保信息准确性和可解释性的指导。

Was this page helpful?

  • 使用 Claude 构建之前
  • 决定是否使用 Claude 进行法律文档摘要
  • 确定您希望摘要提取的详细信息
  • 建立成功标准
  • 如何使用 Claude 总结法律文档
  • 选择合适的 Claude 模型
  • 将文档转换为 Claude 可以处理的格式
  • 构建强大的提示
  • 评估您的提示
  • 部署您的提示
  • 提升性能
  • 执行元摘要以总结长文档
  • 使用摘要索引文档来探索大型文档集合
  • 微调 Claude 以从您的数据集中学习