Поставьте менеджер моделей, скачайте подходящую LLM, поднимите локальный API, прикрутите векторный поиск для «знаний» проекта - и у вас готов приватный ассистент без интернета. Ниже - по шагам с кодом и чек-листами.
Какую модель ставить под локальный API
Под сервис берут не самую крупную модель, а ту, что держит приемлемое время ответа. Начните с конкретного Q4-тега, контекста 2048-4096 и одного типового запроса вашего эндпоинта. Проверьте ollama ps: размещение модели, занятые RAM или VRAM и время первого токена под нагрузкой.
1B-4B в Q4 хватает для прототипа API и демонстрации.
7B-12B в Q4 тянут чат и простой поиск по документам.
14B-27B в Q4, если оставить запас под саму службу и базу.
Вес GGUF-файла это нижняя оценка: KV-кэш, буферы, векторная база и веб-интерфейс займут сверху. Параллельные запросы умножают расход, поэтому лимит токенов и таймаут ставьте до первого пользователя. Модели из примеров ниже оставлены как исторический ориентир, тег подбирайте актуальный.
Зачем локальный ChatGPT?
Приватность: данные не покидают вашу машину/сервер.
Автономность: работает офлайн, устойчив к блокировкам и SLA облака.
Кастомизация: своя «личность», собственные знания, интеграции под проект.
Стоимость: нулевые/предсказуемые издержки на инференс.
Требования к железу и ПО
Сценарий | 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), тем меньше памяти нужно, но тем выше риск потери качества.
Стек запуска: три удобных пути.
Ollama - самый простой менеджер моделей.
curl -fsSL https://ollama.com/install.sh | sh ollama run mistralДостоинства: одна команда до результата, локальный REST API, кэш моделей.
GPT4All - GUI/CLI, работает в Windows/macOS/Linux.
git clone https://github.com/nomic-ai/gpt4all cd gpt4all && pip install -r requirements.txt python gpt4all.pyДостоинства: дружелюбный интерфейс, простые пресеты.
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) - модель отвечает с опорой на ваши документы.
Разбейте документы на чанки (Markdown/PDF/HTML → куски по 300-800 токенов).
Постройте эмбеддинги (например,
all-MiniLM-L6-v2или локальная text-embedding-модель).Сложите в векторную БД: Chroma, FAISS, Qdrant.
На запрос: найдите топ‑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. Задайте лимиты на длину промпта и число токенов, поставьте таймауты и логируйте запросы с обфускацией приватных данных. Сам сервис лучше запускать от отдельного пользователя или в контейнере с минимумом прав.
