> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rockapi.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenAI 互換 API への移行：Python・Node.js と動作検証

> Python、Node.js、curl を設定し、モデル権限、ストリーミング、ツール、エラー処理と確定料金を移行前に検証します。

**OpenAI 互換 API**は、文書化された OpenAI 形式のリクエストと応答に対応する API です。対応操作では既存クライアントを再利用できる場合がありますが、ベース URL の変更だけで移行完了とはいえません。モデル ID、受け付けるパラメーター、ツール、ストリーミングイベント、エラー処理を個別に確認します。

## アカウントとパラメーターを準備する

[現在のモデル一覧](https://rockapi.ai/pricing)からチャット対応モデルを選び、正確な ID とアカウント・グループの権限を確認します。[API キー画面](https://rockapi.ai/keys)で Rock API のキーを作成してください。元の提供元のキーでは代用できません。[料金と請求](https://docs.rockapi.ai/ja/pricing-and-billing.md)を読み、必要な残高も確認します。

キーをサーバー側の `ROCK_API_KEY`、選択した ID を `ROCK_API_MODEL` に設定します。以下は curl、または使用言語の `openai` パッケージが導入済みであることを前提とします。対象は Chat Completions であり、すべての SDK メソッドや提供元のネイティブ API への対応を意味しません。購入者による上流チャネルの設定は不要です。

## 最小リクエストを基準にする

SDK の完全なベース URL は `https://rockapi.ai/v1` です。さらに `/v1` を追加したり、ベース設定に `/chat/completions` を含めたりしないでください。curl は完全なエンドポイントを使います。

```bash theme={null}
curl --fail-with-body https://rockapi.ai/v1/chat/completions \
  -H "Authorization: Bearer $ROCK_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{\"model\":\"$ROCK_API_MODEL\",\"messages\":[{\"role\":\"user\",\"content\":\"こんにちは、と返答してください。\"}]}"
```

### Python の例

```python theme={null}
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://rockapi.ai/v1",
    api_key=os.environ["ROCK_API_KEY"],
)
response = client.chat.completions.create(
    model=os.environ["ROCK_API_MODEL"],
    messages=[{"role": "user", "content": "こんにちは、と返答してください。"}],
)
print(response.choices[0].message.content)
```

### Node.js の例

```javascript theme={null}
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://rockapi.ai/v1",
  apiKey: process.env.ROCK_API_KEY,
});
const response = await client.chat.completions.create({
  model: process.env.ROCK_API_MODEL,
  messages: [{ role: "user", content: "こんにちは、と返答してください。" }],
});
console.log(response.choices[0].message.content);
```

## 使用する機能を一つずつ検証する

最初は省略可能なパラメーターを付けず、必要な機能を順に追加します。SDK バージョン、モデル ID、入力と期待結果を記録し、差異を再現できるようにします。

| 検証項目 | 合格とする証拠 |
| - | - |
| 基本応答 | 必要なフィールド、有用な内容、終了理由 |
| ストリーミング対応時 | SSE 解析、完了、キャンセル、中断の処理 |
| ツール対応時 | 引数の検証、実行結果、その後のモデル応答 |
| 構造化・マルチモーダル | アプリが使う具体的な構造やメディア入力 |
| エラーと制限 | 不正入力、権限拒否、時間切れ、`429` の処理 |
| 請求 | 対応ログ、使用量区分、グループ、確定料金 |

テキストの成功だけでは、画像やツールの検証にはなりません。同じエンドポイントでも、機能と出力はモデルによって異なります。[タスク別のモデル評価](https://docs.rockapi.ai/ja/blog/buyers/ai-model-api-comparison.md)も参照してください。

## 戻せる状態で段階的に移行する

匿名化した代表的な実リクエストをテスト環境で再生し、品質、遅延、エラー、合格結果あたりの費用を比較します。重複処理や想定外の消費を避けるため、再試行回数を制限します。認証エラーを無制限に繰り返さないでください。[エラーと制限](https://docs.rockapi.ai/ja/errors-and-rate-limits.md)を参照し、キーや機密の入力を含まない日時・リクエスト ID を残します。

合格後に本番トラフィックを増やし、ロールバック用に元の設定を保持します。核となるのは確定した利用ログです。一時的な残高減少や HTTP エラーだけで最終請求額を判断しないでください。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.