{}const=>[]async()letfn</>var

Как собрать свой локальный ChatGPT: пошаговый гайд для разработчиков

Объясняем, как развернуть ChatGPT у себя на ПК: выбор модели, установка, API и интеграция.

К

Кодик

Автор

6 мин чтения

Поставьте менеджер моделей, скачайте подходящую LLM, поднимите локальный API, прикрутите векторный поиск для «знаний» проекта - и у вас готов приватный ассистент без интернета. Ниже - по шагам с кодом и чек-листами.

Какую модель ставить под локальный API

Под сервис берут не самую крупную модель, а ту, что держит приемлемое время ответа. Начните с конкретного Q4-тега, контекста 2048-4096 и одного типового запроса вашего эндпоинта. Проверьте ollama ps: размещение модели, занятые RAM или VRAM и время первого токена под нагрузкой.

8 ГБ RAM

1B-4B в Q4 хватает для прототипа API и демонстрации.

16 ГБ RAM

7B-12B в Q4 тянут чат и простой поиск по документам.

24-32 ГБ

14B-27B в Q4, если оставить запас под саму службу и базу.

Вес GGUF-файла это нижняя оценка: KV-кэш, буферы, векторная база и веб-интерфейс займут сверху. Параллельные запросы умножают расход, поэтому лимит токенов и таймаут ставьте до первого пользователя. Модели из примеров ниже оставлены как исторический ориентир, тег подбирайте актуальный.

Зачем локальный ChatGPT?

  • Приватность: данные не покидают вашу машину/сервер.

  • Автономность: работает офлайн, устойчив к блокировкам и SLA облака.

  • Кастомизация: своя «личность», собственные знания, интеграции под проект.

  • Стоимость: нулевые/предсказуемые издержки на инференс.

🔥 100 000+ учеников уже с нами

Устал читать теорию?
Пора кодить!

Кодик — приложение, где ты учишься программировать через практику. AI-наставник, интерактивные уроки, реальные проекты.

🤖 AI 24/7
🎓 Сертификаты
💰 Бесплатно
🚀 Начать учиться
Присоединились сегодня

Требования к железу и ПО

Сценарий

CPU/RAM

GPU (желательно)

Примечания

Ноутбук / PoC

4+ ядер, 16 ГБ RAM

Без GPU или 4-6 ГБ VRAM

GGUF-квантизации (q4_0/q5) для 7B моделей

Стационар / команда

8+ ядер, 32-64 ГБ RAM

RTX 3060-4090, 8-24 ГБ VRAM

13B-14B модели, быстрее ответ и лучше качество

Сервис внутри компании

16+ ядер, 64+ ГБ RAM

A100/RTX 6000 и т.п.

Серверы, батчинг запросов, нагрузочные тесты

Софт: Linux/macOS/WSL2, Python 3.10+, Docker (по ситуации).

Разработчик подпёр подбородок рукой и смотрит на два монитора с кодом ночью

Выбор модели

  • Mistral 7B - быстрый старт, отличное качество за свои размеры.

  • LLaMA 3 (8B/70B) - сильные ответы, 8B хорош на ноутбуке (в квантизации).

  • Phi / Qwen / Gemma - компактные и экономичные альтернативы.

Формат весов для локалки: GGUF (для llama.cpp/Ollama/GPT4All). Чем ниже квантизация (q8 → q4), тем меньше памяти нужно, но тем выше риск потери качества.

Стек запуска: три удобных пути.

  1. Ollama - самый простой менеджер моделей.

    curl -fsSL https://ollama.com/install.sh | sh
    ollama run mistral

    Достоинства: одна команда до результата, локальный REST API, кэш моделей.

  2. GPT4All - GUI/CLI, работает в Windows/macOS/Linux.

    git clone https://github.com/nomic-ai/gpt4all
    cd gpt4all && pip install -r requirements.txt
    python gpt4all.py

    Достоинства: дружелюбный интерфейс, простые пресеты.

  3. LM Studio / text-generation-webui - гибкие UI для экспериментов, профили квантизаций, плагины.

Поднимаем свой API (как у ChatGPT) 🔌

Локальный REST пригодится для интеграций с IDE, ботами и бекендом. Пример - FastAPI + Ollama:

# main.py
from fastapi import FastAPI
from pydantic import BaseModel
import subprocess, json

app = FastAPI()

class ChatRequest(BaseModel):
    prompt: str

@app.post("/chat")
def chat(req: ChatRequest):
    # Простой вызов ollama (ответ - стрим или цельная строка)
    proc = subprocess.run(
        ["ollama", "run", "mistral", req.prompt],
        capture_output=True, text=True
    )
    return {"response": proc.stdout.strip()}
# запуск API
uvicorn main:app --reload --port 8000

# запрос
curl -X POST http://localhost:8000/chat \
  -H "Content-Type: application/json" \
  -d '{"prompt":"Explain RAG in 1 sentence."}'

Для продакшна заверните в Docker, добавьте логирование, таймауты и ограничение токенов.

Ноутбук светится в тёмной комнате, по стене расходятся цветные волны от экрана

Добавляем «память»: RAG через векторную БД

RAG (Retrieval Augmented Generation) - модель отвечает с опорой на ваши документы.

  1. Разбейте документы на чанки (Markdown/PDF/HTML → куски по 300-800 токенов).

  2. Постройте эмбеддинги (например, all-MiniLM-L6-v2 или локальная text-embedding-модель).

  3. Сложите в векторную БД: Chroma, FAISS, Qdrant.

  4. На запрос: найдите топ‑k ближайших чанков, подставьте их в системный промпт и отправьте в LLM.

# псевдокод пайплайна
context = retriever.search(query, top_k=5)
prompt = f"Answer using ONLY this context:\\n{context}\\n\\nQuestion: {query}"
answer = llm(prompt)

Плюсы: актуальные ответы по вашей базе. Минусы: инженерия данных и контроль качества контекста.

Тонкая настройка

  • Системный промпт: задайте стиль, формат, ограничения.

  • Температура/топ‑p: меньше - более детерминированно и полезно для документации.

  • Шаблоны чата: используйте роль system/user/assistant, храните историю диалога в базе.

  • Файнтюнинг/LoRA: дообучайте на своих диалогах - точечно улучшает доменные ответы.

Безопасность и эксплуатация

  • Держите API за Auth (ключи, OAuth, mTLS), ограничивайте источники CORS.

  • Лимитируйте длину промптов и число токенов, ставьте таймауты.

  • Логируйте запросы/ответы (с обфускацией приватных данных), мониторьте латентность и OOM.

  • Отдельный пользователь Unix/контейнер, минимум прав, регулярные обновления весов и зависимостей.

Типовые проблемы и быстрые решения

Симптом

Причина

Фикс

Медленные ответы

Большая модель / без GPU

Квантизация GGUF q4/q5, меньшая модель, бим-сёрч ↓, температура ↓

Out Of Memory

Недостаточно RAM/VRAM

Низшая квантизация, offload на CPU, ограничить max_tokens/контекст

Галлюцинации

Недостаток контекста

RAG + качественные эмбеддинги, валидация источников, системный промпт

Нестабильность

Сырые сборки

Закрепить версии, docker-compose, healthchecks, retry-политики

Итог

Локальный ChatGPT - это реально и полезно. Начните с Ollama + Mistral, поднимите API, добавьте RAG и полируйте качество промпт‑инжинирингом. Дальше - безопасность, мониторинг, докеризация. Готово: у вас личный ИИ‑ассистент с контролем и приватностью.

Свой GPT начинается не с кнопки, а с фундамента: код, данные, понимание моделей.
Получай знания и практику в «Кодике» - и собирай ассистента под свои задачи. 💻🧠

А ещё у нас есть активный telegram-канал, где мы обсуждаем крутые идеи, делимся опытом и вместе разбираем задачи - учиться становится не только полезно, но и весело.

Вопросы по сборке своего ассистента

Что такое формат GGUF и зачем он нужен?

GGUF это формат весов для локального запуска, его понимают llama.cpp, Ollama и GPT4All. Внутри модель хранится в квантизации от q4 до q8: чем ниже число, тем меньше нужно памяти и тем выше риск потерять в качестве. Для 7B моделей на ноутбуке обычно берут q4_0 или q5.

Как подключить локальную модель к своему приложению?

Локальную модель оборачивают в REST API. Например, на FastAPI делают эндпоинт POST /chat, который вызывает Ollama и возвращает ответ, а запускают его через uvicorn на порту 8000. Такой сервис подключается к IDE, боту или бэкенду, а для продакшна к нему добавляют Docker, логирование, таймауты и лимит токенов.

Какого размера делать чанки для RAG?

Документы для RAG режут на куски по 300-800 токенов, считают эмбеддинги, например моделью all-MiniLM-L6-v2, и складывают в векторную базу: Chroma, FAISS или Qdrant. На запрос находят топ-k ближайших фрагментов и подставляют их в системный промпт. Взамен вы получаете ответы по своей базе, но платите за это инженерией данных и контролем качества контекста.

Что делать при ошибке Out Of Memory?

Ошибка Out Of Memory означает, что модели не хватило оперативной или видеопамяти. Возьмите более низкую квантизацию, выгрузите часть вычислений на CPU и ограничьте max_tokens и длину контекста. Если ответы просто медленные, помогает модель поменьше и квантизация q4 или q5.

Какое железо нужно для локального ассистента на команду?

Для командного сценария ориентируйтесь на 8+ ядер, 32-64 ГБ оперативной памяти и видеокарту на 8-24 ГБ VRAM: там уже нормально идут модели 13B-14B. Для ноутбука и прототипа хватает 4 ядер и 16 ГБ RAM с квантизованной 7B. Из софта нужны Linux, macOS или WSL2, Python 3.10+ и по ситуации Docker.

Как защитить локальный API от чужих запросов?

Локальный API закрывают аутентификацией: ключи, OAuth или mTLS, плюс ограничение источников CORS. Задайте лимиты на длину промпта и число токенов, поставьте таймауты и логируйте запросы с обфускацией приватных данных. Сам сервис лучше запускать от отдельного пользователя или в контейнере с минимумом прав.

🎯Хватит откладывать

Понравилась статья?
Пора применять на практике!

В Кодик ты не просто читаешь — ты сразу пишешь код. Теория + практика = реальный скилл.

Мгновенная практика
🧠AI объяснит код
🏆Сертификат

Без регистрации • Без карты