> ## 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

> Скористайтеся цим посібником, щоб налаштувати чотири формати API CometAPI як користувацькі провайдери в OpenCode.

Скористайтеся цим посібником, щоб запустити [OpenCode](https://opencode.ai/docs/) з CometAPI.
Ця конфігурація надає чотири формати 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` на ID моделі зі сторінки
  [CometAPI Models](/uk/overview/models). Виберіть модель, яка підтримує формат API
  відповідного запису провайдера.
</Note>

## Передумови

* Node.js і npm або інший спосіб встановлення з посібника OpenCode
* Обліковий запис CometAPI з активним API key із
  [панелі керування](https://www.cometapi.com/console/token)
* Один або кілька ID моделей зі сторінки [CometAPI Models](/uk/overview/models)

## Ознайомтеся з форматами API

Кожен ID провайдера вибирає один адаптер SDK і один формат API.

| ID провайдера        | Адаптер OpenCode            | Базова URL-адреса                 | Формат API             |
| -------------------- | --------------------------- | --------------------------------- | ---------------------- |
| `cometapi-chat`      | `@ai-sdk/openai-compatible` | `https://api.cometapi.com/v1`     | Chat Completions       |
| `cometapi-responses` | `@ai-sdk/openai`            | `https://api.cometapi.com/v1`     | Responses              |
| `cometapi-messages`  | `@ai-sdk/anthropic`         | `https://api.cometapi.com/v1`     | Anthropic Messages     |
| `cometapi-gemini`    | `@ai-sdk/google`            | `https://api.cometapi.com/v1beta` | Gemini generateContent |

У цьому посібнику перевіряється операція Streaming для Gemini, яка використовується під час звичайного
ходу агента OpenCode. Адаптер Google додає
`:streamGenerateContent?alt=sse` до шляху моделі.

Не додавайте `/chat/completions`, `/responses`, `/messages` або шлях до моделі Gemini
до `baseURL`. Кожен адаптер додає необхідний шлях операції.

## Ознайомтеся з дозволами під час виконання

OpenCode запускається з дозволами процесу, який його запускає. Запускайте
OpenCode у потрібному каталозі проєкту та зберігайте можливість відкату, наприклад за допомогою
git. Використовуйте контейнер або пісочницю, коли вам потрібна надійніша ізоляція файлової системи, процесів,
мережі або API key.

## Налаштування OpenCode

<Steps>
  <Step title="Установлення OpenCode">
    Установіть OpenCode за допомогою офіційного пакета npm:

    ```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="Налаштування API-ключа CometAPI">
    Збережіть API-ключ CometAPI у змінній середовища `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` об’єкт, об’єднайте ці чотири записи з цим об’єктом:

    ```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` окремо. У чотирьох записах можна використовувати
    різні ідентифікатори моделей.

    Конфігурація не задає `model` верхнього рівня. Це дає змогу вибрати
    потрібний формат API та модель через `/models`.

    <Warning>
      Не використовуйте `/connect` для цієї конфігурації. Поля `apiKey` зчитуються
      `COMETAPI_KEY` із середовища. Незадана змінна набуває
      порожнього значення замість збереженого API-ключа `/connect`.
    </Warning>
  </Step>

  <Step title="Виберіть і перевірте кожен провайдер">
    Запустіть OpenCode у проєкті, до якого він має отримати доступ:

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

    Виконайте `/models`, а потім виберіть запис `provider/model`. Під час чотирьох перевірок
    у цьому посібнику кожен виклик моделі використовував відповідний формат API вибраного запису.
    Розсилання запитів між форматами чи автоматичного узгодження формату API
    не спостерігалося.

    Щоб перевірити Chat Completions з командного рядка, виконайте:

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

    Щоб перевірити Responses з командного рядка, виконайте:

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

    Щоб перевірити Anthropic Messages з командного рядка, виконайте:

    ```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 key або автентифікації">
    Переконайтеся, що `COMETAPI_KEY` задано в оболонці, з якої запускається OpenCode.
    Незадане посилання `{env:COMETAPI_KEY}` перетворюється на порожнє значення. Відкрийте нову
    оболонку після зміни профілю оболонки.
  </Accordion>

  <Accordion title="ID моделі недоступний">
    Перевірте [сторінку моделей CometAPI](/uk/overview/models), а потім замініть модель
    ID у вибраному записі провайдера. Переконайтеся, що модель підтримує API format цього
    провайдера.
  </Accordion>

  <Accordion title="Запити використовують неправильний шлях">
    Залиште `baseURL` зі значенням `/v1` для Chat Completions, Responses і Messages. Використовуйте
    `/v1beta` для Gemini. Не включайте шлях операції до `baseURL`.
  </Accordion>

  <Accordion title="Один провайдер працює, а інший — ні">
    Використовуйте ID моделі, що підтримує API format вибраного провайдера. Не
    вважайте, що один ID моделі підтримує всі чотири формати.
  </Accordion>

  <Accordion title="Конфігурація проєкту змінює глобального провайдера">
    OpenCode об’єднує глобальну та проєктну конфігурації. Перейменуйте ідентифікатор провайдера
    у проєкті або видаліть його конфліктні значення, якщо хочете, щоб глобальний
    запис провайдера залишився без змін.
  </Accordion>

  <Accordion title="OpenCode має більше доступу, ніж очікувалося">
    OpenCode використовує дозволи процесу, який його запустив. Запускайте OpenCode
    у контейнері або ізольованому середовищі, коли потрібні суворіші межі доступу.
  </Accordion>
</AccordionGroup>

## Пов’язані ресурси

* [Швидкий початок роботи з CometAPI](/uk/overview/quick-start)
* [Сторінка моделей CometAPI](/uk/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": "Використання OpenCode з CometAPI",
        "description": "Скористайтеся цим посібником, щоб налаштувати чотири формати API CometAPI як користувацькі провайдери в 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": "Установіть ключ API CometAPI",
            "text": "Збережіть ключ API CometAPI у змінній середовища 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": "Додайте чотири записи користувацьких провайдерів CometAPI до opencode.json."
          },
          {
            "@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": "Використання OpenCode з CometAPI",
            "item": "https://apidoc.cometapi.com/integrations/opencode"
          }
        ]
      }
    ]
    }
    `}
</script>
