Современный мир стремительно меняется и подбрасывает нам всё новые вызовы. Кажется, что ландшафт современного IT изменится кардинально. Не зря же вся мировая AI тусовка написала письмо с просьбой «немедленно приостановить» обучение систем ИИ, «более мощных, чем GPT-4».
Я провел небольшое исследование и спросил всех до кого смог дотянуться следующее:
Я пишу обзорную статью для Хабра об инструментах AI. Интересуют реальные кейсы применения в работе этих инструментов. Если ты использовал\использовала его и есть желание поделится со мной, то прошу это сделать.
Множество людей самых разных профессий поделились своим опытом и экспертизой. Я оставил самые яркие и интересные, надеюсь, вам понравится.
Ниже я публикую реальные кейсы, которыми со мной поделились:
Senior backend developer/Team lead
ChatGPT-3
Ревью
Прям полностью пуллрек боту я не скармливал, но по кускам — работает. Если мне не нравится метод, но как его можно красиво переделать я не знаю, то скидываю его боту и прошу отрефакторить. Часто он говорит, что там красивее не сделать, но иногда действительно подсказывает какие‑то моменты. Чем меньше в методе бизнесовой логики, тем меньше нужно давать вводных данных и корректнее будет ответ.
Кодинг
Хороший пример:
Плохой пример:
Отличный пример:
Тесты
Бот отлично пишет юнит тесты. Вот только жаль в больших проектах очень много бизнесовой логики, которая тестируется функциональными тестами. А для функциональных тестов уже написан миллион абстракций, чтобы это делать проще и быстрее. Абстракций, о которых бот не догадывается, поэтому если он и сможет написать функциональный тест, то он будет очень не оптимальным.
Вывод
Штука очень крутая, пользоваться этим очень интересно и может быть в стартапчиках, которым пару недель этот бот сможет написать очень много всего, но вот в здоровенных легаси он абсолютно беспомощен и его крайне редко можно притянуть.
Experience designer
ChatGPT-3
Использую его часто вместо Lorem Ipsum, давая при этом какой‑то background: «Act as developer and prepare text example with text of logs» (нужен был пример логов).
Для меня это инструмент, так как я единственный дизайнер, то могу задать ситуацию и использовать дополнительно. Например, я снова даю background и прошу сделать что-то, типа: "Act as a senior UX resercher who is also experienced in micro-copy and UX Writing. Prepare questions like hypotheses for usability research of an enterprise digital cockpit and for users who see the first time the cockpit".
В итоге, изменила всего одно предложение, так как специфичная задача и проект.
Сейчас по курсам я провела "интервью" с чатом, то есть он мне дал данные от аналитических центров + пример интервью и саммари — это прям огонь, потому что задача на курсах сложная, чтобы искать респодентов.
Для другого задания из курсов я попросила приготовить вопросы для 5W техники и дала также бэкгроунд и в каком направлении думать: "Act as a senior UX resercher who is also experienced in micro-copy and UX Writing. Prepare questions using 5Ws 1H technique to think of what are features the application can provide to make the experience of roommates better."
Рекоммендации на линкедин: "As a senior UX designer who had a great experience to work together with a Lead Designer. Prepare the LinkedIn rocommendation for the Lead Designer."
Senior Frontend developer
ChatGPT-4
Он захотел создать свой пет проект(создания бота для подсчета счетов в ресторане между друзьями) и попросил помощи у чата:
using fasttext and python implement a service in google colabs that receives a text and recognises what how much, for what and for whom user wants add money?
examples:
user writes: "please add 500 eur for a car rental service for me, alice and bob"
service returns: {amount: 500, currency: eur, participants: [me, alice, bob], description: car rental}
user writes: "add 80 eur for a restaurant for me and alice"
service returns: {amount: 80, currency: eur, participants: [me, alice], description: restaurant}
user writes: "add 1000 eur for a amusement park passes for all"
service returns: {amount: 1000, currency: eur, participants: [], description: amusement park passes}
I want a better accuracy level so I don't think regular expressions would be enough for me. But if you think fasttext is too much you can suggest another ai based model. Just keep in mind that user can not only write add, but also append or set up or any other things
Вывод: Он может помочь вам реализовать ваш пет проект на незнакомом вам стеке , главное направлять его.
Senior iOS developer/Team lead
ChatGPT-3
Ревью
import UIKit
func showPaymentsViewController()
{
let paymentsViewController = PaymentsViewController()
paymentsViewController.view.userInteractionEnabled = false
paymentsViewController.animationCallback = {
paymentsViewController.view.userInteractionEnabled = true
}
UIApplication.shared.keyWindow?.rootViewController = paymentsViewController
}
class PaymentsViewController: UIViewController
{
lazy var submitButton = createSubmitButton()
var animationCallback: (() -> Void)?
init()
{
super.init(nibName: nil, bundle: nil)
buildUI()
}
required init?(coder: NSCoder)
{
fatalError("init(coder:) has not been implemented")
}
override func viewWillAppear()
{
submitButton.alpha = 0
UIView.animate(
withDuration: 0.5,
animations: {
self.submitButton.alpha = 1
},
completion: animationCallback ?? { }
)
}
}
extension PaymentsViewController
{
func buildUI()
{
view.addSubview(submitButton)
submitButton.translatesAutoresizingMaskIntoConstraints = false
submitButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
submitButton.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
}
func createSubmitButton() -> UIButton
{
let submitButton = UIButton(style: .system)
submitButton.setTitle(
"Submit",
for: .normal
)
submitButton.addTarget(
self,
selector: #selector(onSubmitButton),
for: .touchUpInside
)
return submitButton
}
@objc func onSubmitButton()
{
}
}
Хороший совет:
Override viewDidAppear() instead of viewWillAppear(). It is a better place to perform animation tasks.
Сам не понял что ответил а посоветовал вкусовщину:
The function showPaymentsViewController() should be updated to follow the Swift naming convention, which is lowerCamelCase. A better name for this function could be showPaymentsView() or presentPaymentsView().
Вообще не релевантно:
Use @IBAction instead of addTarget to connect the submit button to the action method.
А вот хороший совет от ChatGPT-4:
Use explicit access control for functions and classes. It's good practice to explicitly state the access level of your functions and classes (e.g., private, fileprivate, internal, public, or open). This ensures you are aware of the visibility and access to your functions and classes.
Генерация кода: очень хорошо, на уровне джуна.
добавляет даже то о чем явно не просишь, но что само собой подразумевается когда обращаешься к человеку с каким-то опытом; неопытный разработчик обычно спотыкается на таких вещах по незнанию и тратит время на разбирательство;
когда просишь дополнить существующий код, правильно понимает как это сделать, даже в не-шаблонных случаях;
умеет использовать не-нативные библиотеки!
Из минусов — не получается научить стилю и подходам. Соглашается, обещает что впредь будет делать как велено, но не делает.
Fullstack developer
ChatGPT-3
У меня почти не было опыта работы с кубером, был проект который очень надо было закончить за вечер, был настроенный lens с доступом к кластеру, нужно было достать из кластера дамп БД. Спросил у chatGPT, что сделать — он дал мне неправильную команду для терминала, которую нужно было выполнить, подключившись к поду. Плюс, альтернативно он писал про утилиту kubectl. Пока разбирался с терминалом и неверной командой — обнаружил, что lens для терминальной сессии использует тот самый kubectl, взял за основу команду, рекомендованную ChatGPT, и смог скачать себе дамп.
Ну или не так давно была задача по модификации схемы данных Cube.js. С ним вообще не работал, начал с изучения на тестовом стенде, стал задавать вопросы, как решить то или это. ChatGPT стал давать советы, и получилось своими силами и с его помощью большую часть изменений реализовать. Но возникла проблема, что одно из полей требовало SQL‑подзапрос. Спросил, как сделать подзапрос. Применил его ответ в коде. Обнаружил ошибку, что подзапросы запрещены. Спросил, что делать — он посоветовал поменять конфиг куба. Это я делать не стал, так как оно не ощущалось как правильное действие, да и введён запрет на подзапросы был не просто так, а для экономии ресурсов. Почти отчаявшись, подобно описал ему схему данных и спросил, как получить нужную выборку без подзапросов. Он дал ответ. Оказалось, ответ рабочий — и отлично встраивающийся в схему куба.
Психолог
ChatGPT-3
Использует ChatGPT для создания "скелета" будущей статьи:
DevOps
Не, не юзал) У нас в проде **** от 2002 года выпуска. У нас проверенные временем технологии. Новые ещё успею изучить, пока срок поддержки этих истечёт)
Senior Fullstack developer/Team lead
GitHub Copilot
Штука полезная, помогает меньше фокусироваться на деталях какой-либо конкретной библиотеки/языка/..., а больше – на том, что ты хочешь сделать. Один из способов получить подсказку – написать текстом комментарий, что ты хочешь сделать. Так что это ещё и провоцирует документировать код, что в среднем, признаемся, большинству лень.
Меня, как человека разных ролей, не пугает AI, потому что он может ускорять мою работу. Ускоряет в разных аспектах: ChatGPT правил моё резюме, Stable Diffusion делает аватарки, Copilot вот помогает писать код для аналитики. Я больше думаю про то, что хочу сделать, меньше трачу время на как.
Вывод
Навык уметь правильно задавать вопросы и обучать AI становится огромным конкурентным преимуществом, как в свое время умение правильно составить поисковый запрос к google.
Наступает новая эпоха, инструменты AI уже встроены во многие framework-и и позволяют писать код быстрее, более оптимально, находить новые поинты при code review, быстро позволяют погрузиться в новый стек или даже сферу. Это выглядит как начало конвеерного производства автомобилей - мы резко ускорим множество сфер нашей жизни. И если не начать бежать - то вы рискуете остаться за бортом и закончить свою карьеру в затхлой атмосфере госкомпании на скучной должности, пропахшей рыбой из микроволновки, которую сегодня вновь принес ваш любимый начальник.
Ссылки
Если вы устали от бесконечных поверхностных постов про AI, то подпишитесь на богиню русского AI — Татьяну Савельеву (Telegram)
P.P.S.
Вчера я ходил в бар и даже там меня догнала эта тема. Бармены - берегитесь!
Комментарии (37)
Leprecon
10.04.2023 07:34+8Если вы устали от бесконечных поверхностных постов про AI, то подпишитесь...
Это что шантаж? ...от автора поверхностного поста про AI?
IPopovkin Автор
10.04.2023 07:34-4Я опросил 20+ человек, попросил их мне дать реальные кейсы, отмел все неинтересное, постарался захватить не только it. Удалил всю воду. Дал ссылку на человека, возможно с самой большой экспертизой в AI, который говорит на русском. Да я поверхностно подошел к подготовке статьи. Это самоирония мой дорогой друг.
Leprecon
10.04.2023 07:34+8Количество затраченных усилий и блок рекламы ничего не говорит о качестве статьи. А все примеры в статье очевидные, ничего нового там не почерпнуть, и уже были...
...в одной из бесконечных поверхностных статей.
leventov
10.04.2023 07:34+2Дал ссылку на человека, возможно с самой большой экспертизой в AI, который говорит на русском.
С одной стороны, в OpenAI и других местах полно людей, которые говорят на русском, начиная с Ильи Сутскевера и Ивана Бабушкина.
С другой стороны, непонятно, зачем слушать именно экспертов по ИИ. Если для использования его - то лучше слушать prompt engineers? (Это все равно, что слушать инженеров двигателей, вместо профессиональных гонщиков и водителей, о том, как лучше водить).
Если речь об этике использования, то "экспертов по ИИ" тем более не надо слушать, а послушайте лучше Харриса и Раскина: https://www.humanetech.com/podcast/the-three-rules-of-humane-tech
deadraidfd
10.04.2023 07:34+3Вы пишите про Prompt engineering как правильно писать запросы. Но вы сами не умеете это делать. Вы ни разу не смогли переключить контекст сети и сосредоточить её на нужно задаче.
Вы буквально работаете так же как и все.
С одним единственным prompt i want you act as ... который и так все знают.
Что примерно 1% от того что можно сделать.
<<Если вы устали от бесконечных поверхностных постов про AI...>>
Вот вот это очень достало включая вашу статью.IPopovkin Автор
10.04.2023 07:34-1Не я пишу. Пишут множество людей, которые ранее никогда не обучали нейсеточки. Мой поинт и состоит в том что, на мой взгляд, умение правильно задавать вопросы и обучать ее будет очень важным навыком в ближайшие годы.
Мало у кого есть опыт обучения промышленных нейросетей, а о пропасти между ними и open source проектами почти никто и не вспоминает.lair
10.04.2023 07:34+2Пишут множество людей, которые ранее никогда не обучали нейсеточки. Мой поинт и состоит в том что, на мой взгляд, умение правильно задавать вопросы и обучать ее
Мне начинается казаться, что под "обучением" вы понимаете что-то свое. В моем обывательском понимании, пользователь ChatGPT его ничему не обучает (по крайней мере, не по своей инициативе).
IPopovkin Автор
10.04.2023 07:34в данном случае я имел ввиду то, что синьор-помидор уточняет чату с применением каких библиотек стоит решать задачу, просит применить другой подход или исключить какие-либо зависимости, если его что-то не устроило.
lair
10.04.2023 07:34Но это же не "обучение": в следующий раз придется делать все те же самые уточнения.
IPopovkin Автор
10.04.2023 07:34Со слов людей, которых я опрашивал разница между версией 3.5 и 4 колоссальна, ему уже не требуют многие уточнения. Откуда у вас такая уверенность, что в следующий раз придется делать те же самые уточнения? Вы знаете график релизов Chat GPT?
lair
10.04.2023 07:34Со слов людей, которых я опрашивал разница между версией 3.5 и 4 колоссальна, ему уже не требуют многие уточнения.
Вот только я, как пользователь, никак не могу на это повлиять.
Ну и да, я сам не могу проверить, но мне приносили ответ от четвертой версии на мой вопрос для собеседований, и разницы не было.
Откуда у вас такая уверенность, что в следующий раз придется делать те же самые уточнения?
Я исхожу, из того что речь идет об одной версии продукта, а не о разных. В рамках одной версии 3.5 совершенно точно не помнит предыдущие разговоры, 4, насколько я знаю, тоже не помнит.
С разными же версиями все еще хуже: может выясниться, что предыдущие "уточнения" теперь работают не так, как ожидается.
Andrey_Epifantsev
10.04.2023 07:34+1А где можно посмотреть остальные 99% промптов? Очень хочется прокачать свои скиллы работы с ИИ.
andrewilife
10.04.2023 07:34+1Вместе с внедрением АИ должно быть внедрение БОД.
IPopovkin Автор
10.04.2023 07:34-2это настолько сложная тема, что я пока не сформулировал отношение к БОД в частности, а в контексте AI тем более. Кажется, простых решений столь сложных морально-этических проблем не существует.
rozhnev
10.04.2023 07:34В моем проекте https://SQLize.online ChatGPT помогает писать запросы и исправлять ошибки
smart_alex
10.04.2023 07:34+4и позволяют писать код быстрее, более оптимально, находить новые поинты при code review, быстро позволяют погрузиться в новый стек или даже сферу.
Секундочку. Если ты «не бум-бум» в каком-то стеке, а ИИ 50/50 может выдать что-то релевантное или просто мусор, то сколько времени займёт поиск (например, логических) ошибок в таких «советах»?
И не проще ли сразу писать осмысленный код, чем выковыривать ошибки второго, третьего и т. д. порядков в подсказках ИИ?
IPopovkin Автор
10.04.2023 07:34Если мы рассматриваем кейс с новым для вас стеком, то вы можете быстро написать что-то работающее, не погружаясь в особенности языка или среды. У меня указано два таких кейса.
Для меня ваш вопрос выглядит как: а зачем подсветка синтаксиса - я и так могу нормально кодить, а зачем мне IDE, я могу в блокноте писать.
Новые инструменты увеличивают производительность труда, не так ли?lair
10.04.2023 07:34Для меня ваш вопрос выглядит как: а зачем подсветка синтаксиса - я и так могу нормально кодить, а зачем мне IDE, я могу в блокноте писать.
Мне кажется, вы то ли не заметили, то ли проигнорировали: вопрос был о поиске ошибок. IDE обычно не делает неправильных подсказок (а если делает, то это баг, который можно и нужно чинить). А вот ChatGPT дает неправильные советы, и как это починить - неизвестно.
Новые инструменты увеличивают производительность труда, не так ли?
Так в этом и вопрос: всегда ли этот конкретный инструмент увеличивает производительность труда, или же есть определенные случаи, когда это совсем не так, и их надо держать в голове?
IPopovkin Автор
10.04.2023 07:34Я указал реальные кейсы с комментариями респондентов по границам применимости этого инструмента в том или ином случае. Стоит ли держать в голове? Да. Может ли это быть полезно джуну? - да(как минимум можно попросить сделать ревью своему коду)
lair
10.04.2023 07:34Я указал реальные кейсы с комментариями респондентов по границам применимости этого инструмента в том или ином случае.
Ну давайте посмотрим. Вот одна такая "граница применимости": " вот в здоровенных легаси он абсолютно беспомощен и его крайне редко можно притянуть". А вот вторая: "из минусов — не получается научить стилю и подходам" - обратите внимание, что это ровно то, про что я вам пишу выше, но вы спрашиваете, откуда у меня уверенность....
Это две границы применимости на все ваши примеры. При этом про ложные ответы я то ли не нашел, то ли там нет.
Зато в выводе вы уверенно пишете: "инструменты AI уже встроены во многие framework-и и позволяют писать код быстрее, более оптимально, находить новые поинты при code review, быстро позволяют погрузиться в новый стек или даже сферу", без оговорок о зоне применимости.
Не, дело ваше, конечно.
Может ли это быть полезно джуну? - да(как минимум можно попросить сделать ревью своему коду)
Угу, а потом внезапно джун выяснит, что никто из его команды с этим ревью не согласен.
smart_alex
10.04.2023 07:34+2Это разные вещи. Я говорю о том, что если вы получаете обширный кусок кода из источника, подверженного периодическим «галлюцинациям», то в общем случае он может содержать (любые) трудноуловимые ошибки и такому коду нельзя доверять.
А его адекватная верификация может потребовать больше усилий, чем написание с нуля.
IPopovkin Автор
10.04.2023 07:34-1У вас сплошные может, возможно, наверное. Я указал реальные кейсы с комментариями респондентов по границам применимости этого инструмента в том или ином случае.
logran
10.04.2023 07:34Реальные кейсы? Их есть у меня. Тривиальный дуал-контуринг для реконструкции меша в stl по слайсами GPT не смогла за неделю мучений. В тех случаях, когда её код был вообще работоспособен и не дергал не существующие либы и методы — он в лучшем случае делал кривую рандомную 2D STL. Делал он её 3 раза (из примерно 140+ попыток) и 2 из них были марширующими кубами.
Очень заслуживающие доверия решения, точно надо вставлять в свой код...Единственное, для чего оно годится прям хорошо — простенькие bash/powershell скрипты для домашнего использования генерить, и то лишь если лень в синтаксис вникнуть.
P.S. А вообще ваши юзкейсы мне мой опыт рисования фан.арта со Stable Diffusion очень напоминают. Пока просишь "нарисовать что-то" — всё шикарно, красиво, радует глаз и кажется норм. До тех пор пока не оказывается что надо нарисовать что-то конкретное. И тогда ни файнтюн модели, ни Lora оверфитнутая на конкретного персонажа (чтобы наверняка) не дают сгенерить фан-арт на конкретного персонажа. И по факту — час генерим (чтобы получить из кучи УГ хоть одну нормальную базу) и еще 2-3 дня дорисовываем/перерисовываем/дорабатываем руками, возращаясь к нейронке лишь чтобы сгладить покрас в img2img. Умей я рисовать хоть немного (реально — хотя бы чуть-чуть) — и быстрее было бы рисовать с нуля, попросив у SD лишь скетч для идеи. С GPT точно так же.
Aquahawk
человек который просит chatgpt создать регулярку профнепригоден. Человек который не может написать такое на автомате никак не сможет проверить что сделал бот, а бот с одинаковой уверенностью генерит мусор и что-то адекватное. Шикарный пример это запрос списков литературы, типа дай мне список литературы по постройке яхт.
IPopovkin Автор
"бот с одинаковой уверенностью генерит мусор и что-то адекватное" какой версией ChatGPT вы пользовались? Какие задачи ему скармливали? Или просто использование чата кажется вам чем-то неприличным?
qw1
Разве уверенность бота зависит от версии? Разве на запрос "напиши мне сортировку массива методом Розенталя" бот может ответить, что не знает этого алгоритма?
Utter_step
Я в целом согласен, что проблема "галлюцинирования" LLM-ок не достаточно подсвечена в статье, но всё-таки кажется, что дискуссия должна быть более равноправной. Автор потратил существенное время на подготовку поста, из уважения к нему я бы чуть тщательнее проверял свои аргументы :)
По сути ещё добавлю, что можно явным образом просить модель: 1) задавать уточняющие вопросы, если ей не хватает информации; 2) просить добавлять в конце сообщения степень её уверенности в данном ответе. Из-за природы LLM это тоже не является панацеей, но как приём использовать бывает полезно.
qw1
Я проверял на тех ботах, к которым у меня есть доступ: Alpaca и Vicuna.
qw1
Попросил объяснить, так он описал совсем другой алгоритм.
Utter_step
Спасибо за скрин, так понятнее!)
В целом это как раз о том, что "уверенность" в данном ответе и склонность "галлюцинировать" это тоже некоторые параметры модели, которые можно а) учитывать при использовании; б) тюнить при обучении. Понятно, что б) большинству из нас доступно только в формате "подождать, пока компании с миллионами долларов закоманных в стойки с GPU обучат" :)
Но это опять же, другой (очень интересный!) вопрос: с одной стороны, происходит демократизация доступа к AI, c другой – чем крупнее модель, тем меньше компаний (а уж тем более – людей) могут её обучить при текущих технологиях, что концентрирует в руках этих компаний ещё больше... слово "power", мне кажется, подходит здесь лучше русских аналогов.
qw1
Если бы у меня был доступ к GPT, я бы обязательно проверил, как меняется ответ, если "алгоритм Розенталя" заменить на "Шрёдингера", или "алгоритм креветки под кисло-сладким соусом". Может, конкретно Розенталь попал в какие-то контексты, в которых была фраза "there is no such thing"
lair
Ну вот скажем я задавал "старому" ChatGPT вопрос про логирование в "новом" .net (типовой вопрос с собеседования), он уверенно ответил неправильно и продолжал настаивать на этом ответе. Потом мне в Твиттере принесли ответ на этот же вопрос "нового ChatGPT", и там правильнее не стало.
Аналогично я задавал "старому" ChatGPT вопрос на интеграцию двух хорошо известных интернет-сервисов, в обоих из них он выдал несуществующие операции (что фундаментально влияет на структуру интеграции).
lair
Ну или вот я кофемолку выбираю. Задал вопрос про кофемолку: в первом ответе все правильно, но если задать уточняющий вопрос про конкретную модель, начинает с той же уверенностью нести чушь (причем ответ - он в любом описании модели и в документации, это не эзотерическое знание).
vagon333
Серьезное заявление, но не соглашусь.
Разрабатываю софт почти каждый день, с 1992 года (просто нравится).
В основном архитектура, базы, прототипирование для постановки задач, решения некоторых задач.
За годы разработки завел репозиторий RegEx выражений в таблице базы, которая весело мигрирует от базы к базе, от СУБД к СУБД, от MSSQL в контейнер к SQLite и т.п.)
У меня нет навыков написания регулярок, но я не ощущаю ущербности от их отсутствия.
И, да, в последнее время интенсивно использую ChatGPT для экономии времени т.к. любой инструмент нужно использовать грамотно. ChatGPT не исключение.
В конце 80х коллеги пафосно заявляли, что только на ASM можно написать шустрый и оптимальный код. Высокоуровневые языки — отстой.
Возможно, но у ASM производительность на плинтусе, а командная разработка затруднена.
Похожие заявления читаю о ChatGPT
К чему этот длинный коммент?
Поскромнее с заявлениями (bold statements) чтоб не выглядеть глупо спустя год.
Aquahawk
я не говорю что не знать регулярок - профнепригодность. Это один из инструментов, можно знать, можно не знать, никаких проблем. Я говорю что когда ты только знаешь что они есть но не умеешь в них, спрашивать бота непрофессионально. Потому что бот выдаст вам ответ который вы не сможете валидировать, потому что регулярные выражения известны тем что их проще писать, чем читать.