Привет! Меня зовут Роман, я работаю техническим писателем в Лаборатории Касперского. Я хочу рассказать, как я начал использовать в своей работе AI-ассистента и автоматизировал свою рабочую задачу с помощью скрипта на Python, при этом сам я не написал ни строчки кода.
Хочу рассказать я про AI-ассистента Phind. Про себя они пишут, что это интеллекткальный движок для поиска ответов в помощь разработчикам. Сервис использует как свою языковую модель (бесплатно), так и GPT-4 (правда, тут уже минимальный тариф - 10$ в месяц). В общем, такой и чат-бот и Copilot в одном флаконе. Узнал про этот сервис я на одном вебинаре по nocode-программированию. В некоторых зарубежных обзорах пишут, что Phind гораздо быстрее (10 сек против 50 сек) и точнее, нежели модель от Open AI, справляется с генерацией программного кода.
Мне по работе нужно было решить такую задачу: найти среди всех файлов онлайн-справки (а их там около полутора сотен) несколько, где наиболее часто встречается название какого-нибудь GUI-элемента, например, кнопки. При этом, чем больше разных GUI-элементов встречается в файле, тем лучше. Нужно это для проверки на максимальном количестве разных элементов работы нашей утилиты, которая по значению хэша подставляет названия GUI-элементов из ресурсных файлов. Каждому элементу ставится в соответствие его хэш и далее в тексте пишем не просто <название кнопки>, а [хэш]название кнопки[]. Если вдруг название кнопки в интерфейсе поменялось, то на этапе постобработки, по хэшу будет подставлено правильное значение.
Но при локализации на другие языки со сложной морфологией могут возникнуть ошибки. Если в русском название кнопки не склоняется по падежам: нажмите кнопку Далее, при нажатии кнопки Далее, ну и так далее. То в некоторых языках это не так, могут быть разные словоформы. Мы предполагали, что из-за этого подстановка может сработать некорректно и нужно тестировать. Но не просматривать же вручную более сотни файлов! Я решил написать скрипт на Python, который бы искал в каталоге со справкой HTML файлы с наибольшим количеством упоминания GUI-элементов в тексте (кнопки, названия пунктов меню, заголовки и подписи к полям ввода и т.д.) и возвращал, скажем, три файла с максимальным вхождением этих элементов. Для последующего лингвистического тестирования на примере этих файлов. Мне захотелось попробовать написать такой скрипт с помощью сервиса Phind. Исключительно с помощью запросов на естественном языке.
I Phind you very AI-tractive, would you go to code with me
Заходим на https://www.phind.com/ и... и сразу можем начинать формулировать свой запрос. Радует, что сервис работает сразу, как говорится, без регистрации и СМС. Попросим у Phind код, чтобы просмотреть все файлы в заданной папке.
![На стартовой странице минимализм, меню в шапке страницы, да поле для ввода своего запроса На стартовой странице минимализм, меню в шапке страницы, да поле для ввода своего запроса](https://habrastorage.org/getpro/habr/upload_files/73e/4ea/ae2/73e4eaae26ae8c3474c1580d286379ea.png)
Phind выдал сразу 4 варианта решения задачи:
![Сколько у нас мушкетов? Четыре! А сколько у нас шпаг? Четыре! А сколько у нас методов обойти все файлы в папке? Четыре! Кто мы? Мушкетеры-программисты! Сколько у нас мушкетов? Четыре! А сколько у нас шпаг? Четыре! А сколько у нас методов обойти все файлы в папке? Четыре! Кто мы? Мушкетеры-программисты!](https://habrastorage.org/getpro/habr/upload_files/96f/998/aa2/96f998aa219299c3b85a0df359b31597.png)
А как у нас с русским? Попробуем сформулировать запрос на великом и могучем.
![Прекрасный русский! Даже комментарии в коде расставлены по-русски Прекрасный русский! Даже комментарии в коде расставлены по-русски](https://habrastorage.org/getpro/habr/upload_files/6d9/cb7/bca/6d9cb7bcaa6ee2773349da6a4b11bff6.png)
Количество абзацев нам не интересно. Наши GUI-элементы обозначаются тэгом <span> с заданным классом guiсharacter. Вот их и будем искать.
![Профессор, конечно, лопух - но DevMode открывать умеет Профессор, конечно, лопух - но DevMode открывать умеет](https://habrastorage.org/getpro/habr/upload_files/185/49f/6d6/18549f6d6520d93502cbd93085a7e129.png)
Я не буду приводить здесь всю последовательность запросов. Phind сохраняет всю историю запросов и ответов. Если скопировать URL своей текущей страницы Phind, то потом им можно поделиться или сохранить себе на будущее. Вот, например, ссылка на решение моей задачи по поиску файлов со всей последовательностью запросов и ответов - https://www.phind.com/search?cache=u0j8zquhukpfabzijz8pg46h
По итогу я получил сгенерированный скрипт, который можно скопировать в IDE (я использовал VS Code) и попробовать запустить.
![Итоговый результат Итоговый результат](https://habrastorage.org/getpro/habr/upload_files/fc3/d7e/f91/fc3d7ef91d1252ad5c52b7f6a4c417ed.png)
Как видите, я решил свою не совсем типичную задачу технического писателя, автоматизировал рутину с помощью Python и при этом не написал сам ни строчки кода.
Если в процессе работы скрипта возникает ошибка, то можно сразу же и спросить у Phind, в чем может быть причина. Например, по ходу дела у меня было что-то не так с кодировкой Unicode.
![Ох уж эти unicode error, когда работаешь с кириллицей Ох уж эти unicode error, когда работаешь с кириллицей](https://habrastorage.org/getpro/habr/upload_files/acc/7ec/5de/acc7ec5de97b3c77fa5ca80294850fb0.png)
Раньше я бы полез в Google искать, что значит данная ошибка, но попробуем спросить прямо у Phind:
![Теперь буду знать, что слэш в указании пути к файлу на Windows надо экранировать. А я-то грешил на русские символы в названии папки Теперь буду знать, что слэш в указании пути к файлу на Windows надо экранировать. А я-то грешил на русские символы в названии папки](https://habrastorage.org/getpro/habr/upload_files/127/526/43a/12752643aa9ff7e45eab84d381a04a89.png)
Работа c Phind в таком режиме, мне кажется, это неплохая замена Jupiter Notebook для подготовки обучающих материалов по программированию. Если вы ментор или сеньор и хотите объяснить своему джуну, как решить задачу, то можно создать такую последовательную серию запросов, иллюстрирующих ход решения. И получить не только работающий код, но и дополнительные пояснения к нему и ссылку на сопутствующие материалы в сети.
А теперь попробуем решить свою задачу сразу в рамках одного запроса.
Одна пуля один выстрел, но куда стрелять? загадка..
Hidden text
Если что, это строчка из песни Одна пуля,один выстрел некоего Halaf, с творчеством которого я знаком даже меньше, чем со стандартной библиотекой Python, но мысль передает верно
Попробуем себя в качестве promt-инженера.
Помимо работы в Веб-интерфейсе у Phind есть плагин для VS Code. После установки плагина и авторизации слева в окне VS Code появляется меню для работы с Phind.
![Плагин Phind для VS Code Плагин Phind для VS Code](https://habrastorage.org/getpro/habr/upload_files/51e/221/9ee/51e2219ee18b981f9dfe6805caa9044d.png)
Итак, сформулируем, что мы хотим получить в рамках одного запроса к Phind.
![Лучший экспромт - это заранее подготовленый экспромт Лучший экспромт - это заранее подготовленый экспромт](https://habrastorage.org/getpro/habr/upload_files/371/6f2/231/3716f2231abf0cf31e9799d72640a2e8.png)
Уже пошли в ход регулярочки:
![](https://habrastorage.org/getpro/habr/upload_files/e77/e69/3d2/e77e693d25dfc06cdda184776b360fba.png)
Как всегда немного полезной информации о том, как работает созданный код и как его использовать:
![](https://habrastorage.org/getpro/habr/upload_files/f37/8a8/761/f378a87613dd503e381bb106d06f7f53.png)
Что же, копируем код в файл и пробуем выполнить. Работает!
![](https://habrastorage.org/getpro/habr/upload_files/963/bbc/32e/963bbc32ebd307b709a8012ddc3e0755.png)
Какие у меня выводы
Как тот еще мамкин программист, я не знаю Python на продвинутом уровне, не знаю паттернов программирования, каких-то библиотек. Но если имеешь общее представление, знаешь, в какую сторону копать, то этого достаточно, чтобы сформулировать запрос и получить работающий код. Как раз для таких гуманитариев, как я, Phind идеально подходит. Ну или как минимум претендует на звание Yet another AI, который удобно использовать в своей работе. А если хочется повысить свои навыки программирования, то с помощью Phind имхо удобно учиться. Тут мне очень зашла функция пояснений к созданному коду. Ну и возможность сделать что-то вроде Jupiter-ноутбука для решения конкретной задачи и сохранить его на будущее для себя или чтобы поделиться, тоже очень здорово.