HiAPI
ブログ

チュートリアル

hiapi API で DeepSeek V4 Flash を使用する方法:curl、Python、および実行可能なリクエスト例

Aug 4, 2026
hiapi API で DeepSeek V4 Flash を使用する方法:curl、Python、および実行可能なリクエスト例

DeepSeek V4 Flash は推論チャットモデルであり、hiapi 上での接続方法はプラットフォーム上のほとんどのモデルとは異なります。画像や動画生成で使われる非同期の POST /v1/tasks キューは使用せず、OpenAI 互換のチャット補完エンドポイント——POST /v1/chat/completions——を使用します。同期またはストリーミングに対応し、ポーリングは不要です。本チュートリアルでは、curl と Python で実行可能なリクエストを送信する方法を説明し、その後、本番環境で実際につまずきやすい 2 つの問題を紹介します。

構築するもの

hiapi 経由で deepseek-v4-flash にプロンプトを送信し、モデルの回答を出力する最小スクリプト——そして、このスクリプトが実際の統合になったときに必要となるパターン:モデルの推論トークン予算の処理、ストリーミング、リトライ、およびドキュメントに記載されているエラー構造です。

前提条件:hiapi API キー。 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}
  }
}

注意すべき点が 2 つあります。リクエスト時にはベアモデル 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 互換であるため、このコードは公式の openai Python SDK でも変更なしに使用できます——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: {...} の 1 行で、差分の choices[0].delta.content を含みます。最後のチャンクには usage が含まれ、ストリームはリテラルの data: [DONE] 行で終了します。クライアント側でレスポンス全体をバッファリングするのではなく、データチャンクが到着した時点で解析してください——これがチャット UI でストリーミングを使う意義です。

冪等性とリトライ

ここでのチャット補完はステートレスな 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 のようなチャットモデルは /v1/chat/completions への通常の同期(またはストリーミング)HTTP 呼び出しにすぎません——レスポンスで直接答えが得られます。

なぜ usage.completion_tokens が可視回答にかかるはずの量より多いのですか? 推論トークンが含まれているためです。内訳を確認するには usage.completion_tokens_details.reasoning_tokens を調べ、モデルに思考プロセスを示す必要がない場合は "reasoning": {"enabled": false} を使用してください。

レスポンスが "finish_reason": "length" で content が空でした——何が起きたのですか? モデルがまだ推論段階にあるうちに max_tokens を使い果たし、可視回答を書き出せませんでした。max_tokens を増やすか、より単純なプロンプトでは推論を無効にしてください。

生の HTTP 呼び出しの代わりに公式 OpenAI SDK を使用できますか? はい——SDK の base_url を https://api.hiapi.ai/v1 に、api_key を hiapi キーに設定してください。リクエスト/レスポンスの構造は同一です。

このモデルの現在の料金はどこで確認できますか? モデルページまたはリアルタイムの料金ページで確認してください——トークンあたりのコストは上流プロバイダーのルーティングにより多少異なる場合があるため、本文中の数値に依存せず、そこで確認してください。

永続的なAIアーティファクトで開発を始める

APIキーを取得して、タスクベースの1つのAPIで画像・動画・音声モデルを呼び出せます。

APIドキュメントを読む