访问我们的总结指南,查看使用Claude进行法律文件总结的示例实现。

使用Claude前的准备

决定是否使用Claude进行法律文件总结

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

确定您希望总结提取的细节

对于任何给定的文件,都没有唯一正确的总结。如果没有明确的指导,Claude可能难以确定应该包含哪些细节。为了获得最佳结果,请确定您想要在总结中包含的具体信息。

例如,在总结转租协议时,您可能希望提取以下关键点:

details_to_extract = [
    '相关方(转租人、承租人和原出租人)',
    '物业详情(地址、描述和允许用途)', 
    '期限和租金(开始日期、结束日期、月租金和押金)',
    '责任(水电费、维护和维修)',
    '同意和通知(房东同意和通知要求)',
    '特殊条款(家具、停车和转租限制)'
]

建立成功标准

评估总结的质量是一项出了名的具有挑战性的任务。与许多其他自然语言处理任务不同,总结的评估往往缺乏明确的客观指标。这个过程可能高度主观,不同的读者会重视总结的不同方面。以下是评估Claude执行法律总结表现时可能考虑的标准。

更多信息请参见我们关于建立成功标准的指南。


如何使用Claude总结法律文件

选择合适的Claude模型

在总结法律文件时,模型的准确性极其重要。对于这类需要高准确性的用例,Claude 3.5 Sonnet是一个极好的选择。如果您的文件规模和数量较大,以至于成本开始成为一个考虑因素,您也可以尝试使用像Claude 3 Haiku这样的较小模型。

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

  • 内容规模

    • 协议数量:1,000
    • 每份协议字符数:300,000
    • 总字符数:300M
  • 估计token数

    • 输入token:86M(假设每3.5个字符1个token)
    • 每份总结的输出token:350
    • 总输出token:350,000
  • Claude 3.5 Sonnet估计成本

    • 输入token成本:86 MTok * 3.00/MTok=3.00/MTok = 258
    • 输出token成本:0.35 MTok * 15.00/MTok=15.00/MTok = 5.25
    • 总成本:258.00+258.00 + 5.25 = $263.25
  • Claude 3 Haiku估计成本

    • 输入token成本:86 MTok * 0.25/MTok=0.25/MTok = 21.50
    • 输出token成本:0.35 MTok * 1.25/MTok=1.25/MTok = 0.44
    • 总成本:21.50+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])

    # 删除多余的空白
    text = re.sub(r'\s+', ' ', text) 

    # 删除页码
    text = re.sub(r'\n\s*\d+\s*\n', '\n', 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]) 

在这个示例中,我们首先下载总结指南中使用的示例转租协议的PDF。这份协议来源于sec.gov网站上公开可用的转租协议。

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

构建强大的提示

Claude可以适应各种总结风格。您可以更改提示的细节,引导Claude变得更加详细或简洁,包含更多或更少的技术术语,或提供更高或更低层次的上下文总结。

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

import anthropic

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

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

    # 格式化要提取的细节以放入提示的上下文中
    details_to_extract_str = '\n'.join(details_to_extract)
    
    # 提示模型总结转租协议
    prompt = f"""总结以下转租协议。关注这些关键方面:

    {details_to_extract_str}

    请在每个部分的XML标头内以项目符号形式提供总结。例如:

    <parties involved>
    - 转租人:[姓名]
    // 根据需要添加更多细节
    </parties involved>
    
    如果文件中未明确说明任何信息,请注明"未指定"。不要添加前言。

    转租协议文本:
    {text}
    """

    response = client.messages.create(
        model=model,
        max_tokens=max_tokens,
        system="您是一位专门从事房地产法律的法律分析师,以高度准确和详细的转租协议总结而闻名。",
        messages=[
            {"role": "user", "content": prompt},
            {"role": "assistant", "content": "以下是转租协议的总结:<summary>"}
        ],
        stop_sequences=["</summary>"]
    )

    return response.content[0].text

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

[继续…]