Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Модное кулинарное Шоу! Игра в ресторан, приготовление блюд, декорирование домов и преображение внешности героев.

Кулинарные истории

Казуальные, Новеллы, Симуляторы

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Open Source

С этим тегом используют

Linux IT Программирование Разработка Github Операционная система Android Все
368 постов сначала свежее
144
tproger.official
tproger.official
1 год назад
Типичный программист

Опенсорс и русская литература⁠⁠

Опенсорс и русская литература
[моё] IT юмор Программирование Программист IT Картинка с текстом Open Source Русская литература
10
15
bayselonarrend
bayselonarrend
1 год назад
1C:Предприятие 8

OpenYellow - агрегатор open-source проектов для 1С:Предприятие⁠⁠

OpenYellow - агрегатор open-source проектов для 1С:Предприятие 1С, 1с:предприятие 8, Open Source, Github, Репозиторий, Проект, IT, Программирование, Длиннопост

Open-source (проекты с открытым исходным кодом) - огромное явление в мире программирования, важность которого трудно переоценить. И в 1С оно тоже присутствует: да, у нас оно не так распространено и не имеет такого количества поддержки, как в других языках программирования, но все же существует, и в наших силах помочь его становлению

Скорость развития проектов с открытым исходным кодом, как и любое другое начинание на энтузиазме, держится в основном на поддержке сообщества. Но о какой поддержке сообщества может идти речь, если о существовании подавляющего количества проектов большинство людей из сообщества даже не подозревает? В 1С нет традиции использовать Git, следовательно и нет традиции использовать Github, и сервис, о котором я сейчас хочу рассказать, как раз призван внести свой посильный вклад в популяризацию открытых проектов, распространенных на этой площадке - он называется OpenYellow

OpenYellow - агрегатор open-source проектов для 1С:Предприятие 1С, 1с:предприятие 8, Open Source, Github, Репозиторий, Проект, IT, Программирование, Длиннопост

Главная страница портала

OpenYellow - это, в первую очередь, портал, где публикуются данные о лучших (по числу звезд), новых и последних обновленных репозиториях с Github по теме 1С и OneScript. Информация на нем обновляется ежедневно, а сами списки публикуются в виде таблиц с данными о названии, авторстве, описании и другими свойствами для каждого из репозиториев

OpenYellow - агрегатор open-source проектов для 1С:Предприятие 1С, 1с:предприятие 8, Open Source, Github, Репозиторий, Проект, IT, Программирование, Длиннопост

Начало таблицы ТОП-500

Работает это все на Notion, что позволяет в любой из таблиц осуществлять поиск и фильтрацию, дабы найти именно то, что вас интересует. А уж если вы вообще до этого не погружались в мир открытых решений для 1С, то точно найдете что-нибудь полезное среди всех этих отличных проектов. Тем более, что отбор осуществляется не только непосредственно по языку 1С, но и по наличию "1С:Предприятие" в описаниях и тэгах - это позволяет попасть в ТОП и тем проектам, которые сделаны для 1С, но на других языках

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

OpenYellow - агрегатор open-source проектов для 1С:Предприятие 1С, 1с:предприятие 8, Open Source, Github, Репозиторий, Проект, IT, Программирование, Длиннопост

Таблица новых репозиториев

Однако, ежедневно следить за обновлениями на портале не очень удобно и, скорее всего, быстро надоест. Поэтому, помимо портала, у нас есть еще канал в Telegram: на данный момент там публикуются новости о новых проектах, новых релизах старых проектов, а также ежедневный отчет об изменения позиций репозиториев в главном рейтинге ТОП-500

Подписавшись на него вы всегда будете максимально оперативно узнавать обо всех новостях из мира 1С Github и ежедневно знакомится с новыми инструментами, которые могут помочь вам в вашей профессиональной деятельности

OpenYellow - агрегатор open-source проектов для 1С:Предприятие 1С, 1с:предприятие 8, Open Source, Github, Репозиторий, Проект, IT, Программирование, Длиннопост

Канал в Telegram

Так что если вам нравится идея развития "желтого" open-source, или вы даже просто хотите узнавать о новых полезных инструментах, доступных бесплатно, здесь и сейчас - буду очень рад, если вы посетите сайт и подпишитесь на канал

Также не забывайте поддерживать открытые проекты, которые оказались для вас полезны - порой достаточно лишь звездочки на Github, чтобы подарить автору мотивацию продолжать свой труд дальше

  • Сайт - openyellow.notion.site

  • Канал - @OpenYellowProject

Спасибо за внимание!

Показать полностью 4
[моё] 1С 1с:предприятие 8 Open Source Github Репозиторий Проект IT Программирование Длиннопост
9
8
Neurosonya
Neurosonya
1 год назад
Полезные нейросети
Серия Полезность

Подборка бесплатных нейросетей для дипфейка видео⁠⁠

В этой статье я собрала бесплатные сервисы с искусственным интеллектом для видео дипфейков, они в открытом доступе и с открытым кодом.

1. V-Express

Выпустили в открытый доступ бесплатно нейросеть V-Express - это технология создания видео портретов, разработанная Tencent AI Lab и Нанкинским университетом. Она позволяет преобразовать одно изображение в видео, используя текст, аудио и другие сигналы для управления.

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

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

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

2. Argil

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

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

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

Короче, всем сервис хорош, кроме того, что нужно записаться в лист ожидания. Я уже записалась, там вообще коротенькая анкетка - имя, почта, зачем хотите потестить, где увидели - в основном, надо выбрать да/нет, у меня пол минуты, наверное, заняло

3. VideoReTalking

Проект VideoReTalking, представленный на конференции SIGGRAPH Asia 2022, предлагает систему для редактирования видео с говорящими головами в реальном времени на основе входного аудио.

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

Процесс

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

Достаточно загрузить речь нужного человека и на выходе получить видео, где он говорит ваш текст.

Код на GitHub

4. Rope

Репозиторий Rope на GitHub — это проект, направленный на создание реалистичных замен лиц в видео с использованием модели inswapper_128 из проекта InsightFace.

Главная особенность Rope — это удобный графический интерфейс (GUI), который упрощает процесс работы с заменой лиц для пользователей, не имеющих глубоких технических знаний.

Основные функции Rope:

  • Замена лиц: Основная задача Rope — это замена лиц на видео. В основном для киноиндустрии полезно, при создании визуальных эффектов, в виртуальной реальности и других творческих проектах.

  • Поддержка различных разрешений: Программа позволяет выбирать разрешение для вывода — 128, 256, 512 пикселей, так что можно настроить качество конечного видео в зависимости от ваших потребностей.

  • Улучшение качества изображений: В Rope интегрированы инструменты для повышения качества изображений, такие как GFPGAN и Codeformer, которые улучшают реалистичность замененных лиц.

  • Графический интерфейс: Удобный GUI позволяет легко загружать видео, выбирать и заменять лица, а также настраивать различные параметры без необходимости писать код.

Подробнее про Rope в этой статье

Хотите узнавать первыми о полезных сервисах с искусственным интеллектом для работы, учебы и облегчения жизни? Подпиcывайтесь на мой телеграм канал НейроProfit, там я рассказываю, как можно использовать нейросети для бизнеса.

Показать полностью 5
[моё] Полезное Технологии Искусственный интеллект Deepfake Видеомонтаж Нейронные сети Github Open Source Бесплатно Видео Вертикальное видео Длиннопост
4
17
AIshnytza
AIshnytza
1 год назад
Искусственный интеллект
Серия Нейросети

Заменители Sora для создания видео⁠⁠

В этом посте я расскажу про две нейросети, которые по качеству похожи на Sora. Одна бесплатная и открытая, другая дает 30 генераций в месяц.

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

Итак, первая нейросеть открытая, бесплатная, и ее так же можно не только скачать на пк, но и попробовать на сайтах.

1. Open-Sora

Open-Sora - проект с открытым исходным кодом с 724M параметрами. Разрешение 512*512, длительность 2 секунды.

Код на GitHub

Попробовать на HuggingFace 1

Попробовать на HuggingFace 2

Попробовать на Replikate

Collab

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

2. Luma AI Dream Machine

Luma AI представила новую нейросеть Dream Machine, которая составит конкуренцию популярной нейросети в реалистичности своих видеотворений.

Можно приложить изображение, а можно просто написать текстом, что должно быть на видео. С приложенными изображениями получается лучше, и без артефактов.

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

А как вы думаете, Sora уже всех "перегрела", и ажиотаж на нее немного спал? Лично я считаю, что все надо делать вовремя, мне лично нейросеть от Luma очень зашла, но момент прям выхватывать надо - сегодня она генерировала вижео, завтра нет, и видео не прогружаются. Надеюсь, моя статья вам понравилась, присоединяйтесь к нашему каналу 🍳, мы регулярно публикуем новости ближайшего будущего, переводы видео и полезные сервисы

Показать полностью 1
[моё] Искусственный интеллект Нейронные сети Видеомонтаж Бесплатно Open Source Github Клип Анимация Аналог Альтернатива Luma Ai Openai Будущее Инновации Видео Без звука Длиннопост Sora
1
107
bayselonarrend
bayselonarrend
1 год назад
1C:Предприятие 8

Интеграция 1С и всех всех всех⁠⁠

Привет! Хочу поделиться своим проектом для 1С, OneScript и CLI, над которым работаю уже около полугода.

Интеграция 1С и всех всех всех Программа, Программирование, 1С, 1с:предприятие 8, Cli, Софт, Open Source, Github, Linux, Windows, Гифка, Длиннопост

Альпака Виталий смотрит как-то дерзко с вызовом и в то же время весело и с задором


Это, на самом деле, не первый мой рассказ о нем - я достаточно часто пишу на Инфостарт, но трафика ведь много не бывает, правда? Тем более, что данный проект может оказаться полезным любому 1С-нику (и, как ни странно, не только), и будет очень здорово, если о нем узнает еще больше людей

Проект называется "Открытый пакет интеграций", он же "ОПИ", он же "OpenIntegrations" в английской локализации по названию репозитория. Проект бесплатный и open-source - найти его можно на GitHub (ссылка, еще раз, будет в конце), и в сути своей он представляет из себя расширение, общие модули которого позволяют легко и просто работать с такими онлайн сервисами как: Telegram, VK, Viber, Notion, Airtable, Yandex.Disk, Dropbox, Slack, сервисами Google Drive, Sheets, Calendar и совсем немного с Twitter

Все реализованные методы представляют из себя законченные действия, вроде ОтправитьСообщение(), СоздатьПост() или ЗагрузитьФайл(), что позволяет не углубляться в работу API, а просто выполнять конкретные операции, необходимые в данный момент

Но это еще не все. Все же знают про OneScript? Это такая открытая реализация стековой машины, которая позволяет выполнять код 1С независимо от самой платформы. С его помощью можно писать скрипты и даже настоящие программы - считай полноценный ЯП общего назначения, только со знакомым синтаксисом 1С. Так вот ОПИ есть и на OneScript! Причем не только как библиотека, но и как CLI приложение

CLI приложение (приложение для командной строки Windows и Linux терминала), на самом деле, моя любимая часть проекта - чувствуется в отвязке от вендера какая-то легкость и творческость :) В целом, это приложение реализует все те же методы, что и расширение для 1С, только отдельно и на любой машине, без необходимости "ставить" для этого платформу.

Вот как это выглядит:

Интеграция 1С и всех всех всех Программа, Программирование, 1С, 1с:предприятие 8, Cli, Софт, Open Source, Github, Linux, Windows, Гифка, Длиннопост

OInt CLI - версия Открытого пакета интеграций для командной строки. На данной гифке сначала вызывается справка, потом создается json клавиатуры для Telegram, а далее эта клавиатура, вместе с текстом, отправляется мне в личку ТГ через бота

Также у проекта есть большая и подробная документация на opeintegrations.dev, где можно найти описание всех функций, примеры кода и инструкции по началу работы с каждым конкретным API. Сам же ОПИ распространяется на двух языках: русском и английском, так что даже пользователи англоязычных конфигураций на этот раз не в пролете (документация и CLI версия тоже переведены)

Интеграция 1С и всех всех всех Программа, Программирование, 1С, 1с:предприятие 8, Cli, Софт, Open Source, Github, Linux, Windows, Гифка, Длиннопост

Одна из страниц документации

Вот такой вот проект. Если вы работаете с 1С или даже просто ищите консольную утилиту для работы с любимыми онлайн-сервисами - буду очень рад, если загляните в мой репозиторий!

Его URL вот: https://github.com/Bayselonarrend/OpenIntegrations

Спасибо за внимание!

UPD:

Вы можете поддержать проект, если поставите ему звездочку на Github: так больше людей узнает о его существовании. Заранее спасибо!

Показать полностью 2
[моё] Программа Программирование 1С 1с:предприятие 8 Cli Софт Open Source Github Linux Windows Гифка Длиннопост
24
1
Santry.acc
Santry.acc
1 год назад
Искусственный интеллект

Камень-навигатор, кулон-диктофон и другие AI-гаджеты⁠⁠

Камень-навигатор, кулон-диктофон и другие AI-гаджеты Гаджеты, Технологии, Будущее, Open Source, Искусственный интеллект, Инновации, Изобретения, Telegram (ссылка), Длиннопост

Хотелось бы завести робота-помощника на базе языковой модели как можно скорее, но инженеры пока что скептичны. По их словам, "люди просто не понимают, насколько сложно развертывать роботов этого типа". Даже робототехники-оптимисты считают, что это потребует много денег и времени. Да что там роботы… Похожая на тамагочи говорилка Rabbit R1 с искусственным интеллектом оказалась Android-приложением в красивом корпусе. AI Pin критикуют все, кому не лень.

Камень-навигатор, кулон-диктофон и другие AI-гаджеты Гаджеты, Технологии, Будущее, Open Source, Искусственный интеллект, Инновации, Изобретения, Telegram (ссылка), Длиннопост

Вот, скажем, OpenGlass — дешевые самодельные умные очки, к которым подключаются Groq, Chat GPT или Ollama. Другой пример — Friend — миниатюрный носимый диктофон–суммаризатор, который анализирует все записанное.

Камень-навигатор, кулон-диктофон и другие AI-гаджеты Гаджеты, Технологии, Будущее, Open Source, Искусственный интеллект, Инновации, Изобретения, Telegram (ссылка), Длиннопост

Или TERRA — похожий на камень AI–компас с занятной философией. Он самостоятельно составляет закольцованный маршрут для прогулки и подсказывает, куда идти. В результате пользователь не залипает в навигатор, а смотрит по сторонам и исследует окружающий мир.

Камень-навигатор, кулон-диктофон и другие AI-гаджеты Гаджеты, Технологии, Будущее, Open Source, Искусственный интеллект, Инновации, Изобретения, Telegram (ссылка), Длиннопост

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

А вы как думаете?

Если хотите больше годного контента — переходите в телеграм.

Показать полностью 3
Гаджеты Технологии Будущее Open Source Искусственный интеллект Инновации Изобретения Telegram (ссылка) Длиннопост
3
15
MarkParker.5
MarkParker.5
1 год назад
Лига программистов
Серия Программирование и Туториалы

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал)⁠⁠

Предыдущие статьи:

  • Как мы построили ИИ-стартап на хакатоне выходного дня в Германии

  • House, MD - AI Diagnostician in Your Phone: Passing the Startup Torch

В этой статье мы рассмотрим все тонкости создания Proof of Concept (PoC) мобильного приложения, построенного с помощью фреймворка SwiftUI и бэкенда с использованием FastAPI. Дополнительно я продемонстрирую эффективные архитектурные паттерны для SwiftUI-приложений, в частности MVVMP в сочетании с принципами SOLID и Dependency Injection (DI). Для android код можно легко перевести на Kotlin с Jetpack Compose.

Зачем нам нужен бэкенд

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

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

  1. Безопасность: Бэкэнд помогает защитить конфиденциальные данные и токены аутентификации пользователей от атак типа MITM (Man-in-the-Middle). Он выступает в качестве защищенного шлюза между пользовательским устройством и базой данных или внешними службами, обеспечивая шифрование и аутентификацию всех данных.

  2. Контроль над использованием сервисов: Управляя API и взаимодействием с пользователями через бэкэнд, вы можете отслеживать и контролировать использование приложения. Это включает в себя дросселирование для управления нагрузкой, предотвращение злоупотреблений и обеспечение эффективного использования ресурсов.

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

  4. Модели подписки и Freemium: Реализация услуг по подписке или модели freemium требует наличия бэкенда для выставления счетов, отслеживания использования и управления уровнями пользователей. Бэкэнд может безопасно обрабатывать платежи и подписки, обеспечивая бесперебойную работу пользователей и соблюдая требования по защите данных.

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

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

Объяснение технического стека

  • SwiftUI: Лучший вариант для нативных приложений для iOS после выхода UIKit. Он декларативен и упорядочен, а XCode является незаменимым редактором благодаря эпл. Для android код можно легко перевести на Kotlin с помощью Jetpack Compose.

  • FastAPI: Выбран для бэкенда за его скорость, минимальное количество шаблонов и декларативность, редактируется с помощью превосходного Zed.dev.

  • ChatGPT API: Используется в качестве большой языковой модели (LLM); выбор может меняться в зависимости от необходимости кастомизации.

  • Ngrok: Реализует туннелирование с помощью простой команды CLI для выхода локального сервера в интернет.

Создание приложения для iOS

Теория: Архитектурные паттерны

  1. MVVMP (Model View ViewModel Presenter):

  • Model: Представляет собой структуры данных, используемые в приложении, такие как Question, Answer, Questionary и FilledQuestionary. Эти модели просты и содержат только данные, следуя принципу KISS.

  • View: Отвечают только за представление пользовательского интерфейса и делегируют все данные и логику презентерам. Они не содержат никакой бизнес-логики и спроектированы так, чтобы быть простыми и сосредоточенными на рендере UI.

  • ViewModel: В SwiftUI ViewModel представлена объектом ObservableObject, который служит моделью наблюдения за изменяемыми данными. Здесь нет методов и логики.

  • Presenter: Presenter управляет всей логикой, связанной с модулем (экраном или представлением), но не бизнес-логикой. Он взаимодействует с доменным слоем для выполнения операций бизнес-логики, таких как взаимодействие с API или управление сохранением данных.

  • Domain Layer: Этот слой содержит бизнес-логику приложения и взаимодействует с внешними ресурсами, такими как базы данных, API или другие сервисы. Он состоит из нескольких компонентов, таких как сервисы, провайдеры, менеджеры, репозитории, мапперы, фабрики и т. д.

  • На самом деле, MP в MVVMP является инициалами Марка Паркера, а полная форма — «Model View ViewModel by Mark Parker».

  1. Принципы СОЛИД:

    • Принцип единой ответственности: У каждого класса должна быть только одна причина для изменений.

    • Принцип открытость-закрытость: Компоненты должны быть открыты для расширения, но закрыты для модификации.

    • Принцип замещения Лискова: Объекты суперкласса должны быть заменяемы объектами подклассов.

    • Принцип разделения интерфейсов: Ни один клиент не должен быть вынужден зависеть от интерфейсов, которые он не использует.

    • Принцип инверсии зависимостей: Зависимость от абстракций, а не от конкретики, чему способствует DI.

  2. Инъекция зависимостей (DI): Реализация с использованием DI-контейнера для соблюдения принципа инверсии зависимостей.

Разработка бэкенда

Код бэкенда довольно прост. Эндпоинты (main.py):

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

"onboarding" предоставляет список вопросов анамнеза, которые необходимо заполнить при первом запуске приложения. Ответы будут сохранены на устройстве и использованы для персонализированной диагностики в будущем. "doctor" — основной эндпоинт: он генерирует вопросы на основе предыдущих ответов и карты пользователя, либо возвращает результат диагностики.

Модели:

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

Промпты:

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

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

Настройте окружение и запустите сервер с помощью fastapi dev main.py.

Подробности:

  • fastapi.tiangolo.com/tutorial/first-steps

  • pypi.org/project/openai/

Открытие доступа к локальному хосту через Интернет

  1. Зарегистрируйтесь на сайте ngrok.com и получите токен доступа.

  2. Установите ngrok с сайта ngrok.com/download.

  3. Выполните команду ngrok config add-authtoken <TOKEN>.

  4. Запустите с помощью команды ngrok http http://localhost:8080 (при необходимости измените порт).

Подробные инструкции по настройке можно найти в документации ngrok.

Кодим приложение

Я не буду показывать здесь весь исходный код, для этого есть GitHub. Найти его можно по адресу: HouseMDAI iOS App. Вместо этого я остановлюсь только на важных (IMO) моментах.

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

Первым делом нам нужны модели, и они довольно просты (принцип KISS).

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

Теперь давайте сделаем онбординг. Продолжаем следовать KISS и SRP (Single Responsibility Principle), никакой бизнес-логики в представлениях, только UI. В данном случае - только список вопросов с прокруткой. Все данные и логика делегированы презентеру. Единственное, что здесь интересно, это небольшой вспомогательный метод bindingForQuestion, который, вероятно, должен быть в презентере, но сейчас это не имеет значения.

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

Вы будете удивлены, но в презентере также нет никакой бизнес-логики!

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

Все по-прежнему simple, stupid и имеет только одну ответственность. Presenter должен содержать только логику своего представления. Бизнес-логика уровня приложения находится вне его юрисдикции, поэтому презентер просто делегирует ее наверх по стэку вызова.

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

При использовании паттерна Dependency Injection зависимости предоставляются извне класса, а не инстанцируются внутри него. Это способствует развязке и позволяет упростить поддержку и тестирование кода.

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

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


Однако существует альтернативный подход, предлагаемый MarkParker5/AnyObservableObject.
Эта библиотека работает аналогично родным оберткам свойств SwiftUI, но убирает проверку типа во время компиляции в пользу проверки во время рантайма. Хотя такой подход может внести некоторые риски, их легко снизить, написав элементарные xcode тесты, которые просто инициализируют представления так же, как вы делаете это во время рантайма.

Используя эту альтернативу, вы можете упростить свой код и оптимизировать процесс работы с протоколами в SwiftUI.

Итак, если презентер не содержит бизнес-логику, то где же она? Это задача для доменного слоя, который обычно содержит сервисы, провайдеры и менеджеры. У них всех очень схожее применение, и разница между ними до сих пор является предметом дискуссий. Давайте создадим OnboardingProvider, который будет содержать всю бизнес-логику процесса онбординга.

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

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

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

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

Это приложение SwiftUI устанавливает свое начальное состояние с помощью оберток полей StateObject. Оно инициализирует OnboardingProvider, OnboardingPresenter и HomePresenter в своем методе init. Провайдер OnboardingProvider отвечает за управление данными, связанными с онбордингом, а OnboardingPresenter управляет логикой представления онбординга. HomePresenter управляет главным домашним представлением.

В теле сцены приложения проверяется, нужна ли регистрация на сайте. Если да, то она представляет OnboardingView с OnboardingPresenter. В противном случае она представляет TabView, содержащий HomeView с HomePresenter и, если доступно, ProfileView.

Теперь настало время для домашнего экрана. Логика проста:

  1. Получаем сообщение от пользователя

  2. Используя сообщение, запрашиваем список вопросов из бэкенда

  3. Показываем вопросы по одному, используя встроенную push-навигацию.

  4. Добавляем ответы к запросу и повторяем 2-4, пока бэкенд-доктор не вернет окончательный результат

  5. Показываем финальный результат

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

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

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

Он управляет вводом сообщения пользователем и обновляет путь навигации на основе ответов от бэкенда.

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

Аналогично, когда заполняется вопросник, метод onQuestionaryFilled() отправляет заполненный вопросник на бэкенд и соответствующим образом обновляет путь навигации.

Здесь есть небольшое дублирование кода между методами onSend() и onQuestionaryFilled(), которое можно было бы отрефакторизовать в один метод для обработки обоих случаев. Однако оставим это как упражнение для дальнейшей доработки.

Модуль Questionary (View+Presenter) почти является копией Onboarding и просто делегирует логику до HomePresenter, поэтому я не вижу необходимости показывать код. Опять же, для этого есть github.

Последнее, что я хочу показать, это две реализации DoctorProvider, единственной обязанностью которых является вызов API и возврат DoctorResponse.

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

Первая использует наш бэкенд:

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

Вторая вызывает openai api напрямую (подход backendless) и является практически копией модуля подсказок из бэкенда:

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

Обе реализации легко взаимозаменяются благодаря инъекции зависимостей:

Делаем нативное мобильное приложение с ИИ и бэкендом (Туториал) Программирование, Разработка, iOS, Искусственный интеллект, Туториал, Открытый код, Чистый код, Архитектура по, Frontend, Backend, Open Source, Длиннопост

Другой пример

Посмотреть пример этой архитектуры в реальном приложении можно в моем проекте TwiTreads на github.com/MarkParker5/TwiTreads

Что делать дальше

  • Интегрируйте аутентификацию и базу данных пользователей в бэкенд. Можете использовать официальный шаблон FastAPI из FastAPI Project Generation.

  • Реализуйте логику аутентификации в приложении.

  • Сосредоточьтесь на улучшении дизайна приложения, чтобы повысить удобство работы с ним. Давайте создавать красивые приложения!

Заключение

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

О других интересных проектах периодически пишу в телеграм.

Показать полностью 14
[моё] Программирование Разработка iOS Искусственный интеллект Туториал Открытый код Чистый код Архитектура по Frontend Backend Open Source Длиннопост
0

Оформить подписку для бизнеса

Перейти
Партнёрский материал Реклама
specials
specials

Ваш бизнес заслуживает большего!⁠⁠

Оформляйте подписку Пикабу+ и получайте максимум возможностей:

Ваш бизнес заслуживает большего! Малый бизнес, Предпринимательство, Бизнес

О ПОДПИСКЕ

Малый бизнес Предпринимательство Бизнес
2
AleynikovRoman
1 год назад

SearchJumper - одно из лучших opensouce расширений для браузера⁠⁠

SearchJumper - одно из лучших opensouce расширений для браузера Google Chrome, Microsoft Edge, HTML, CSS, Javascript, Github, Open Source, Web, Web-программирование, Firefox, Веб-разработка, Веб-дизайн, Программирование, Веб-приложение

SearchJumper - GitHub

Для своих нужд искал расширение для поиска и подсвечивания ключевых слов разными цветами и чтобы цвета не повторялись минимум 15-20 раз. Из того, что удалось найти было одно расширение, которое полностью соответствует этой цели, и так же я случайно наткнулся на это расширение, которое так же соответствует цели, но помимо этого предоставляет и другие очень мощные функции. Спустя некоторое время пользования им я бы сказал, что поиск и выделение слов - это лишь 5% от реального потенциала расширения. Поскольку подробных мануалов для тонкой настройки поисковых функций автор не приводит в ознакомительном видео и на сайте, то настроить расширение и все его функции полностью под себя не получилось, но из ознакомительной информации видно, что они офигенные. Хоть приложение переведено на английский, это все равно не помогает разобраться во всем, т.к. для некоторых из функций нужно знание javaScript, css, html. Кое в чем, конечно, удалось разобраться, но еще много остается загадкой.

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

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

Дублирую ссылку на гитхаб еще раз

Показать полностью
Google Chrome Microsoft Edge HTML CSS Javascript Github Open Source Web Web-программирование Firefox Веб-разработка Веб-дизайн Программирование Веб-приложение
10
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии