訪問我們的摘要製作指南,查看使用Claude進行法律摘要的實例實現。

在使用Claude構建前

決定是否使用Claude進行法律摘要

以下是一些關鍵指標,表明您應該使用像Claude這樣的LLM來摘要法律文件:

確定您希望摘要提取的詳細信息

對於任何給定文件,沒有單一的正確摘要。如果沒有明確的指導,Claude可能難以確定應該包含哪些詳細信息。為了獲得最佳結果,請確定您希望包含在摘要中的具體信息。

例如,在摘要轉租協議時,您可能希望提取以下關鍵點:

details_to_extract = [
    '相關方(轉租人、承租人和原出租人)',
    '物業詳情(地址、描述和允許用途)', 
    '期限和租金(開始日期、結束日期、月租金和保證金)',
    '責任(公用事業、維護和修理)',
    '同意和通知(房東同意和通知要求)',
    '特殊條款(家具、停車和轉租限制)'
]

建立成功標準

評估摘要質量是一項出了名的具有挑戰性的任務。與許多其他自然語言處理任務不同,摘要評估通常缺乏明確、客觀的指標。這個過程可能高度主觀,不同的讀者重視摘要的不同方面。以下是您在評估Claude執行法律摘要的表現時可能考慮的標準。

有關更多信息,請參閱我們關於建立成功標準的指南。


如何使用Claude摘要法律文件

選擇正確的Claude模型

在摘要法律文件時,模型準確性極為重要。Claude Sonnet 3.5是需要高準確性的用例的絕佳選擇。如果您的文件大小和數量很大,以至於成本開始成為一個問題,您也可以嘗試使用像Claude Haiku 3這樣的較小模型。

為了幫助估算這些成本,以下是使用Sonnet和Haiku摘要1,000份轉租協議的成本比較:

  • 內容大小

    • 協議數量:1,000
    • 每份協議字符數:300,000
    • 總字符數:300M
  • 估計令牌數

    • 輸入令牌:86M(假設每3.5個字符1個令牌)
    • 每個摘要的輸出令牌:350
    • 總輸出令牌:350,000
  • Claude Sonnet 4估計成本

    • 輸入令牌成本: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])

    # 移除多餘的空白
    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-opus-4-20250514", max_tokens=1000):

    # 格式化要提取的詳細信息,以便放置在提示的上下文中
    details_to_extract_str = '\n'.join(details_to_extract)
    
    # 提示模型摘要轉租協議
    prompt = f"""摘要以下轉租協議。專注於這些關鍵方面:

    {details_to_extract_str}

    以項目符號形式提供摘要,嵌套在每個部分的XML標頭內。例如:

    <相關方>
    - 轉租人:[姓名]
    // 根據需要添加更多詳細信息
    </相關方>
    
    如果文件中未明確說明任何信息,請注明為"未指定"。不要前言。

    轉租協議文本:
    {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)

這段代碼實現了一個summarize_document函數,使用Claude摘要轉租協議的內容。該函數接受文本字符串和要提取的詳細信息列表作為輸入。在這個例子中,我們使用前面代碼片段中定義的document_textdetails_to_extract變量調用該函數。

在函數內部,為Claude生成一個提示,包括要摘要的文件、要提取的詳細信息以及摘要文件的具體指示。提示指示Claude以嵌套在XML標頭內的每個要提取的詳細信息的摘要進行回應。

由於我們決定在標籤內輸出摘要的每個部分,因此可以輕鬆地將每個部分解析出來作為後處理步驟。這種方法可以生成結構化摘要,可以根據您的用例進行調整,以便每個摘要遵循相同的模式。

評估您的提示

提示通常需要測試和優化才能投入生產。要確定解決方案的準備程度,請使用系統化流程結合定量和定性方法評估摘要的質量。基於您定義的成功標準創建強大的實證評估將允許您優化提示。以下是您可能希望包含在實證評估中的一些指標:

部署您的提示

以下是在將解決方案部署到生產環境時需要考慮的一些額外事項。

  1. **確保無責任:**了解摘要中的錯誤可能導致您的組織或客戶承擔法律責任的法律影響。提供免責聲明或法律通知,明確說明摘要是由AI生成的,應由法律專業人士審查。

  2. **處理多種文件類型:**在本指南中,我們討論了如何從PDF中提取文本。在現實世界中,文件可能以各種格式出現(PDF、Word文檔、文本文件等)。確保您的數據提取管道可以轉換您預期接收的所有文件格式。

  3. **並行化對Claude的API調用:**長文件與大量令牌可能需要Claude花費長達一分鐘的時間來生成摘要。對於大型文件集合,您可能希望並行發送API調用到Claude,以便摘要可以在合理的時間內完成。參考Anthropic的速率限制以確定可以並行執行的最大API調用數量。


提高性能

在複雜的場景中,除了標準的提示工程技術外,考慮額外的策略來提高性能可能會有所幫助。以下是一些高級策略:

執行元摘要以摘要長文件

法律摘要通常涉及處理長文件或一次處理多個相關文件,以至於超過Claude的上下文窗口。您可以使用一種稱為元摘要的分塊方法來處理這種用例。這種技術涉及將文件分解成更小、可管理的塊,然後分別處理每個塊。然後,您可以結合每個塊的摘要,創建整個文件的元摘要。

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

import anthropic

# 初始化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-20250514", 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"""
    
    您正在查看來自不同真實來源的相關文件的分塊摘要。
    將以下文件的摘要合併成一個連貫的整體摘要:

    <chunked_summaries>
    {"".join(chunk_summaries)}
    </chunked_summaries>

    專注於這些關鍵方面:
    {details_to_extract_str})

    以項目符號形式提供摘要,嵌套在每個部分的XML標頭內。例如:

    <相關方>
    - 轉租人:[姓名]
    // 根據需要添加更多詳細信息
    </相關方>
    
    如果文件中未明確說明任何信息,請注明為"未指定"。不要前言。
    """

    response = client.messages.create(
        model=model,
        max_tokens=max_tokens,
        system="您是一位摘要一份文件筆記的法律專家。",
        messages=[
            {"role": "user",  "content": final_summary_prompt},
            {"role": "assistant", "content": "以下是轉租協議的摘要:<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函數應用於原始文件中的每個20,000字符的塊來實現這一點。然後將各個摘要組合起來,並從這些塊摘要中創建最終摘要。

請注意,對於我們的示例PDF,summarize_long_document函數並不是嚴格必要的,因為整個文件適合Claude的上下文窗口。然而,對於超過Claude上下文窗口的文件或當一起摘要多個相關文件時,它變得至關重要。無論如何,這種元摘要技術通常會在最終摘要中捕捉到早期單一摘要方法中遺漏的額外重要細節。

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

使用LLM搜索文件集合通常涉及檢索增強生成(RAG)。然而,在涉及大型文件或當需要精確信息檢索至關重要的情況下,基本的RAG方法可能不足夠。摘要索引文件是一種高級RAG方法,提供了一種更有效的方式來對檢索的文件進行排名,使用比傳統RAG方法更少的上下文。在這種方法中,您首先使用Claude為語料庫中的每個文件生成簡潔的摘要,然後使用Clade對每個摘要與所問查詢的相關性進行排名。有關此方法的更多詳細信息,包括基於代碼的示例,請查看摘要指南中的摘要索引文件部分。

微調Claude以從您的數據集學習

另一種提高Claude生成摘要能力的高級技術是微調。微調涉及在特定符合您的法律摘要需求的自定義數據集上訓練Claude,確保Claude適應您的用例。以下是如何執行微調的概述:

  1. **識別錯誤:**首先收集Claude的摘要不足的實例 - 這可能包括遺漏關鍵法律細節、誤解上下文或使用不適當的法律術語。

  2. **策劃數據集:**一旦您識別了這些問題,編譯這些問題示例的數據集。該數據集應包括原始法律文件以及您更正的摘要,確保Claude學習所需的行為。

  3. **執行微調:**微調涉及在您策劃的數據集上重新訓練模型以調整其權重和參數。這種重新訓練幫助Claude更好地理解您的法律領域的特定要求,提高其根據您的標準摘要文件的能力。

  4. **迭代改進:**微調不是一次性過程。隨著Claude繼續生成摘要,您可以迭代地添加它表現不佳的新示例,進一步完善其能力。隨著時間的推移,這種持續的反饋循環將導致一個高度專業化的模型,適用於您的法律摘要任務。

微調目前僅通過Amazon Bedrock提供。更多詳情請參閱AWS發布博客

Was this page helpful?