Nextcloud Assistant ← LiteLLM ← Ollama
![](https://sadium.cyou/posts/covers/nlo.jpg)
Опять же, как было в случае с принтером, у меня Arch-based дистрибутив, поэтому буду расписывать по нему.
Установка⌗
Начнём с установки Ollama. У меня карточка от красных, поэтому я ставлю версию rocm.
yay -S ollama-rocm
или если нет yay
sudo pacman -S ollama-rocm
Сервис systemd⌗
Как в моём случае, почему-то оно не подхватывало мою RX 6700 XT (но тут нашлось решение), поэтому мне пришлось редактировать сервис systemd следующим образом:
sudo systemctl edit --full ollama
[Unit]
Description=Ollama Service
Wants=network-online.target
After=network.target network-online.target
[Service]
ExecStart=/usr/bin/ollama serve
WorkingDirectory=/var/lib/ollama
Environment="HOME=/var/lib/ollama"
Environment="HSA_OVERRIDE_GFX_VERSION=10.3.0" # Добавлено, чтобы увидело карточку
Environment="OLLAMA_HOST=0.0.0.0" # Возможность локально подключатся извне
User=ollama
Group=ollama
Restart=on-failure
RestartSec=3
Type=simple
PrivateTmp=yes
ProtectSystem=full
ProtectHome=yes
[Install]
WantedBy=multi-user.target
Импорт модели GGUF⌗
Обн. от 05.08.24
- добавлена инструкция импорта моделей .gguf
Далее устанавливаем желаемую модель, в моём случае это llama3
и модель, которую можно импортировать из файла .gguf
, я буду использовать saiga-llama3
[🔗].
ollama pull llama3
Для того, чтобы импортировать модель, нам необходимо:
- Загрузить модель 🙃
- Создать файл, который можно скормить ollama
echo FROM папка_с_моделью/файл_модели.gguf >> файл_название_модели
В моём случае можно сразу название модели, потому что работаю сразу из папки с моделью
echo FROM saiga_llama3.gguf >> saiga-llama3
Осталось импортировать
ollama -f файл_название_модели название_модели
ollama -f saiga-llama3 saiga-llama3
LiteLLM⌗
Далее идём ставить LiteLLM. Это прослойка между Ollama и Nextcloud LocalAI, которая использует запросы в формате OpenAI API.
pipx install 'litellm[proxy]'
Нам нужна именно litellm[proxy]
, а не просто litellm
!
Теперь нужно собственно, запустить модели, с которыми впоследствии мы будем общаться через Nextcloud Assistant.
Однако, перед тем, как мы перейдём к запуску наших моделей, нам нужно создать файлик config.yaml
, который мы впоследствии “скормим” LiteLLM со следующим содержимым:
model_list:
- model_name: llama3
litellm_params:
model: ollama/llama3
- model_name: saiga-llama3
litellm_params:
model: ollama/saiga-llama3
# ну и далее по списку, если надо
- model_name: название_модели
litellm_params:
model: ollama/название_модели
Сервис systemd⌗
Затем я сделал systemd сервис, чтобы не запускать это дело ручками, он должен располагаться в
/home/ваш_пользователь/.config/systemd/user/litellm.service
[Unit]
Description=LiteLLM for Ollama
[Service]
ExecStart=/home/ваш_пользователь/.local/bin/litellm --config путь_до/config.yaml
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=default.target
Далее
systemctl --user daemon-reload
systemctl --user enable --now litellm
Nextcloud Assistant⌗
Теперь идём в настройки сервера Искусственный интеллект [/settings/admin/ai], предварительно установив Nextcloud Assistant и OpenAI and LocalAI integration, листаем ниже до OpenAI и локальная интеграция
.
Service URL
- ip_пк:4000
Service Name (optional)
- LiteLLM (или другое, какое хотите)
API key
- не нужен
Default completion model to use
- выбираем ollama/ваша_модель (openai)
Max new tokens per request
- ставите сколько считаете нужным
Select enabled features
Отключил потому что модель такое не умеет:
- Image generation provider
- Speech-to-text
Статья написана без использования ИИ. Хотя, наверное, это и так видно 🙃