sadium/content/posts/nextcloud_x_litellm_x_ollama.md
Артём b2e1184571
All checks were successful
/ site (push) Successful in 2s
Использование нескольких моделей в llitellm
2024-07-21 12:41:47 +03:00

125 lines
No EOL
4.6 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). \
Однако, перед тем, как мы перейдём к запуску наших моделей, нам нужно создать файлик **`config.yaml`**, который мы впоследствии "скормим" **litellm**
```bash
model_list:
- model_name: ollama/llama3
litellm_params:
model: ollama/llama3
- model_name: ollama/qwen2
litellm_params:
model: ollama/qwen2
# ну далее по шаблону, если есть другие модели
```
Затем я сделал **systemd** сервис, чтобы не запускать это дело ручками, он должен располагаться в
```bash
/home/ваш_пользователь/.config/systemd/user/litellm.service
```
```bash
[Unit]
Description=LiteLLM for Ollama
[Service]
ExecStart=/home/ваш_пользователь/.local/bin/litellm --config путь_до/config.yaml
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
потому что модель такое не умеет
```
Статья написана без использования ИИ. Хотя, наверное, это и так видно 🙃