
Прошло всего несколько лет с момента взрыва популярности нейросетей, и уже практически невозможно найти профессию, связанную с работой за компьютером, которая не использовала бы AI для ускорения работы или улучшения её качества. Эта революция повлияла на всех, включая самых маленьких детей. Но, наигравшись с надиктовыванием указаний телефону и написанием запросов в браузере, хочется большего. И мы начинаем искать способы внедрить AI в программы, в которых работаем ежедневно. Программисты дают указания для написания кода через GitHub Copilot прямо из родной среды программирования. Появились плагины для MS Office, которые позволяют подключить AI. Но есть некоторые нюансы. Основная проблема этих плагинов не в том, что они стоят денег, а в том, что они отправляют почти все данные, с которыми вы работаете, на серверы провайдеров AI-услуг. По условиям использования провайдеры AI-сервисов открыто заявляют «Не отправляйте нам приватные данные, мы будем делать с ними, что захотим, включая передачу третьим лицам». И это полностью закрывает путь к использованию подобных сервисов там, где данные хоть сколько-нибудь чувствительны к утечке.
Есть множество программ, позволяющих запускать модели на локальном компьютере, такие как GPT4All, LM Studio, LMDeploy, vLLM. Сегодня я расскажу о том, как использовать свой локальный сервер с LLM (Large Language Model) на примере одной из самых популярных программ Ollama для запуска моделей вместо использования API от ChatGPT, Gemini или DeepSeek для подключения к LibreOffice Writer. В результате это позволит писать запросы по обработке данных прямо из документа или через специальное окно ввода команд: «Преобразуй список кандидатов в алфавитном порядке и удали всех с указанными ниже окончаниями» или «исправь ошибки в тексте». Это позволит избежать лишних операций копирования и вставки по сравнению с запросами из браузера, которые теперь в рабочем процессе могут занимать добрую часть трудового дня. Чтобы LibreOffice Writer получил функцию AI, понадобится плагин localwriter.oxt. Этот плагин является мостом к AI-сервису, который работает через API.
Ollama — это программное обеспечение с открытым исходным кодом, которое позволяет запускать большие языковые модели (LLM) локально на компьютере. Нам она отлично подходит для сегодняшней задачи, потому что Ollama умеет использовать как CPU, так и современные GPU, а также предоставляет доступ через API. Мощная GPU для практического использования является единственным верным выбором из-за медленной работы на CPU, который годится лишь для проверки доказательства концепции и принятия решения дальнейших инвестиций в оборудование.
Стоит обратить внимание, что хоть Ollama и может запускать модели на Radeon, но в целом эти видеокарты не очень хороши для задач машинного обучения. Поэтому для сегодняшней задачи нужно смотреть в сторону NVidia серии RTX с объёмом видеопамяти не меньше 8-10 гигабайт.
Для установки Ollama под Windows можете использовать эту инструкцию.
Чтобы убить двух сразу зайцев, можно установить Ollama с приложением для предоставления удобного веб-интерфейса, но имейте в виду, что многие инструкции подразумевают установку с GitHub устаревшего репозитория ollama-webui. Сейчас этот репозиторий удалён, а вместо него рекомендуется использовать активно развивающийся open-webui репозиторий.
Если веб-интерфейс не нужен и достаточно чата в консоли, то в Linux я бы использовал образ Docker для меньшего количества телодвижений всего за два шага: запуск Ollama и запуск модели.
Первый шаг — это запуск Ollama в контейнере следующей командой:
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
Ollama будет использовать Docker volume для сохранения скачиваемых моделей, а они занимают очень много места. Убедитесь, что для этого хватит места на диске. Обычно по умолчанию для волюмов используется директория /var/lib/docker/volumes.
Для поддержки GPU NVidia из контейнеров нужно установить NVIDIA Container Toolkit и запустить Ollama с параметром ‘–gpus=all’:
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
Если запуск контейнера будет ругаться на недоступность GPU, то проверить работоспособность GPU можно, запустив nvidia-smi внутри контейнера nvidia/cuda:
docker run --gpus all nvidia/cuda:12.8.0-base-ubi9 nvidia-smi
Второй шаг — это запуск модели внутри контейнера:
docker exec -it ollama ollama run gemma2:27b
Эти команды скачают и запустят LLM-модель gemma2:27b через ollama в контейнере с именем ollama. Вам в консоли будет доступен чат с моделью, но для сегодняшней задачи он нас не интересует. Нас интересует API на дефолтном порту 11434. Однако чат полезен для проверки работоспособности. Используйте nvidia-smi или nvtop для проверки, насколько загружен GPU во время генерирования токенов ответа на запрос, чтобы увидеть, сколько нагрузки ложится на CPU и на GPU в различные фазы ответа. Также вы сможете видеть, сколько видеопамяти занято, если GPU используется несколькими приложениями одновременно. Например, выбрав модели попроще, которые не используют всю память, даже можно одновременно запустить Stable Diffusion и Ollama.

nvtop показывает нагрузку на Device 1 (NVIDIA CMP 50H)
Gemma2 — это отличная модель от Google, но вы можете, перезапуская только команду из второго шага, выбрать другие модели.
В данном примере 27b означает, что выбрана модель gemma2 с 27 миллиардами параметров, которая занимает 16 гигабайт. Если 27b работает очень медленно, то можно выбрать 9b или 2b. В данном случае 9b и 2b — это дистиллированные (уменьшенные) модели. Всегда проверяйте размеры моделей. Они не должны намного превышать размеры видеопамяти видеокарты, но имейте в виду, что размер файла модели из-за сжатия может не соответствовать размеру модели в GPU. Ollama позволяет запускать модели, которые превосходят размер памяти GPU. Хотя часть модели и может быть выгружена в память компьютера, но пострадает производительность. Лучше всего экспериментируйте и выбирайте модель, исходя из ваших требований к скорости ответа, но в любом случае это будет компромисс из-за того, что огромные модели, как deepseek-r1:671b, занимают 400 гигабайт и их практически нереально запустить локально за сколько-нибудь вменяемые деньги.

Чат Ollama с моделью gemma2:27b
Ollama после запуска открывает чат и позволяет сразу в консоли писать ей запросы. Но нас интересует Ollama API, а не чат. Кроме чата, Ollama работает на порту 11434 и по протоколу HTTP обрабатывает запросы в формате JSON. Проверить работу API можно через curl:
$ curl -X POST –location ‘http://localhost:11434/api/generate’ –data ‘{ «model»: «gemma2:27b», «prompt»: «Привет. Расскажи о себе»}’

Чат Ollama с моделью gemma2:27b
Если запускаете Ollama через open-webui, имейте в виду, что по умолчанию HTTP API отключен. Чтобы его включить, нужно запускать с дополнительными аргументами:
./run-compose.sh --enable-gpu --enable-api --webui
Подробное описание Ollama API с примерами смотрите здесь.
Если Ollama отвечает множеством токенов, то перейдём к настройке LibreOffice.
Установка плагина localwriter.oxt для LibreOffice
Чтобы LibreOffice начал работать с LLM, нужно установить плагин. Задачка решается в два действия.
- Скачайте сам плагин в виде файла localwriter.oxt со страницы плагинов для LibreOffice или с GitHub.
- Установите его, выбрав в LibreOffice Tools->Extensions->Add.
Должно получиться вот так:

Плагин установлен
После установки плагина в меню LibreOffice появится ещё один пункт localwriter. Чтобы он начал работать, нужно его настроить. Из обязательных настроек нужно ввести имя модели. По умолчанию плагин будет обращаться к API по адресу 127.0.0.1:5000/. Ollama по умолчанию обычно работает на порту 11434, но будучи запущенной, например, через проект open-webui из Docker за пределы контейнера «выставляется» порт 11435:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cb1287b66652 ghcr.io/open-webui/open-webui:main "bash start.sh" 2 days ago Up 33 hours (healthy) 0.0.0.0:3000->8080/tcp, [::]:3000->8080/tcp open-webui
3adfa0f6b57c ollama/ollama:latest "/bin/ollama serve" 2 days ago Up 33 hours 0.0.0.0:11435->11434/tcp, [::]:11435->11434/tcp ollama
В настройках кроме лимита токенов вы можете задать «системную подсказку». Например, если хотите использовать определённый стиль письма, тут можно разместить эти требования, и плагин будет отправлять их вместе с каждым запросом к модели.

Можно ввести отдельно системную подсказку отдельно для ‘Edit selection’ и для ‘Extend selection’
К сожалению, сейчас от отправки запроса до накопления полного ответа от модели LibreOffice находится в подвисшем состоянии. Программа просто никак не реагирует ни на что, и система даже может запросить разрешение завершить её принудительно (не соглашайтесь, если тлеет надежда дождаться ответ). Когда ответ будет сформирован, вы увидите его в документе. При использовании больших моделей или слабых вычислительных ресурсах это может занимать неприлично много времени, поэтому лучше отладить скорость ответа модели до использования плагина в LibreOffice.

Через системную подсказку можно попросить модель изменить своё обычное поведение
В данном примере я ввёл запрос, дождался ответа и заново открыл окно, чтобы показать, какой запрос привёл к такому результату с настройками системной подсказки для «Edit selection» чтобы модель писала в стиле быдла. Главное не забыть убирать системные подсказки в настройках, чтобы не удивляться, почему всегда получается хамский, нудный, лживый или ещё какой-то специфический результат.
У плагина есть два режима работы: ввод команды с выделением текста для передачи в LLM (edit selection) и выполнение команд прямо из документа (extend selection). Вот пример исправления ошибок в тексте с помощью модели gemma2:27b:

Edit selection: пишем команду, что нужно сделать с выделенным текстом

Результат исправлений с использованием модели gemma2:27b
Ещё примеры, чем можно попросить нейронку помочь:

Предобработка информации, полученной в неудобных форматах

Лог tcpdump обработан LLM в читаемый вид
Теперь можем просто дать задание, не имея исходных данных:

В пустом документе запросим сгенерировать информацию

Разные модели по-своему подходят к выполнению задачи
Второй вариант использования плагина через меню Extend selection — это выполнение команд, написанных прямо в тексте:

Запросим дописать начатое письмо

Такое себе
Gemma2 — отличная модель, но, по всем канонам её создателя Google, обязательно нужно интегрировать миллион нравоучений… Открывайте форточку, если станет душно от использования этой модели.
Скажу честно, что пока я не уверен, что дома буду использовать этот плагин в текущем состоянии для своих задач. Но ещё год назад я привыкал к нейрочатам, лишь изредка пробуя, как они справляются с различными задачами. А сейчас я уже знаю, как и в каких задачах нейронки могут помочь, а в каких, собрав волю в кулак, сделать самостоятельно за нейронку свою работу. И в итоге с каждым днём всё больше и больше работы я перекладываю на нейросети. Поэтому всегда держу на карандаше подобные решения. Ведь если нейронка способна хотя бы на 5-10% улучшить скорость или качество работы, то это вполне может окупить покупку сервера с одной или несколькими мощными видеокартами на офис со множеством сотрудников в организации, где очень важно, чтобы не утекали данные. Ну и, конечно же, я бы с удовольствием ознакомился с тем, к каким ещё программам из различных сфер таким лёгким способом можно прикрутить нейронку.
© 2025 ООО «МТ ФИНАНС»
Telegram-канал со скидками, розыгрышами призов и новостями IT
Автор: SergeyNovak