Работа с PDF
Отправляйте PDF-документы любой модели на RouterAI.
RouterAI поддерживает обработку PDF через API /api/v1/chat/completions. PDF можно отправлять как прямые URL или данные в формате base64 в массиве сообщений через тип контента file. Эта функция работает с любой моделью на RouterAI.
Поддержка URL: Отправляйте публично доступные PDF напрямую без скачивания или кодирования Поддержка Base64: Требуется для локальных файлов или приватных документов, которые недоступны публично
PDF также работают в чате для интерактивного тестирования.
Конфигурация плагина
Для настройки обработки PDF используйте параметр plugins в вашем запросе. RouterAI предоставляет несколько движков обработки PDF с различными возможностями и ценами:
{
"plugins": [
{
"id": "file-parser",
"pdf": {
"engine": "pdf-text"
}
}
]
}
Доступные движки:
pdf-text- для текстовых PDFmistral-ocr- для отсканированных документовnative- для моделей с нативной поддержкой
Цены
RouterAI предоставляет несколько движков обработки PDF:
mistral-ocr: Лучше всего подходит для отсканированных документов или PDF с изображениями (стоимость за 1000 страниц).pdf-text: Лучше всего подходит для хорошо структурированных PDF с четким текстовым содержимым (Бесплатно).native: Доступен только для моделей, которые изначально поддерживают ввод файлов (оплачивается как входные токены).
Если вы явно не указываете движок, RouterAI по умолчанию сначала использует нативные возможности обработки файлов модели, а если они недоступны, будет использован движок по умолчанию.
Использование URL PDF
Для публично доступных PDF вы можете отправить URL напрямую без необходимости скачивания и кодирования файла:
curl https://routerai.ru/api/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ROUTERAI_API_KEY" \
-d '{
"model": "anthropic/claude-sonnet-4",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Каковы основные моменты в этом документе?"
},
{
"type": "file",
"file": {
"filename": "document.pdf",
"file_data": "https://bitcoin.org/bitcoin.pdf"
}
}
]
}
],
"plugins": [
{
"id": "file-parser",
"pdf": {
"engine": "mistral-ocr"
}
}
]
}'
Использование PDF в формате Base64
Для локальных PDF-файлов или когда вам нужно отправить содержимое PDF напрямую, вы можете закодировать файл в base64:
Подготовка base64 в Linux
# Кодирование PDF в base64 и сохранение в переменную
BASE64_PDF=$(base64 -w 0 path/to/your/document.pdf)
# Создание data URL
DATA_URL="data:application/pdf;base64,$BASE64_PDF"
Пример запроса с base64
# Сначала подготовьте base64
BASE64_PDF=$(base64 -w 0 path/to/your/document.pdf)
DATA_URL="data:application/pdf;base64,$BASE64_PDF"
# Затем отправьте запрос
curl https://routerai.ru/api/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ROUTERAI_API_KEY" \
-d '{
"model": "google/gemma-3-27b-it",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Каковы основные моменты в этом документе?"
},
{
"type": "file",
"file": {
"filename": "document.pdf",
"file_data": "'"$DATA_URL"'"
}
}
]
}
],
"plugins": [
{
"id": "file-parser",
"pdf": {
"engine": "pdf-text"
}
}
]
}'
Пропуск затрат на разбор
Когда вы отправляете PDF в API, ответ может включать аннотации файлов в сообщении ассистента. Эти аннотации содержат структурированную информацию о разобранном PDF-документе. Отправляя эти аннотации обратно в последующих запросах, вы можете избежать повторного разбора того же PDF-документа, что экономит время обработки и затраты.
Вот как повторно использовать аннотации файлов:
Первый запрос с PDF
# Подготовка base64
BASE64_PDF=$(base64 -w 0 path/to/your/document.pdf)
DATA_URL="data:application/pdf;base64,$BASE64_PDF"
# Первый запрос
RESPONSE=$(curl -s https://routerai.ru/api/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ROUTERAI_API_KEY" \
-d '{
"model": "google/gemma-3-27b-it",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Каковы основные моменты в этом документе?"
},
{
"type": "file",
"file": {
"filename": "document.pdf",
"file_data": "'"$DATA_URL"'"
}
}
]
}
]
}')
# Извлечение аннотаций из ответа
ANNOTATIONS=$(echo $RESPONSE | jq '.choices[0].message.annotations')
ASSISTANT_CONTENT=$(echo $RESPONSE | jq -r '.choices[0].message.content')
Последующий запрос с аннотациями
# Последующий запрос с использованием аннотаций (без повторной отправки PDF)
curl https://routerai.ru/api/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ROUTERAI_API_KEY" \
-d '{
"model": "google/gemma-3-27b-it",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Каковы основные моменты в этом документе?"
},
{
"type": "file",
"file": {
"filename": "document.pdf",
"file_data": "'"$DATA_URL"'"
}
}
]
},
{
"role": "assistant",
"content": "'"$ASSISTANT_CONTENT"'",
"annotations": '"$ANNOTATIONS"'
},
{
"role": "user",
"content": "Можете ли вы подробнее рассказать о втором пункте?"
}
]
}'
Формат ответа
API вернет ответ в следующем формате:
{
"id": "gen-1234567890",
"provider": "DeepInfra",
"model": "google/gemma-3-27b-it",
"object": "chat.completion",
"created": 1234567890,
"choices": [
{
"message": {
"role": "assistant",
"content": "Документ обсуждает..."
}
}
],
"usage": {
"prompt_tokens": 1000,
"completion_tokens": 100,
"total_tokens": 1100
}
}