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

# OpenCode で CometAPI を使用する

> このガイドを使用して、4 つの CometAPI API 形式を OpenCode のカスタムプロバイダーとして設定します。

このガイドを使用して [OpenCode](https://opencode.ai/docs/) を CometAPI で実行します。
この構成により、4 つの API 形式を個別のカスタムプロバイダーとして利用できます。

この構成は OpenCode 1.18.16 でテスト済みです。

公式リファレンス：

* [OpenCode のインストール](https://opencode.ai/docs/#install)
* [OpenCode の設定](https://opencode.ai/docs/config/)
* [OpenCode のカスタムプロバイダー](https://opencode.ai/docs/providers/#custom-provider)
* [OpenCode のモデル選択](https://opencode.ai/docs/models/)
* [OpenCode の権限](https://opencode.ai/docs/permissions/)

<Note>
  各 `your-model-id` の値を、
  [CometAPI モデルページ](/ja/overview/models)のモデル ID に置き換えます。周囲のプロバイダーエントリの API
  形式を受け付けるモデルを選択します。
</Note>

## 前提条件

* Node.js と npm、または OpenCode ガイドに記載されている別のインストール方法
* 有効な API キーを持つ CometAPI アカウント。API キーは
  [ダッシュボード](https://www.cometapi.com/console/token)
* 1 つ以上のモデル ID を [CometAPI モデルページから](/ja/overview/models)

## API 形式を理解する

各プロバイダー ID により、1 つの SDK アダプターと 1 つの API 形式が選択されます。

| プロバイダー ID            | OpenCode アダプター              | ベース URL                           | API 形式                 |
| -------------------- | --------------------------- | --------------------------------- | ---------------------- |
| `cometapi-chat`      | `@ai-sdk/openai-compatible` | `https://api.cometapi.com/v1`     | チャット補完                 |
| `cometapi-responses` | `@ai-sdk/openai`            | `https://api.cometapi.com/v1`     | レスポンス                  |
| `cometapi-messages`  | `@ai-sdk/anthropic`         | `https://api.cometapi.com/v1`     | Anthropic メッセージ        |
| `cometapi-gemini`    | `@ai-sdk/google`            | `https://api.cometapi.com/v1beta` | Gemini generateContent |

このガイドでは、通常の
OpenCode エージェントターンで使用される Gemini のストリーミング（Streaming）操作を検証します。Google アダプターは
`:streamGenerateContent?alt=sse` をモデルパスに追加します。

`/chat/completions`、`/responses`、`/messages`、または Gemini モデル
パスを `baseURL` に追加しないでください。各アダプターが必要な操作パスを追加します。

## ランタイム権限を理解する

OpenCode は、起動するプロセスの権限で実行されます。まず
意図したプロジェクトディレクトリで OpenCode を起動し、
git などのロールバック手段を確保します。より強固なファイルシステム、プロセス、
ネットワーク、または API キーの境界が必要な場合は、コンテナまたはサンドボックスを使用してください。

## OpenCodeを設定

<Steps>
  <Step title="OpenCodeをインストール">
    公式 npm パッケージで OpenCode をインストールします：

    ```bash theme={null}
    npm install -g opencode-ai
    ```

    CLI が利用可能であることを確認します：

    ```bash theme={null}
    opencode --version
    ```

    詳しくは [OpenCode のインストールガイド](https://opencode.ai/docs/#install)
    （Homebrew、Windows、Docker、その他のインストール方法）をご覧ください。
  </Step>

  <Step title="CometAPI API キーを設定">
    CometAPI API キーを `COMETAPI_KEY` 環境変数に保存します。

    <Tabs>
      <Tab title="macOS / Linux / WSL">
        API キーをターミナルに表示せずに読み込みます：

        ```bash theme={null}
        read -rsp "CometAPI API key: " COMETAPI_KEY
        printf '\n'
        export COMETAPI_KEY
        ```
      </Tab>

      <Tab title="Windows PowerShell">
        API キーを現在の PowerShell セッションに読み込みます：

        ```powershell theme={null}
        $secureKey = Read-Host "CometAPI API key" -AsSecureString
        $env:COMETAPI_KEY = [System.Net.NetworkCredential]::new(
          "",
          $secureKey
        ).Password
        ```
      </Tab>
    </Tabs>

    OpenCode を起動するすべてのシェルセッションで変数を設定します。
    API キーをバージョン管理にコミットしないでください。
  </Step>

  <Step title="設定場所を選択">
    次のサポート対象の場所のいずれかを使用します：

    * グローバル設定：`~/.config/opencode/opencode.json`
    * プロジェクト設定：プロジェクトルートの `opencode.json`

    OpenCode は設定ファイルをマージします。プロジェクト設定は、
    グローバル設定の競合する値を上書きします。

    すべてのプロジェクトでプロバイダーを使用する場合は、グローバルファイルを使用します。
    リポジトリ固有のモデルエントリが必要な場合は、プロジェクトファイルを使用します。
  </Step>

  <Step title="CometAPI プロバイダーを追加">
    選択した設定ファイルを作成します。ファイルにすでに
    `provider` オブジェクトが含まれている場合は、次の4つのエントリをそのオブジェクトにマージします：

    ```json theme={null}
    {
      "$schema": "https://opencode.ai/config.json",
      "provider": {
        "cometapi-chat": {
          "npm": "@ai-sdk/openai-compatible",
          "name": "CometAPI Chat Completions",
          "options": {
            "baseURL": "https://api.cometapi.com/v1",
            "apiKey": "{env:COMETAPI_KEY}"
          },
          "models": {
            "your-model-id": {
              "name": "CometAPI Chat model"
            }
          }
        },
        "cometapi-responses": {
          "npm": "@ai-sdk/openai",
          "name": "CometAPI Responses",
          "options": {
            "baseURL": "https://api.cometapi.com/v1",
            "apiKey": "{env:COMETAPI_KEY}"
          },
          "models": {
            "your-model-id": {
              "name": "CometAPI Responses model"
            }
          }
        },
        "cometapi-messages": {
          "npm": "@ai-sdk/anthropic",
          "name": "CometAPI Anthropic Messages",
          "options": {
            "baseURL": "https://api.cometapi.com/v1",
            "apiKey": "{env:COMETAPI_KEY}"
          },
          "models": {
            "your-model-id": {
              "name": "CometAPI Messages model"
            }
          }
        },
        "cometapi-gemini": {
          "npm": "@ai-sdk/google",
          "name": "CometAPI Gemini",
          "options": {
            "baseURL": "https://api.cometapi.com/v1beta",
            "apiKey": "{env:COMETAPI_KEY}"
          },
          "models": {
            "your-model-id": {
              "name": "CometAPI Gemini model"
            }
          }
        }
      }
    }
    ```

    各 `your-model-id` キーを個別に置き換えます。4つのエントリでは
    異なるモデル ID を使用できます。

    この設定ではトップレベルの `model` を設定しません。これにより、必要な API 形式とモデルを
    `/models` で選択できます。

    <Warning>
      この設定では `/connect` を使用しないでください。`apiKey` フィールドは
      `COMETAPI_KEY` 環境変数から読み取られます。未設定の変数は
      保存された `/connect` API キーではなく、空の値として解決されます。
    </Warning>
  </Step>

  <Step title="各プロバイダーを選択して検証">
    アクセスさせるプロジェクトで OpenCode を起動します：

    ```bash theme={null}
    opencode
    ```

    `/models` を実行し、`provider/model` エントリを選択します。このガイドの4回の検証
    実行では、各モデルターンで、選択したエントリに対応する API
    形式が使用されました。形式をまたぐリクエストのファンアウトや API 形式の自動ネゴシエーションは
    確認されませんでした。

    コマンドラインからチャット補完を検証するには、次を実行します：

    ```bash theme={null}
    opencode run \
      --model cometapi-chat/your-model-id \
      "Reply exactly with: COMETAPI_CHAT_OK"
    ```

    コマンドラインからレスポンスを検証するには、次を実行します：

    ```bash theme={null}
    opencode run \
      --model cometapi-responses/your-model-id \
      "Reply exactly with: COMETAPI_RESPONSES_OK"
    ```

    コマンドラインから Anthropic メッセージを検証するには、次を実行します：

    ```bash theme={null}
    opencode run \
      --model cometapi-messages/your-model-id \
      "Reply exactly with: COMETAPI_MESSAGES_OK"
    ```

    コマンドラインから Gemini generateContent を検証するには、次を実行します：

    ```bash theme={null}
    opencode run \
      --model cometapi-gemini/your-model-id \
      "Reply exactly with: COMETAPI_GEMINI_OK"
    ```
  </Step>
</Steps>

## トラブルシューティング

<AccordionGroup>
  <Accordion title="OpenCode に CometAPI モデルが表示されない">
    設定が有効な JSON であることを確認してください。各カスタムエントリは
    トップレベルの `provider` オブジェクト内に置き、各モデル ID は
    対応する `models` オブジェクト内に配置する必要があります。OpenCode を再起動してから、`/models` を再度開いてください。
  </Accordion>

  <Accordion title="OpenCode で API キーまたは認証エラーが報告される">
    OpenCode を起動するシェルで `COMETAPI_KEY` が設定されていることを確認してください。
    未設定の `{env:COMETAPI_KEY}` 参照は空の値になります。シェルプロファイルを変更した後は、新しい
    シェルを開いてください。
  </Accordion>

  <Accordion title="モデル ID を利用できない">
    次の [CometAPI Models ページ](/ja/overview/models)を確認し、選択したプロバイダーエントリ内のモデル
    ID を置き換えてください。モデルがその
    プロバイダーの API 形式を受け入れることを確認してください。
  </Accordion>

  <Accordion title="リクエストで誤ったパスが使用される">
    チャット補完、レスポンス、Messages では、`baseURL` を `/v1` のままにしてください。Gemini には
    `/v1beta` を使用してください。`baseURL` には操作パスを含めないでください。
  </Accordion>

  <Accordion title="あるプロバイダーは動作するが、別のプロバイダーは失敗する">
    選択したプロバイダーの API 形式を受け入れるモデル ID を使用してください。1 つのモデル ID が 4 つすべての形式を受け入れると
    想定しないでください。
  </Accordion>

  <Accordion title="プロジェクト設定によってグローバルプロバイダーが変更される">
    OpenCode はグローバル設定とプロジェクト設定をマージします。プロジェクトのプロバイダー ID の名前を変更するか、グローバル
    プロバイダーエントリを変更せずに保持したい場合は、その競合する値を
    削除してください。
  </Accordion>

  <Accordion title="OpenCode が想定以上のアクセス権を持つ">
    OpenCode は、それを起動したプロセスの権限を使用します。より強力なアクセス境界が必要な場合は、OpenCode を
    コンテナまたはサンドボックスで実行してください。
  </Accordion>
</AccordionGroup>

## 関連リソース

* [CometAPI クイックスタート](/ja/overview/quick-start)
* [CometAPI モデルページ](/ja/overview/models)
* [OpenCode カスタムプロバイダー](https://opencode.ai/docs/providers/#custom-provider)
* [OpenCode 設定](https://opencode.ai/docs/config/)
* [OpenCode モデル選択](https://opencode.ai/docs/models/)

<script type="application/ld+json">
  {`
    {
    "@context": "https://schema.org",
    "@graph": [
      {
        "@type": "HowTo",
        "@id": "https://apidoc.cometapi.com/integrations/opencode#howto",
        "name": "CometAPI で OpenCode を使用する",
        "description": "このガイドでは、4 つの CometAPI API 形式を OpenCode のカスタムプロバイダーとして設定する方法を説明します。",
        "step": [
          {
            "@type": "HowToStep",
            "@id": "https://apidoc.cometapi.com/integrations/opencode#step-1",
            "position": 1,
            "name": "OpenCode をインストールする",
            "text": "OpenCode をインストールし、CLI が利用可能であることを確認します。"
          },
          {
            "@type": "HowToStep",
            "@id": "https://apidoc.cometapi.com/integrations/opencode#step-2",
            "position": 2,
            "name": "CometAPI API キーを設定する",
            "text": "CometAPI API キーを COMETAPI_KEY 環境変数に保存します。"
          },
          {
            "@type": "HowToStep",
            "@id": "https://apidoc.cometapi.com/integrations/opencode#step-3",
            "position": 3,
            "name": "設定場所を選択する",
            "text": "グローバル OpenCode 設定またはプロジェクト設定を選択します。"
          },
          {
            "@type": "HowToStep",
            "@id": "https://apidoc.cometapi.com/integrations/opencode#step-4",
            "position": 4,
            "name": "CometAPI プロバイダーを追加する",
            "text": "opencode.json に 4 つの CometAPI カスタムプロバイダーエントリを追加します。"
          },
          {
            "@type": "HowToStep",
            "@id": "https://apidoc.cometapi.com/integrations/opencode#step-5",
            "position": 5,
            "name": "各プロバイダーを選択して検証する",
            "text": "必要な CometAPI プロバイダーとモデルを選択して検証します。"
          }
        ]
      },
      {
        "@type": "BreadcrumbList",
        "itemListElement": [
          {
            "@type": "ListItem",
            "position": 1,
            "name": "CometAPI ドキュメント",
            "item": "https://apidoc.cometapi.com/"
          },
          {
            "@type": "ListItem",
            "position": 2,
            "name": "統合",
            "item": "https://apidoc.cometapi.com/integrations"
          },
          {
            "@type": "ListItem",
            "position": 3,
            "name": "CometAPI で OpenCode を使用する",
            "item": "https://apidoc.cometapi.com/integrations/opencode"
          }
        ]
      }
    ]
    }
    `}
</script>
