Мультимодальность
Как передавать PDF-документы в AllTokens через /api/v1/chat/completions.
PDF-документы можно отправлять через POST /api/v1/chat/completions. PDF передаётся внутри массива messages через элемент file. Документ можно передать как по прямой ссылке, так и в виде base64-строки.
Для большинства сценариев удобнее использовать URL для публичных документов и base64 для локальных или закрытых файлов.
Если выбранная модель умеет принимать файлы напрямую, PDF будет обработан как файловый ввод. Если нет, платформа постарается передать модели содержимое документа в совместимом формате.
Как найти подходящую модель
Ищите модели в каталоге AllTokens, которые поддерживают файловый ввод. В первую очередь смотрите на:
architecture.input_modalitiessupported_parameterscontext_length
В примерах ниже используется модель anthropic/claude-sonnet-4.
PDF по URL
Для публично доступных документов можно передать ссылку напрямую, без скачивания и кодирования файла.
PDF в base64
Если PDF лежит локально или его нельзя отдать по публичной ссылке, передайте его как data:application/pdf;base64,....
Повторное использование разбора документа
После первого запроса ответ может содержать annotations внутри сообщения ассистента. Если передать эти данные в следующем запросе, платформе не придётся заново разбирать тот же документ.
Это полезно, если вы:
- задаёте несколько вопросов по одному и тому же PDF
- работаете с длинными документами
- строите чат поверх одного документа
Пример повторного использования annotations
Если вы передаёте annotations из предыдущего ответа, платформа может использовать уже подготовленный разбор документа вместо повторной обработки PDF.
Формат annotations
Если PDF был разобран, в ответе может появиться структура примерно такого вида:
type FileAnnotation = {
type: 'file';
file: {
hash: string;
name?: string;
content: ContentPart[];
};
};
type ContentPart =
| { type: 'text'; text: string }
| { type: 'image_url'; image_url: { url: string } };
Поле content содержит разобранное содержимое документа: текстовые блоки, а в некоторых случаях и изображения.
Пример ответа
{
"id": "gen-1234567890",
"model": "anthropic/claude-sonnet-4",
"object": "chat.completion",
"created": 1234567890,
"choices": [
{
"message": {
"role": "assistant",
"content": "Документ посвящён...",
"annotations": [
{
"type": "file",
"file": {
"hash": "abc123...",
"name": "document.pdf",
"content": [
{ "type": "text", "text": "Разобранный текст..." },
{ "type": "image_url", "image_url": { "url": "data:image/png;base64,..." } }
]
}
}
]
}
}
],
"usage": {
"prompt_tokens": 1000,
"completion_tokens": 100,
"total_tokens": 1100
}
}
Частые вопросы
Что лучше использовать: URL или base64?
Что лучше использовать: URL или base64?
Для публичных PDF обычно удобнее URL: запрос короче и не нужно кодировать файл. Для локальных и закрытых документов нужен base64.
Можно ли задавать несколько вопросов по одному PDF?
Можно ли задавать несколько вопросов по одному PDF?
Да. Для этого удобно использовать annotations из предыдущего ответа, чтобы не разбирать документ заново.
Можно ли передавать PDF вместе с обычным текстом?
Можно ли передавать PDF вместе с обычным текстом?
Да. Текстовая инструкция и PDF обычно передаются вместе в одном массиве content.