Перейти к содержанию

AI-чат-бот на собственном сервере

В этой статье

Информация

AI-чат-бот на собственном сервере представляет собой локальное решение, объединяющее несколько компонентов с открытым исходным кодом. Ядром является Ollama - фреймворк для запуска и управления крупными языковыми моделями (LLM) на локальных вычислительных ресурсах. Он обеспечивает загрузку и развертывание выбранной LLM. Для удобного взаимодействия с развернутой моделью используется Open Web UI - веб-приложение с графическим интерфейсом, позволяющее отправлять текстовые запросы и получать сгенерированные LLM ответы. Объединение этих компонентов создает полностью локальное, автономное решение для развертывания современных языковых моделей с открытым исходным кодом при сохранении полного контроля над данными и производительностью.

Основные возможности

  • Веб-интерфейс: Open Web UI представляет собой интуитивно понятный веб-интерфейс, обеспечивающий централизованное управление и расширенные возможности взаимодействия с локальными моделями ИИ из репозитория Ollama, значительно упрощая процесс использования моделей для пользователей различных уровней подготовки.
  • Интеграция с множеством языковых моделей: Ollama предоставляет доступ к множеству свободных языковых моделей, обеспечивая доступ к их усовершенствованным возможностям обработки естественного языка. Вы также можете подключить свои модели.
  • Задачи: с помощью LLM пользователи могут вести беседы, получать ответы на вопросы, анализировать данные, выполнять переводы, а также создавать свои чат-боты и приложения с использованием ИИ.
  • Открытый исходный код: Ollama является проектом с открытым исходным кодом, что позволяет пользователям настраивать и модифицировать платформу в соответствии со своими потребностями.
  • Веб-скрапер и поиск по собственным документам (RAG): Через OpenWebUI вы можете выполнять поиск по различным видам документации: текстовым файлам, PDF-документам, презентациям в формате ppt/pptx, веб-сайтам и видео на YouTube.

Примечание

Подробная информация по основным настройкам Ollama и Open WebUI содержится в документации разработчиков Ollama и в документации разработчиков Open WebUI.

Особенности сборки

  • Возможна установка на Ubuntu 22.04.
  • Время на установку 15-30 минут вместе с OS.
  • Сервер Ollama загружает и запускает LLM в памяти.
  • Open WebUI развертывается как веб-приложение, подключенное к серверу Ollama.
  • Пользователи взаимодействуют с LLM через веб-интерфейс Open WebUI, отправляя запросы и получая ответы.
  • Все вычисления и обработка данных происходят локально на сервере. Администраторы могут настраивать LLM для специфических задач через инструменты OpenWebUI.
  • Системные требования: не менее 16 ГБ оперативной памяти.

После установки необходимо пройти по ссылке: https:ollama<Server_ID_from_Invapi>.hostkey.in.

Начало работы после развертывания AI-чат-бота

После оплаты заказа на указанную при регистрации электронную почту придет уведомление о готовности сервера к работе. В нем будет указан IP-адрес VPS, а также логин и пароль для подключения. Управление оборудованием клиенты нашей компании осуществляют в панели управления серверами и APIInvapi.

После перехода по ссылке из тега webpanel будет открыто окно авторизации.

Данные для авторизации, которые можно найти или во вкладке Info >> Tags панели управления сервером или в присланном e-mail:

  • Ссылка для доступа к панели управления Ollama c Open WebUI с веб-интерфейсом: в теге webpanel. Точная ссылка вида https:ollama<Server_ID_from_Invapi>.hostkey.in приходит в письме, отправляемом при сдаче сервера.

После перехода по ссылке необходимо создать идентификатор пользователя и пароль в Open WebUI:

Внимание

После регистрации первого пользователя, система автоматически присваивает ему роль администратора. Для обеспечения безопасности и контроля над процессом регистрации, все последующие заявки на регистрацию должны быть одобрены администратором с его учетной записи.

Стартовый экран OpenWebUI

На стартовом экране представлен интерфейс чата, а также приведены несколько примеров входных запросов (промтов) для того, чтобы продемонстрировать возможности системы. Чтобы начать взаимодействие с чат-ботом, пользователю необходимо выбрать предпочтительную языковую модель из доступных вариантов. В данном случае предлагается использовать модель Llama 3, которая обладает обширными знаниями и возможностями для генерации ответов на различные запросы.

После выбора модели пользователь может ввести свой первый запрос в поле ввода, и система сформирует ответ на основе анализа введенного текста. Примеры промтов, представленные на стартовом экране, демонстрируют разнообразие тем и задач, с которыми может работать чат-бот, помогая пользователю сориентироваться в его возможностях.

Настройка рабочего пространства OpenWebUI

Для более детальной настройки чата необходимо перейти во вкладку Workspace >> Modefiles >> Create a modelfile. Там представлены несколько опций для кастомизации:

  • Modelfiles - в этом разделе можно выбрать альтернативные языковые модели или загрузить собственные модели для использования в чате.
  • Prompts - здесь можно создавать, редактировать и управлять собственными промптами (входными запросами) для более эффективного взаимодействия с чат-ботом.
  • Documents - данная опция позволяет загружать документы различных форматов (PDF, текстовые файлы и др.) для их последующего анализа и обсуждения с помощью чат-бота.
  • Playground - это область для экспериментов, где можно протестировать различные настройки и функции в безопасной среде перед их применением в основном чате.

Добавление и удаление моделей

Ollama предоставляет возможность установки и использования разнообразных языковых моделей, а не только предустановленной по умолчанию. Перед установкой новых моделей следует убедиться, что конфигурация сервера соответствует требованиям выбранной модели по объему памяти и вычислительным ресурсам.

Установка модели через интерфейс OpenWebUI

Для установки моделей через веб-интерфейс выполните следующие шаги:

  1. Выберите нужную модель из списка доступных для Ollama и перейдите на ее страницу, нажав на название. Выберите тип и размер модели (при необходимости). По умолчанию будет предложена наиболее подходящая "размерность". Далее нажав на значок с двумя квадратами слева от команды вида ollama run <имя_модели> скопируйте строку установки в буфер обмена.

  2. Нажмите на название модели в левом верхнем углу окна чат-бота OpenWebUI и в поле Search a model вставьте cкопированую ранее команду.

  3. Нажмите на строку Pull "ollama run имя_модели" from Ollama.com.

  4. После успешного скачивания и установки модель появится в выпадающем списке и будет доступна для выбора.

Установка модели через командную строку

Для установки новых моделей необходимо подключиться к серверу по SSH и выполнить соответствующую команду.

Удаление модели

Для удаления моделей из интерфейса OpenWebUI вам необходимо зайти в настройки веб-интерфейса Значок пользователя в правом верхнем углу >> Settings >> Admin Panel >> Model и в выпадающем списке Delete a model выбрать удаляемую модель и нажать на значок рядом с ней:

Для удаления из командно строки, выполните следующую команду (от root):

ollama rm <имя_модели>

Добавление документов

Опция Documents позволяет загружать документы различных форматов, такие как PDF, текстовые файлы, документы Word, презентации PowerPoint и другие, для их последующего анализа и обсуждения с помощью чат-бота. Это особенно полезно для изучения и понимания сложных документов, подготовки к презентациям или встречам, анализа данных и отчетов, проверки письменных работ на грамматические ошибки, стиль и логику, работы с юридическими, финансовыми документами, а также исследовательской деятельности в различных областях. Чат-бот может помочь разобраться в содержании документа, сформулировать резюме, выделить ключевые моменты, ответить на вопросы, предоставить дополнительную информацию и рекомендации.

Для управления настройками работы с документами необходимо перейти в Workspace >> Documents >> Documents settings. Это подменю содержит 4 раздела:

  • General: в этом разделе можно указать общие настройки для работы с документами. Например, указать директорию, где находятся документы для сканирования и обработки. По умолчанию это /data/docs. Кнопка Scan предназначена для сканирования и обработки документов из указанной директории. Также в этом разделе можно выполнить настройки поиска документов и изменить модели для работы с документами.
  • Chunk Params: данный раздел позволяет настроить параметры разбиения (чанкинга) загруженных документов. Чанкинг - это разделение больших документов на более мелкие части для удобства обработки. Здесь можно задать максимальный размер чанка в символах или словах. В этом разделе также можно включить опцию PDF Extract Images (OCR) - это технология распознавания текста на изображениях. При включении этой опции система будет извлекать изображения из PDF-файлов и применять OCR для распознавания любого текста, содержащегося на этих изображениях.
  • Query Params: здесь настраиваются параметры, влияющие на запросы к загруженным документам и способ получения ответов от чат-бота. “Top K” - эта настройка определяет количество лучших результатов поиска, которые будут отображаться. Например, если задать Top K = 5, то в ответе будут показаны 5 наиболее релевантных документов или фрагментов текста. “RAG Template” - RAG (Retrieval Augmented Generation) - это метод, при котором система сначала извлекает релевантные части текста из набора документов, а затем использует их для генерации ответа с помощью языковой модели. RAG Template задает шаблон для формирования запроса к языковой модели при использовании этого метода. Возможность настраивать RAG Template позволяет адаптировать формат запроса к языковой модели для получения более качественных ответов в определенных сценариях использования.
  • Web Params: Раздел для настройки параметров, связанных с веб-поиском и извлечением информации из интернет-ресурсов. Здесь можно настроить проверку SSL-сертификатов при загрузке веб-страниц через HTTPS. По умолчанию она отключена (Off) для обеспечения безопасности.

Для добавления нового документа необходимо нажать на кнопку + и выбрать файл на локальном устройстве, затем нажать кнопку Save. Загруженный документ появится в общем списке:

После загрузки документов можно работать с ними в режиме чата. Для этого необходимо в строке чата начать сообщение со знака # и выбрать нужный документ из выпадающего списка. После чего ответ на запрос будет сформирован на основе данных из выбранного документа. Эта функция позволяет получать контекстные ответы, основанные на загруженной информации, и может быть полезна для различных задач, таких как поиск информации, анализ данных и принятие решений на основе документов:

Примечание

С помощью знака # вы можете добавлять в запрос веб-сайты или видео YouTube, чтобы LLM искала по ним также.

Создание специализированного чат-бота (агента) с подключением к нему базы знаний на основе пользовательской документации

Добавление новой модели в OpenWebUI для работы с векторной базой и создание RAG

Для работы с векторной базой документов и Ollama LLM, поддерживающей русский язык, заходим в Admin Panel >> SettingsDocuments и ставим в Embedding Model значение sentence-transformers/all-MiniLM-L12-v2:

  1. Нажимаем на значок скачивания справа от поля и устанавливаем эту модель.
  2. Задаем параметры для нашего RAG:
  3. Top K = 10. Система будет учитывать 10 наиболее релевантных документов.
  4. Chunk Size = 1024. Документы будут разбиты на фрагменты по 1024 токена для обработки.
  5. Chunk Overlap = 100. Между последовательными фрагментами будет перекрытие в 100 токенов.

Вы можете попробовать другую модель из этого списка

Внимание

Любое изменение Embedding модели потребует от вас новой загрузки документов в RAG.

Теперь можно перейти в раздел Workspace >> Documents и загрузить нашу документацию. Рекомендуется задать ей определенный тег коллекции (например, hostkey_ru), чтобы проще подключать ее к модели или при API-запросах.

Добавление поддержки поиска по RAG на русском языке в Ollama

Для корректной работы с поиском и ответами на русским языком необходимо добавить специальную модель в Ollama. Мы взяли модификацию llama3-8b под названием SAIGA от Ильи Гусева, доступную здесь. Скачиваем ее.

  1. Чтобы добавить gguf-модель через OpenWebUI, идем в Admin Panel >> Models, показываем скрытый раздел Experimental и загружаем модель, нажав на поле Upload a GGUF model.
  2. Вставляем в поле Modelfile Content следующий текст:

    TEMPLATE "{{ if .System }}system
    
    {{ .System }}{{ end }}{{ if .Prompt }}user
    
    {{ .Prompt }}{{ end }}assistant
    
    {{ .Response }}"
    PARAMETER num_keep 24
    PARAMETER stop 
    PARAMETER stop 
    PARAMETER stop 
    
  3. Подгружаем модель.

Создание специализированной модели чат-бота (агента)

  1. Идем в Workspace >> Models и нажимаем на значок плюса.
  2. Задаем имя чат-бота и выбираем базовую модель (например, Russian llama3 SAIGA 8b).
  3. Прописываем System Prompt, который определяет поведение чат-бота:

    You are HOSTKEY an IT Support Assistant bot focused on providing users with IT support based on the content from knowledge base. Stay in character and maintain your focus on IT support, avoiding unrelated activities such as creative writing or engaging in non-IT discussions. You are speaking in Russian and only in Russian.
    
    If you cannot find relevant information in the knowledge base or if the user asks non-related questions that are not part of the knowledge base, do not attempt to answer and inform the user that you are unable to assist and print text "Для получения дополнительной информации посмотрите нашу полную документацию: https://hostkey.ru/documentation" at the end. 
    
    Provide short step-by-step instructions and external links
    
    Provide a link to relevant doc page about user question if it find in RAG and started with "Ищите больше информации по ссылке:" 
    Add text ""Для получения дополнительной информации посмотрите нашу полную документацию: https://hostkey.ru/documentation"" at the end. 
    
    Example of answer:
    "
    User: Как мне отменить аренду сервера?
    
    Bot: 
    
    Вы можете отказаться от использования сервера в любое время. Для этого вам необходимо зайти в панель управления Invapi и выполнить следующие действия:
    - Перейти во вкладку Billing в меню управления конкретным сервером.
    - Нажать кнопку [Cancel service].
    - Описать причину отмены и выбрать ее тип.
    - Нажать кнопку [Confirm termination].
    
    При немедленной отмене мы не возвращаем денежные средства за часы фактического использование сервера, включая время развертывания самого сервера, заказанного ПО и обработки заявки на отмену (до 12 часов). Неизрасходованный остаток средств возвращается на кредитный баланс клиента. Вывод средств с кредитного баланса выполняется согласно Правилам возврата денежных средств.
    
    Отменить заявку возможно во вкладке Billing с помощью кнопки [Revoke]:.
    
    Кроме того, если вам необходимо отменить услугу, включающую лицензию на ОС/программное обеспечение или имеющую индивидуальную/нестандартную конфигурацию, свяжитесь с нами через систему тикетов для оформления возврата вручную.
    
    Подробнее смотрите здесь: https://hostkey.ru/documentation/billing/services_cancellation/.
    "
    
  4. Подключаем нужную коллекцию документов, нажав на кнопку Select Documents в разделе Knowledge и выбрав нужную коллекцию по тегу.

  5. Настраиваем дополнительные параметры в разделе Advanced Params:
  6. Temperature = 0.3
  7. Context Length = 4089

  8. Нажимаем на кнопку Save & Update, чтобы создать кастомную модель чат-бота техподдержки.

Советы по работе с RAG в OpenWebUI

  • Любые манипуляции с Embedding Model потребуют удаления и загрузки документов в векторную базу заново. Изменение параметров RAG этого не требует.
  • При добавлении или удалении документов обязательно зайдите в кастомную модель (если она есть) и обновите коллекцию документов, иначе поиск по ним может работать неправильно.
  • OpenWebUI распознает форматы pdf, csv, rst, xml, md, epub, doc, docx, xls, xlsx, ppt, pptx, txt, но рекомендуется загружать документы в plain text.
  • Использование гибридного поиска улучшает результаты, но потребляет много ресурсов, и ожидание ответа может затянуться на 20–40 секунд даже на мощном GPU.

Заказ сервера с Ollama с помощью API

Для установки данного ПО с использованием API следуйте этой инструкции.