Just another IT site ※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。At Your Own Risk!! TURN BACK WHILE YOU CAN
PR

OpenClawでGPT-5.6 SolをOAuth、GPT-5.6 LunaをAPIフォールバックにする方法

※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。スクリプトはAI生成のものも多いのでコピー&ペーストの際は文字コードに注意ください!

OpenClawで、通常時はChatGPT OAuth経由の gpt-5.6-sol を使い、OAuth側の利用上限やレート制限などで利用できなくなった場合だけ、OpenAI API課金の gpt-5.6-luna にフォールバックする構成を作りました。

さらに今回は、OpenClawのMemory用Embeddingですでに使用しているOpenAI APIキーを、Lunaのフォールバックにも再利用します。

最終的な構成は次のようになります。

Primary
openai/gpt-5.6-sol
└─ ChatGPT OAuth

        ↓ OAuth上限・レート制限など

Fallback
openai-api/gpt-5.6-luna
└─ OpenAI API Key

Memory
└─ text-embedding-3-small
   └─ 同じOpenAI API Key
スポンサーリンク
バッチ処理の自動化スキルは市場価値が高いです。今の自分の単価を調べてみませんか?
顧客常駐はもう嫌だ!社内SEへ転職するなら【社内SE転職ナビ】
Cursor・Claude Code・Codex AIスキルを学ぶなら
環境構築不要!AIエージェント開発を非エンジニアでも即実践【AI Agent Camp】

環境

今回使用した環境はこちらです。

OpenClaw 2026.9.1

すでにデフォルトモデルとして、

openai/gpt-5.6-sol

を設定済みの状態から作業しています。

標準のモデル一覧では、SolとLunaは次のように認識されていました。

openai/gpt-5.6-luna   text+image  372k
openai/gpt-5.6-sol    text+image  372k   default

やりたいこと

今回の目的は、単純なモデルフォールバックだけではありません。

次のように、モデルだけでなく認証方式も分離します。

GPT-5.6 Sol
└─ ChatGPT OAuthのみ

        ↓

GPT-5.6 Luna
└─ OpenAI APIキーのみ

通常はOAuth枠を利用し、必要なときだけAPI課金へ切り替える構成です。

なぜLuna用に別Providerを作るのか

OpenClawでは、同じProviderに複数の認証方式が存在すると、モデルを切り替える前に同じProvider内の認証プロファイルが試される場合があります。

そのため、標準の openai ProviderへOAuthとAPIキーを両方登録すると、

Sol + OAuth
↓
Sol + API Key
↓
Luna

のようなルートになる可能性があります。

今回やりたいのは、

Sol + OAuth
↓
Luna + API Key

です。

そこで、LunaのAPIアクセス専用として、

openai-api

という別Providerを作成します。

Memoryですでに使っているAPIキーを再利用する

今回の環境では、MemoryのEmbeddingですでにOpenAI APIを利用していました。

設定は概ね次のようになっています。

{
  "provider": "openai-compatible",
  "remote": {
    "baseUrl": "https://api.openai.com/v1/",
    "apiKey": {
      "source": "file",
      "provider": "embeddings",
      "id": "__OPENCLAW_REDACTED__"
    }
  },
  "model": "text-embedding-3-small"
}

ここで重要なのが、

__OPENCLAW_REDACTED__

です。

これは実際のSecret IDではありません。

OpenClawが config get の表示時に機密情報を隠しているため、この文字列をそのままコピーして新しい設定に使用してはいけません。

そこで、実際のAPIキーを画面に表示させず、現在の設定ファイルに保存されているSecretRefをそのまま再利用します。

Luna用Providerを作成する

まず、OpenClawが現在使用している設定ファイルを取得します。

openclaw config file

設定ファイルのパスをハードコードせず、このコマンドの結果を利用します。

続いて、Memoryで使っているSecretRefを取得し、Luna用Providerを追加するパッチファイルを生成します。

CONFIG="$(openclaw config file)"

python3 - "$CONFIG" <<'PY'
import json
import sys

config_path = sys.argv[1]

with open(config_path, "r", encoding="utf-8") as f:
    cfg = json.load(f)

ref = cfg["memory"]["search"]["remote"]["apiKey"]

patch = {
    "models": {
        "providers": {
            "openai-api": {
                "baseUrl": "https://api.openai.com/v1",
                "api": "openai-responses",
                "apiKey": ref,
                "models": [
                    {
                        "id": "gpt-5.6-luna",
                        "name": "GPT-5.6 Luna"
                    }
                ]
            }
        }
    }
}

with open("/tmp/openclaw-luna.patch.json", "w", encoding="utf-8") as f:
    json.dump(patch, f, indent=2)

print("Created /tmp/openclaw-luna.patch.json")
PY

このPythonスクリプトでは、APIキーそのものを表示していません。

Memoryが使用しているSecretRefを、そのまま新しいProviderへコピーしています。

dry-runで設定を確認する

いきなり設定を変更せず、まずdry-runします。

openclaw config patch \
  --file /tmp/openclaw-luna.patch.json \
  --dry-run

問題がなければ、本適用します。

openclaw config patch \
  --file /tmp/openclaw-luna.patch.json

続いて設定を検証します。

openclaw config validate

Providerの設定を確認する

作成したProviderを確認します。

openclaw config get models.providers.openai-api

次のような構成になっていればOKです。

{
  "baseUrl": "https://api.openai.com/v1",
  "apiKey": {
    "source": "file",
    "provider": "embeddings",
    "id": "__OPENCLAW_REDACTED__"
  },
  "api": "openai-responses",
  "models": [
    {
      "id": "gpt-5.6-luna",
      "name": "GPT-5.6 Luna"
    }
  ]
}

ここでもSecretRefのIDが、

__OPENCLAW_REDACTED__

と表示されるのは正常です。

Lunaのモデル能力を設定する

カスタムProviderを作成した直後、Lunaが次のように認識される場合があります。

Input: text
Ctx: 200k

標準の openai/gpt-5.6-luna は今回の環境では、

text+image
372k

として認識されていたため、カスタムProvider側も合わせます。

次のパッチを作成します。

cat >/tmp/openclaw-luna-model.patch.json <<'EOF'
{
  "models": {
    "providers": {
      "openai-api": {
        "models": [
          {
            "id": "gpt-5.6-luna",
            "name": "GPT-5.6 Luna",
            "reasoning": true,
            "input": [
              "text",
              "image"
            ],
            "contextWindow": 372000,
            "maxTokens": 8192,
            "api": "openai-responses"
          }
        ]
      }
    }
  }
}
EOF

まずdry-runします。

openclaw config patch \
  --file /tmp/openclaw-luna-model.patch.json \
  --dry-run

問題なければ適用します。

openclaw config patch \
  --file /tmp/openclaw-luna-model.patch.json

最後に検証します。

openclaw config validate

Lunaをフォールバックに設定する

既存のフォールバックをいったんクリアします。

openclaw models fallbacks clear

新しく作成したLunaを登録します。

openclaw models fallbacks add \
  openai-api/gpt-5.6-luna

確認します。

openclaw models fallbacks list

次のようになっていればOKです。

openai-api/gpt-5.6-luna

Lunaが正しく認識されているか確認する

次のコマンドを実行します。

openclaw models list --provider openai-api

最終的には概ね次の状態になります。

Model                       Input       Ctx   Local  Auth  Tags
openai-api/gpt-5.6-luna     text+image  372k  no     yes   fallback#1,configured

特に確認したいのは次の3点です。

Input: text+image
Ctx:   372k
Auth:  yes

そして、

fallback#1

が付いていれば、Lunaがフォールバックとして登録されています。

models status –probe が実行できない場合

最終確認として、

openclaw models status --probe

を実行できます。

ただし、Gatewayがすでに起動している環境では、

A Gateway is running for this state directory.
Stop the Gateway first, then rerun models status --probe.

というエラーになる場合があります。

この場合は一度Gatewayを停止します。

openclaw gateway stop

その後、

openclaw models status --probe

を実行します。

確認が終わったらGatewayを起動します。

openclaw gateway start

まとめると、

openclaw gateway stop
openclaw models status --probe
openclaw gateway start

です。

最終構成

今回完成した構成は次のとおりです。

openai/gpt-5.6-sol
│
└─ ChatGPT OAuth
        │
        │ OAuth利用上限
        │ レート制限
        │ その他failover対象エラー
        ▼
openai-api/gpt-5.6-luna
│
└─ OpenAI API Key

Memoryは引き続き同じAPIキーを使用します。

OpenAI API Key
│
├─ Memory
│  └─ text-embedding-3-small
│
└─ Luna fallback
   └─ gpt-5.6-luna

これにより、

通常時
GPT-5.6 Sol
+ ChatGPT OAuth

        ↓ OAuth側で利用不可

フォールバック
GPT-5.6 Luna
+ OpenAI API課金

という運用ができます。

models.providers.openai は変更しない

今回の構成で重要なのが、標準の、

models.providers.openai

へAPIキーを追加しないことです。

今回の目的は、

Sol  = OAuthのみ
Luna = API Keyのみ

と認証を分離することです。

標準の openai ProviderへAPIキーを追加すると、SolでもAPIキーが利用候補になる可能性があります。

そのため、

openai

と、

openai-api

を分離しています。

セキュリティ上の注意

OpenClawの設定内容をブログやSNSへ掲載するときは、次の情報を公開しないよう注意してください。

  • OpenAI APIキーそのもの
  • SecretRefの実際のID
  • OAuthトークン
  • OAuthプロファイルにメールアドレス等が含まれている場合、その値
  • サーバのユーザー名を含む絶対パス
  • ホスト名や内部ドメイン
  • 公開していないIPアドレス
  • 実行中プロセスのPID
  • 独自変更しているGatewayのポート番号
  • その他、社内・自宅ネットワーク固有の情報

openclaw config get で、

__OPENCLAW_REDACTED__

と表示されている部分は、OpenClawによって秘匿化されています。

ブログには秘匿化された状態だけを掲載し、実際の設定ファイルから取得したSecret IDやAPIキーは掲載しないようにします。

まとめ

今回行った作業は大きく4つです。

  1. openai/gpt-5.6-sol はChatGPT OAuthのまま維持
  2. Memoryですでに使用しているOpenAI APIキーのSecretRefを再利用
  3. openai-api/gpt-5.6-luna というAPI専用Providerを作成
  4. Lunaをフォールバック #1として登録

最終的には、

GPT-5.6 Sol + ChatGPT OAuth
↓
OAuth上限など
↓
GPT-5.6 Luna + OpenAI API

という構成になりました。

普段はChatGPT OAuth側を利用し、必要な場合だけOpenAI API課金へ切り替えたい場合に便利な構成です。

タイトルとURLをコピーしました