Научная статья на тему 'РАЗРАБОТКА ВЕБ-СЕРВИСА ДЛЯ ОБЛЕГЧЕНИЯ ДОСТУПА К ГЕНЕРАТИВНЫМ НЕЙРОННЫМ СЕТЯМ'

РАЗРАБОТКА ВЕБ-СЕРВИСА ДЛЯ ОБЛЕГЧЕНИЯ ДОСТУПА К ГЕНЕРАТИВНЫМ НЕЙРОННЫМ СЕТЯМ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
0
0
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
генеративные нейронные сети / искусственный интеллект / Ruby-on-Rails / API / generative neural networks / artificial intelligence / Ruby-on-Rails / API

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — А.В. Тарасов

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

DEVELOPMENT OF A WEB SERVICE TO EASILY ACCESS TO GENERATIVE NEURAL NETWORKS

The article discusses the problem of developing a web service to facilitate access to various generative neural networks. The key features of both the server and client parts of the designed system are considered. The practical result of the work is a web service that allows you to use text generative neural networks in a single interface.

Текст научной работы на тему «РАЗРАБОТКА ВЕБ-СЕРВИСА ДЛЯ ОБЛЕГЧЕНИЯ ДОСТУПА К ГЕНЕРАТИВНЫМ НЕЙРОННЫМ СЕТЯМ»

РАЗРАБОТКА ВЕБ-СЕРВИСА ДЛЯ ОБЛЕГЧЕНИЯ ДОСТУПА К ГЕНЕРАТИВНЫМ НЕЙРОННЫМ СЕТЯМ

А.В. Тарасов, магистрант

Донской государственный технический университет (Россия, г. Ростов-на-Дону)

DOI:10.24412/2500-1000-2024-5-4-85-90

Аннотация. В статье рассматривается задача разработки веб-сервиса для облегчения доступа к различным генеративным нейронным сетям. Рассмотрены ключевые особенности как серверной, так и клиентской частей проектируемой системы. Практическим результатом работы является web-сервис, позволяющий пользоваться текстовыми генеративными нейронными сетями в едином интерфейсе.

Ключевые слова: генеративные нейронные сети, искусственный интеллект, Ruby-on-Rails, API.

В современном мире цифровых технологий возможности автоматизации и оптимизации рабочих процессов представляют собой один из ключевых факторов успешной деятельности организаций. Особенно это касается области обработки естественного языка (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, и других. Эта особенность предо-

Листинг 1.

с lass BaseVendor

at tr reader :*odel_llst, :tttle, :ld

Inlt »odels lnit_cUef>t

def f lnd_model_t)y_td( id: ) rais» NotlapleoentedError

def prompt(prompt paraas: ) rais»- NotI«ple»entedError

Jef chat(clMtjxraaj:) raise NotInpleiBentedError

raise NotlmpleaentedError

raise Notl«ple«entedError

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

Faraday активно поддерживается разработчиками и имеет обширное сообщество. Это обеспечивает доступ к большому количеству ресурсов, таких как документация, руководства, примеры использования и решения типичных проблем.

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

После реализации класса, имплементи-рованного от данного интерфейса, предоставляется возможность вызова его методов из контроллера RoR. Таким образом

основная логика работы с API была инкапсулирована, и дальнейшее взаимодействие с генеративными нейронными сетями стало сильно упрощено (листинг 2).

Листинг 2. Пример взаимодействия с вендором API из контроллера.

create

iprompt - Prompt, пей create paraes.raergel { user id: current user .Id )l «vendor - Vendors.find by td(create parass[:vendor]>

return render :new, status: :unprocessable entity unless eproapt.validate ^vendor.present

nessaoe 9vendor.proaipt(create_porams>

return unless message

^prompt.response e*ssage['content'] «prompt.save

respond.to dc |format| format.turbo stream

format.htel { redirectto new openai promptpath >

iscue ProaptExeption »» e flash.now[:error] - e.nessage render_flash :unprocessable entIty

id

Клиентская часть веб-сервиса представляет собой SSR (Server Side Rendering) и состоит из двух отдельных областей. Первая является пользовательским интерфейсом для аутентификации, которую предоставляет Keycloack. Вторая - интерфейс рабочей области, состоящий из следующих разделов:

- «Промпт режим», в котором реализована возможность делать запросы к генеративным нейронным сетям, без контекста;

- «Общие промпты», в нем реализована возможность просмотра запросов и отве-

тов, которые опубликовали другие пользователи;

- «Мои промпты», где хранится личная история промпт запросов;

- «Мои чаты» - в нем существует возможность создания чата с конкретной нейронной сетью и взаимодействия с ней в чат-режиме, при этом нейросеть учитывает контекст беседы.

Примеры интерфейсов аутентификации и рабочей области приведены на рисунках 3 и 4, соответственно.

• ТОЧКА ВХОДА

■ -1«1К1ММЯ1Ь им

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

Рис. 4. Интерфейс рабочей области

Весь пользовательский интерфейс был реализован при помощи инструмента Hotwire (HTML-over-the-wire). Это альтернативный способ создания веб-приложений без использования большого количества JavaScript, за счет отправки по сети HTML, вместо JSON [5].

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

Использование Hotwire также значительно улучшает производительность веб-приложений. Поскольку Turbo может обновлять только те части страницы, кото-

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

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

рые в этом нуждаются, а необходимость

Библиографический список

1. Как Яндекс применил генеративные нейросети для поиска ответов // Хабр. - [Электронный ресурс]. - Режим доступа: https://habr.com/ru/companies/yandex/articles/561924 (дата обращения: 11.04.2024).

2. Интернет-торговля среди лидеров по внедрению ИИ-генеративные нейросети используют 67% российских компаний отрасли // Яндекс. - [Электронный ресурс]. - Режим доступа: https://yandex.ru/company/news/01-14-05-2024 (дата обращения: 11.04.2024).

3. Тейт Б., Ниббс К. Ruby on Rails. Быстрая веб-разработка. - БХВ-Петербург, 2008.

4. Devise. The Ruby Toolbox. - [Электронный ресурс]. - Режим доступа: https://www.ruby-toolbox.com/projects/devise (дата обращения: 12.04.2024).

5. Hotwire. HTML Over The Wire. - [Электронный ресурс]. - Режим доступа: https://hotwired.dev/ (дата обращения: 13.04.2024).

DEVELOPMENT OF A WEB SERVICE TO EASILY ACCESS TO GENERATIVE

NEURAL NETWORKS

A.V. Tarasov, Graduate Student Don State Technical University (Russia, Rostov-on-Don)

Abstract. The article discusses the problem of developing a web service to facilitate access to various generative neural networks. The key features of both the server and client parts of the designed system are considered. The practical result of the work is a web service that allows you to use text generative neural networks in a single interface.

Keywords: generative neural networks, artificial intelligence, Ruby-on-Rails, API.

i Надоели баннеры? Вы всегда можете отключить рекламу.