Руководство
Как использовать 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 является стабильным идентификатором. Если вы получили эту ошибку, используя ключ, который считаете действительным, обратитесь к документации по аутентификации.
Связанные материалы
- Документация по аутентификации hiapi — как заголовок
Authorizationи область действия ключей работают на всей платформе. - Документация по ограничениям частоты hiapi — поведение
429иRetry-After. - Страница модели deepseek-v4-flash — текущие цены и описание возможностей.
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; структура запросов и ответов идентична.
Где я могу найти актуальные цены на эту модель? На странице модели или на актуальной странице цен — стоимость за токен может немного различаться из-за маршрутизации к вышестоящим провайдерам, поэтому смотрите там, а не полагайтесь на цифры из этой статьи.
Похожие статьи
Все статьи →-
Руководство
Как вызвать hailuo-2.3-fast/image-to-video через HiAPI API: практика с curl и Python
Первый рабочий запрос к быстрому и недорогому уровню генерации видео по изображению — от ID модели до загрузки MP4
-
Руководство
Как вызывать hailuo-2.3/text-to-video через API HiAPI: curl, Python и рабочие примеры запросов
-
Руководство
Использование Kandinsky 6.0 Pro для преобразования текста в видео на HiAPI: руководство по curl и Python
Практическая демонстрация с упором на запросы: построение вызова от промпта до видеоклипа, отправка запроса, опрос статуса завершения и скачивание результата