RU ▾
Получить API-ключ

LLM API для VS Code: подключите редактор к вашему ключу

Вы можете направить VS Code на любой OpenAI-совместимый эндпоинт, предоставив расширению три значения: базовый URL, API-ключ и ID модели. На этой странице показано, куда вводить эти значения и как сначала их протестировать.

Обновлено

Абстрактный редактор кода, подключенный кабелем к светящемуся серверному кубу, представляющий подключение LLM API для VS Code

Ключевые моменты

  • Протестируйте ключ через curl, прежде чем трогать редактор, чтобы знать, какая сторона сломана.
  • Расширения, такие как Continue и Cline, запрашивают те же три значения: базовый URL, ключ, ID модели.
  • Используйте ID модели uncensored и базовый URL https://api.codingllmapi.com/v1.
  • API обслуживает только чат-завершения, поэтому функции, требующие отдельного эндпоинта завершения, могут не работать.

Что вам нужно перед началом

Настройка LLM API для VS Code не содержит магии. Сам VS Code не общается с языковыми моделями. Это делает расширение, которому нужно знать, куда отправлять запросы и как вас идентифицировать. Любое расширение, поддерживающее пользовательский OpenAI-совместимый провайдер, может использовать этот сервис.

Сначала соберите эти три значения.

  • Базовый URL: https://api.codingllmapi.com/v1
  • Идентификатор модели: uncensored
  • API-ключ: создан на странице API-ключ. После входа вы можете получить $0,50 пробного баланса в один клик, срок действия — 7 дней, карта не нужна.

Ключ передается в запросе как Authorization: Bearer <key>. Расширения добавляют этот заголовок автоматически, как только вы вставите ключ в их настройки.

Шаг 1: протестируйте ключ вне редактора

Отладка внутри расширения медленнее, чем в терминале. Откройте терминал в VS Code (Ctrl+` в Windows и Linux, Cmd+` на macOS), сохраните ключ в переменной окружения и выполните два вызова. Первый перечисляет модели. Второй отправляет небольшой чат-запрос.

export LLM_API_KEY="paste-your-key-here"

curl -s https://api.codingllmapi.com/v1/models \
  -H "Authorization: Bearer $LLM_API_KEY"

curl -s https://api.codingllmapi.com/v1/chat/completions \
  -H "Authorization: Bearer $LLM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"uncensored","messages":[{"role":"user","content":"Reply with the word ready."}],"max_tokens":10}'

Если второй запрос возвращает JSON с сообщением, ключ, URL и идентификатор модели указаны верно. Любая другая ошибка — это настройка расширения, а не вашей учётной записи. Если здесь возникает ошибка аутентификации, проверьте, что вы скопировали ключ целиком и что вместе с ним не перешёл лишний пробел.

Шаг 2: настройте расширение

Настройки расширений меняются между версиями, поэтому считайте названия полей ниже руководством и проверяйте документацию расширения, если метка отличается. Три значения всегда одинаковы.

Continue

Continue — это ассистент с открытым исходным кодом для VS Code и JetBrains. Он читает файл конфигурации из вашей домашней директории. Новые версии используют файл YAML, а старые — config.json. Запись модели содержит те же поля в обоих случаях. В формате JSON это выглядит так:

{
  "models": [
    {
      "title": "Uncensored",
      "provider": "openai",
      "model": "uncensored",
      "apiBase": "https://api.codingllmapi.com/v1",
      "apiKey": "paste-your-key-here"
    }
  ]
}

Провайдер — openai, потому что сетевой формат соответствует формату OpenAI. Только параметр apiBase указывает Continue обращаться к другому серверу. После сохранения перезагрузите окно и выберите модель из выпадающего списка в панели чата.

Cline

Cline — это расширение-агент, которое может читать файлы, редактировать их и выполнять команды в терминале с вашего согласия. Откройте его настройки и выберите провайдера с именем OpenAI Compatible. Введите базовый URL, API-ключ и идентификатор модели. Вставьте https://api.codingllmapi.com/v1, ваш ключ и uncensored. Сохраните, запустите задачу и подтвердите её первое использование инструмента.

Другие расширения

Многие инструменты следуют тому же шаблону под названиями «пользовательский эндпоинт», «OpenAI-совместимый» или «подключи свой ключ». Ищите поле, принимающее базовый URL. Если расширение предлагает только фиксированный список поставщиков без поля URL, его нельзя направить на этот API.

Что работает, а что может не работать

Этот API реализует POST /v1/chat/completions и GET /v1/models. Это покрывает панели чата, команды редактирования, действия «объясни этот код» и циклы агентов. Он не покрывает всё, что может запросить редактор.

Функция редактораОжидаемый результат
Чат об открытом файлеРаботает
Выделите код и попросите редактированиеРаботает
Задачи агента с вызовом инструментовРаботает, если расширение использует стандартное поле tools или свой собственный формат промпта
Автодополнение по вкладкамЗависит от расширения. Если ему нужен отдельный эндпоинт завершения или fill-in-the-middle, этот API его не предоставляет
Эмбеддинги и индексация кодовой базыНедоступно здесь, так как нет эндпоинта эмбеддингов. Используйте другой источник эмбеддингов или отключите индексацию
Ввод или генерация изображенийНедоступно, API только текстовый

Если расширение не работает с функцией из этой таблицы, отключите эту функцию в её настройках, а не предполагайте, что ваш ключ неверен. Для обзора того, как эта модель подходит для программирования, см. страницу о модели без цензуры для кодовых агентов.

Помимо расширений: скрипты, которые вы запускаете из редактора

Расширение — не единственный способ использовать ключ из VS Code. Многие разработчики хранят небольшой скрипт в проекте, который отправляет файл модели и выводит ответ, а затем запускают его из встроенного терминала или привязывают к задаче. Это дает вам полный контроль над промптом и избегает сюрпризов от скрытых инструкций расширения.

Вот короткий скрипт на Python, который проверяет любой путь к файлу, который вы передадите. Он читает ключ из переменной окружения, поэтому ничего секретного не попадет в ваш репозиторий.

import os
import sys
from openai import OpenAI

client = OpenAI(
    base_url="https://api.codingllmapi.com/v1",
    api_key=os.environ["LLM_API_KEY"],
)

path = sys.argv[1]
with open(path, encoding="utf-8") as f:
    source = f.read()

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "Review the code. List bugs first, then style issues. Be brief."},
        {"role": "user", "content": source},
    ],
    temperature=0.2,
)
print(resp.choices[0].message.content)

Запустите его с помощью python review.py src/app.py. Большие файлы подходят до окна в 100 000 токенов, но меньший промпт отвечает быстрее и стоит дешевле. Если вы хотите, чтобы ответ появлялся по мере написания, передайте stream=True и выводите каждый чанк delta.content по мере поступления.

Та же идея работает как задача VS Code в .vscode/tasks.json: определите задачу, чья команда — этот скрипт с текущим файлом в качестве аргумента, и запустите её из палитры команд. Это небольшая настройка, а результат — команда проверки, которую вы полностью понимаете.

Исправление распространенных ошибок

Большинство проблем сводится к нескольким причинам. Действуйте сверху этого списка.

  1. 401 или «неверный API-ключ». Ключ был вставлен с пробелом в конце, либо вы используете ключ от другого сайта. Создайте новый и вставьте его снова.
  2. 404 или «модель не найдена». ID модели указан с ошибкой, либо в базовом URL отсутствует /v1 или он указан дважды. Правильный идентификатор — uncensored. Выполните вызов /v1/models, чтобы узнать, что возвращает сервер.
  3. 429 с rate_limited. Вы превысили лимит запросов в минуту: 300 для полного ключа, 60 для пробного. Агенты, которые быстро зацикливаются, часто попадают в этот лимит. Подождите и повторите запрос, либо уменьшите количество автоматических шагов.
  4. 429 с concurrency. Слишком много одновременных запросов: 8 для полного ключа, 2 для пробного. Некоторые расширения отправляют несколько вызовов параллельно для одной задачи. Потоковая передача удерживает слот до завершения, поэтому зависший поток может блокировать новые вызовы.
  5. 429 с заголовком Retry-After: 5. Временная перегрузка. Расширение должно повторить запрос через пять секунд. Если этого не происходит, повторите запрос вручную.
  6. Запрос отклонён как слишком большой. Лимит тела запроса — 8 МБ, а контекстное окно составляет 100 000 токенов на промпт и ответ. Агенты, прикрепляющие много файлов, могут превысить этот лимит. Сужайте контекст или очищайте историю разговора.

При обращении в службу поддержки указывайте значение заголовка ответа X-Request-Id. Вы можете увидеть его с помощью curl -i.

Контроль расходов

Агенты в редакторе отправляют много текста, так как каждый шаг обычно включает файлы и историю на данный момент. Стоимость составляет $0,15 за 1 млн входных токенов и $0,50 за 1 млн выходных токенов. Это делает стоимость отдельных запросов небольшой, но зацикливание быстро накапливает расходы.

Пример расчёта: шаг агента с 30 000 входных токенов и 1 000 выходных токенов стоит 30 000 × $0,15 / 1 000 000 = $0,0045 за вход и 1 000 × $0,50 / 1 000 000 = $0,0005 за выход, итого $0,005 за шаг. Задача из 40 таких шагов обойдётся в $0,20. Это примерная оценка, а не гарантия, так как реальные шаги могут отличаться по объёму.

  • Проверяйте заголовок ответа X-Balance-USD, чтобы узнать остаток баланса после вызова.
  • Начинайте новые задачи в новых диалогах, чтобы старая история не накапливалась бесконечно.
  • Установите лимит шагов или запросов в расширении, если такая опция доступна.

Баланс является предоплаченным, поэтому расходы прекращаются, когда средства заканчиваются, и он никогда не истекает. Пополнение доступно от $20 до $500 целыми суммами, с бонусом 5% от $50, 10% от $100 и 15% от $200. Принимаются карты (Visa, Mastercard, Apple Pay, Google Pay) и криптовалюта (USDT в сети TRC20, USDC в сети Base). Подробности на странице с ценами, а в документации перечислены все поддерживаемые параметры.

Примечание о конфиденциальности и использовании

Код, который вы отправляете, попадает на серверы провайдера, поэтому не вставляйте секреты, такие как ключи от продакшена, пароли или клиентские данные, в промпты. Промпты в этом сервисе не используются для обучения. Модель настроена на ответы без отказов по контенту для законного использования взрослыми, что означает: она не будет читать вам нотации о тесте безопасности или скрипте игры в тёмной теме, но вы несёте ответственность за то, что вы от неё запрашиваете. Контент сексуального характера с участием несовершеннолетних всегда запрещён.

Вопросы и ответы

Можно ли использовать этот API с GitHub Copilot в VS Code?

Copilot привязан к своей собственной службе, поэтому этот ключ не заменяет его. Используйте расширение, которое принимает пользовательский эндпоинт, например Continue или Cline.

Какой идентификатор модели ввести?

Введите uncensored. Вы можете подтвердить это, вызвав GET /v1/models с вашим ключом.

Почему редактор сообщает об ошибке соединения?

Сначала выполните тест через curl. Если curl работает, перепроверьте базовый URL в расширении, включая /v1 в конце и отсутствие лишних пробелов.

Работает ли автодополнение по вкладкам?

Только если расширение может использовать обычные чат-завершения для этой функции. У этого API нет отдельного эндпоинта для завершения, поэтому проверьте настройки автодополнения в расширении.

Есть ли бесплатный способ протестировать?

Новые пользователи могут получить $0,50 пробного баланса на странице API-ключа после входа. Для этого не нужна карта, срок действия — 7 дней, лимит — один на человека.

Ваш ключ — всего в одной форме

Создайте аккаунт, скопируйте ключ, измените базовый URL. Это вся настройка.

Получить API-ключ