Files API позволяет загружать файлы и управлять ими для использования с Claude API без повторной загрузки содержимого при каждом запросе. Это особенно полезно при работе с инструментом выполнения кода для предоставления входных данных (например, наборов данных и документов) и последующего скачивания результатов (например, диаграмм). В дополнение к этому руководству вы можете изучить справочник по API напрямую.
Ссылка на file_id в запросе Messages поддерживается во всех моделях, которые поддерживают данный тип файла. Изображения поддерживаются во всех текущих моделях Claude. Информацию о поддержке моделями PDF-файлов и других типов файлов с инструментом выполнения кода см. на страницах по ссылкам.
Files API реализует подход «создать один раз, использовать многократно» для работы с файлами:
file_idfile_id вместо повторной загрузки содержимогоЗагрузите файл, чтобы ссылаться на него в будущих вызовах API:
uploaded = client.files.upload(
file=("document.pdf", open("/path/to/document.pdf", "rb"), "application/pdf"),
)
file_id = uploaded.id
print(file_id)Ответ на загрузку файла включает:
{
"id": "file_011CNha8iCJcU1wXNR6q4V8w",
"type": "file",
"filename": "document.pdf",
"mime_type": "application/pdf",
"size_bytes": 1024000,
"created_at": "2025-01-01T00:00:00Z",
"downloadable": false
}Поле downloadable имеет значение false для загруженных вами файлов. Скачивать можно только файлы, созданные навыками или инструментом выполнения кода. См. раздел Скачивание файла.
После загрузки ссылайтесь на файл, передавая id из ответа на загрузку в качестве file_id:
response = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Please summarize this document for me."},
{
"type": "document",
"source": {
"type": "file",
"file_id": file_id,
},
},
],
}
],
)
print(response)Files API поддерживает различные типы файлов, которые соответствуют разным типам блоков содержимого:
| Тип файла | MIME-тип | Тип блока содержимого | Сценарий использования |
|---|---|---|---|
application/pdf | document | Анализ текста, обработка документов | |
| Простой текст | text/plain | document | Анализ текста, обработка |
| Изображения | image/jpeg, image/png, image/gif, image/webp | image | Анализ изображений, визуальные задачи |
| Наборы данных, другие | Различные | container_upload | Анализ данных, создание визуализаций |
Для PDF-файлов и текстовых файлов используйте блок содержимого document:
{
"type": "document",
"source": {
"type": "file",
"file_id": "file_011CNha8iCJcU1wXNR6q4V8w"
},
"title": "Document Title", // Optional
"context": "Context about the document", // Optional
"citations": { "enabled": true } // Optional, enables citations
}Для изображений используйте блок содержимого image:
{
"type": "image",
"source": {
"type": "file",
"file_id": "file_011CPMxVD3fHLUhvTqtsQA5w"
}
}Чтобы отправить файл в инструмент выполнения кода, используйте блок содержимого container_upload:
{
"type": "container_upload",
"file_id": "file_011CNha8iCJcU1wXNR6q4V8w"
}Для типов файлов, которые блок document не поддерживает (например, .docx и .xlsx), преобразуйте файлы в простой текст и включите содержимое непосредственно в ваше сообщение. Файлы, которые уже являются простым текстом, такие как .csv и .md, можно либо прочитать таким способом, либо загрузить через Files API с явным указанием типа содержимого text/plain. Чтобы анализировать наборы данных, а не читать их как текст, загрузите их для инструмента выполнения кода, используя блок container_upload.
Следующие примеры читают текстовый файл и отправляют его содержимое как простой текст:
client = anthropic.Anthropic()
# Чтение текстового файла
with open("document.txt") as f:
text_content = f.read()
response = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": f"Here's the document content:\n\n{text_content}\n\nPlease summarize this document.",
}
],
}
],
)
for block in response.content:
if block.type == "text":
print(block.text)Получите список загруженных вами файлов. Эндпоинт использует пагинацию: каждый запрос возвращает до limit файлов (по умолчанию 20), а параметры before_id и after_id позволяют получить соседнюю страницу. См. справочник по API List Files. SDK возвращают первую страницу и предоставляют вспомогательные функции автоматической пагинации. Пример для CLI ограничивает общее количество с помощью --max-items:
client = anthropic.Anthropic()
files = client.beta.files.list()
print(files)Получите информацию о конкретном файле:
file = client.files.retrieve_metadata(file_id)
print(file)Удалите файл из вашего рабочего пространства:
client.files.delete(file_id)Скачивайте файлы, созданные навыками или инструментом выполнения кода. Загруженные вами файлы скачать нельзя. file_id сгенерированного файла появляется в блоке содержимого bash_code_execution_tool_result ответа Messages, который его создал:
file_content = client.files.download(file_id)
file_content.write_to_file("downloaded_file.txt")DELETE /v1/files/{file_id}Распространённые ошибки при использовании Files API:
file_id не существует или у вас нет к нему доступа"downloadable": false и не могут быть скачаны. Скачивать можно только файлы, созданные навыками или инструментом выполнения кода/v1/messages)<, >, :, ", |, ?, *, \, / или символы Unicode 0–31){
"type": "error",
"error": {
"type": "not_found_error",
"message": "File `file_011CNha8iCJcU1wXNR6q4V8w` not found."
},
"request_id": "req_011CQFYcrRp7mCHLDsAYT8Qt"
}Операции Files API бесплатны:
Содержимое файлов, используемое в запросах Messages, тарифицируется как входные токены.
В период бета-тестирования:
Обрабатывайте PDF-файлы с помощью Claude. Извлекайте текст, анализируйте диаграммы и понимайте визуальное содержимое ваших документов.
Запускайте код на Python и bash в изолированном контейнере для анализа данных, генерации файлов и итеративной работы над решениями.
Обрабатывайте и анализируйте визуальные входные данные, генерируйте текст и код на основе изображений.
| Supported platforms |
|
|---|
Was this page helpful?