mirror of
https://github.com/Piebald-AI/claude-code-system-prompts.git
synced 2026-05-30 05:35:24 +08:00
168 lines
4.0 KiB
Markdown
168 lines
4.0 KiB
Markdown
<!--
|
|
name: 'Data: Files API reference — Python'
|
|
description: Python Files API reference including file upload, listing, deletion, and usage in messages
|
|
ccVersion: 2.1.63
|
|
-->
|
|
# Files API — Python
|
|
|
|
The Files API uploads files for use in Messages API requests. Reference files via \`file_id\` in content blocks, avoiding re-uploads across multiple API calls.
|
|
|
|
**Beta:** Pass \`betas=["files-api-2025-04-14"]\` in your API calls (the SDK sets the required header automatically).
|
|
|
|
## Key Facts
|
|
|
|
- Maximum file size: 500 MB
|
|
- Total storage: 100 GB per organization
|
|
- Files persist until deleted
|
|
- File operations (upload, list, delete) are free; content used in messages is billed as input tokens
|
|
- Not available on Amazon Bedrock or Google Vertex AI
|
|
|
|
---
|
|
|
|
## Upload a File
|
|
|
|
\`\`\`python
|
|
import anthropic
|
|
|
|
client = anthropic.Anthropic()
|
|
|
|
uploaded = client.beta.files.upload(
|
|
file=("report.pdf", open("report.pdf", "rb"), "application/pdf"),
|
|
)
|
|
print(f"File ID: {uploaded.id}")
|
|
print(f"Size: {uploaded.size_bytes} bytes")
|
|
\`\`\`
|
|
|
|
---
|
|
|
|
## Use a File in Messages
|
|
|
|
### PDF / Text Document
|
|
|
|
\`\`\`python
|
|
response = client.beta.messages.create(
|
|
model="{{OPUS_ID}}",
|
|
max_tokens=1024,
|
|
messages=[{
|
|
"role": "user",
|
|
"content": [
|
|
{"type": "text", "text": "Summarize the key findings in this report."},
|
|
{
|
|
"type": "document",
|
|
"source": {"type": "file", "file_id": uploaded.id},
|
|
"title": "Q4 Report", # optional
|
|
"citations": {"enabled": True} # optional, enables citations
|
|
}
|
|
]
|
|
}],
|
|
betas=["files-api-2025-04-14"],
|
|
)
|
|
print(response.content[0].text)
|
|
\`\`\`
|
|
|
|
### Image
|
|
|
|
\`\`\`python
|
|
image_file = client.beta.files.upload(
|
|
file=("photo.png", open("photo.png", "rb"), "image/png"),
|
|
)
|
|
|
|
response = client.beta.messages.create(
|
|
model="{{OPUS_ID}}",
|
|
max_tokens=1024,
|
|
messages=[{
|
|
"role": "user",
|
|
"content": [
|
|
{"type": "text", "text": "What's in this image?"},
|
|
{
|
|
"type": "image",
|
|
"source": {"type": "file", "file_id": image_file.id}
|
|
}
|
|
]
|
|
}],
|
|
betas=["files-api-2025-04-14"],
|
|
)
|
|
\`\`\`
|
|
|
|
---
|
|
|
|
## Manage Files
|
|
|
|
### List Files
|
|
|
|
\`\`\`python
|
|
files = client.beta.files.list()
|
|
for f in files.data:
|
|
print(f"{f.id}: {f.filename} ({f.size_bytes} bytes)")
|
|
\`\`\`
|
|
|
|
### Get File Metadata
|
|
|
|
\`\`\`python
|
|
file_info = client.beta.files.retrieve_metadata("file_011CNha8iCJcU1wXNR6q4V8w")
|
|
print(f"Filename: {file_info.filename}")
|
|
print(f"MIME type: {file_info.mime_type}")
|
|
\`\`\`
|
|
|
|
### Delete a File
|
|
|
|
\`\`\`python
|
|
client.beta.files.delete("file_011CNha8iCJcU1wXNR6q4V8w")
|
|
\`\`\`
|
|
|
|
### Download a File
|
|
|
|
Only files created by the code execution tool or skills can be downloaded (not user-uploaded files).
|
|
|
|
\`\`\`python
|
|
file_content = client.beta.files.download("file_011CNha8iCJcU1wXNR6q4V8w")
|
|
file_content.write_to_file("output.txt")
|
|
\`\`\`
|
|
|
|
---
|
|
|
|
## Full End-to-End Example
|
|
|
|
Upload a document once, ask multiple questions about it:
|
|
|
|
\`\`\`python
|
|
import anthropic
|
|
|
|
client = anthropic.Anthropic()
|
|
|
|
# 1. Upload once
|
|
uploaded = client.beta.files.upload(
|
|
file=("contract.pdf", open("contract.pdf", "rb"), "application/pdf"),
|
|
)
|
|
print(f"Uploaded: {uploaded.id}")
|
|
|
|
# 2. Ask multiple questions using the same file_id
|
|
questions = [
|
|
"What are the key terms and conditions?",
|
|
"What is the termination clause?",
|
|
"Summarize the payment schedule.",
|
|
]
|
|
|
|
for question in questions:
|
|
response = client.beta.messages.create(
|
|
model="{{OPUS_ID}}",
|
|
max_tokens=1024,
|
|
messages=[{
|
|
"role": "user",
|
|
"content": [
|
|
{"type": "text", "text": question},
|
|
{
|
|
"type": "document",
|
|
"source": {"type": "file", "file_id": uploaded.id}
|
|
}
|
|
]
|
|
}],
|
|
betas=["files-api-2025-04-14"],
|
|
)
|
|
print(f"\\nQ: {question}")
|
|
print(f"A: {response.content[0].text[:200]}")
|
|
|
|
# 3. Clean up when done
|
|
client.beta.files.delete(uploaded.id)
|
|
\`\`\`
|