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 нет данной модели, поэтому нужно предварительно скачать ее актуальную версию. Для этого:
- Открываем страницу модели на сайте huggingface
- Переходим на вкладку «Files and versions»
- Ищем в списке файлов stable-code-3b.gguf
- Жмем на иконку скачивания
Заметка 📝
Jan в настоящее время поддерживает только формат моделей GGUF и TensorRT
Далее необходимо добавить модель в Jan. Тут тоже все просто:
- Переходим на вкладку «Hub»
- Жмем кнопку «Import Model»
- Перетаскиваем скачанный файл модели в соответствующее окошко
Готово, модель теперь можно использовать.
Запуск Jan API сервера
Кроме того что Jan удобно использовать, он также предоставляет совместимый с OpenAI API интерфейс для взаимодействия с моделями. Это важно, так как многие инструменты, использующие возможности больших языковых моделей ориентируются именно на API от OpenAI. Чтобы запустить сервер, нужно перейти на вкладку «Local API Server» и нажать «Start Server».
Интегрируем с VS Code
В качестве «мостика» для интеграции VS Code и Jan будем использовать расширение Continue - что-то вроде GitHub Copilot, только open source. Устанавливаем расширение в VS Code и далее:
- Открываем вкладку расширения «Continue» на боковой панели
- Кликаем на значок настроек
- В ключ
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".
Код работает как и ожидалось.