Files API 让您可以上传和管理文件,以便与 Claude API 一起使用,而无需在每次请求时重新上传内容。这在使用代码执行工具提供输入(例如数据集和文档)然后下载输出(例如图表)时特别有用。除了本指南之外,您还可以直接浏览 API 参考。
Files API 目前处于测试阶段。请通过反馈表单分享您使用 Files API 的体验。
关于 "zero data retention"(零数据保留),即 ZDR 如何适用于此功能,请参阅 API 与数据保留。
在 Messages 请求中引用 file_id 在所有支持给定文件类型的模型上均受支持。图像在所有当前的 Claude 模型上均受支持。对于 PDF 和代码执行工具支持的其他文件类型,请参阅链接页面了解模型支持情况。
Files API 可在 Claude API、Claude Platform on AWS 和 Microsoft Foundry 上使用。在 Microsoft Foundry 上,Files API 需要 Hosted on Anthropic 部署。目前在 Amazon Bedrock 或 Google Cloud 上不可用。
Files API 提供了一种一次创建、多次使用的文件处理方式:
file_idfile_id 引用文件,而无需重新上传内容要使用 Files API,您需要包含测试版功能标头:anthropic-beta: files-api-2025-04-14。当您调用 beta.files 命名空间上的方法时,SDK 会自动添加此标头,因此本页面上的 SDK 示例在文件操作中不会显式传递它。引用文件的 Messages 请求确实需要它,SDK 示例通过其 betas 参数传递。
上传文件以便在未来的 API 调用中引用:
uploaded = client.beta.files.upload(
file=("document.pdf", open("/path/to/document.pdf", "rb"), "application/pdf"),
)
file_id = uploaded.id
print(file_id)上传文件的响应包括:
{
"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 为 false。只有由技能或代码执行工具创建的文件才能被下载。请参阅下载文件。
上传后,通过将上传响应中的 id 作为 file_id 传递来引用该文件:
response = client.beta.messages.create(
model="claude-opus-5",
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 | 分析数据、创建可视化 |
对于 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"
}
}要将文件发送到代码执行工具,请使用 container_upload 内容块:
{
"type": "container_upload",
"file_id": "file_011CNha8iCJcU1wXNR6q4V8w"
}对于 document 块不支持的文件类型(例如 .docx 和 .xlsx),请将文件转换为纯文本并将内容直接包含在您的消息中。已经是纯文本的文件(如 .csv 和 .md 文件)既可以通过这种方式读取,也可以通过 Files API 以显式的 text/plain 内容类型上传。如果要分析数据集而不是将其作为文本读取,请使用 container_upload 块将它们上传给代码执行工具。
以下示例读取一个文本文件并将其内容作为纯文本发送:
client = anthropic.Anthropic()
# 读取文本文件
with open("document.txt") as f:
text_content = f.read()
response = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": f"Here's the document content:\n\n{text_content}\n\nPlease summarize this document.",
}
],
}
],
)
for block in response.content:
if block.type == "text":
print(block.text)对于包含图像的 .docx 文件,请先将其转换为 PDF 格式,然后使用 PDF 支持来利用内置的图像解析功能。这样可以使用来自 PDF 文档的引用。
检索您已上传文件的列表。该端点是分页的:每个请求最多返回 limit 个文件(默认为 20 个),before_id 和 after_id 参数用于获取相邻页面。请参阅 List Files API 参考。SDK 返回第一页并提供自动分页辅助工具。CLI 示例使用 --max-items 限制总数:
client = anthropic.Anthropic()
files = client.beta.files.list()
print(files)检索特定文件的信息:
file = client.beta.files.retrieve_metadata(file_id)
print(file)从您的工作区中移除文件:
client.beta.files.delete(file_id)下载由技能或代码执行工具创建的文件。您上传的文件无法下载。生成文件的 file_id 会出现在创建它的 Messages 响应的 bash_code_execution_tool_result 内容块中:
file_content = client.beta.files.download(file_id)
file_content.write_to_file("downloaded_file.txt")只有当文件的元数据显示 "downloadable": true 时,该文件才可下载,这适用于由技能或代码执行工具创建的文件。下载您上传的文件会返回 400 错误。
DELETE /v1/files/{file_id} 端点删除它们使用 Files API 时的常见错误包括:
file_id 不存在或您无权访问它"downloadable": false 且无法下载。只有由技能或代码执行工具创建的文件才能被下载/v1/messages 请求中使用 500 MB 的纯文本文件)<、>、:、"、|、?、*、\、/ 或 Unicode 字符 0-31){
"type": "error",
"error": {
"type": "not_found_error",
"message": "File `file_011CNha8iCJcU1wXNR6q4V8w` not found."
},
"request_id": "req_011CQFYcrRp7mCHLDsAYT8Qt"
}Files API 操作是免费的:
在 Messages 请求中使用的文件内容按输入令牌计费。
在测试期间:
使用 Claude 处理 PDF。从您的文档中提取文本、分析图表并理解视觉内容。
在沙盒容器中运行 Python 和 bash 代码,以分析数据、生成文件并迭代解决方案。
处理和分析视觉输入,并从图像生成文本和代码。
Was this page helpful?