HiAPI
ブログ

チュートリアル

hiapi API を使って Claude Opus 4.8 を利用する方法

Sep 21, 2026
hiapi API を使って Claude Opus 4.8 を利用する方法

構築するもの

hiapi の OpenAI 互換 Chat Completions API を介して Claude Opus 4.8 を呼び出す、動作可能な統合です。これは Anthropic の現行 Claude 4.8 シリーズにおける最上位モデルです。1 回のリクエストで実際の補完が返り、デモが動作した後に必要となる本番モード(ストリーミング、ツール呼び出し、適応型思考)も付属します。

前提条件:hiapi の API キーが必要です。コンソールから取得してください。これは sk-... の文字列で、同じキーがアカウントで有効なすべてのモデルに使用でき、このモデルに限定されません。

以下の内容はすべて執筆時点で実際のライブ API に対して動作確認済みです。

最小限の動作例

Claude Opus 4.8 は標準 Chat Completions エンドポイント上のテキストモデルです。hiapi が画像/動画/音声モデルに用いる非同期の /v1/tasks フローではありません。1 回のリクエスト、1 回のレスポンスで、ポーリングは不要です。

curl https://api.hiapi.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-<your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-opus-4-8",
    "messages": [
      {"role": "user", "content": "Review this function for edge cases and suggest a fix."}
    ],
    "max_tokens": 1024
  }'

レスポンス(抜粋):

{
  "id": "msg_011CfFm8abLRcYtLVSky81As",
  "model": "claude-opus-4-8",
  "object": "chat.completion",
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "..." },
      "finish_reason": "stop"
    }
  ],
  "usage": { "prompt_tokens": 10, "completion_tokens": 4, "total_tokens": 14 }
}

Python で requests のみを使った同じ呼び出し:

import requests

resp = requests.post(
    "https://api.hiapi.ai/v1/chat/completions",
    headers={"Authorization": "Bearer sk-<your-api-key>"},
    json={
        "model": "claude-opus-4-8",
        "messages": [
            {"role": "user", "content": "Review this function for edge cases and suggest a fix."}
        ],
        "max_tokens": 1024,
    },
    timeout=60,
)
resp.raise_for_status()
data = resp.json()
print(data["choices"][0]["message"]["content"])
print(data["usage"])  # prompt_tokens / completion_tokens / total_tokens

裸のモデル ID claude-opus-4-8 をそのまま送信してください。プロバイダープレフィックスもルーティングサフィックスも不要です。hiapi はこのモデルに対して冗長性のために 2 つのバックエンドルート(default と aws)を用意していますが、どちらも同じモデル ID を共有しており、どちらかを選ぶ必要はありません。

リクエスト形式が OpenAI 互換であるため、公式の openai Python/JS SDK でも変更なしで動作します。base_url を https://api.hiapi.ai/v1 に設定し、hiapi のキーを渡すだけです。

本番モード

ストリーミング

"stream": true を設定して Server-Sent Events を読み取ります。各チャンクには delta.content の断片が含まれ、ストリームは最後のチャンクで finish_reason: "stop" を伴って終了し、その後に [DONE] センチネルが続きます:

curl https://api.hiapi.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-<your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-opus-4-8",
    "messages": [{"role": "user", "content": "Count 1 to 3"}],
    "stream": true,
    "max_tokens": 20
  }'
data: {"choices":[{"delta":{"content":"","role":"assistant"},"finish_reason":null,"index":0}]}

data: {"choices":[{"delta":{"content":"1"},"finish_reason":null,"index":0}]}

data: {"choices":[{"delta":{"content":", 2, 3"},"finish_reason":null,"index":0}]}

data: {"choices":[{"delta":{},"finish_reason":"stop","index":0}]}

data: [DONE]

完全なテキストを再構築するには、チャンクをまたいで choices[0].delta.content を累積します。最後のデータイベント(finish_reason の後)は delta ではなく usage の合計を運びます。

ツール呼び出し

OpenAI と同じ方法で関数を宣言し、次のターンでアシスタントの tool_calls メッセージと tool 結果メッセージを再送します:

curl https://api.hiapi.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-<your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-opus-4-8",
    "messages": [{"role": "user", "content": "What is the status of task demo-123?"}],
    "max_tokens": 200,
    "tools": [{
      "type": "function",
      "function": {
        "name": "get_task_status",
        "description": "Look up a task by ID.",
        "parameters": {
          "type": "object",
          "properties": {"task_id": {"type": "string"}},
          "required": ["task_id"],
          "additionalProperties": false
        }
      }
    }],
    "tool_choice": "auto"
  }'

レスポンスは finish_reason: "tool_calls" を伴って返り、choices[0].message.tool_calls に関数名と JSON エンコードされた引数が含まれます。ローカルで関数を実行し、その結果を一致する tool_call_id を持つ role: "tool" メッセージとして次のリクエストで返送すると、モデルはそこから続行します。

適応型思考

Claude Opus 4.8 はオプトインの推論ターンをサポートします。"thinking": {"type": "adaptive"} を追加し、output_config.effort で努力レベルを選択します(low、medium、high のいずれも利用可能であることを確認済み):

{
  "model": "claude-opus-4-8",
  "messages": [{"role": "user", "content": "Compare two approaches and state the trade-offs."}],
  "thinking": {"type": "adaptive"},
  "output_config": {"effort": "high"}
}

この機能を中心に構築する前に、知っておくべきことが 2 つあります。第一に、「適応型」とはモデル自身がプロンプトが思考に値するかどうかを判断することを意味します。low あるいは medium の努力レベルでは、単純な質問に対して reasoning_details フィールドがまったく返らない可能性があるため、すべてのリクエストがそのフィールドを生成すると仮定しないでください。第二に、hiapi 上の他の一部のテキストモデルとは異なり、Opus 4.8 は人間が読める推論トレースを返しません。reasoning_details 配列内の reasoning.text エントリは空で返り、signature エントリのみが埋められます。reasoning_details は不透明な継続状態として扱い、セッションを後続のツール呼び出しに持ち込む場合はそのまま渡してください。解析したりユーザーに表示したりしないでください。

エラーハンドリング

認証失敗は HTTP 401 を返し、hiapi_error エンベロープが付きます:

{
  "error": {
    "code": "permission_denied",
    "message": "This API key is invalid. Check that it is correct or use another API key and try again.",
    "type": "hiapi_error"
  }
}

response.json()["choices"] にアクセスする前に response.status_code を確認し、エスカレーションが必要な場合は error.request_id を記録してください。サポートチームはこれを使って特定の呼び出しを追跡できます。

冪等性とリトライ

Chat Completions 呼び出しは /v1/tasks タスクのようにリクエスト ID による冪等性を持ちません。リトライしたリクエストは新しい補完であり、新しい課金でもあります。本番トラフィックでは、5xx/タイムアウトの場合にバックオフ付きのリトライロジックをコード内にラップし、max_tokens を制限して、リトライストーム(または長時間実行される適応型思考呼び出し)が無制限のコストにつながらないようにしてください。

関連記事

よくある質問

claude-opus-4-8 が送信すべき正確なモデル ID ですか? はい。model フィールドに裸の文字列 claude-opus-4-8 を送信してください。プロバイダー固有のプレフィックスもルーティングサフィックスも不要です。hiapi が内部で正しいバックエンドルートに解決します。

これは hiapi の画像・動画モデルと同じ /v1/tasks フローを使いますか? いいえ。Claude Opus 4.8 のようなテキストモデルは同期の POST /v1/chat/completions エンドポイントを使用します。1 回のリクエスト、1 回のレスポンス(または 1 本の SSE ストリーム)です。/v1/tasks はメディアモデル(画像、動画、音声)専用で、これらは非同期で動作し、ポーリング用の URL またはコールバックを返します。

生の curl/requests の代わりに OpenAI SDK を使用できますか? はい。このエンドポイントは OpenAI 互換であるため、公式 openai SDK の base_url を https://api.hiapi.ai/v1 に設定し、hiapi のキーを api_key として使うだけで、基本的なチャット、ストリーミング、ツール呼び出しに他のコード変更は不要です。

Opus 4.8 と Sonnet 4.6 のどちらを使うべきですか? Opus 4.8 はより高能力で高コストな階層です。より難しい推論、コーディング、エージェントタスクで、レイテンシやトークン単価よりも正確さが重要な場合に選択してください。高トラフィックやレイテンシに敏感なトラフィックには、Claude Sonnet 4.6 が同じ API 形態をより低い価格で提供します。

thinking は常に可視の推論トレースを返しますか? どちらでもありません。適応型思考は簡単だと判断したリクエストでは推論を完全にスキップすることがあり、実際に思考する場合でも、Opus 4.8 の reasoning_details は現在テキストフィールドが空で返り、signature のみが埋められます。読み取り可能なトレースが常に存在すると仮定した UI を構築しないでください。

大量実行の前に現在の価格はどこで確認できますか? hiapi の価格ページに Claude Opus 4.8 のリアルタイムなトークン単価が掲載されています。予算を立てる前に確認してください。本記事には古くなっている可能性のある数値をハードコードしていません。

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

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

APIドキュメントを読む