컨테이너 파일 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)
- Containers API — 컨테이너 관리
- Code Interpreter Guide — LiteLLM으로 Code Interpreter 사용하기