llama-server: локальный OpenAI-совместимый API на своём компьютере
Как поднять llama-server, какие эндпоинты он отдаёт, зачем нужны --api-key и --parallel, и почему замена --host на 0.0.0.0 открывает твою модель всей сети.
Почти любая программа, работающая с ИИ, умеет обращаться к OpenAI API. Это оказалось удобной случайностью: если поднять у себя сервер, говорящий на том же языке, все эти программы можно переключить на локальную модель сменой одного адреса.
llama-server из состава llama.cpp делает ровно это. Разберём, что он отдаёт и какие
настройки стоит выставить до того, как подключать к нему что-то рабочее.
Запуск
Сервер входит в готовые сборки llama.cpp, компилировать ничего не нужно. Как выбрать сборку под своё железо, описано в статье про llama.cpp на Windows.
Минимальная команда:
llama-server -m models/qwen3-8b-q4_k_m.gguf --port 8080
По умолчанию сервер слушает 127.0.0.1:8080 и поднимает веб-интерфейс на том же адресе. Если
интерфейс не нужен, его отключает --no-ui.
Какие эндпоинты доступны
OpenAI-совместимая часть — то, ради чего всё затевается:
| Эндпоинт | Назначение |
|---|---|
POST /v1/chat/completions | чат, основной режим |
POST /v1/completions | продолжение текста |
POST /v1/embeddings | эмбеддинги |
Рядом живут собственные эндпоинты llama.cpp: POST /completion и POST /embedding в родном
формате, POST /reranking для переранжирования (включается ключом --reranking), а также
служебные GET /health, GET /props и GET /slots.
Базовый адрес для клиентов получается http://127.0.0.1:8080/v1. Дальше в настройках любой
программы, где просят «OpenAI API base URL», подставляешь его, и она начинает работать с
локальной моделью. Похожая схема у Ollama и LM Studio,
отличаются только порты.
Настройки, которые стоит выставить сразу
--ctx-size N — размер контекста. По умолчанию берётся из модели, но для агентских
сценариев его почти всегда приходится задавать руками.
--parallel N — количество слотов, то есть одновременных запросов. Если к серверу
подключены редактор кода и отдельный клиент, одного слота не хватит и запросы встанут в
очередь.
--jinja — включает вызов функций в стиле OpenAI. Без него инструменты работать не будут.
--embeddings — переводит сервер в режим только эмбеддингов. Нужен, если поднимаешь
отдельный экземпляр под локальный RAG с профильной моделью.
Про --host 0.0.0.0
Это главная ловушка темы, поэтому отдельным разделом.
В инструкциях часто встречается совет заменить адрес на 0.0.0.0, чтобы подключаться с
другого устройства. Работает. Но 127.0.0.1 в значении по умолчанию стоит не для красоты:
он означает, что сервер доступен только с этой машины.
Заменив адрес, ты открываешь модель всем, кто может достучаться до компьютера по сети. Без дополнительных мер это открытый эндпоинт без пароля: чужой человек сможет слать запросы, занимать твою видеокарту и получать ответы.
Если доступ извне действительно нужен, у сервера есть аутентификация:
llama-server -m model.gguf --host 0.0.0.0 --api-key mysecretkey
Ключей можно задать несколько через запятую или вынести их в файл через --api-key-file.
Ключ в командной строке попадает в историю оболочки и виден в списке процессов. Для чего-то
серьёзнее домашнего эксперимента используй --api-key-file и не открывай порт наружу без
файрвола или VPN.
Что с этим делают на практике
Три типовых сценария.
Первый: подключить локальную модель к редактору кода вместо облачного провайдера. Второй:
перевести свои скрипты с платного API на локальный — код почти не меняется, меняется базовый
адрес. Третий: держать один сервер на домашней машине и ходить на него с ноутбука, но это
как раз тот случай, где нужны и --api-key, и понимание, что ты делаешь с сетью.
Где заканчивается польза от сервера
llama-server решает задачу доставки: модель есть, она отвечает, к ней можно подключиться.
Всё, что происходит после ответа, он не делает.
Отсюда типичная траектория. Человек поднимает сервер, подключает пару клиентов, а через неделю обнаруживает, что пишет обвязку: скрипт, который собирает файлы в промпт, ещё один, который разбирает ответ, третий для запуска по расписанию. По сути он начинает писать агента поверх собственного сервера.
Дока — этот агент, только уже написанный. Она работает с файлами и терминалом напрямую,
ведёт задачу через несколько шагов и подключает
MCP-серверы. Локальную модель можно поставить прямо из
интерфейса, а можно оставить свой llama-server и подключить Доку к нему — сервер в этой
схеме никуда не девается, просто перестаёт быть единственным, что у тебя есть.
Так что поднимать llama-server осмысленно почти всегда. Вопрос в том, что ты собираешься
подключать сверху, и стоит ли писать это самому. Скачай Доку и посмотри, сколько
из твоей обвязки становится ненужным.