# OpenClaw (/ja/docs/guides/openclaw)

カスタムのモデルプロバイダーを使い、パーソナルAIアシスタントのOpenClawをcheapaimodelのモデルで動かします。



OpenClawはOpenAI互換サービスを、`~/.openclaw/openclaw.json`の`models.providers`にカスタムプロバイダーとして追加します。エージェントからは、モデルを`cheapaimodel/<model-id>`として参照します。

|          | OpenClawの設定項目                               | 値                                                                                          |
| -------- | ------------------------------------------- | ------------------------------------------------------------------------------------------ |
| Base URL | `models.providers.cheapaimodel.baseUrl`     | `https://api.cheapaimodel.ai/v1`                                                           |
| APIキー    | `models.providers.cheapaimodel.apiKey`      | `${CHEAPAIMODEL_API_KEY}`（値はコンソールの[APIキー](https://console.cheapaimodel.ai/keys)ページで取得したキー） |
| モデルID    | `models.providers.cheapaimodel.models[].id` | `glm-5.3`、または[モデルカタログ](/ja/models)の任意のID                                                   |

## 設定 [#set-it-up]

<Steps>
  <Step>
    ### キーを保存する [#store-the-key]

    キーをOpenClawのグローバルなenvファイルに書きます。Gatewayはバックグラウンドサービスとして動いているときもこのファイルを読みます。

    ```bash title="~/.openclaw/.env"
    CHEAPAIMODEL_API_KEY=sk-...
    ```

    Gatewayがすでに動いている場合は、`openclaw gateway restart`で再起動してファイルを読み込ませてください。
  </Step>

  <Step>
    ### プロバイダーを追加する [#add-the-provider]

    次の内容を設定にマージします。

    ```json5 title="~/.openclaw/openclaw.json"
    {
      agents: {
        defaults: {
          model: { primary: "cheapaimodel/glm-5.3" },
        },
      },
      models: {
        mode: "merge",
        providers: {
          cheapaimodel: {
            baseUrl: "https://api.cheapaimodel.ai/v1",
            apiKey: "${CHEAPAIMODEL_API_KEY}",
            api: "openai-completions",
            models: [
              {
                id: "glm-5.3",
                name: "GLM-5.3",
                compat: { supportsUsageInStreaming: true },
              },
            ],
          },
        },
      },
    }
    ```

    * `api: "openai-completions"`はリクエストを`/v1/chat/completions`に送ります。
    * `models`にはモデルIDごとにエントリーを1つずつ追加します。`id`はモデルカタログのIDで、`name`は表示名です。`name`はOpenClawで必須です。
    * 各エントリーには、モデルのページ（例：[/models/glm-5.3](/ja/models/glm-5.3)）を見て`contextWindow`と`maxTokens`を追加してください。指定しないと、OpenClawは独自のフォールバック値でコンテキストを見積もり、出力の上限はサーバーに任せます。
    * `compat.supportsUsageInStreaming`を指定すると、OpenClawはストリームでトークン使用量を要求します。cheapaimodelは使用量を返します（[ストリーミング](/ja/docs/concepts/streaming)を参照）。指定しないと、OpenClawはコンテキストの使用量を推定し、`returned no token usage`とログに出力します。

    Gatewayはファイルを監視しており、変更は再起動なしで反映されます。
  </Step>

  <Step>
    ### 確認する [#check-it]

    ```bash title="ターミナル"
    openclaw models list
    ```

    `cheapaimodel/glm-5.3`が表示されれば成功です。あとからデフォルトのモデルを変えるには、`openclaw models set cheapaimodel/<model-id>`を実行します。
  </Step>
</Steps>

OpenClawのエージェントは、モデルのツール呼び出し能力を前提としています。うまくツールを使えない場合は、カタログのほかのモデルを試してください。

## よくある間違い [#common-mistakes]

* **`CHEAPAIMODEL_API_KEY`がないとOpenClawが警告する。** Gatewayのプロセスがこの変数を持っていないため、`${CHEAPAIMODEL_API_KEY}`が展開されないままです。`~/.openclaw/.env`に書き、Gatewayを再起動してください。
* **`401`。** キーの誤り、有効期限切れ、利用上限への到達のいずれかが原因です。コンソールで確認してください。
* **設定が`custom model providers must declare models`で拒否される。** カスタムプロバイダーには`models`配列が必要で、各エントリーには`id`と`name`の両方が必要です。
* **`404`。** 本文が`fault filter abort`なら`baseUrl`に`/v1`がなく、`Invalid URL (POST /v1/chat/completions/chat/completions)`なら`baseUrl`にエンドポイントのパスまで含まれています。`https://api.cheapaimodel.ai/v1`に設定してください。
* **`model_not_found`とともに`503`が返る。** `id`はモデルカタログのIDと正確に一致している必要があります。`cheapaimodel/`プレフィックスはOpenClaw内部のモデル参照にすぎず、送信されません。
