Загрузка...

Работа с PDF

Отправляйте PDF-документы любой модели на RouterAI.

RouterAI поддерживает обработку PDF через API /api/v1/chat/completions. PDF можно отправлять как прямые URL или данные в формате base64 в массиве сообщений через тип контента file. Эта функция работает с любой моделью на RouterAI.

Поддержка URL: Отправляйте публично доступные PDF напрямую без скачивания или кодирования Поддержка Base64: Требуется для локальных файлов или приватных документов, которые недоступны публично

PDF также работают в чате для интерактивного тестирования.

Когда модель изначально поддерживает ввод файлов, PDF передается напрямую в модель. Когда модель не поддерживает ввод файлов изначально, RouterAI разберет файл и передаст результаты разбора в запрошенную модель. Вы можете отправлять как PDF, так и другие типы файлов в одном запросе.

Конфигурация плагина

Для настройки обработки PDF используйте параметр plugins в вашем запросе. RouterAI предоставляет несколько движков обработки PDF с различными возможностями и ценами:

{
  "plugins": [
    {
      "id": "file-parser",
      "pdf": {
        "engine": "pdf-text"
      }
    }
  ]
}

Доступные движки:

  • pdf-text - для текстовых PDF
  • mistral-ocr - для отсканированных документов
  • native - для моделей с нативной поддержкой

Цены

RouterAI предоставляет несколько движков обработки PDF:

  1. mistral-ocr: Лучше всего подходит для отсканированных документов или PDF с изображениями (стоимость за 1000 страниц).
  2. pdf-text: Лучше всего подходит для хорошо структурированных PDF с четким текстовым содержимым (Бесплатно).
  3. 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"
        }
      }
    ]
  }'
URL PDF работают со всеми движками обработки. Для Mistral OCR URL передается напрямую в сервис. Для других движков RouterAI загружает PDF и обрабатывает его внутренне.

Использование 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 будет работать, даже если плагин не указан явно. По умолчанию используется движок, оптимальный для выбранной модели.

Пропуск затрат на разбор

Когда вы отправляете 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": "Можете ли вы подробнее рассказать о втором пункте?"
      }
    ]
  }'
Когда вы включаете аннотации файлов из предыдущего ответа в последующие запросы, RouterAI будет использовать эту предварительно разобранную информацию вместо повторного разбора PDF, что экономит время обработки и затраты. Это особенно полезно для больших документов или при использовании движка `mistral-ocr`, который влечет дополнительные расходы.

Формат ответа

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
  }
}