Разработка веб-сервиса для облегчения доступа к генеративным нейронным сетям
Автор: Тарасов А.В.
Журнал: Международный журнал гуманитарных и естественных наук @intjournal
Рубрика: Технические науки
Статья в выпуске: 5-4 (92), 2024 года.
Бесплатный доступ
В статье рассматривается задача разработки веб-сервиса для облегчения доступа к различным генеративным нейронным сетям. Рассмотрены ключевые особенности как серверной, так и клиентской частей проектируемой системы. Практическим результатом работы является web-сервис, позволяющий пользоваться текстовыми генеративными нейронными сетями в едином интерфейсе.
Генеративные нейронные сети, искусственный интеллект
Короткий адрес: https://sciup.org/170205282
IDR: 170205282 | DOI: 10.24412/2500-1000-2024-5-4-85-90
Текст научной статьи Разработка веб-сервиса для облегчения доступа к генеративным нейронным сетям
В современном мире цифровых технологий возможности автоматизации и оптимизации рабочих процессов представляют собой один из ключевых факторов успешной деятельности организаций. Особенно это касается области обработки естественного языка (NLP), где генеративные нейронные доказали свое превосходство и начали применяться для улучшения коммуникаций, аналитики текстовых данных и создания контента [1].
В связи с этим разработка веб-сервисов, которые могут предоставить удобный и интуитивно понятный интерфейс для доступа к генеративным нейронным сетям, становится всё более актуальной задачей. В данной статье будет рассматриваться процесс создания вышеуказанного вебсервиса для внутреннего использования в компании, целью которого является предоставление сотрудникам возможности эффективно пользоваться моделями, и API которых уже были представлены на рынке различными вендорами.
Актуальность данной работы обусловлена растущими потребностями бизнеса в инструментах для работы с текстовой информацией, которые могут существенно увеличить производительность труда, качество конечного продукта и, как результат, конкурентоспособность компании на рынке. Использование генеративных нейронных сетей в этом контексте представляет собой новый подход, позволяющий автоматизировать рутинные задачи, связанные с текстовым контентом [1].
Бизнес-логика системы представлена в виде функциональной модели в нотации IDEF0. Её контекстная диаграмма была изображена на рисунке 1. А на рисунке 2, изображена диаграмма декомпозиции первого уровня.
Рис. 1. Контекстная диаграмма

Рис. 2. Диаграмма декомпозиции первого уровня
Далее был определен перечень инструментов, при помощи которых шла разработка данного веб-сервиса.
В качестве платформы для разработки, был выбран фреймворк Ruby-on-Rails (RoR) написанный на языке Ruby. RoR являясь высокоуровневым веб-фреймворком предоставляет разработчикам мощный инструментарий для создания веб-сервисов. Его пригодность для нашей задачи обусловлена несколькими ключевыми аспектами [3]:
-
1. Безопасность. В него включено множество функций безопасности по умолчанию, таких как защита от XSS (Cross-Site Scripting), CSRF (Cross-Site Request Forgery) и SQL-инъекций. Это помогает создавать более безопасные вебприложения.
-
2. Быстрая разработка. Благодаря богатой экосистеме библиотек (гемов), встроенной поддержке множества популярных баз данных, MVC архитектуре, а также другим встроенным функциям, RoR позволяет разрабатывать веб-сервисы быстро и эффективно. Это делает его идеальным выбором для стартапов и проектов с ограниченными сроками.
-
3. RoR поощряет и облегчает тестирование приложений с помощью встроенной поддержки различных типов тестов (модульные, функциональные, интеграционные). Это позволяет разработчикам обеспечить более высокое качество кода и
- уменьшить количество ошибок в приложении.
-
4. Соглашение превыше конфигурации (Convention over Configuration). Ruby-on-Rails основан на данном принципе, что уменьшает количество решений, которые должен принять разработчик, и упрощает процесс написания кода. Это ускоряет разработку, поскольку программист может сфокусироваться на особенностях своего приложения, вместо того чтобы тратить время на настройку и конфигурацию.
На старте разработки в качестве базовой конфигурации была использована технология единого входа (Single sign-on) в виде решения Keycloak поэтому было принято решение применить готовый инструмент аутентификации – Devise, широко распространенный в сообществе Ruby [4]. Данное решение по умолчанию поддерживает создание стратегий OmniAuth.
Поскольку основной идеей веб-сервиса являются API запросы к различным генеративным нейронным сетям, необходимо было подобрать подходящий (для чего) инструмент.
Платформа Ruby-on-Rails имеет огромное количество библиотек для API запросов, таких как Net/HTTP, HTTParty, Restclient. Но было принято решение использовать более гибкий и интуитивно понятный инструмент под названием Faraday. Далее рассмотрим несколько ключевых аспектов, которые обусловливают данный выбор. На рисунке 3 представлена сравнительная диаграмма возможностей библиотек платформы RoR для реализации запросов к стороннему API.
Faraday использует концепцию middleware, что делает его более гибким, относительно конкурентов. Следовательно мы можем легко добавлять, удалять или настраивать промежуточные ПО в соответствии с нашими требованиями. Это позволяет интегрировать различные обработчики для запросов и ответов, а также управлять исключениями, логированием и кэшированием на уровне HTTP.
Также он поддерживает использование различных HTTP адаптеров, таких как Net::HTTP (по умолчанию), Typhoeus, Patron, и других. Эта особенность предо- ставляет нам свободу выбора в зависимости от требований к производительности или функциональности, а также от личных предпочтений. Возможность смены адаптера без внесения изменений в уже написанный код является значительным преимуществом.
Faraday активно поддерживается разработчиками и имеет обширное сообщество. Это обеспечивает доступ к большому количеству ресурсов, таких как документация, руководства, примеры использования и решения типичных проблем.
Далее для упрощения работы с различными вендорами API, был создан базовый интерфейс, упрощающий написание и использование специализированных классов, в которых содержится основная логика работы с API (листинг 1).
Листинг 1.
attr.reader :®odel_Hst( tittle» Hd def initialize init.aodels tntt.cltent end def flnd_model bv_ld(id:) raise NotlapleeentedError end def prompt(prompt params:) raise NotImplementedError end def chat(chat params:) raise NotImplementedError end private def Inlt models raise NotlapleeentedError end def lnit_cllent raise NotImpleeentedError end
После реализации класса, имплементированного от данного интерфейса, предоставляется возможность вызова его методов из контроллера RoR. Таким образом основная логика работы с API была инкапсулирована, и дальнейшее взаимодействие с генеративными нейронными сетями стало сильно упрощено (листинг 2).
Листинг 2. Пример взаимодействия с вендором API из контроллера.
'•’turn unless message
19 end
Клиентская часть веб-сервиса представляет собой SSR (Server Side Rendering) и состоит из двух отдельных областей. Первая является пользовательским интерфейсом для аутентификации, которую предоставляет Keycloack. Вторая – интерфейс рабочей области, состоящий из следующих разделов:
-
- «Промпт режим», в котором реализована возможность делать запросы к генеративным нейронным сетям, без контекста;
-
- «Общие промпты», в нем реализована возможность просмотра запросов и отве-
- тов, которые опубликовали другие пользователи;
-
- «Мои промпты», где хранится личная история промпт запросов;
-
- «Мои чаты» – в нем существует возможность создания чата с конкретной нейронной сетью и взаимодействия с ней в чат-режиме, при этом нейросеть учитывает контекст беседы.
Примеры интерфейсов аутентификации и рабочей области приведены на рисунках 3 и 4, соответственно.

Рис. 3. Интерфейс аутентификации Keycloack

Рис. 4. Интерфейс рабочей области
Весь пользовательский интерфейс был реализован при помощи инструмента Hotwire (HTML-over-the-wire). Это альтернативный способ создания вебприложений без использования большого количества JavaScript, за счет отправки по сети HTML, вместо JSON [5].
Данный инструмент состоит из нескольких компонентов – Turbo и Stimulus, каждый из которых способствует упрощению разработки. Turbo позволяет выполнять навигацию и обновление частей вебстраниц без полной перезагрузки, что значительно ускоряет взаимодействие пользователя с приложением. Stimulus используется для добавления минимального JavaScript кода для улучшения функциональности, не заменяя стандартный подход. Эти библиотеки упрощают процесс разработки, позволяя нам сосредоточиться на логике приложения.
Использование Hotwire также значительно улучшает производительность вебприложений. Поскольку Turbo может обновлять только те части страницы, которые в этом нуждаются, а необходимость полной перезагрузки, в свою очередь, отпадает, что приводит к более быстрой отзывчивости и улучшенному взаимодействию с пользователем. Это также снижает нагрузку на сервер, поскольку обрабатывается меньше данных при каждом запросе. Более того Hotwire уменьшает зависимость от сложного JavaScript, что положительно влияет на скорость загрузки страниц.
В процессе разработки веб-сервиса, описанного в данной статье, были учтены все современные требования к интерфейсам и пользовательскому опыту, которые позволяют пользователям без глубоких знаний в области машинного обучения и нейросетей, эффективно использовать продукт для реализации своих задач. Учитывая потребности внедрения искусственного интеллекта в производство компаний, было предложено решение, способствующее ускорению и оптимизации работы, что позволяет открыть широкие перспективы для исследований и разработок в различных областях.
Список литературы Разработка веб-сервиса для облегчения доступа к генеративным нейронным сетям
- Как Яндекс применил генеративные нейросети для поиска ответов // Хабр. - [Электронный ресурс]. - Режим доступа: https://habr.com/ru/companies/yandex/articles/561924 (дата обращения: 11.04.2024).
- Интернет-торговля среди лидеров по внедрению ИИ-генеративные нейросети используют 67% российских компаний отрасли // Яндекс. - [Электронный ресурс]. - Режим доступа: https://yandex.ru/company/news/01-14-05-2024 (дата обращения: 11.04.2024).
- Тейт Б., Ниббс К.Ruby on Rails. Быстрая веб-разработка. - БХВ-Петербург, 2008.
- Devise. The Ruby Toolbox. - [Электронный ресурс]. - Режим доступа: https://www.ruby-toolbox.com/projects/devise (дата обращения: 12.04.2024).
- Hotwire. HTML Over The Wire. - [Электронный ресурс]. - Режим доступа: https://hotwired.dev/(дата обращения: 13.04.2024).