статья "Nextcloud Assistant ← LiteLLM ← Ollama"
All checks were successful
/ site (push) Successful in 1s
All checks were successful
/ site (push) Successful in 1s
This commit is contained in:
parent
835fa0ae0a
commit
4bd2efc12b
1 changed files with 112 additions and 0 deletions
112
content/posts/nextcloud_x_litellm_x_ollama.md
Normal file
112
content/posts/nextcloud_x_litellm_x_ollama.md
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
---
|
||||||
|
title: "Nextcloud Assistant ← LiteLLM ← Ollama"
|
||||||
|
date: "2024-07-19"
|
||||||
|
author: Сисадмин Линк
|
||||||
|
tags: ["ai", "nextcloud", "litellm", "ollama"]
|
||||||
|
description: "Настройка локального ИИ для Nextcloud Assistant через прослойку LiteLLM"
|
||||||
|
showFullContent: false
|
||||||
|
readingTime: false
|
||||||
|
hideComments: false
|
||||||
|
---
|
||||||
|
|
||||||
|
Опять же, как было в случае с [принтером](/posts/ricoh_config), у меня Arch-based дистрибутив, поэтому буду расписывать по нему.
|
||||||
|
|
||||||
|
Начнём с установки **[Ollama](https://github.com/ollama/ollama)**. У меня карточка от красных, поэтому я ставлю версию **rocm**.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
yay -S ollama-rocm
|
||||||
|
```
|
||||||
|
или
|
||||||
|
```bash
|
||||||
|
sudo pacman -S ollama-rocm
|
||||||
|
```
|
||||||
|
|
||||||
|
Как в моём случае, почему-то оно не подхватывало мою **RX 6700 XT** (но [тут](https://github.com/ollama/ollama/issues/3547) нашлось решение), поэтому мне пришлось редактировать **сервис systemd** следующим образом:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl edit --full ollama
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
[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
|
||||||
|
```
|
||||||
|
Далее устанавливаем желаемую модель, в моём случае это **`llama3`** и **`qwen2`**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ollama pull llama3
|
||||||
|
```
|
||||||
|
```bash
|
||||||
|
ollama pull qwen2
|
||||||
|
```
|
||||||
|
Далее идём ставить **[LiteLLM](https://github.com/BerriAI/litellm)**. Это прослойка между Ollama и [Nextcloud LocalAI](https://github.com/nextcloud/integration_openai), которая использует запросы в формате OpenAI API.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pipx install 'litellm[proxy]'
|
||||||
|
```
|
||||||
|
Нам нужна именно **`litellm[proxy]`**, а не просто **`litellm`**!
|
||||||
|
|
||||||
|
Теперь нужно собственно, запустить модель, с которой впоследствии мы будем общаться через [Nextcloud Assistant](https://github.com/nextcloud/assistant), я буду использовать **`qwen2`**. \
|
||||||
|
Для этого я сделал **systemd** сервис, чтобы не запускать это дело ручками, он должен располагаться в
|
||||||
|
```bash
|
||||||
|
/home/ваш_пользователь/.config/systemd/user/litellm.service
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
[Unit]
|
||||||
|
Description=LiteLLM for Ollama
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/home/ваш_пользователь/.local/bin/litellm --model ollama/qwen2
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=5s
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
||||||
|
```
|
||||||
|
|
||||||
|
Далее
|
||||||
|
```bash
|
||||||
|
systemctl --user daemon-reload
|
||||||
|
systemctl --user enable --now litellm
|
||||||
|
```
|
||||||
|
|
||||||
|
Теперь идём в настройки сервера **Искусственный интеллект** [/settings/admin/ai], предварительно установив **Nextcloud Assistant** и **OpenAI and LocalAI integration**, листаем ниже до **`OpenAI и локальная интеграция`**.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
Service URL - ip_пк:4000
|
||||||
|
Service Name (optional) - LiteLLM (или другое, какое хотите)
|
||||||
|
|
||||||
|
API key - не нужен
|
||||||
|
Default completion model to use - выбираем ollama/ваша_модель (openai)
|
||||||
|
Max new tokens per request - я поставил 17500, но это уже индивидуально
|
||||||
|
|
||||||
|
Select enabled features
|
||||||
|
отключил:
|
||||||
|
Image generation provider
|
||||||
|
Speech-to-text
|
||||||
|
потому что модель такое не умеет
|
||||||
|
```
|
||||||
|
Я не знаю, как запустить несколько моделей параллельно, поэтому мне приходится редактировать и перезапускать мой **systemd** сервис, чтобы менять модель. Если вы знаете как это сделать - [напишите мне](/contacts).
|
||||||
|
|
||||||
|
Статья написана без использования ИИ. Хотя, наверное, это и так видно 🙃
|
Loading…
Reference in a new issue