OffshoreLabs Studio
RUEN
Меню

Разработка приложений с ИИ · Часть 1

Работа мясным прокси: как я сделал первое приложение с помощью ИИ

— Привет, меня зовут Алекс. Мне 42 и я — разработчик-самоучка.

Все хлопают, «Привет, Алекс».

С формальностями закончили, теперь можно знакомиться нормально.

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

Лет в тринадцать-четырнадцать у меня появилась электронная записная книжка. Сейчас трудно объяснить восторг от устройства, в котором можно было просто хранить какие-то записи. Но тогда это была невероятно крутая вещь: своя электронная записная книжка, представляете?))

Потом, уже в институте, был первый КПКASUS n30 (даже не Палм!) в связке с SE T68i в качестве bluetooth-модема, а за ними - Qtek S100 на Windows Mobile. Тут я развернулся: ковырял реестр, настраивал интернет, ставил офисные программы, игры. Многие вокруг вообще не понимали, зачем мне всё это нужно, а у меня в кармане был настоящий компьютер. Конечно, мне хотелось разобраться во всём, до чего получалось дотянуться.

Правда, любовь к технологиям совершенно не мешала мне периодически смотреть на них свысока. Помню, пришёл в магазин за очередным смартфоном и продавец показал какой-то новый HTC на тогда ещё только вышедшем Android. Открываю при нем магазин приложений, а там их, по моим воспоминаниям, штук пятьсот всего. Говорю: вот когда будет хотя бы десять тысяч, тогда и посмотрим на ваш Android.

Посмотрел, конечно. Через какое-то время сам на него и перешёл: а что, Линукс же практически, и в реестр лазить не надо ))

Первым моим айфоном стал серый откуда-то кем-то привезенный 3GS. Система казалась ещё сыроватой, зато дизайн и удобство очень понравились. Ёмкостной экран, даже стилус не нужен — бомба! Мне всегда было интересно смотреть, как очередное устройство меняет привычные действия, что стало проще, что удобнее, а где всё ещё хочется спросить: ну и почему вы сделали именно так?

Программировать я тоже пробовал давно, ещё в девяностых. Помните, была такая штука ZX-Spectrum с квик бэйсиком и играми на кассетах? В старших классах мы уже писали HTML. В блокноте. В бумажном. Нормальные компьютеры тогда еще были дорогой и довольно редкой вещью, а бумага — вот она. Этот блокнот у меня, кажется, до сих пор где-то лежит.

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

Потом были институт, радиоэлектроника и много лет службы по специальности. Люди в подчинении, оборудование, инструкции и документация. Очень много документации. Я понемногу изучал C и Python, но в основном придумывал, как облегчить себе повседневную работу более доступными средствами - из обычного Microsoft Office собирал автоматизированные штуки для подготовки графиков, документов и отчётов.

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

В 2019 году мы с семьёй переехали в Таиланд. Здесь я занимался разными делами: магазином детской одежды, строительством, недвижимостью, криптой (куда же без неё, родимой?), ну и продолжал замечать привычные неудобства, которые хотелось как-нибудь поправить.

Первое моё приложение выросло как раз из одного такого раздражения.

В Таиланде очень удобно платить по QR-коду: у рыночного продавца рядом висит ламинированная бумажка, сканируешь её в банковском приложении, вводишь сумму, отправляешь. Ни сдачи, ни поисков мелочи по карманам - красота!
Но вот деньги ты уже отправил, а всё ещё стоишь перед прилавком: продавец смотрит в свой телефон, ждёт уведомления от банка, находит в нём сумму, сверяет. Если шрифт мелкий, а зрение уже не очень - разглядывает подольше и наконец кивает: всё хорошо, получил, можешь идти.

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

Меня это раздражало - телефон же умеет разговаривать? Почему бы ему просто не произнести сумму входящего перевода? Продавец услышал бы её и мог спокойно заниматься своим делом и заодно не пришлось бы всматриваться в мелкий шрифт. Примерно в 2019–2020 году я попробовал собрать такое средствами автоматизации iPhone: поковырялся, понял, что нормально сделать не получается и отложил. Идея осталась где-то в памяти, рядом с другими «вот было бы удобно».

А потом появились ИИшки.

С моей любовью ко всему новому пройти мимо них у меня шансов не было: я был буквально обречён полезть, попробовать, разобраться и поискать, куда бы это приспособить.

Первый ChatGPT я воспринял как более удобный Google: можно своими словами объяснить, какую информацию ищешь, и получить связный ответ. Я сразу оценил, насколько удобнее может стать поиск информации - для человека, который постоянно во что-то лезет разбираться, это уже было очень интересно.

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

Заодно с интересом читал новости о том, как очередная ИИшка якобы обрела сознание или обманула исследователя. Меня такие истории скорее веселили: по ту сторону чата я видел инструмент и пытался понять, что ему можно поручить. Как раньше разбирался с карманным компьютером, только теперь компьютер ещё и отвечал на вопросы.

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

А почему бы и да? Идеи у меня есть. Попробуем.

Так я оказался в Android Studio с ChatGPT и ранними версиями Gemini в качестве помощников. Ни один из них в моём тогдашнем процессе сам в проект не ходил и напрямую править файлы не умел: всё общение между чатом и кодом обеспечивал я.

Объясняю словами, что хочу сделать, получаю код, копирую, вставляю в проект, пробую запустить. Не работает. Копирую ошибку или кусок кода обратно в чат, объясняю, что сломалось, получаю исправление. Вставляю. Снова пробую. И так по кругу.

По сути, терминалом работал я сам. Мясной прокси, как теперь говорят. Умные машины писали друг другу сообщения, а я обеспечивал доставку с помощью буфера обмена))

Причём одновременно надо было разбираться и во всём остальном: как устроено Android-приложение, что уже умеет сама система, какие библиотеки можно подключить. Мне хотелось, чтобы приложение было лёгким, простым и удобным, без кучи лишних зависимостей. Даже когда ты ещё плохо понимаешь, как именно этого добиться, хотеть-то тебе никто не запрещает))

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

Постепенно у меня в голове начала складываться своя табличка: эту задачу лучше нести сюда, ту — туда, а вот здесь надо внимательно посмотреть, что вообще получилось. Сейчас это можно назвать подбором моделей под задачи. Тогда ещё я просто тыкался, сравнивал и запоминал. Читал статьи людей, которые тоже пытались разрабатывать с ИИ. Что-то пробовал у себя, что-то переделывал под свою задачу, от каких-то советов только хотелось выругаться. Готового понятного пути у меня не было, зато была смесь любопытства, экспериментов, ошибок и желания всё-таки заставить эту штуку работать.

И она заработала.

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

Это было нереально крутое ощущение!

Ошибки, конечно, тоже нашлись)) Снова пошёл к ChatGPT и Gemini, что-то меняли, чинили, пробовали... Всего на разработку ушло несколько месяцев, прежде чем я довёл приложение до ума. Как мне тогда казалось, до ума)) Сейчас я бы наверное сделал его за 3-4 часа максимум, включая перерыв на обед))

Так появился ManiTalk — приложение для Android, которое озвучивает входящие банковские уведомления. Я завёл аккаунт разработчика в Google Play, выложил аппку в тестирование и нашёл друзей и знакомых, которые согласились установить и попробовать. Они присылали замечания, а я продолжал чинить.

Постепенно получилось то, что мне уже не было стыдно предлагать людям. А вот с распространением всё оказалось сложнее: до тех самых продавцов на рынках ещё надо дойти и объяснить, зачем им это приложение. Буквально - надо ходить с листовками и QR-кодами на скачивание. Эту часть истории я пока так и откладываю до момента, когда дойдут руки.

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

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

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

В следующих сериях: как заставить агента помнить инструкции? Секрет, которым не делится никто 😂