One LLM chat to rule them all

One LLM chat to rule them all

@purple_medved

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

К тому же регулярно появляются новые модели с новой функциональностью, на примере с DeepSeek R1 спровоцировавшей панику на фондовом рынке в конце января. Мне как и думаю большинству из вас тогда сразу же захотелось ее потестировать, чтобы заставить бездушную машину поразмышлять о смысле жизни, будущем атакующей кибербезопасности и о том как Алексей Лукацкий может писать столько постов в своем канале🤠 а также других риторических вопросах.

Но использовать родной веб-интерфейс или мобильные приложения, оплачивать подписку, вместо API это не путь настоящего самурая, поэтому в один из февральских вечеров после работы я сел пилить очередного телеграмм бота для DeepSeek. Некоторые подписчики, которые читают канал уже давно, скорее всего помнят мои эксперименты с ботами для Сhatgpt от OpenAI, YandexGpt, self-hosted вариациями LLaMA и некоторыми другими open source моделями, которые некоторое время были доступны всем читателям канала.

Но вернемся к сути повествования, после того как очередной бот был готов, протестирован и добавлен в папку с ботами, пришло понимание, что особо удобнее не стало. Все равно приходится копипастить запрос из одного чата в другой а переключать API OpenAI compatible моделек в ботах теперь становится, не очень комфортно учитывая их растущее количество.

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

В итоге нашлось некоторое количество достойных внимания приложений с LLM чатами в веб-интерфейсе из числа которых я выбрал и протестировал два решения, и хочу рассказать о них в этой заметке. А дочитав до конца вы узнаете, как получить в свое распоряжение API для более 100 различных моделей абсолютно бесплатно.

ТЗ включало в себя несколько ключевых пунктов:

🔲 Self-hosted решение, чтобы развернуть в контейнере на Raspberry pi 4;

🔲 Приятный веб-интерфейс, PWA, dark mode, поддержка Markdown и LaTeX, code highlight;

🔲 Поддержку различных API LLM с возможностью переключаться из веб-интерфейса;

🔲 Возможность создавать темплейты промтов и изменять параметры temperature (случайность сгенерированного результата), выборку Top-P (выбор токенов из вариантов с наибольшей вероятностью) и max output tokens из веб-интерфейса.


NextChat

https://github.com/ChatGPTNextWeb/NextChat

✅ Инструмент легко поднимается в контейнере с помощью docker compose, в моем случае на четвертой малинке с 8Gb RAM, за Traefik в качестве реверс прокси с TLS-сертификатом от Let's Encrypt, который обновляется через API Cloudflare.

✅ Имеет приятный и легкий веб-интерфейс, клиенты под Linux/Windows/MacOS, поддерживает Markdown, LaTex, mermaid, code highlight.

Веб-интерфейс NextChat

✅ Поддерживает API различных OpenAI compatible LLM, http прокси с помощью proxychains в контейнере для обхода гео ограничений некоторых провайдеров. Также имеет встроенную поддержку моделей Stable Diffusion от Stability AI для создания и обработки изображений через веб-интерфейс и TTS (text-to-speech) от OpenAI и Microsoft Edge для генерации голоса. А также различные плагины для интеграции со сторонними сервисами. https://github.com/ChatGPTNextWeb/NextChat-Awesome-Plugins

Поддержка Stable Diffusion

✅ Имеет функциональность создания шаблонов для запросов, которые по аналогии с OpenAI называются масками. Правда большинство встроенных промтов написаны на китайском языке, поэтому требуют небольшой доработки. https://github.com/f/awesome-chatgpt-prompts

Создание шаблонов для запросов

Также имеет возможность тонкой настройки параметров для каждой модели через веб-интерфейс.

Настройка параметров моделей

Из недостатков можно выделить:

❓Неудобный способ добавления/удалений конкретных моделей в переменных окружения контейнера.

CUSTOM_MODELS="-all,+gpt-3.5-turbo@AZ-OAI,AZ/DeepSeek-R1@AZ-AI,gpt-4o@openai

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

❓Отсутствие возможности гибкой настройки прав пользователей для взаимодействия с различными моделями. Другими словами, хотелось бы чтобы другие пользователи приложения, например члены вашей семьи имели доступ только к определенным моделям для определенных целей и не загоняли баланс API в минус при использовании дорогих моделей для решения задач, которые по силам любой бесплатной LLM.

❓Так же очень не хватает функциональности чтобы прямо во время диалога можно было переключать используемую модель сохраняя контекст переписки. Очень актуально при взаимодействии с "размышляющими" моделями, хочется чтобы вывод первой модели подхватывала следующая.


Open WebUI

https://github.com/open-webui/open-webui

Это наиболее функциональное решение, которое включает все требования моего ТЗ и не имеет описанных выше недостатков NextChat.

✅ Огромное количество поддерживаемых моделей c возможностью переключаться сохраняя контекст диалога.

Веб-интерфейс Open WebUI

✅ Асинхронные чаты с уведомлениями.

Можно одновременно работать с несколькими моделями в разных чатах, они пришлют всплывающее окно с уведомлением, когда закончат обработку запроса. Особенно актуально при взаимодействии с "размышляющими" моделями, потому что на генерацию этого потока сознания требуется определенное время.

Асинхронные чаты с уведомлениями

✅ Code Interpreter

Этот режим позволяет запускать создаваемый моделью код на Python прямо из браузера с помощью Pyodide или на отдельном инстансе Jupyter Notebook. Очень удобно для дебага и оптимизации, больше ничего не нужно копипастить в консоль.

Code Interpreter

✅ Channels

Это чаты между пользователями приложения. Их видят все пользователи или пользователи определенных групп и могут в них общаться между собой и совместно работать с запросами к LLM.

✅ Веб‑поиск и поддержка RAG для работы с данными в Google Drive и любом S3 через API.

✅ API со Swagger для интеграции с другими инструментами, поддержка OAuth и LDAP и многое другое.


Таким образом, оба рассмотренных инструмента представляют собой вполне достойные решения, способные удовлетворить потребности практически любого пользователя LLМ.


PS: Тех кто дочитал до конца ждет обещанный бонус, существуют сервисы, которые представляют возможности универсального API для взаимодействия с моделями различных провайдеров абсолютно бесплатно (без необходимости привязывать карту) с очень комфортными ограничениями на количество запросов OpenRouter, Groq, SambaNova и другие. Использование API только перечисленных дает доступ к более чем 100 бесплатным моделям.

Тут можно найти другие сервисы и подробности по ограничениям https://github.com/cheahjs/free-llm-api-resources


Благодарю за внимание! Лайк, шер, подписка @purple_medved 💜



Report Page