Claude Files API 完整指南:檔案上傳、管理與跨請求引用的實戰解析


Files API 讓開發者能夠上傳和管理檔案,在 Claude API 中使用而無需每次請求都重新上傳。這對於需要重複使用的文件、搭配 Code Execution 處理資料集,以及與 Agent Skills 協作時特別有用。本文將完整解析 Files API 的使用方式、檔案類型對應、儲存限制與最佳實踐。

一、核心概念

Files API 提供「上傳一次、多次使用」的檔案管理模式:

  • 上傳檔案到 Anthropic 的安全儲存空間,取得唯一的 file_id
  • 在 Messages 請求中透過 file_id 引用檔案
  • 下載由 Skills 或 Code Execution 產生的輸出檔案
  • 透過 list、retrieve、delete 操作管理檔案

目前為 Beta 功能,需要在請求中加入 beta header:anthropic-beta: files-api-2025-04-14

二、檔案上傳

基本上傳

import anthropic

client = anthropic.Anthropic()
file = client.beta.files.upload(
    file=("document.pdf", open("/path/to/document.pdf", "rb"), "application/pdf"),
)
print(file.id)  # file_011CNha8iCJcU1wXNR6q4V8w

上傳回應包含:

{
  "id": "file_011CNha8iCJcU1wXNR6q4V8w",
  "type": "file",
  "filename": "document.pdf",
  "mime_type": "application/pdf",
  "size_bytes": 1024000,
  "created_at": "2025-01-01T00:00:00Z",
  "downloadable": false
}

downloadable 欄位指示檔案是否可下載。只有由 Skills 或 Code Execution 產生的檔案才可下載,使用者上傳的檔案不可下載。

三、在 Messages 中引用檔案

檔案類型與 Content Block 對應

檔案類型MIME TypeContent Block使用場景
PDFapplication/pdfdocument文字分析、文件處理
純文字text/plaindocument文字分析、處理
圖片image/jpeg, image/png, image/gif, image/webpimage圖片分析、視覺任務
資料集等多種container_upload資料分析、視覺化

Document Block(PDF 和文字檔)

{
  "type": "document",
  "source": {
    "type": "file",
    "file_id": "file_011CNha8iCJcU1wXNR6q4V8w"
  },
  "title": "文件標題",
  "context": "文件背景說明",
  "citations": {"enabled": true}
}

支援的選用欄位:

  • title:文件標題
  • context:提供文件的背景說明
  • citations:啟用引用功能,Claude 會標註回應中引用的來源段落

Image Block(圖片檔)

{
  "type": "image",
  "source": {
    "type": "file",
    "file_id": "file_011CPMxVD3fHLUhvTqtsQA5w"
  }
}

完整使用範例

response = client.beta.messages.create(
    model="claude-opus-4-6",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "Please summarize this document."},
                {
                    "type": "document",
                    "source": {
                        "type": "file",
                        "file_id": "file_011CNha8iCJcU1wXNR6q4V8w",
                    },
                },
            ],
        }
    ],
    betas=["files-api-2025-04-14"],
)

處理其他檔案格式

對於不直接支援為 document block 的檔案類型(.csv、.md、.docx、.xlsx),建議將檔案轉換為純文字後直接包含在訊息中:

import pandas as pd

df = pd.read_csv("data.csv")
csv_content = df.to_string()

response = client.messages.create(
    model="claude-opus-4-6",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": f"Here's the CSV data:\n\n{csv_content}\n\nPlease analyze.",
        }
    ],
)

對於包含圖片的 .docx 檔案,建議先轉換為 PDF 格式,再利用 PDF Support 的內建圖片解析功能。

四、檔案管理操作

列出檔案

files = client.beta.files.list()

取得檔案 metadata

file = client.beta.files.retrieve_metadata("file_011CNha8iCJcU1wXNR6q4V8w")

刪除檔案

result = client.beta.files.delete("file_011CNha8iCJcU1wXNR6q4V8w")

下載檔案

只有由 Skills 或 Code Execution 產生的檔案才可下載:

file_content = client.beta.files.download("file_011CNha8iCJcU1wXNR6q4V8w")

with open("downloaded_file.txt", "w") as f:
    f.write(file_content.decode("utf-8"))

五、儲存限制與生命週期

儲存限制

項目限制
單一檔案大小上限500 MB
組織總儲存空間100 GB

檔案生命週期

  • 檔案的範圍為 API key 所屬的 workspace,同一 workspace 的其他 API key 可以使用
  • 檔案持續存在直到手動刪除
  • 刪除的檔案無法恢復
  • 刪除後很快就無法透過 API 存取,但可能仍在進行中的 Messages API 呼叫中可用
  • 檔案刪除依照 Anthropic 的資料保留政策執行

檔案名稱規範

  • 長度:1-255 個字元
  • 禁止字元:<>:"|?*\/,以及 unicode 字元 0-31

六、錯誤處理

錯誤HTTP 狀態碼原因
File not found404file_id 不存在或無存取權限
Invalid file type400檔案類型與 content block 不匹配
Exceeds context window400檔案大於 context window 大小
Invalid filename400檔名不符合規範
File too large413檔案超過 500 MB 限制
Storage limit exceeded403組織已達 100 GB 儲存上限

七、計費

Files API 操作本身免費:

  • 上傳、下載、列出、取得 metadata、刪除都不收費

在 Messages 請求中使用的檔案內容按 input tokens 計費。

速率限制

Beta 期間,檔案相關 API 呼叫限制約為每分鐘 100 次請求。

八、支援的模型

在 Messages 請求中引用 file_id 支援所有能處理對應檔案類型的模型:

  • 圖片:所有 Claude 3+ 模型
  • PDF:所有 Claude 3.5+ 模型
  • 其他檔案類型(透過 Code Execution):Claude Haiku 4.5 和所有 Claude 3.7+ 模型

目前 Files API 不支援 Amazon Bedrock 或 Google Vertex AI。

總結

Files API 提供了簡潔的檔案管理解決方案,讓開發者能夠「上傳一次、多次使用」,特別適合搭配 Code Execution 進行資料分析、與 Agent Skills 協作處理文件,以及需要在多次 API 呼叫中重複引用相同文件的場景。雖然目前仍為 Beta 功能,但其「操作免費、按使用 token 計費」的定價模式和 500 MB 的單檔上限,已經足以覆蓋大多數實際應用場景。