habrahabr

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

  • понедельник, 30 июня 2025 г. в 00:00:12
https://habr.com/ru/articles/922340/

В этой статье мы не только установим локальный (и бесплатный) аналог 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.

Какое железо нужно для LLM?

Хотя запуск локальных моделей возможен даже на ноутбуке, комфорт работы сильно зависит от конфигурации.

Минимальный порог для запуска:

  • ОЗУ: от 16 GB, желательно 32 GB

  • GPU: любой с 6–8 GB VRAM, например RTX 3060 / 4060

  • Apple M1/M2/M3 (16–24 GB RAM)

  • Что сможем запускать: модели до 7B параметров (Q4/K_M)

Хорошо подойдут:

  • MacBook Pro M1/M2/M3 с 16+ GB RAM

  • ПК с RTX 3060 / 4060 / RX 7600

Оптимальный уровень (без подтормаживаний):

  • ОЗУ: 32–64 GB

  • GPU: RTX 4070 / 4070 Ti / 4070 Ti Super / RX 7900 XT

  • Что сможем комфортно запускать: Модели до 13B–22B параметров (включая DeepSeek‑Coder-6.7B и LLaMA 13B)

    Такая сборка позволяет:

  • Работать в IDE и запускать модель параллельно

  • Использовать ассистента в режиме «почти real‑time»

Энтузиаст или разработка под нагрузкой:

  • ОЗУ: от 64 GB

  • GPU: RTX 4090 (24 GB VRAM) или A6000 / H100

  • Модели: до 33B–70B, в том числе Mixtral, DeepSeek‑Coder‑33B

На таких машинах можно:

  • Проводить бенчмарки, RAG и тонкую настройку

  • Использовать модели уровня ChatGPT-3.5 по качеству и скорости

tl;dr

  • ≤ 9 b — ноутбуки с RTX 4060 / MacBook М1 16 GB, real-time

  • 9 – 22 b — RTX 4070/7900 XT, <1 с токен

  • 22 – 70 b — RTX 4090 24 GB или A6000, «рабочая» скорость

  • 70 b + MoE — одна RTX 4090 вытянет (активных 20 B), но лучше 2×GPU

  • > 200b — только многокарта или кластер (H100, A100)

Модель

Параметры

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 Ti Super

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

DeepSeek‑Coder 6.7B

6.7 миллиардов

RTX 4070 Ti Super

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

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 — позволяет загружать PDF-документы и вести диалог на основе их содержания. Объёмные документы будут проиндексированы как классический 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 — тем точнее модель, но тем тяжелее она запускается. Q8 - сохраняет наибольшее качество, но требует больше VRAM. Q2 и Q3 - слишком шакалье сжатие. Оптимальный компромисс — Q4_K_M или Q5_K_M.

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

LLaMA (Meta*)
Свежая линейка LLaMA 4 вышла весной 2025 года и уже включает версии LLaMA 4 Scout (8B) и Maverick (40B). Это самые мощные open‑weight LLM от Meta на текущий момент, с качеством вывода, приближающимся к GPT‑4. Даже Scout‑8B уверенно работает в задачах reasoning, а Maverick‑40B превосходит ChatGPT‑3.5.
LLaMA‑модели самые популярные для fine‑tuning и кастомных сборок. Однако лицензия Meta ограничивает коммерческое применение, особенно в продуктах, конкурирующих с сервисами самой Meta (например, чат‑боты и ассистенты).

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

Qwen (Alibaba)
Актуальная линейка Qwen 3 показывает отличные результаты в бенчмарках, особенно в задачах программирования, математики и мультиязычного reasoning. Доступны как мощные MoE-модели (например, 235B), так и компактные версии от 0.5B — включая сборки для ARM и систем без GPU. Модели распространяются под открытой лицензией Apache 2.0, однако некоторые весовые категории (особенно крупных MoE-моделей) могут иметь ограничения при использовании в Китае и в облачных продуктах, что стоит учитывать при коммерческом применении.

DeepSeek (DeepSeek AI)
Тот самый DeepSeek, который наделал шуму в начале 2025 года. На сегодняшний день доступны как универсальные языковые модели (от 1.3B до 236B параметров в MoE-архитектуре), так и специализированные модели DeepSeek-Coder V2/V3 для программирования.
Особенно для нас интересна DeepSeek-Coder V2–33B, которая показывает качество, сравнимое с GPT‑4 в задачах по коду (по данным HumanEval++ и других бенчмарков).

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

Модель

Разработчик

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

Минусы

LLaMA 4 Scout / Maverick (8b / 40b)

LLaMA 4 Behemoth (анонсирована, 400b)

Meta

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

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

Gemma 3 (1b / 4b / 12 B / 27 B)

Google

multimodal (текст + изображение), long-context 128k, 140+ языков, Apache 2.0 GPL

Лицензия имеет ограничения, базовая 1b версия без vision

Mistral Small 3.1 / Devstral‑24B

Mistral AI

Контекст до 128k, мощная reasoning-способность

Требует много VRAM

Mixtral 8×22B‑Instruct

Mistral AI

MoE, высокая производительность, 128 k контекст

Высокие требования к железу

Qwen 3 (0.6–32b, 235b MoE)

Alibaba

Хороша в коде и математике, мультиязычность, long-context 128k, Apache 2.0 GPL

фильтры на "критический" контент всё ещё присутствуют, ресурсоёмкость

DeepSeek Coder V2/V3 (активные ~21–37b)

DeepSeek AI

MoE, эксперт по кодированию и анализу кода

Очень требователен к ресурсам и настройкам

StarCoder 2 (7b / 15b)

Hugging Face / BigCode

Оптимизирован для кода, long-context >100 k, отлично для Dev-сценариев

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

Phi‑3 Mini / Small / Med

Microsoft

Компактны, CPU-френдли, до 128k контекста

Ограничены в сложном reasoning

DBRX (132b, активные 36b)

Databricks / MosaicML

MoE, хорош для кода/математики, long-context (>100k)

Требует много VRAM, пока небольшое комьюнити

Command-R+ (35b)

Cohere

Оптимизирована для RAG, структурирует JSON-вывод, контекст 200k, Apache 2.0

для 35b нужно >= 24 GB VRAM, менее гибка как чат-ассистент

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

для общения:

  • LLaMA 3 8B Instruct

  • Nous-Hermes-2-LLaMA3-8B-GGUF

  • openchat-4

  • Gemma 2-9B-Instruct (легковес для слабых систем)

для кодинга:

  • StarCoder2–15B

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

  • deepseek-coder-6.7B-Instruct

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

  • MythoMax‑L2

  • dolphin-2.7-mixtral-8×7b

RAG / API:

  • Command-R+

  • DBRX

Настройки 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 и более обширную настройку ИИ ассистентов для кодинга.