跳到主要内容

Files API

Files API 让你上传图片,之后通过 file_id 引用。推荐在以下场景使用:

  • 在多个请求中复用同一张图片,无需重复上传。
  • 发送会超过 48 MiB 请求体限制或 32 MiB 单图内联限制的图片(见 图像理解:限制)。

上传的文件与 deepseek-v4-flash-vision-exp 模型配合使用。如何在对话请求中引用已上传的文件,请参考 图像理解

支持的格式:JPEG、PNG、GIF、WebP。格式由文件实际内容判断。

以下示例的 base_urlhttps://api.deepseek.com


上传文件

通过 multipart/form-data 请求向 POST /files 上传文件。单个文件最大 64 MiB,上传需在 10 分钟内完成。

表单字段:

字段是否必填说明
file要上传的图片文件。
purpose必须为 user_data
expires_after[anchor]若提供,必须为 created_at。需与 expires_after[seconds] 一起使用。
expires_after[seconds]有效期(秒),取值在 36002592000 之间(1 小时到 30 天)。不传这两个 expires_after 字段则文件永久有效。
from openai import OpenAI

client = OpenAI(api_key="<DeepSeek API Key>", base_url="https://api.deepseek.com")

with open("image.jpg", "rb") as f:
uploaded = client.files.create(file=f, purpose="user_data")

print(uploaded.id) # file-api-xxxxxxxxxxxxxxxx
curl https://api.deepseek.com/files \
-H "Authorization: Bearer <DeepSeek API Key>" \
-F purpose="user_data" \
-F file="@image.jpg"

响应描述了已存储的文件:

{
"id": "file-api-xxxxxxxxxxxxxxxx",
"object": "file",
"bytes": 102400,
"created_at": 1700000000,
"filename": "image.jpg",
"purpose": "user_data",
"expires_at": 1700003600
}

只有在上传时设置了有效期,expires_at 才会出现。


列出文件

files = client.files.list()
for f in files.data:
print(f.id, f.filename)
curl https://api.deepseek.com/files \
-H "Authorization: Bearer <DeepSeek API Key>"

查询参数:

参数说明
after用于分页的 file_id 游标;返回此文件之后的文件。
limit返回的文件数量,取值在 11000 之间。
order按创建时间排序:asc(默认)或 desc
purpose按用途过滤。仅支持 user_data

响应为分页列表:

{
"object": "list",
"data": [
{
"id": "file-api-xxxxxxxxxxxxxxxx",
"object": "file",
"bytes": 102400,
"created_at": 1700000000,
"filename": "image.jpg",
"purpose": "user_data"
}
],
"first_id": "file-api-xxxxxxxxxxxxxxxx",
"last_id": "file-api-xxxxxxxxxxxxxxxx",
"has_more": false
}

查询文件信息

info = client.files.retrieve("file-api-xxxxxxxxxxxxxxxx")
print(info.filename, info.bytes)
curl https://api.deepseek.com/files/file-api-xxxxxxxxxxxxxxxx \
-H "Authorization: Bearer <DeepSeek API Key>"

删除文件

client.files.delete("file-api-xxxxxxxxxxxxxxxx")
curl -X DELETE https://api.deepseek.com/files/file-api-xxxxxxxxxxxxxxxx \
-H "Authorization: Bearer <DeepSeek API Key>"
{
"id": "file-api-xxxxxxxxxxxxxxxx",
"object": "file",
"deleted": true
}

在对话请求中使用已上传的文件

使用 file 内容块引用返回的 file_id

response = client.chat.completions.create(
model="deepseek-v4-flash-vision-exp",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "这张图片里有什么?"},
{"type": "file", "file_id": "file-api-xxxxxxxxxxxxxxxx"},
],
}
],
)
print(response.choices[0].message.content)

文件归属于你的 API key,可被任一 API 家族引用。注意:通过 Anthropic 兼容 /messages 端点引用文件时需携带 anthropic-beta: files-api-2025-04-14 请求头。

与内联(base64)图片不同,通过 file_id 引用的文件不受 32 MiB 单图限制,请求中单张最大 64 MiB。

file 块也可以通过 file_data 以 base64 形式内联携带图片,替代 file_id(二者互斥)。使用 file_data 时还可设置 filenamefilename 不能与 file_id 同时出现。


Anthropic 兼容 Files API

同样的文件操作也可通过 Anthropic 兼容端点使用,base_urlhttps://api.deepseek.com/anthropic。所有请求必须带请求头 anthropic-beta: files-api-2025-04-14

端点位于 /anthropic/v1/ 路径下:Anthropic SDK 设置上述 base URL 时会自动补上 /v1;直接用 curl 等裸 HTTP 客户端时需要写完整路径。

这些端点(POST /anthropic/v1/filesGET /anthropic/v1/filesGET /anthropic/v1/files/{file_id}DELETE /anthropic/v1/files/{file_id})遵循 Anthropic Files API 的形态,与上文 OpenAI 兼容版本存在差异:

OpenAI 兼容Anthropic 兼容
列表分页afterafter_id / before_id(互斥)
列表 limit1–1000,默认 10001–1000,默认 20
列表 order / purpose支持不支持
列表顶层 object"list"
文件对象大小字段bytessize_bytes
文件对象类型字段objecttype
created_atUnix 时间戳(秒)RFC 3339 字符串
必需请求头anthropic-beta: files-api-2025-04-14

Anthropic 兼容端点返回的文件对象形如:

{
"id": "file-api-xxxxxxxxxxxxxxxx",
"type": "file",
"size_bytes": 102400,
"created_at": "2026-01-01T00:00:00+00:00",
"filename": "image.jpg",
"mime_type": "image/jpeg"
}

使用 after_id / before_id 游标列出文件:

curl "https://api.deepseek.com/anthropic/v1/files?limit=20" \
-H "x-api-key: <DeepSeek API Key>" \
-H "anthropic-beta: files-api-2025-04-14"
{
"data": [
{
"id": "file-api-xxxxxxxxxxxxxxxx",
"type": "file",
"size_bytes": 102400,
"created_at": "2026-01-01T00:00:00+00:00",
"filename": "image.jpg",
"mime_type": "image/jpeg"
}
],
"first_id": "file-api-xxxxxxxxxxxxxxxx",
"last_id": "file-api-xxxxxxxxxxxxxxxx",
"has_more": false
}

删除文件返回 { "id": "...", "type": "file_deleted" }


限制

限制项数值
支持的格式JPEG、PNG、GIF、WebP
单个上传文件最大大小64 MiB
文件名最大长度512 个字符
单用户最大存储空间25 GiB
单用户最大存储文件数10000
文件有效期范围1 小时到 30 天,或不传 expires_after 永久有效