컨테이너 파일 API

컨테이너 파일 API (Container Files API)

Code Interpreter 컨테이너 내에서 파일을 관리해요. 파일은 코드 인터프리터가 출력(차트, CSV, 이미지 등)을 생성할 때 자동으로 만들어집니다.

Code Interpreter를 사용하는 방법이 궁금하다면 Code Interpreter Guide 를 참고하세요.

기능 지원
비용 추적 (Cost Tracking)
로깅 (Logging)
지원 프로바이더 openai

엔드포인트

엔드포인트 메서드 설명
/v1/containers/{container_id}/files POST 컨테이너에 파일 업로드
/v1/containers/{container_id}/files GET 컨테이너의 파일 목록
/v1/containers/{container_id}/files/{file_id} GET 파일 메타데이터 가져오기
/v1/containers/{container_id}/files/{file_id}/content GET 파일 콘텐츠 다운로드
/v1/containers/{container_id}/files/{file_id} DELETE 파일 삭제

출처: 문서

본문

LiteLLM Python SDK

컨테이너 파일 업로드

컨테이너 세션에 직접 파일을 업로드해요. /chat/completions 또는 /responses가 파일을 컨테이너로 보낼 때 입력 파일 타입이 PDF로 제한되어 있어요. 이 엔드포인트는 CSV, Excel, Python 스크립트 같은 다른 파일 타입을 다루게 해 줍니다.

from litellm import upload_container_file

# Upload a CSV file
file = upload_container_file(
    container_id="cntr_123...",
    file=("data.csv", open("data.csv", "rb").read(), "text/csv"),
    custom_llm_provider="openai"
)

print(f"Uploaded: {file.id}")
print(f"Path: {file.path}")

비동기:

from litellm import aupload_container_file

file = await aupload_container_file(
    container_id="cntr_123...",
    file=("script.py", b"print('hello world')", "text/x-python"),
    custom_llm_provider="openai"
)

지원되는 파일 형식:

  • CSV (.csv)
  • Excel (.xlsx)
  • Python 스크립트 (.py)
  • JSON (.json)
  • Markdown (.md)
  • 텍스트 파일 (.txt)
  • 그리고 더 많은 것들...

컨테이너 파일 목록

from litellm import list_container_files

files = list_container_files(
    container_id="cntr_123...",
    custom_llm_provider="openai"
)

for file in files.data:
    print(f"  - {file.id}: {file.filename}")

비동기:

from litellm import alist_container_files

files = await alist_container_files(
    container_id="cntr_123...",
    custom_llm_provider="openai"
)

컨테이너 파일 가져오기

from litellm import retrieve_container_file

file = retrieve_container_file(
    container_id="cntr_123...",
    file_id="cfile_456...",
    custom_llm_provider="openai"
)

print(f"File: {file.filename}")
print(f"Size: {file.bytes} bytes")

파일 콘텐츠 다운로드

from litellm import retrieve_container_file_content

content = retrieve_container_file_content(
    container_id="cntr_123...",
    file_id="cfile_456...",
    custom_llm_provider="openai"
)

# content is raw bytes
with open("output.png", "wb") as f:
    f.write(content)

컨테이너 파일 삭제

from litellm import delete_container_file

result = delete_container_file(
    container_id="cntr_123...",
    file_id="cfile_456...",
    custom_llm_provider="openai"
)

print(f"Deleted: {result.deleted}")

LiteLLM AI Gateway (Proxy)

파일 업로드

  • OpenAI SDK
  • curl
from openai import OpenAI

client = OpenAI(
    api_key="sk-<your-litellm-api-key>",
    base_url="http://localhost:4000"
)

file = client.containers.files.create(
    container_id="cntr_123...",
    file=open("data.csv", "rb")
)

print(f"Uploaded: {file.id}")
print(f"Path: {file.path}")
curl "http://localhost:4000/v1/containers/cntr_123.../files" \
    -H "Authorization: Bearer ***" \
    -F file="@data.csv"

파일 목록

  • OpenAI SDK
  • curl
from openai import OpenAI

client = OpenAI(
    api_key="sk-<your-litellm-api-key>",
    base_url="http://localhost:4000"
)

files = client.containers.files.list(
    container_id="cntr_123..."
)

for file in files.data:
    print(f"  - {file.id}: {file.filename}")
curl "http://localhost:4000/v1/containers/cntr_123.../files" \
    -H "Authorization: Bearer ***"

파일 메타데이터 가져오기

  • OpenAI SDK
  • curl
from openai import OpenAI

client = OpenAI(
    api_key="sk-<your-litellm-api-key>",
    base_url="http://localhost:4000"
)

file = client.containers.files.retrieve(
    container_id="cntr_123...",
    file_id="cfile_456..."
)

print(f"File: {file.filename}")
print(f"Size: {file.bytes} bytes")
curl "http://localhost:4000/v1/containers/cntr_123.../files/cfile_456..." \
    -H "Authorization: Bearer ***"

파일 콘텐츠 다운로드

  • OpenAI SDK
  • curl
from openai import OpenAI

client = OpenAI(
    api_key="sk-<your-litellm-api-key>",
    base_url="http://localhost:4000"
)

content = client.containers.files.content(
    container_id="cntr_123...",
    file_id="cfile_456..."
)

with open("output.png", "wb") as f:
    f.write(content.read())
curl "http://localhost:4000/v1/containers/cntr_123.../files/cfile_456.../content" \
    -H "Authorization: Bearer ***" \
    --output downloaded_file.png

파일 삭제

  • OpenAI SDK
  • curl
from openai import OpenAI

client = OpenAI(
    api_key="sk-<your-litellm-api-key>",
    base_url="http://localhost:4000"
)

result = client.containers.files.delete(
    container_id="cntr_123...",
    file_id="cfile_456..."
)

print(f"Deleted: {result.deleted}")
curl -X DELETE "http://localhost:4000/v1/containers/cntr_123.../files/cfile_456..." \
    -H "Authorization: Bearer ***"

파라미터

파일 업로드

파라미터 타입 필수 설명
container_id string 컨테이너 ID
file FileTypes 업로드할 파일. (filename, content, content_type) 튜플, 파일류 객체, 또는 bytes일 수 있음

파일 목록

파라미터 타입 필수 설명
container_id string 컨테이너 ID
after string 아니요 페이지네이션 커서
limit integer 아니요 반환할 항목 수 (1-100, 기본: 20)
order string 아니요 정렬 순서: asc 또는 desc

파일 가져오기/삭제

파라미터 타입 필수 설명
container_id string 컨테이너 ID
file_id string 파일 ID

응답 객체

ContainerFileObject

{
  "id": "cfile_456...",
  "object": "container.file",
  "container_id": "cntr_123...",
  "bytes": 12345,
  "created_at": 1234567890,
  "filename": "chart.png",
  "path": "/mnt/data/chart.png",
  "source": "code_interpreter"
}

ContainerFileListResponse

{
  "object": "list",
  "data": [...],
  "first_id": "cfile_456...",
  "last_id": "cfile_789...",
  "has_more": false
}

DeleteContainerFileResponse

{
  "id": "cfile_456...",
  "object": "container.file.deleted",
  "deleted": true
}

지원 프로바이더

프로바이더 상태
OpenAI ✅ 지원

더 알아보기 (Learn more)