sadium/content/posts/nextcloud_x_litellm_x_ollama.md
Артём 11225cb81b
All checks were successful
/ site (push) Successful in 1s
cover test
2024-08-10 11:11:47 +03:00

5.8 KiB
Raw Blame History

title date author tags description cover
Nextcloud Assistant ← LiteLLM ← Ollama 2024-07-19 Сисадмин Линк
ai
nextcloud
litellm
ollama
Настройка локального ИИ для Nextcloud Assistant через прослойку LiteLLM /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: qwen2
    litellm_params:
      model: ollama/qwen2

# ну далее по шаблону, если есть другие модели

LiteLLM 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

Статья написана без использования ИИ. Хотя, наверное, это и так видно 🙃