HiAPI
Блог

Руководство

Как использовать DeepSeek V4 Flash через API hiapi: curl, Python и рабочие примеры запросов

Aug 4, 2026
Как использовать DeepSeek V4 Flash через API hiapi: curl, Python и рабочие примеры запросов

DeepSeek V4 Flash — это модель чата с рассуждением, и на hiapi она подключается иначе, чем большинство моделей платформы: она не использует асинхронную очередь POST /v1/tasks, применяемую для генерации изображений и видео, а представляет собой эндпоинт чат-дополнений, совместимый с OpenAI — POST /v1/chat/completions, с поддержкой синхронного режима или потоковой передачи, без опроса. В этом руководстве мы отправим рабочий запрос через curl и Python, а затем рассмотрим две проблемы, которые действительно легко упустить в продакшене.

Что вы построите

Минимальный скрипт, который отправляет запрос в deepseek-v4-flash через hiapi и выводит ответ модели — а также шаблоны, которые понадобятся, когда этот скрипт превратится в реальную интеграцию: управление бюджетом токенов рассуждения, потоковая передача, повторные попытки и структура ошибок, описанная в документации.

Предварительные требования: API-ключ hiapi. Получите его в панели управления hiapi — каждый запрос ниже аутентифицируется через Authorization: Bearer sk-<your-key>.

Минимальный рабочий пример

curl

curl https://api.hiapi.ai/v1/chat/completions \
  -H "Authorization: Bearer $HIAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-flash",
    "messages": [{"role": "user", "content": "Explain what a hash table is in two sentences."}],
    "max_tokens": 500
  }'

Успешный вызов возвращает стандартный объект чат-дополнения:

{
  "id": "gen-...",
  "object": "chat.completion",
  "model": "deepseek/deepseek-v4-flash",
  "provider": "DeepInfra",
  "choices": [{
    "index": 0,
    "finish_reason": "stop",
    "message": {"role": "assistant", "content": "A hash table is ...", "reasoning": "..."}
  }],
  "usage": {
    "prompt_tokens": 14, "completion_tokens": 187, "total_tokens": 201,
    "completion_tokens_details": {"reasoning_tokens": 96}
  }
}

Обратите внимание на два момента: в запросе используется голый ID модели deepseek-v4-flash — hiapi внутренне разрешает его до вышестоящего провайдера, а поле model в ответе возвращает ID с указанием провайдера (deepseek/deepseek-v4-flash), которое следует рассматривать как справочную информацию, а не отправлять обратно в качестве параметра запроса. Кроме того, в сообщении помимо content есть поле reasoning — это модель с рассуждением, и usage.completion_tokens_details.reasoning_tokens показывает, какая часть затрат completion_tokens ушла на цепочку рассуждений, а какая — на видимый ответ.

Python

import os
import requests

resp = requests.post(
    "https://api.hiapi.ai/v1/chat/completions",
    headers={"Authorization": f"Bearer {os.environ['HIAPI_KEY']}"},
    json={
        "model": "deepseek-v4-flash",
        "messages": [{"role": "user", "content": "Explain what a hash table is in two sentences."}],
        "max_tokens": 500,
    },
    timeout=60,
)
resp.raise_for_status()
data = resp.json()
print(data["choices"][0]["message"]["content"])

Поскольку этот эндпоинт совместим с OpenAI, этот код также работает без изменений с официальным Python SDK openai — просто укажите base_url как https://api.hiapi.ai/v1 и передайте ключ hiapi в качестве api_key.

Шаблоны для продакшена

Ловушка бюджета рассуждения: не задавайте max_tokens слишком низким

max_tokens ограничивает суммарные затраты на рассуждение плюс ответ, а не только видимый ответ. Если модель всё ещё рассуждает при достижении лимита, вы получите ответ с finish_reason: "length" и content: null — токены израсходованы и оплачены, но показывать нечего. Для любого несложного запроса оставляйте реальный запас (как минимум несколько сотен токенов), а не урезайте max_tokens до количества, которое, по вашему мнению, нужно ответу.

Отключение рассуждения для простых, детерминированных задач

Если задача не требует цепочки рассуждений — классификация, короткие запросы, преобразование формата — можно полностью подавить рассуждение:

{
  "model": "deepseek-v4-flash",
  "messages": [{"role": "user", "content": "Say OK and nothing else."}],
  "max_tokens": 50,
  "reasoning": {"enabled": false}
}

С reasoning.enabled: false поле message.reasoning в ответе возвращает null, а completion_tokens_details.reasoning_tokens равно 0 — вы платите только за видимый вывод, и задержка соответственно снижается. Поведение по умолчанию (рассуждение включено) оставляйте только для задач, где дополнительное обдумывание действительно улучшает ответ.

Потоковая передача

Установите "stream": true, чтобы получать стандартные серверные события в стиле OpenAI, не дожидаясь полного ответа:

curl https://api.hiapi.ai/v1/chat/completions \
  -H "Authorization: Bearer $HIAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"deepseek-v4-flash","messages":[{"role":"user","content":"Count to 5."}],"stream":true}'

Каждый блок данных — это строка data: {...}, несущая приращение choices[0].delta.content; последний блок содержит usage, а поток завершается строкой-литералом data: [DONE]. Разбирайте блоки по мере их поступления, а не буферизуйте весь ответ на клиенте — в этом и смысл потоковой передачи для чат-интерфейсов.

Идемпотентность и повторные попытки

Чат-дополнения здесь — это HTTP-вызовы без сохранения состояния, а не задачи в очереди — нет ID задачи для опроса и нет риска случайно отправить контент в очередь повторно. Повторные попытки касаются обычных HTTP-проблем: при ошибке транспорта или 5xx повторяйте с экспоненциальной задержкой; при 429 перед повтором соблюдайте заголовок Retry-After (см. документацию по ограничениям частоты). Для ошибок 4xx, означающих неверный запрос (например, некорректный messages), не повторяйте — исправьте тело запроса.

Обработка ошибок

Неверный или отсутствующий ключ возвращает HTTP 401:

{
  "error": {
    "code": "permission_denied",
    "message": "...",
    "request_id": "...",
    "type": "hiapi_error"
  }
}

В обработчике ошибок проверяйте error.code, а не сопоставляйте шаблоны со строкой сообщения — именно permission_denied является стабильным идентификатором. Если вы получили эту ошибку, используя ключ, который считаете действительным, обратитесь к документации по аутентификации.

Связанные материалы

FAQ

Нужно ли мне опрашивать результат, как при использовании моделей изображений/видео hiapi? Нет. Генерация изображений и видео на hiapi идёт через асинхронную очередь /v1/tasks (создание → опрос или обратный вызов → загрузка output[0].url). Чат-модели, такие как deepseek-v4-flash, — это просто обычные синхронные (или потоковые) HTTP-вызовы /v1/chat/completions — вы получаете ответ прямо в ответе на запрос.

Почему usage.completion_tokens выше, чем, по-видимому, должен стоить видимый ответ? Потому что он включает токены рассуждения. Проверьте usage.completion_tokens_details.reasoning_tokens, чтобы увидеть разбивку, и используйте "reasoning": {"enabled": false}, когда модель не должна показывать процесс размышления.

Мой ответ имеет "finish_reason": "length" и пустой content — что произошло? Модель исчерпала max_tokens, всё ещё находясь на этапе рассуждения, и так и не написала видимый ответ. Увеличьте max_tokens или отключите рассуждение для более простых запросов.

Могу ли я использовать официальный OpenAI SDK вместо прямых HTTP-вызовов? Да — установите в SDK base_url как https://api.hiapi.ai/v1, а api_key — как ваш ключ hiapi; структура запросов и ответов идентична.

Где я могу найти актуальные цены на эту модель? На странице модели или на актуальной странице цен — стоимость за токен может немного различаться из-за маршрутизации к вышестоящим провайдерам, поэтому смотрите там, а не полагайтесь на цифры из этой статьи.

Похожие статьи

Все статьи →

Начните работать с постоянными артефактами ИИ

Получите API-ключ и вызывайте модели изображений, видео и аудио через один API на основе tasks.

Читать документацию API