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

# Настройка кастомной модели GitHub Copilot через LLMEasy

> Настройте LLMEasy API Key и Base URL в GitHub Copilot Chat через Custom Endpoint в VS Code.

GitHub Copilot Chat поддерживает пользовательские модели через **Custom Endpoint**. Для подключения LLMEasy используйте API Key из группы **GPT** и выберите **Chat Completions**.

<Info>
  Эта инструкция настраивает пользовательскую языковую модель для GitHub Copilot Chat в VS Code. Она не заменяет inline code completion в GitHub Copilot.
</Info>

## Перед началом

* Установлена актуальная версия VS Code
* Установлен GitHub Copilot / Copilot Chat, выполнен вход в аккаунт
* Получен LLMEasy API Key (<a href={"https://www.llmeasy.ru/register"}>зарегистрироваться и получить</a>)
* API Key относится к группе **GPT**
* Вы знаете ID модели, например `gpt-5.5`

<Warning>
  Не записывайте реальный API Key вручную в `chatLanguageModels.json`. Вставьте ключ в окно ввода VS Code. VS Code сам создаст локальную secret-ссылку вида `${input:chat.lm.secret...}`.
</Warning>

## Шаги настройки

<Steps>
  <Step title="Откройте управление моделями">
    В области ввода Copilot Chat нажмите на выбор модели, затем выберите **Manage Models...**.

    <Frame>
      <img src="https://mintcdn.com/bettertoken/saursmLAn72TOGCS/images/github-copilot/manage-models-entry.png?fit=max&auto=format&n=saursmLAn72TOGCS&q=85&s=b3c89a8a8a1505dd56776d6d270aad38" alt="Открытие Manage Models из выбора модели в Copilot Chat." style={{ borderRadius: '0.5rem' }} width="3012" height="1600" data-path="images/github-copilot/manage-models-entry.png" />
    </Frame>
  </Step>

  <Step title="Добавьте Custom Endpoint">
    В окне **Language Models** нажмите **Add Models**, затем выберите **Custom Endpoint**.

    <Frame>
      <img src="https://mintcdn.com/bettertoken/saursmLAn72TOGCS/images/github-copilot/add-custom-endpoint.png?fit=max&auto=format&n=saursmLAn72TOGCS&q=85&s=28bf7fc3b707dd43e12c0ac8ffc925ab" alt="Кнопка Add Models в Language Models и выбор Custom Endpoint." style={{ borderRadius: '0.5rem' }} width="3840" height="2160" data-path="images/github-copilot/add-custom-endpoint.png" />
    </Frame>
  </Step>

  <Step title="Введите название группы">
    В поле **Group Name** введите:

    ```text theme={null}
    LLMEasy
    ```

    Затем нажмите **Enter**.

    <Frame>
      <img src="https://mintcdn.com/bettertoken/saursmLAn72TOGCS/images/github-copilot/group-name.png?fit=max&auto=format&n=saursmLAn72TOGCS&q=85&s=46c88048f0883a7523a9797a55586217" alt="Ввод LLMEasy в поле Group Name." style={{ borderRadius: '0.5rem' }} width="3840" height="2160" data-path="images/github-copilot/group-name.png" />
    </Frame>
  </Step>

  <Step title="Введите API Key">
    VS Code попросит ввести API Key. Вставьте LLMEasy API Key и нажмите **Enter**.

    Значение ключа не будет напрямую показано в конфигурационном файле. VS Code сохранит его как локальный secret и создаст ссылку вида:

    ```json theme={null}
    "apiKey": "${input:chat.lm.secret.xxxxx}"
    ```

    <Warning>
      Не заменяйте `${input:chat.lm.secret...}` на реальный API Key. Оставьте secret-ссылку, которую сгенерировал VS Code.
    </Warning>
  </Step>

  <Step title="Выберите тип API">
    В **Custom Endpoint: API Type** выберите **Chat Completions**.

    <Frame>
      <img src="https://mintcdn.com/bettertoken/saursmLAn72TOGCS/images/github-copilot/select-chat-completions.png?fit=max&auto=format&n=saursmLAn72TOGCS&q=85&s=cbfbd4129e09c88fa571e0686473d06a" alt="Выбор Chat Completions в Custom Endpoint API Type." style={{ borderRadius: '0.5rem' }} width="3012" height="1600" data-path="images/github-copilot/select-chat-completions.png" />
    </Frame>
  </Step>

  <Step title="Отредактируйте JSON-конфигурацию">
    VS Code откроет `chatLanguageModels.json`. Проверьте или измените конфигурацию:

    <Frame>
      <img src="https://mintcdn.com/bettertoken/saursmLAn72TOGCS/images/github-copilot/chat-language-models-json.png?fit=max&auto=format&n=saursmLAn72TOGCS&q=85&s=8d57b982f01ee44e25810b18754369b7" alt="Настройка URL модели LLMEasy, toolCalling, vision и лимитов токенов в chatLanguageModels.json." style={{ borderRadius: '0.5rem' }} width="3012" height="1600" data-path="images/github-copilot/chat-language-models-json.png" />
    </Frame>

    ```json theme={null}
    [
      {
        "name": "LLMEasy",
        "vendor": "customendpoint",
        "apiKey": "${input:chat.lm.secret.xxxxx}",
        "apiType": "chat-completions",
        "models": [
          {
            "id": "gpt-5.5",
            "name": "gpt-5.5",
            "url": "https://www.llmeasy.ru/v1/chat/completions",
            "toolCalling": true,
            "vision": true,
            "maxInputTokens": 1000000,
            "maxOutputTokens": 64000
          }
        ]
      }
    ]
    ```

    Проверьте ключевые поля:

    | Поле              | Рекомендуемое значение                                                                                    |
    | ----------------- | --------------------------------------------------------------------------------------------------------- |
    | `name`            | `LLMEasy`                                                                                                 |
    | `apiType`         | `chat-completions`                                                                                        |
    | `id`              | `gpt-5.5` или другой ID модели из группы GPT в <a href={"https://www.llmeasy.ru/pricing"}>model plaza</a> |
    | `name`            | Совпадает с ID модели                                                                                     |
    | `url`             | `https://www.llmeasy.ru/v1/chat/completions`                                                              |
    | `toolCalling`     | `true`                                                                                                    |
    | `vision`          | `true`                                                                                                    |
    | `maxInputTokens`  | `1000000`                                                                                                 |
    | `maxOutputTokens` | `64000`                                                                                                   |
  </Step>

  <Step title="Сохраните и перезагрузите VS Code">
    Сохраните `chatLanguageModels.json`, затем выполните команду:

    ```text theme={null}
    Developer: Reload Window
    ```

    После перезагрузки вернитесь к выбору модели в Copilot Chat и выберите `gpt-5.5`.
  </Step>

  <Step title="Отправьте тестовое сообщение">
    Отправьте простое сообщение в Copilot Chat:

    ```text theme={null}
    Опиши в одном предложении, какую модель ты используешь.
    ```

    Если Copilot Chat отвечает нормально, LLMEasy Custom Endpoint настроен успешно.
  </Step>
</Steps>

## FAQ

### Почему API Key нужно вводить во всплывающем окне?

VS Code сохраняет API Key в локальном secret storage и использует в JSON ссылку `${input:chat.lm.secret...}`. Это безопаснее, чем записывать реальный API Key в JSON-файл.

### Почему нужно выбрать Chat Completions?

Проверенная рабочая конфигурация использует **Chat Completions**. URL:

```text theme={null}
https://www.llmeasy.ru/v1/chat/completions
```

Не используйте `/v1/responses` и не оставляйте только `/v1`.

### Эта настройка заменяет inline completion в GitHub Copilot?

Нет. Custom Endpoint в основном используется для запросов языковой модели в Copilot Chat. Inline completion в GitHub Copilot по-прежнему работает через сервис GitHub Copilot.

### Что делать при ошибке Invalid token?

Проверьте по порядку:

1. API Key был введён во всплывающем окне VS Code
2. В JSON сохранена ссылка `${input:chat.lm.secret...}`
3. API Key относится к группе **GPT**
4. `url` равен `https://www.llmeasy.ru/v1/chat/completions`
5. `apiType` равен `chat-completions`
6. ID модели взят из группы GPT в <a href={"https://www.llmeasy.ru/pricing"}>model plaza</a>
