Files API 允许您上传和管理文件,以便在 Claude API 中使用,而无需在每次请求时重新上传内容。这在使用代码执行工具时特别有用,可以提供输入(例如数据集和文档),然后下载输出(例如图表)。您还可以使用 Files API 避免在多个 API 调用中反复重新上传常用的文档和图片。除了本指南外,您还可以直接查阅 API 参考文档。
Files API 目前处于测试阶段。请通过反馈表单与我们分享您使用 Files API 的体验。
此功能不符合零数据保留(ZDR)的条件。数据将根据该功能的标准保留策略进行保留。
在 Messages 请求中引用 file_id 的功能在所有支持相应文件类型的模型上均可用。图片在所有当前的 Claude 模型上均受支持。对于 PDF 和代码执行工具支持的其他文件类型,请参阅链接页面了解模型支持情况。
Files API 可在 Claude API、AWS 上的 Claude Platform 和 Microsoft Foundry 上使用。目前在 Amazon Bedrock 或 Vertex AI 上不可用。
Files API 提供了一种简单的"一次创建,多次使用"的文件处理方式:
file_idfile_id 引用文件,而无需重新上传内容要使用 Files API,您需要包含测试版功能标头:anthropic-beta: files-api-2025-04-14。
上传文件以便在后续 API 调用中引用:
uploaded = client.beta.files.upload(
file=("document.pdf", open("/path/to/document.pdf", "rb"), "application/pdf"),
)上传文件的响应将包含:
{
"id": "file_011CNha8iCJcU1wXNR6q4V8w",
"type": "file",
"filename": "document.pdf",
"mime_type": "application/pdf",
"size_bytes": 1024000,
"created_at": "2025-01-01T00:00:00Z",
"downloadable": false
}上传后,使用文件的 file_id 引用该文件:
response = client.beta.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Please summarize this document for me."},
{
"type": "document",
"source": {
"type": "file",
"file_id": file_id,
},
},
],
}
],
betas=["files-api-2025-04-14"],
)
print(response)Files API 支持不同的文件类型,对应不同的内容块类型:
| 文件类型 | MIME 类型 | 内容块类型 | 使用场景 |
|---|---|---|---|
application/pdf | document | 文本分析、文档处理 | |
| 纯文本 | text/plain | document | 文本分析、处理 |
| 图片 | image/jpeg、image/png、image/gif、image/webp | image | 图像分析、视觉任务 |
| 数据集及其他 | 多种类型 | container_upload | 分析数据、创建可视化图表 |
对于不支持作为 document 块的文件类型(.csv、.txt、.md、.docx、.xlsx),请将文件转换为纯文本,并将内容直接包含在您的消息中:
import pandas as pd
# 示例:读取 CSV 文件
df = pd.read_csv("data.csv")
csv_content = df.to_string()
# 作为纯文本在消息中发送
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": f"Here's the CSV data:\n\n{csv_content}\n\nPlease analyze this data.",
}
],
}
],
)
print(response.content[0].text)对于包含图片的 .docx 文件,请先将其转换为 PDF 格式,然后使用 PDF 支持以利用内置的图片解析功能。这样可以使用来自 PDF 文档的引用。
对于 PDF 和文本文件,请使用 document 内容块:
{
"type": "document",
"source": {
"type": "file",
"file_id": "file_011CNha8iCJcU1wXNR6q4V8w"
},
"title": "Document Title", // Optional
"context": "Context about the document", // Optional
"citations": { "enabled": true } // Optional, enables citations
}对于图片,请使用 image 内容块:
{
"type": "image",
"source": {
"type": "file",
"file_id": "file_011CPMxVD3fHLUhvTqtsQA5w"
}
}检索您已上传文件的列表:
client = anthropic.Anthropic()
files = client.beta.files.list()检索特定文件的信息:
file = client.beta.files.retrieve_metadata(file_id)从您的工作区中移除文件:
result = client.beta.files.delete(file_id)下载由技能或代码执行工具创建的文件:
file_content = client.beta.files.download(file_id)
# Save to file
file_content.write_to_file("downloaded_file.txt")Messages API 调用及相关工具使用中继续存在通过 Files API 上传的文件会一直保留,直到使用 DELETE /v1/files/{file_id} 端点显式删除。文件会被存储以便在多个 API 请求中重复使用。
有关所有功能的 ZDR 资格,请参阅 API 和数据保留。
使用 Files API 时的常见错误包括:
file_id 不存在,或您无权访问该文件/v1/messages 请求中使用 500 MB 的纯文本文件)<、>、:、"、|、?、*、\、/ 或 Unicode 字符 0-31){
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "File not found: file_011CNha8iCJcU1wXNR6q4V8w"
}
}文件 API 操作是免费的:
在 Messages 请求中使用的文件内容按输入令牌计费。您只能下载由技能或代码执行工具创建的文件。
在测试期间:
Was this page helpful?