Jan как альтернатива GitHub Copilot в VS Code

Настраиваем Jan и подключаем его в VS Code в качестве альтернативы GitHub Copilot

Jan предоставляет удобный пользовательский интерфейс для взаимодействия с большими языковыми моделями. Можно выделить два типа моделей, с которыми может работать Jan:

  • локальные, например Hermes Pro 7B Q4, Gemma 7B Q4
  • онлайн, такие как ChatGPT 4, Grok Llama 2 70B

В данной статье затрагивается только использование локальных моделей.

Важно 🤖

Языковые модели пишут плохой код - не нужно их слушать при работе над хоть сколько-нибудь важным проектом. Применяйте их на свой страх и риск.

Установка Jan

Установить Jan довольно легко - просто переходим на страницу скачивания программы и выбираем нужную операционную систему.

Установка модели Stable Code

По моему мнению, модель stabilityai/stable-code-3b является оптимальной со стороны соотношения требовательности к ресурсам - скорости работы - качеством генерируемого кода. В хабе Jan нет данной модели, поэтому нужно предварительно скачать ее актуальную версию. Для этого:

  1. Открываем страницу модели на сайте huggingface
  2. Переходим на вкладку «Files and versions»
  3. Ищем в списке файлов stable-code-3b.gguf
  4. Жмем на иконку скачивания

Заметка 📝

Jan в настоящее время поддерживает только формат моделей GGUF и TensorRT

Далее необходимо добавить модель в Jan. Тут тоже все просто:

  1. Переходим на вкладку «Hub»
  2. Жмем кнопку «Import Model»
  3. Перетаскиваем скачанный файл модели в соответствующее окошко

Готово, модель теперь можно использовать.

Запуск Jan API сервера

Кроме того что Jan удобно использовать, он также предоставляет совместимый с OpenAI API интерфейс для взаимодействия с моделями. Это важно, так как многие инструменты, использующие возможности больших языковых моделей ориентируются именно на API от OpenAI. Чтобы запустить сервер, нужно перейти на вкладку «Local API Server» и нажать «Start Server».

Интегрируем с VS Code

В качестве «мостика» для интеграции VS Code и Jan будем использовать расширение Continue - что-то вроде GitHub Copilot, только open source. Устанавливаем расширение в VS Code и далее:

  1. Открываем вкладку расширения «Continue» на боковой панели
  2. Кликаем на значок настроек
  3. В ключ models файла config.json вставляем следующее:
{
    "title": "Jan",
    "provider": "openai",
    "model": "stable-code-3b-q5_k_m",
    "apiKey": "EMPTY",
    "apiBase": "http://127.0.0.1:1337/v1"
}

Проверяем

Пишем запрос:

Write simple FastAPI server with one route "/ping", which responses with "pong"

И получаем ответ:


from fastapi import FastAPI

app = FastAPI()

@app.get("/ping")
async def get_ping():
    return {"response": "pong"}

Explanation:

This code creates a FastAPI server with one route, "/ping". When the "/ping" route is accessed, the get_ping() function is executed. This function returns a dictionary containing the key "response" and the value "pong". As a result of this, when the "/ping" route is accessed, the server responds with a JSON object containing the key "response" and the value "pong".


Код работает как и ожидалось.