进阶 api-docs.deepseek.com 2026-10-13 22:45:35 · 22 阅读

第11章 Files API:文件上传与管理指南

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

  • 多请求复用同一张图片,无需重复上传。
  • 发送超出 48 MiB 请求体限制或 32 MiB 单图内联限制的图片(参见 Vision: Limits)。

上传的文件配合 deepseek-flash 模型使用。如何在对话请求中引用已上传的文件,参见 Vision。

支持的格式:JPEG、PNG、GIF 和 WebP。格式根据文件实际内容自动识别。

下文示例的 base_url 为 https://api.deepseek.com。

Upload a File​

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

表单字段:

字段必填说明
file是要上传的图片文件。
purpose是必须为 user_data。
expires_after[anchor]否如提供,必须为 created_at。需与 expires_after[seconds] 搭配使用。
expires_after[seconds]否文件有效期(秒),取值 3600 到 2592000(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。

List Files​

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返回的文件数量,取值 1 到 1000。
order按创建时间排序:asc(默认)或 desc。
purpose按 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 "
删除文件​ client.files.delete("file-api-xxxxxxxxxxxxxxxx")
curl -X DELETE https://api.deepseek.com/files/file-api-xxxxxxxxxxxxxxxx \
-H "Authorization: Bearer "
{
"id": "file-api-xxxxxxxxxxxxxxxx",
"object": "file",
"deleted": true
}
在聊天请求中使用已上传的文件​ 通过 file 内容块引用返回的 file_id: response = client.chat.completions.create(
model="deepseek-flash",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "What is in this image?"},
{"type": "file", "file_id": "file-api-xxxxxxxxxxxxxxxx"},
],
}
],
)
print(response.choices[0].message.content)
文件归属于你的 API 密钥,可被任一 API 体系引用。请注意,若要通过 Anthropic 兼容的 /messages 端点引用文件,必须携带 `anthropic-beta: files-api-2025-04-14` 请求头。 与内联(base64)图片不同,通过 `file_id` 引用的文件不受单张 32 MiB 的限制——单次请求中,`file_id` 图片最大可达 64 MiB。 文件块也可以 `file_data` 字段内联传输 base64 图片,替代 `file_id`(两者互斥)。使用 `file_data` 时可同时设置 `filename`;但若使用 `file_id`,则不允许指定 `filename`。 Anthropic 兼容的 Files API 相同的文件操作也可通过 Anthropic 兼容端点访问,其 base_url 为 `https://api.deepseek.com/anthropic`。所有请求均需包含 `anthropic-beta: files-api-2025-04-14` 请求头。 这些端点位于 /anthropic/v1/ 路径下:若使用 Anthropic SDK 并指向上述 base URL,它会自动附加 /v1 后缀;但若使用纯 HTTP 客户端(如 curl),则需手动写完整路径。 端点包括(POST /anthropic/v1/files、GET /anthropic/v1/files、GET /anthropic/v1/files/{file_id}、DELETE /anthropic/v1/files/{file_id}),其结构遵循 Anthropic Files API 规范,与上文所述的 OpenAI 兼容版本存在以下差异: OpenAI 兼容 | Anthropic 兼容 列表分页 | `after` | `after_id` / `before_id`(互斥) 列表上限 | 1–1000,默认 1000 | 1–1000,默认 20 列表排序 / 用途 | 支持 | 不支持 列表顶层对象 | `"list"` | 无 文件对象大小字段 | `bytes` | `size_bytes` 文件对象类型字段 | `object` | `type` `created_at` | Unix 时间戳(秒) | 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: " \
-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)

评论 (0)