Локальный чатбот без ограничений: гайд по LM Studio и открытым LLM

В этой статье мы не только установим локальный (и бесплатный) аналог ChatGPT, но и сделаем обзор самых важных открытых LLM, разберёмся в продвинутых настройках программы LM Studio, подключим чатбота к Visual Studio Code и научим его помогать нам в программировании. А ещё мы посмотрим, как можно тонко настраивать поведение модели с помощью системных промптов.

LLM (Large Language Model) — это генеративная нейросеть, обученная на огромных объёмах текстов. Она способна понимать запросы, вести диалог и генерировать связный текст по заданному контексту. В просторечии — «чатбот» (хотя это слово существовало задолго до появления нейросетей).

Зачем?

Ведь есть же ChatGPT, Claude, DeepSeek, Gemini...

На самом деле причин хостить чатбота у себя на компьютере — масса. Вот лишь некоторые:

  • Приватность. Ни один байт данных не уходит на чужие серверы. Это особенно важно, если мы работаем с чувствительной или закрытой информацией: финансы, медицина, корпоративные проекты. Например, недавно несколько инженеров Samsung случайно загрузили конфиденциальный исходный код в ChatGPT — то есть на сервер частной компании OpenAI!
    Прочли бы они эту статью — они бы просто поставили LM Studio и избежали выговора начальника (или увольнения).

  • Отсутствие цензуры и ограничений. Почти все облачные LLM имеют строгие фильтры и модерацию. Есть темы, на которые они просто откажутся с вами говорить — будь то технические детали, политика, безопасность или даже философия. Да, иногда ограничения можно обойти хитрой «промпт‑инженерией», но полной свободы в облаке нет — это риски для бизнеса, который всегда предпочтёт перестраховаться.

  • Поддержка разных моделей. В облаке можно пообщаться только с теми моделями, которые предоставляет сервис. Локально же можем запустить любую открытую LLM, подходящую под конкретную задачу: Mistral для скорости, LLaMA3 для качества ответов, DeepSeek‑Coder или CodeGemma — как ассистент для кодинга.

  • Интеграция в проекты — свою модель мы можем интегрировать в телеграм‑бот, свой ИИ‑стартап или кодингового асистента в IDE. Даже если в проде наш проект будет работать на облачной LLM — тестировать лучше локально.

  • Обучение и настройка. В облаке нельзя дообучить проприетарные модели вроде GPT-4o или Claude — даже за деньги. Максимум — настройка с помощью системного промпта или "инструкционного" стиля общения. Локально же мы можем делать fine-tuning, подключать RAG, настраивать стиль и поведение модели, полностью контролируя процесс.

  • Бесплатность. Любой облачный сервис либо требует подписки, либо ограничивает по количеству токенов в сутки или в месяц. С локальной LLM мы ограничены только ресурсами нашего компьютера. И зачем платить подписку за Cursor, когда можно настроить локального кодингового ассистента в Visual Studio Code бесплатно?

А минусы будут?

Конечно, будут. Запустить ту же модель, что работает в облаке, не всегда получится:

  • У нас может не хватить аппаратных ресурсов на полную версию модели и придётся использовать облегчённую (например, у облачной версии DeepSeek — 685 миллиардов параметров, тогда как моя RTX 4070 Ti Super подтормаживает уже на модели в 32 миллиарда). И вообще без минимум 16 GB RAM это дело заранее безнадёжное.

  • Некоторые модели кроме причины выше ещё и попросту недоступны публично — такие как ChatGPT-4o, Claude 3 и Gemini 1.5.

  • Из‑за двух пунктов выше приходится запускать облегчённые версии моделей. Они быстрее и легче, но:

    • менее точны

    • могут давать более «плоские» ответы

    • не всегда справляются с комплексными задачами так же хорошо, как GPT-4o или Claude

Конечно, если у нас есть кластер из серверных GPU, то можно запустить тот самый нашумевший DeepSeek‑685B без компромиссов — но большинству пользователей придётся довольствоваться более лёгкими моделями.

*цифра перед b, например, 658b — обозначает сколько миллиардов (billons) параметров в данной версии модели. Чем больше — тем модель качественнее рассуждает, но тем и требовательнее к железу. Золотой серединой для обычного потребительского железа c GPU можно считать 16–22b.

Модель

Параметры

GPU

Оценочная скорость

DeepSeek 685B

685 миллиардов

Кластеры с 8× H100 (80 GB)

~ real‑time

DeepSeek‑Coder 33B

33 миллиарда

RTX Pro 6000

~ real‑time

DeepSeek‑Coder 33B

33 миллиарда

RTX 4070

крайне медленно

DeepSeek‑Coder 6.7B

6.7 миллиардов

RTX 4070

почти мгновенно

LM Studio

LM Studio — это одно из самых удобных десктопных приложений для запуска локальных LLM.

Более опытные пользователи, возможно, предпочтут Ollama — он гибче и лучше подходит для автоматизации, но не имеет графического интерфейса «из коробки» (хотя и можно подключить отдельно). Для большинства задач работы с языковыми моделями LM Studio более чем достаточно — тем более, что обе программы под капотом используют один и тот же движок — llama.cpp.

На момент написания статьи LM Studio умеет:

  • Предоставлять ChatGPT‑подобный интерфейс для диалога с моделью. Диалоги можно дублировать, произвольно удалять и редактировать сообщения — в общем, куда большая свобода, чем в ChatGPT.

  • Discovery service для моделей с превью — можно находить языковые модели прямо в окне LM Studio и даже производить фильтрацию моделей, подходящих для нашего железа. Скачивать модели с HuggingFace так же можно.

  • Скачивать и переключать языковые модели в один клик.

  • Настраивать системный промпт. Это позволяет задать «персональность» модели: стиль общения, роль, тон и поведение.

  • Работать как локальный сервер с OpenAI‑совместимым API. Можно подключать модель к Telegram‑боту, использовать в сторонних приложениях или использовать модель как движок для AI‑ассистента в IDE.

  • Менять параметры генерации — top_p, top_k и прочие. Об этом подробнее ниже.

  • MCP сервер.

  • RAG — как возможность подключать объёмные документы к диалогу (документы поменьше будут загружены целиком в контекст чата)

Первый запуск

LM Studio доступна на Mac, Windows (вкл. Arm) и Linux, а установка не требует каких‑либо манипуляций. Просто переходим сюда, выбираем свою платформу и ставим.

После установки мы видим стартовое окно:

По умолчанию интерфейс установлен в режиме User, но мы с вами взрослые, поэтому сразу переключаемся на Developer:

Далее нажимаем на Select a model to load и LM Studio заботливо нам предложит gemma-3 в подходящей для нашего железа сборке:

Ждём, пока скачиваются 6–8 ГБ LLM модели...

Модели можно скармливать текстовые файлы и, если она поддерживает - изображения
Модели можно скармливать текстовые файлы и, если она поддерживает — изображения

Скачиваем, чатимся, PROFIT!
Можно заканчивать тутор? Как бы не так.

Модели

LM Studio позволят нам скачивать модели двумя способами — через собственный маркетплейс (кнопка лупы фиолетового цвета) или через внешние сайты, вроде HuggingFace.

Во встроенном маркетплейс удобным образом промаркированы модели с reasoning, распознаванием изобраений и те, которые были адаптированы для использования в составе тулзов.
А теперь мы отвлечёмся от собственно LM Studio и разберёмся с основными открытыми LLM. Существуют базовые модели: LLaMA, Mistral, Gemma, Qwen, DeepSeek и их fine‑tuned версии со специализацией на более «игривое» общение, кодинг, снятие цензуры, специфических сценарий общений.

Квантование (Q)

В названиях моделей, помимо размера (например, 24b), мы часто встретим суффиксы вроде Q4_K_M. Это значит, что модель квантована — сжата с некоторой потерей качества как JPEG, только не для изображений, а для нейросетей.
Все модели, доступные для скачивания через LM Studio, уже идут в квантованном виде — это позволяет запускать их на обычном потребительском железе, без серверных GPU.
Квантование — это компромисс между точностью и производительностью: модель занимает меньше памяти, работает быстрее, но может немного терять в качестве.
Если хочется разобраться в технических тонкостях — у меня есть отдельная статья про квантование.

А пока достаточно запомнить:

чем выше цифра после Q — тем точнее модель, но тем тяжелее она запускается.

Базовые LLM модели

LLaMA (Meta)
На сегодняшний день — одна из самых «умных» open‑source моделей. Отлично подходит как в роли аналога ChatGPT, так и в качестве ассистента по программированию. Даже версия с 8B параметрами выдаёт качество на уровне ChatGPT‑3.5.
Огромное количество fine‑tuned моделей основано именно на LLaMA. Однако имеет ограниченную лицензию, не допускающую использование в продуктах, конкурирующих с сервисами Meta.

Gemma (Google)
Облегчённая open‑source версия от Google, основанная на разработках Gemini. Работает довольно неплохо даже на слабом железе и легко поддаётся fine‑tuning'у. Распространяется под лицензией Apache 2.0 — одной из самых свободных.

Qwen (Alibaba)
Модель Qwen 2 показывает отличные результаты в бенчмарках среди open‑source моделей. Хорошо справляется с кодом, математикой и общими рассуждениями. Существуют мини‑версии для ARM, мобильных устройств и систем без GPU.
Однако некоторые версии имеют ограничения на коммерческое использование, особенно в Китае и в облачных продуктах.

DeepSeek (DeepSeek AI)
Тот самый DeepSeek, который наделал шуму в начале 2025 года. Существуют модели от крошечных 1.3B до гигантских 685B (последние доступны только в облаке). Отдельно стоит отметить DeepSeek‑Coder — специализированную модель для программирования, которая в версии 33B по многим задачам превосходит ChatGPT-3.5.

Ниже — краткая таблица с основными характеристиками этих моделей:

Модель

Разработчик

Сильные стороны

Минусы

LLaMA 3 (8B / 70B)

Meta

Высокое качество, мощная база для дообучения, богатая экосистема

Лицензия ограничивает коммерческое использование, цензурированность

Mistral (7B)

Mistral AI

Очень быстрая, отлично работает на CPU / GPU, относительная малая цензурированность

Пока нет версий >7B

Mixtral (2×7B MoE)

Mistral AI

Mixture‑of‑Experts — высокая производительность и масштабируемость

Требует больше памяти

Gemma (2B / 7B)

Google

Простота, свободная лицензия

Среднее качество, высокая цензурированность

Qwen 2 (0.5–72B)

Alibaba

Высокое качество, отлична в кодинге, мощные большие версии

Частично ограничена лицензия, цензура

DeepSeek (1.3–685B)

DeepSeek AI

Лидер среди open‑source по программированию, MOE‑архитектура

Требовательность к железу

Phi-3 (Mini / Small / Medium)

Microsoft

Очень компактные модели (работают на CPU)

Очень ограничены по длине контекста и глубине понимания

MythoMax‑L2

Комьюнити (форк LLaMA)

Творческая, «ролевая», отлично подходит для ассистентов нестандартного типа

Меньше подходит для деловых задач

StarCoder2

Hugging Face + BigCode

Отлична для генерации и понимания кода

Не предназначена для общего общения

CodeGemma

Google

Маленькая, быстрая и качественная кодовая модель

Слабовата в обобщённых задачах

Моя субъективная подборка моделей

для общения:

  • LLaMA 3

  • Nous‑Hermes‑Llama-2–7B‑GGUF

  • openchat-3.5–0106

для кодинга:

  • StarCoder2–15B

  • Mixtral-8×7B‑Instruct‑v0.1

  • deepseek‑coder-33B‑instruct

Для ролевого общения / отсутствия цензуры:

  • MythoMax‑L2

  • dolphin-2.7-mixtral-8×7b

Настройки LM Studio

Теперь когда мы скачали интересующие нас модели, мы можем менеджить их (видеть и удалять) через меню My Models (красная папка):

задача для самоконтроля: убедитесь, что уже понимаете, что означают цифры возле b и Q
задача для самоконтроля: убедитесь, что уже понимаете, что означают цифры возле b и Q

LM Studio даёт нам доступ к целому ряду параметров, которые напрямую влияют на поведение и стиль ответов модели. Если хочется, чтобы ассистент был серьёзным или наоборот шутливым или имел какие‑то блоки нужны нам для проекта — это можно сделать за пару кликов.

Нажимаем на кнопку Show Settings (иконка мензурки)
Нажимаем на кнопку Show Settings (иконка мензурки)

System Context (Системный промпт)

Это вводная инструкция, которая определяет «персональность» модели. Пример: «Ты — технический ассистент. Отвечай кратко и строго по делу, без лишней воды и дисклеймеров.» System Context действует как базовая прошивка поведения — всё, что скажет модель, будет проходить через эту призму.

Инструктаж отшучиваться от любых прямых ответов в системном промпте
Инструктаж отшучиваться от любых прямых ответов в системном промпте

Параметры модели

Temperature — отвечает за «творческость» модели. При низком значении (0.2–0.5) ответы будут точными, лаконичными и почти шаблонными — хорошо подойдёт для техподдержки или кратких инструкций. При высоком значении (0.8–1.2) модель начинает «фантазировать» — чаще выбирает менее вероятные слова, создавая более живые, нестандартные и креативные тексты.

Top‑k и Top‑p (Nucleus Sampling) — оба параметра управляют тем, сколько вариантов продолжения текста модель рассматривает при каждом токене.

  • Top‑k ограничивает выбор: если k = 40, модель выбирает из 40 самых вероятных слов.

  • Top‑p определяет «вероятностный порог»: если p = 0.9, то берутся слова, суммарно набравшие 90% вероятности. Снижая эти значения, мы делаем ответы предсказуемее, увеличивая — даём больше простора креативности.

Repeat Penalty — помогает бороться с зацикливанием модели или повторением фраз. Значение 1.1–1.2 считается хорошим стартом: это не мешает модели нормально завершать предложения, но не даёт ей застревать в одних и тех же оборотах. Если модель пишет «да‑да‑да» или «вот пример, пример, пример» — стоит увеличить эту настройку.

Max Tokens — прямо ограничивает длину ответа. Полезно, если нужно короткое пояснение, а не простыня текста. Если модель «разгоняется» и пишет больше, чем надо — выставляем лимит, например, 200 или 512 токенов.

Structured Output — это когда модель отвечает не просто текстом, а строго по формату:

  • JSON

  • YAML

  • Markdown‑таблица

  • Код с оформлением

В LM Studio можно явно попросить модель: соблюдать формат (например, JSON) отвечать по шаблону (например: {"вопрос": "…", "ответ": "…"}) Работает это с помощью продуманного промпта или инструкции в System Context. Это особенно полезно, если ответы пойдут в Telegram‑бота, в API, в базу или IDE. Пример такого промпта:

Ты — финансовый аналитик. Отвечай строго в формате JSON: {"рекомендация": "string", "причина": "string"}

Поскольку эта функция целиком полагается на интеллект модели, некоторые модели лучше справляются с форматом JSON, чем другие.

Локальный API-сервер

Помимо GUI‑интерфейса, LM Studio может работать как локальный сервер полностью совместимый со стандартом OpenAI API. Это значит, что любое приложение работающее с LLM через HTTP‑запросы может использовать локальную модель через LM Studio.

Вот типичные сценарии:

  • Подключение к Telegram‑боту

  • Интеграция в собственное веб‑приложение или CLI

  • Работа в IDE через плагины (например, Continue для VS Code)

Даже если в проде в финале мы планируем использовать платную модель, вроде ChatGPT или Claude, для этапа разработки удобнее (и бесплатнее) подключаться к локальным LLM.

Для этого надо перейти во вкладку Developer (зелёная консоль) и включить сервер. Адрес сервера по умолчанию:

http://localhost:1234/v1

На этом скрине я поменял адрес сервера для inter-ops со своим WSL - вам, скорее всего, это не придётся делать
На этом скрине я поменял адрес сервера для inter‑ops со своим WSL — вам, скорее всего, это не придётся делать

Кодинговый ассистент

Ну а теперь перейдём к ещё одному практическому использованию API‑сервера — подключению кодингового ассистента. Это не полноценный гайд по вайб‑кодингу, поэтому мы лишь кратко рассмотрим, как подключить LM Studio к Continue — плагину‑оболочке для интеграции LLM в Visual Studio Code.

  1. Установливаем плагин Continue из Marketplace.

  2. В LM Studio включаем режим разработчика (Developer Mode) и запускаем API‑сервер. В консоле должно отобразится сообщение о запуске сервера.

  3. В настройках Continue ищем Models → + New Assistant. В открывшемся config.yaml добавляем настройки модели:

Пример настроек. Название модели должно соответствовать точному ID в LM Studio.

name: Local Assistant version: 1.0.0 schema: v1 models: - name: Qwen LM Studio provider: openai model: qwen/qwen2.5-coder-14b apiBase: http://localhost:1234/v1 apiKey: "" roles: - chat - edit - apply context: - provider: code - provider: docs - provider: diff - provider: terminal - provider: problems - provider: folder - provider: codebase

Теперь наш кодовый ассистент работает локально — и бесплатно.

А если вы один из тех инженеров Samsung, которые ранее отправили конфиденциальный код на внешний сервер — теперь ваш начальник будет вами доволен!

В следующих туторах рассмотрим Ollama и более обширную настройку ИИ ассистентов для кодинга.