sadium/content/posts/nextcloud_x_litellm_x_ollama.md
Артём 4bd2efc12b
All checks were successful
/ site (push) Successful in 1s
статья "Nextcloud Assistant ← LiteLLM ← Ollama"
2024-07-20 14:10:21 +03:00

112 lines
No EOL
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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).
Статья написана без использования ИИ. Хотя, наверное, это и так видно 🙃