top of page
Фото автораКатерина Шевченко

Як інтегрувати сторонню LLM у середовище розробки. Огляд інструменту Continue




Розробники все більше надають перевагу великим мовним моделям (LLM) замість Google та Stack Overflow, які так само раніше замінили паперові посібники. Водночас чимало інструментів LLM є «чорними скриньками» — вони непрозорі та незручні у використанні. Доводиться витрачати чимало часу на копіювання з ChatGPT та вгадування, який контекст використовує Copilot. Крім того, для користування цими продуктами треба надати свій код для вдосконалення LLM, проте, як саме модель використовує ці дані — невідомо.


Можливість експериментувати, налаштовувати модель під себе та контролювати власні дані є одними з найбільших потреб у комʼюніті. Як наслідок, з'являються рішення для інтеграції локальних та зовнішніх великих мовних моделей в середовища розробки (IDE), а рішення на базі Github Copilot і Jetbrains AI відходять на другий план. Один з таких інструментів — Continue. У цьому матеріалі розбираємося, як він працює, які має переваги, та ділимося інструкціями установки та налаштувань. Бонус — ґайд, як обрати LLM для вашого проєкту.  

> Що таке Continue

> Як встановити Continue

> Як налаштувати LLM у Continue

> Яку LLM обрати

> Популярні LLM та їхні характеристики



Що таке Continue


Continue — це відкритий автопілот для розробки програмного забезпечення. Цей плагін дозволяє IDE підключатися до будь-якої великої мовної моделі, незалежно від того, розміщена вона локально чи в хмарі. 


Компанія Continue, яку заснували Нейт Сесті і Тай Данн, у листопаді 2023 залучила $2,1 млн початкового фінансування. Фаундери вважають, що процес розробки з використанням LLM має бути схожим на створення музики. «Розробники відчувають себе успішними, коли їхня робота нагадує гру на гітарі біля вогнища, спів під радіо або експерименти з ритмами в GarageBand, на відміну від застрягання у болоті коду, документації та форумів» — стверджують вони. 


На базовому рівні плагін Continue усуває потребу в копіюванні з ChatGPT — замість цього потрібно виділити контекст та написати питання у бічній панелі редактору. Також інструмент надає можливість керувати контекстом. Наприклад, можна ввести «@issue», щоби швидко звернутися до проблеми на GitHub під час запиту до LLM, «@README.md», щоб звернутися до файлу, або «@google», щоб включити результати пошуку в Google. Крім того, є безліч додаткових налаштувань. 


yak-pracue-continue


Розробник може написати: 


  • власні слеш-команди (наприклад, '/commit' — щоби написати повідомлення для зафіксованих змін, '/docs' — щоб отримати вміст файлу та оновити сторінки документації, '/ticket' — щоби згенерувати завдання із відповідними файлами та інструкціями);

  • джерела контексту (наприклад, проблеми GitHub, Jira, локальні файли, StackOverflow, сторінки документації);

  • шаблонні системні повідомлення;

  • інструменти (наприклад, додавання файлу, виконання модульних тестів, збирання та перегляд помилок) тощо.


Continue працює з будь-якими LLM, включно з локальними та відкритими моделями. За замовчуванням розробницькі дані зберігаються у .continue/dev_data на локальному комп'ютері та можуть бути використані для вдосконалення LLM, які використовує команда. Цю опцію Continue і планує монетизувати.


Переваги Continue: 


  • Вбудований інтелектуальний чат в редакторі коду. Користувач може отримувати поради, рекомендації або навіть допомогу з кодуванням без необхідності переходити до інших програм або вебсайтів.

  • Використання локальних LLM або сторонніх API. Continue надає можливість використовувати локальні або звертатися до зовнішніх сервісів API, які надають доступ до великих мовних моделей.

  • Робота з контекстом проєкту для більш точних та релевантних рекомендацій. 

  • Створення власних команд чату, які відповідають потребам та робочим процесам. 

  • Приватність і безпека даних. Всі обміни даними здійснюються безпечним чином, а користувацька інформація залишається конфіденційною.



Як встановити Continue


У VS Code завантажте плагін Continue через Visual Studio Marketplace та встановіть. Коли відповідна іконка зʼявиться у лівій бічній панелі, перетягніть її на праву панель. Якщо у вас виникли проблеми, перегляньте посібник з усунення несправностей. У JetBrains перейдіть до розділу налаштувань або параметрів, використовуючи «cmd/ctrl + shift + ,». Знайдіть розділ плагінів та встановіть Continue. 


Після інсталяції вам може знадобитися налаштувати плагін, щоби вказати, які моделі ви хочете використовувати (локальні, віддалені чи обидві). Налаштуйте будь-які параметри відповідно до ваших вимог. Обравши моделі, перезапустіть IDE, щоби переконатися, що плагін правильно завантажено та налаштовано.


Починаючи працювати з плагіном, варто протестувати його на простих завданнях. Наприклад:


  1. Виділіть фрагмент коду та натисніть «cmd+shift+M» (Macos) або «ctrl+shift+M» (Windows), щоби включити його в повідомлення чату Continue. Введіть запитання «скажи мені, як працює цей код» у чаті.

  2. Якщо пояснення здається коректним, введіть «як би ти змінив цей код на [ваше завдання]?». Якщо відповідь вас влаштує, введіть /edit [ваше завдання]. 

  3. Щоби прийняти зміни, використовуйте команду «cmd+shift+enter», щоб прийняти зміни.

  4. Щоби відхилити зміни, натисніть «cmd+shift+backspace» та повторіть спробу — плагін знайде іншу рекомендацію. 


Якщо після чергової спроби Continue надає некоректні пропозиції, спробуйте надати чіткі інструкції або розбити завдання та попросити LLM виконати кожне з них окремо. 



Як налаштувати LLM у Continue


Щойно встановивши Continue, можна випробувати цей інструмент за допомогою проксі-сервера, який безпечно здійснює виклики через API до таких моделей, як GPT-4, Gemini Pro та Phind CodeLlama через OpenAI, Google і Together відповідно. Коли будете готові використовувати свій власний API-ключ або іншу модель/провайдера, натисніть «+», щоби додати нову модель. Їх можна налаштувати через GUI або через config.json — у ньому достатньо вказати, якого провайдера та модель використовувати за замовченням.


Приклад підключення провайдера Mistral API:


~/.continue/config.json

{
 "models": [
   {
     "provider": "mistral",
     "title": "Mistral Small",
     "model": "mistral-small",
     "apiKey": "<API_KEY>"
   }
 ]
}

Приклад підключення провайдера Ollama:


~/.continue/config.json

{
 "models": [
   {
     "title": "Ollama",
     "provider": "ollama",
     "model": "llama2-7b"
   }
 ]
}

Приклад підключення провайдера TogetherLLM:


~/.continue/config.json

{
 "models": [
   {
     "title": "Together CodeLlama",
     "provider": "together",
     "model": "codellama-13b",
     "apiKey": "YOUR_API_KEY"
   }
 ]
}

Зокрема можна налаштувати шаблон чату. Більшість моделей із відкритим вихідним кодом працюють у певному форматі. Наприклад, llama2 і codellama очікують, що вхідні дані виглядатимуть так: «[INST] Як написати бульбашкове сортування в Rust? [/INST]». Continue автоматично намагатиметься визначити правильний формат підказки. Проте якщо ви отримуєте безглузді відповіді, спробуйте змінити формат у властивостях шаблону. Якщо ви хочете створити повністю новий шаблон чату, це можна зробити в config.ts, визначивши функцію та додавши її до властивостей templateMessages вашого LLM. 


Приклад templateMessages для формату Alpaca/Vicuna:


function templateAlpacaMessages(msgs: ChatMessage[]): string {
 let prompt = "";
 if (msgs[0].role === "system") {
   prompt += `${msgs[0].content}\n`;
   msgs.pop(0);
 }
 prompt += "### Instruction:\n";
 for (let msg of msgs) {
   prompt += `${msg.content}\n`;
 }
 prompt += "### Response:\n";
 return prompt;
}

Яку LLM обрати


Першим критерієм для вибору є використання відкритих джерел або комерційних моделей. Відкриті моделі зазвичай обирають, коли потрібно тримати код у власному середовищі, є достатньо доступної пам'яті, є вимога знизити витрати та мати доступ до керування та оптимізації. Комерційні моделі обирають, коли надають перевагу простому та надійному налаштуванню та не проти виходу коду за межі середовища.


Якщо ви обрали відкриту модель, наступне питання полягає в тому, встановлювати її на локальному комп'ютері чи на хостинг-провайдері. Основні переваги локального розташування — безоплатний доступ та можливість використовувати модель без підключення до інтернету. Хостинг-провайдери обирають для більш потужних моделей або коли LLM використовуватимуть декілька людей.



karta-llm-infografika


Нижче — перелік відкритих та комерційних моделей у порядку зростання популярності станом на кінець 2023 року.


Відкриті моделі:

  • Code Llama — модель, тренована Meta. Базується на Llama 2, доступна в різних розмірах: 7B, 13B і 34B, що робить її популярною для використання як на локальних машинах, так і через хостинг-провайдери. 

  • WizardCoder — побудована на основі Code Llama командою WizardLM. Для уточнення моделі використано метод Evol-Instruct, адаптований для задач програмування. Представлена у розмірах: 7B, 13B і 34B.

  • Phind-CodeLlama — побудована на основі Code Llama компанією Phind. Використовувався власний набір даних, що складається з приблизно 80 тисяч задач і рішень програмування. Загалом модель уточнена на 1,5 млрд додаткових токенів. Доступна у розмірі 34B.

  • Mistral — модель з параметрами 7B, навчена компанією Mistal AI. Вона є найновішою моделлю у цьому списку, проте з перших тижнів випуску викликала певний інтерес. Вже зараз починають з'являтися перші уточнені моделі на її базі.

  • StarCoder — модель з параметрами 15B, навчена компанією BigCode. Вона була навчена на 80 мовах програмування. Не є моделлю для інструкцій, тож команди на кшталт «напиши функцію, яка обчислює квадратний корінь» не працюють добре. Однак через запит Tech Assistant вона може бути корисною. 

  • DeepSeek Coder — модель, навчена компанією DeepSeek AI на 2 трлн токенів. З набором даних, який складається з понад 80 мов програмування, це найновіша модель у цьому списку. Вона набрала високі бали у низці тестів з програмування.

  • Llama2 — навчена компанією Meta на 2 трлн токенів. Це найпопулярніша відкрита LLM взагалі, хоча вона не так хороша у редагуванні коду, як інші моделі.


Комерційні моделі:


  • GPT-4 від OpenAI вважається найкращою моделлю LLM для використання під час програмування. Корисна для генерування та обговорення коду. Для використання потрібно надіслати свій код до OpenAI через їхній API.

  • GPT-4 Turbo від OpenAI є дешевшою та швидшою версією GPT-4. Має обмеження знань по кінцевій даті у квітні 2023 року та вікно контексту розміром 128 тис. символів. Наразі перебуває на етапі попереднього перегляду, але будь-хто з обліковим записом OpenAI API та доступом до GPT-4 може використовувати її.

  • GPT-3.5 Turbo від OpenAI є дешевшою та швидшою за GPT-4, однак її пропозиції не настільки корисні. Доступна для всіх розробників після реєстрації облікового запису в OpenAI.

  • Claude 2 — модель, навчена Anthropic, має покращені навички в програмуванні порівняно з першою версією Claude. Для використання потрібно надсилати свій код до Anthropic через їхній API. Для отримання доступу до Claude 2 потрібно надіслати заявку.

  • PaLM 2 — модель, навчена Google. Щоб спробувати її, потрібно надіслати свій код до Google через API PaLM після отримання ключа API через MakerSuite, які зараз у загальному доступі.


Популярні LLM та їхні характеристики

Назва

Засновник

База

Кількість параметрів

Ліцензія

Claude 2

Anthropic

Claude

Unknown

Proprietary

NexusRaven-13B

Nexusflow

CodeLlama

13B

Llama 2 Community

Codellama-13b-oasst-sft-v10

OpenAssistant

CodeLlama

13B

Llama 2 Community

Phind-CodeLlama-34B-Python-v1

Phind

CodeLlama

34B

Llama 2 Community

Phind-CodeLlama-34B-v2

Phind

CodeLlama

34B

Llama 2 Community

WizardCoder-Python-V1.0

WizardLM

CodeLlama

34B, 13B, 7B

Llama 2 Community

Falcon

TII UAE

Falcon

40B, 7B

Apache 2.0

Falcon Instruct

TII UAE

Falcon

40B,7B

Apache 2.0

GPT-3.5 Turbo

OpenAI

GPT

Unknown

Proprietary

GPT-4

OpenAI

GPT

Unknown

Proprietary

CodeUp-Llama-2

DeepSE

Llama 2

13B

OpenRAIL++

Vicuna-v1.5

LM Sys

Llama 2

13B

Llama 2 Community

Llama-2

Meta

Llama 2

70B,13B, 7B

Llama 2 Community

Llama 2 Chat

Meta

Llama 2

70B, 13B, 7B

Llama 2 Community

Nous-Hermes-Llama2

Nous Research

Llama 2

13B

Llama 2 Community

Redmond-Puffin

Nous Research

Llama 2