ChinaModelAPI

가이드 / DeepSeek Files API

가이드 · 2026-08-21 api-docs.deepseek.com 기준 검증 완료

DeepSeek Files API (2026): 제한 사항, 업로드 및 file_id 실전 활용

DeepSeek는 비전 모델과 함께 2026년 8월 21일 첫 파일 엔드포인트를 조용히 출시했습니다. 이로 인해 많은 기존 가이드가 구버전이 되었습니다(일부는 여전히 DeepSeek API에 "파일 업로드 경로가 없다"고 안내함). 이 가이드에서는 검증된 제한 사항, curl 및 Python 업로드/참조 예제, base64 대신 파일을 사용하는 시점을 다룹니다.

핵심 결론

DeepSeek Files API는 이미지를 한 번 업로드하고 채팅에서 참조할 수 있는 file_id를 반환합니다. purpose="user_data"로 업로드하며, 파일 크기는 최대 64 MiB(10분 업로드 제한 시간)까지 지원됩니다. 저장 용량은 사용자당 25 GiB / 10,000개 파일이며, 보관 기간은 1시간~30일 또는 expires_after를 지정하지 않을 경우 영구 보관됩니다. deepseek-v4-flash-vision-exp 채팅에서는 {"type":"file","file_id":...} 블록을 통해 파일을 참조합니다. 인라인 이미지가 32 MiB인 것에 비해 file_id 이미지는 요청당 최대 64 MiB까지 가능합니다. Anthropic 호환 엔드포인트를 사용할 때는 anthropic-beta: files-api-2025-04-14 헤더를 추가하세요.

한눈에 보는 제한 사항

제한 항목값 (공식 문서 기준, 2026-08-21)
지원 형식JPEG, PNG, GIF, WebP — 확장자가 아닌 파일 콘텐츠 기반 감지
파일당최대 64 MiB; 업로드는 10분 이내에 완료되어야 함
사용자당25 GiB 저장 용량; 10,000개 파일 저장
보관 기간1시간~30일 또는 영구 보관 (expires_after 생략 시)
용도 (Purpose)user_data여야 함 (유일하게 지원되는 purpose, 목록 필터링에도 사용)
요청 내 크기file_id 이미지는 요청당 최대 64 MiB; 인라인 base64/URL 이미지는 최대 32 MiB로 제한
API 호환성OpenAI 호환 및 Anthropic 호환; Anthropic /messages 사용 시 files-api 베타 헤더 필요

출처: 공식 Files API 가이드, 2026-08-21 확인.

한 번 업로드하고 계속 참조 (최대 30일)

스크린샷을 업로드하고 file_id 받기:

curl https://api.deepseek.com/files \
  -H "Authorization: Bearer $DEEPSEEK_API_KEY" \
  -F "purpose=user_data" \
  -F "file=@dashboard.png"

그런 다음 vision-exp 채팅에서 참조 — base64 데이터 불필요, 후속 턴에서 재업로드 불필요:

curl https://api.deepseek.com/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $DEEPSEEK_API_KEY" \
  -d '{
    "model": "deepseek-v4-flash-vision-exp",
    "messages": [{
      "role": "user",
      "content": [
        {"type": "text", "text": "Which metric regressed in this dashboard?"},
        {"type": "file", "file_id": "file-api-xxxx"}
      ]
    }]
  }'

OpenAI SDK를 사용하는 Python — 업로드 후 채팅:

from openai import OpenAI

client = OpenAI(api_key="YOUR_KEY", base_url="https://api.deepseek.com")

f = client.files.create(file=open("dashboard.png", "rb"), purpose="user_data")

resp = client.chat.completions.create(
    model="deepseek-v4-flash-vision-exp",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "Which metric regressed?"},
            {"type": "file", "file_id": f.id},
        ],
    }],
)
print(resp.choices[0].message.content)
  • 인라인 대안: 파일 블록은 file_id 대신 file_data(base64)를 포함할 수 있습니다 — 상호 배타적 필드; filename은 file_data와 함께만 사용할 수 있습니다.
  • Anthropic 스타일 스택: anthropic-beta: files-api-2025-04-14 헤더를 사용하면 /messages에서도 동일한 파일 블록이 작동합니다.

파일 vs base64 vs URL 사용 시점

방식최대 크기추천 용도
base64 인라인32 MiB프로세스 내에서 생성된 일회성 이미지; 구현이 가장 간단함
외부 URL32 MiB, 8,192자 URL, 60초 가져오기공개 호스팅된 이미지; 별도 업로드 단계 없음
Files API64 MiB에이전트 스크린샷 루프, 반복 참조 이미지, 여러 턴에 걸쳐 재사용되는 모든 항목

FAQ

DeepSeek에 파일 엔드포인트가 없다고 들었는데 — 새로 나온 건가요?

2026년 8월 21일까지는 맞았습니다 — "/v1/files 라우트가 없으니 직접 텍스트를 추출하라"고 설명하던 이전 가이드는 당시에는 정확했으나 현재는 구버전입니다. Files API는 비전 모델 출시와 함께 제공되었습니다.

PDF나 문서를 업로드할 수 있나요?

아니요 — Files API는 현재 이미지 형식(JPEG/PNG/GIF/WebP)만 지원합니다. PDF의 경우 호출 측에서 페이지를 이미지로 렌더링한 후 업로드하거나 인라인으로 전달하세요.

파일 보관 기간은 얼마나 되나요?

25 GiB / 10,000개 파일 한도 내에서 expires_after를 통해 1시간에서 30일 사이로 설정하거나, 생략 시 영구 보관됩니다.

비전 모델이 아닌 모델에서도 파일이 작동하나요?

파일 블록은 deepseek-v4-flash-vision-exp에서 처리되며, 일반 V4-Flash/V4-Pro는 텍스트 전용으로 유지됩니다. 텍스트 모델에는 파일 참조를 지정하지 마세요.

관련 항목