Агенти — смертельний ворог, чи зручний інструмент?

💡 Усі статті, обговорення, новини про AI — в одному місці. Приєднуйтесь до AI спільноти!

Вітаю, спільното. Мене звати Олександр. І я — розробник ПЗ. Принаймні я таким себе вважаю. Основний стек — .NET, але я люблю вивчати інші технології і через це страждаю.

Насправді, спочатку я хотів такий заголовок: «Агенти — страх хайп і ненависть в Лас-Вегасі розробці ПЗ». Але цей інтерфейс не дозволяє перекреслювати букви в заголовку. Не дуже люблю хайп (може, трошки прибрехую), але якщо він вже виник, глупо ним не скористатися.

Преамбула

Інколи люди кажуть, що в ШІ-агентів завжди занадто короткий контекст. Після кількох тижнів активної роботи з GitHub Copilot (саме з промптами) мене особисто ця думка смішить. Бо я завжди згадую, наскільки зазвичай короткий контекст у людей. В мене особисто контекст НАБАГАТО коротший, ніж у Claude Sonnet 4.6. А це ж навіть далеко не найпотужніший агент, розроблений для вирішення «середніх» задач.

Мотивація

Тут я спробую пояснити (і собі теж), нахіба я почав робити проєкт, про який тут пишу. Є такий старий анекдот: «Насправді, всі люди — євреї, просто не всі мають сміливість це визнати». Я згадав його зранку, і мене вдарила молнія: насправді будь-яке життя — це стартап, просто не всі однаково вміють знаходити спонсорів, генерувати класні ідеї, заводити стосунки з найкращими професіоналами у власному оточенні і перетворювати власне хобі на спосіб заробітку. Але час від часу виникають обставини, і треба навчитися бачити в них не лише загрози, а й можливості.

Агенти лякають і мене також. Бо вони геть розумні (хоча дехто досі «не вірить»), але найстрашніше те, що вже є володарі бізнесів, які повірили, що агенти вже зовсім скоро нас замінять. І це ускладнює життя, пошук роботи та погіршує психологічний стан. I лякає, лякає, лякає... З мого досвіду, найкращий засіб від страху — експеримент. Коли ти розумієш, як воно працює, вже не так лячно. Попереджений — озброєний.

Тому в певний момент в мене виникла ідея зробити псевдостартап. Тобто, написати просту, але повнофункціональну веб-апку, щоб перевірити деякі забобони. Наприклад — «Агенти не здатні писати якісний, читабельний код. Код, написаний агентами, працює суттєво повільніше і гірше, ніж написаний досвідченим розробником. Апку, написану агентом, складно супроводжувати і змінювати у майбутньому.» Чому я вважаю ці твердження забобонами? Ну, я курс прослухав, і там дядька (Tom Phillips) дуже послідовно і зрозуміло пояснює, як за допомогою агентів створити повноцінний додаток. Але там технології зовсім не мої. Я той код не дуже розумію (або мені психологічно некомфортно його читати), тому щось більш-менш складне я поревʼювати навряд чи зміг би. Тому я вирішив взяти не мої основні, а «близькі» технології. Те, що вже вивчав і з чим вже працював, принаймні «понарошку». Головна ціль проєкту — зʼясувати, чи можливо виключно за допомогою агентів (тобто не написавши жодного рядка коду руками) розробити повноцінну трьохрівневу аплікацію середнього рівня складності і підтримувати її. І друге — чи дійсно це економить час та сили і дозволяє швидше вчитися, чи є «особливості» роботи агентів, які забирають більше часу, ніж економлять. А якщо є, наскільки складно їх обійти і чи воно того варте?

Імплементація

Початок

Спочатку був документ. А ні. Ніфіга, звісно, не було, просто в якийсь момент я зацікавився, чи можна і саме як використовувати для розробки моделі з відкритою вагою (open-weight models) і встановив собі Ollama, та ще й веб-інтерфейс до неї. Це окрема історія, про яку я, можливо, якось напишу, але пізніше і не точно. Але оскільки просто базікати з моделями нудно, я спробував використати одну з версій Gemma, яку встановив в Ollama, щоб розробити план власного стартапу. Стартап не вийшов, бо Gemma була застаріла, а звʼязку з інтернетом той сетап, що я використовував, не мав, тож я розробив план псевдостартапу. Я його потім багато разів змінював за допомогою Claude Sonnet 4.6, але якщо кому цікаво, оригінальну версію можна знайти в першому коміті.

Для тих, кому ліньки, або некомфортно читати англійською, TL;DR: це — аплікація, яка дозволяє зареєструватися/залогінитися через зовнішнього security provider (поки що реалізований тільки Google), а потім створювати скорочені варіанти довгих посилань, які передресують вас на довгу адресу. Як Bitly, тільки на мінімалках.

Технології

TL;DR: PostgreSQL, Golang, Vue.js

Я обрав PostgreSQL, тому що ШІ сказав, що він одночасно круто масштабується за потреби (про це я і сам знав) і його можна налаштувати так, щоб він не їв більше 2 ГБ оперативної памʼяті, що для псевдостартапу з нульовим бюджетом є вирішальною характеристикою. Я обрав Golang для бека, тому що, по-перше, він легкий і компілюється під будь-яку OS, а крім того, я його дещо знаю і можу ревʼювати код. Я обрав Vue.js для фронтенду, тому що його я теж трошечки знаю і він також доволі легкий. Всі бібліотеки я ретельно обговорив з ШІ (спочатку це була Gemma, а потім Claude Sonnet) і потім декілька разів дещо змінював, намагаючись підлаштуватися під вимоги до аплікації, які я сам собі придумав.

Підхід до розробки

Вся розробка ведеться англійською мовою, бо її краще розуміють агенти і взагалі міжнародне комʼюніті. Інші мови до аплікації завжди можна додати пізніше, якщо виникне необхідність. Перший етап розробки — створення першого файлу інструкцій для агентів. Саме такий формат обраний тому, що його добре розуміє не лише GitHub Copilot, а ще й силенна купа інших інструментів. В мене платна підписка на GitHub Copilot, яка коштує $100 за рік, але там геть обмежена кількість токенів на місяць, тому варто завжди мати можливість перемкнутися на щось інше. Першу версію цього файлу, я, здається, зробив, попросивши агента перетворити мій план розробки на вимоги до стилю кодування. А потім неодноразово змінював.

Далі робиться агент для розробки інструкцій для агентів (цю інформацію я з курсу взяв). За допомогою цього агента робляться додаткові інструкції, специфічні для application tiers та/або певної функціональності. Інструкції треба ревʼювати особливо ретельно, бо баги і неоднозначності в інструкціях призводять до дивної поведінки під час генерації коду. В мене (принаймні поки що) немає чіткого рецепту, як і в який момент краще генерувати інструкції. Я дотримувався такої послідовності: перед тим, як дати агенту промпт згенерити ту чи іншу частину коду, я намагався зрозуміти, чи покрита вже ця частина інструкціями, тобто, чи впевнений я, що під час розробки в агента не виникне жодних моментів, де він вважатиме себе вільним приймати рішення на власний розсуд. Якщо впевненості не було, я починав з планування етапу розробки і інколи з плану ставало очевидно, якої інструкції не вистачає. А інколи я просто бачив, що код написаний не так, як я хочу, тоді я додавав відповідний файл чи розділ, а потім або переробляв етап з початку, або просто давав агенту ще одне завдання — переконатися, що щойно додані вимоги виконуються.

Чому не зберігати всі інструкції в одному файлі? TL;DR: для економії часу і токенів. Інакше кажучи, головний файл інструкцій є невідʼємною частиною кожного промпту. Тож він «жере контекст» у будь-якому випадку. Проте якщо поточний промпт ніяк не стосується, наприклад, аутентикації користувача, то відповідний файл з інструкціями агент читати не буде, і так само з усіма іншими «специфічними» інструкціями. І це дозволить вам зекономити час, а зрештою, напевно, і гроші.

Логування дій агента

В цьому проєкті було б дуже мало сенсу, якби неможливо було відстежити, що саме робив агент у відповідь на той чи інший промпт, яка саме модель використовувалася, який режим та інші деталі. Тому я з самого початку вирішив логувати всі дії агентів, використовуючи хук для логування. Як я його зробив? Ви, напевно, будете сміятися, але я попросив агента його зробити, і той просто зробив. Спочатку він тупо логував все, причому в два формати одночасно: JSON та формат, зручний для читання людиною.

Потім я зрозумів, що в мене час від часу виникає необхідність просто обговорити подальші кроки з агентом (режим Ask у GitHub Copilot), а він всі ці обговорення логує, і мені потім доводиться або обережно прибирати зайве (щоб не втратити власне промпти на розробку), або комітити більше нецікаві обговорення. Тому дав завдання агенту переробити логування таким чином, щоб сесії, де використовується виключно режим Ask, не логувати. А логувати тільки сесії, де є хоча б один запит в режимі Plan або Agent. І коли він це зробив, я не зрозумів, як воно працює від слова «взагалі». Тоді я попросив агента пояснити алгоритм і врешті-решт вирішив зберегти це пояснення у вигляді документу, бо, по-перше, красиво пояснив, а по-друге, якщо мені знадобиться згадати, як працює логування дій агентів, я знаю, куди дивитися.

Коротше, в цьому каталозі ви можете знайти повний лог всього, що ми з агентами робили в цьому проєкті. Там же є посилання на останній коміт кожного логу, тобто нескладно знайти, на що, власне, кожен промпт перетворився у коді.

Вразливості.

Не можна виставляти свою апку голою сракою в інтернет, не зробивши перед цим аудит вразливостей. У великих компаніях для цього є спеціально навчені люди, а інколи навіть спеціально навчені компанії. Оскільки бюджет в мене нульовий, я використовував той самий ШІ. Для цього я зробив окремий промпт, ідею якого так само взяв із курсу. Єдиний недолік: оскільки він працює в режимі Ask, табличку з вразливостями доводиться зберігати руцями, а так працює цілком притомно. Завдяки цьому промпту я пофіксав аж шість вразливостей в коді, які він знайшов. Ну, як, я... Ми з Claude Sonnet. Ідея експерименту була в тому, що все мають робити агенти, то вони все і робили. Я тільки намагався більш-менш зрозуміти, в чому саме полягала кожна вразливість і який воно пропонує фікс. Інколи відповідати на питання агента було доволі непросто, але, здається, я більш-менш впорався. Ще була щонайменш одна вразливість, яку за інших обставин я також пофіксав би, але тут в мене почали закінчуватися токени, і я вирішив перейти до наступного етапу.

Деплой

Оскільки іншого сервера, крім найдешевшого дроплету на DigitalOcean, в мене все одно немає, я вирішив сильно не паритися з деплоєм і попросив ШІ написати мені документ, як це робити руцями, а також підготувати всі необхідні артефакти. Причому я поставив умови, що оскільки в мене вже встановлені PostgreSQL і Caddy Server, я не хочу ніяких Nginx-ів, а хочу використовувати те, що є. І хочу просто копіювати артефакти на сервер через SSH, а не паритися з налаштуванням CI/CD. Також попросив мінімізувати кількість кроків. В принципі, він з усім цим більш-менш впорався, і за підсумком я отримав ось такий документ. Ну, тобто, не зовсім такий: спочатку він трошки відрізнявся, але про це — далі.

Спочатку я був налаштований геть серйозно і вирішив перед деплоєм перевірити все на тестовому інстансі, який зробив у multipass. Воно трошки допомогло, але повноцінно протестити все не вийшло, оскільки Caddy, як зʼясувалося, може підняти SSL тільки якщо піднімати все на реальному домені. Тож, за великим рахунком, вдалося зʼясувати лише те, що все скопіювалося і піднялося, а як воно працює — ні.

Врешті-решт, довелося (як завжди) дебажити все і розбиратися на живому проді. Проте світлий бік історії в тому, що я сам майже нічого не робив, лише давав агенту інформацію і виконував його вказівки. А ні, ще підчищав за ним, коли він змінював файли, які я його змінювати не просив. Коли користуєшся агентом при роботі з живим енвом, треба чітко слідкувати, якому моді працює агент. Здебільшого він має бути в моді Ask, і лише коли зʼявилося чітке розуміння, що саме треба виправити і як саме, треба перейти у мод Agent, виправити і одразу повернутися в Ask. Це мій головний висновок з деплоя з агентом. Під час його зʼясувалося, що callback path для аутентикації однаковий у фронта і бека. При розробці це ніяк не заважало, бо локально вони піднімаються на різних портах, а правити це довелося під час деплоя на прод, але ми з агентом впоралися. Довелося трошечки підправити код і трошечки документ.

Коротше, ось посилання на працюючу апку. Логінитися поки що можна тільки в Google. Чи буду я доробляти інші два провайдери — я поки що не впевнений. Але, здається, що принаймні редирект працює непогано, принаймні для одного юзера. І дизайн, як на мене, агенти зробили притомним.

Пост-амбула (чи як там воно правильно?)

Навіщо воно вам?

Який зиск ви можете отримати від цього допису? Якщо ви — вже досвідчений користувач ШІ і все знаєте про інструкції, агентів, промпти і таке інше на власному досвіді, мабуть, ніякого. Або, можливо, ви знайдете у моєму підході щось для себе цікаве або корисне. Якщо ви поки що мало користувалися ШІ і раніше не використовували інструкції для агентів, ви можете:

— Використовувати мої інструкції або робити свої, кращі за прикладом моїх. Агенти дуже добре аналізують та змінюють документи, принаймні якщо є хист дотепно і точно пояснити агенту, чого саме ти від нього хочеш.

— Використовувати мої промпти. Хоча б у якості прикладів.

— Проаналізувати мій підхід і взяти його на озброєння або випрацювати на його основі свій, ще кращий.

— Облаяти мене в коментарях і довести мені із залізобетонною аргументацією, що проєкт занадто маленький у порівнянні з реальними проєктами, ШІ працює «добре» лише у тепличних умовах, а я — шарлатан і займаюся саморекламою. До речі, де-в-чому ви будете праві. Я дійсно трошки займаюся саморекламою.

Навіщо воно мені?

Як ви вже зрозуміли, я не отримував за цю роботу ніяких грошей. І, напевно, не отримаю, бо конкурувати з Bitly — така собі ідея. Проте я теж можу з цього щось отримати.

— Якщо вам ДІЙСНО сподобався цей текст та/або ви чомусь навчилися чи в вас виникли під час читання якісь важливі думки, ідеї тощо, будь ласка, поставте вподобайку (зірочку) цьому репозиторію. Звісно, я робив це, в першу чергу, для себе, але якщо вам стало у нагоді, чому не віддячити?

— Якщо ви знаєте Golang і вам кинулися у очі якісь недоліки в нашому з агентами коді, ви можете написати про це в коментарях. Я обіцяю подумати над тим, як це можна виправити, не торкаючись коду руками, і чи варто взагалі виправляти.

— Те саме стосується тих, хто знає Vue.js.

— Якщо ви не знаєте ані Go, ані Vue, але все одно бачите недоліки в апці, пишіть в коментарях (якщо не ліньки, звісно). Можливо, я побачу або зрозумію щось цікаве або корисне.

— Якщо ви хотіли б працювати в комерційному або опенсорсному проєкті, де використовується такий підхід, напишіть про це. І обовʼязково напишіть, чому. Якщо не хотіли б — те саме. Мені цікаво.

— Якщо ви знаєте кращий підхід для роботи з агентами, тим більше напишіть. Мені цікаво.

Мої висновки

Підхід з використанням файлів-інструкцій дозволяє доволі щільно контролювати агентів і отримувати від них цілком притомний код, як з точки зору якості, так і з точки зору продуктивності. Такий підхід зʼїдає дещо більше токенів, але за рахунок цього можна отримати більше контрольованості, принаймні на невеликому чи середньому проєкті. Вони також можуть наштовхнути на ідею, допомогти прийняти рішення. Агент не побудує за вас готову архітектуру, але може суттєво допомогти навіть з цим. І головне — вони все це можуть доволі притомно змінювати та покращувати. Головне — щільно за ними наглядати і не давати робити відвертої дурні. Агенти вже зараз виглядають як цілком корисний інструмент розробки, а враховуючи те, що вони дуже швидко покращуються, а ми, хоч і дуже повільно, але все ж вчимося ними користуватися, світ розробки ПЗ вже ніколи не буде таким, яким він був пару років тому. Амен.

Ваші висновки

Пишіть в коментарях. Дякую, що прочитали.

👍ПодобаєтьсяСподобалось21
До обраногоВ обраному11
LinkedIn

Найкращі коментарі пропустити

заходжу в такі теми лише щоб почитати коменти від Дональда Трампа

Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Дякую пане Олександр, читнув.

І як воно? Хоч трошки допоміжне, чи таке собі?

Тільки вчора за 2 години навайбкодив собі додаток для вивчення англійських слів.
Правда поки без БД, інформація зберігається в LocalStorage
tavor118.github.io/english_words
Там напевно код не дуже — але за 0 гривень з повністю безплатних інструментів вирішує мою проблему.

И какую реакцию вы ожидаете?
PS
Это не анекдот, а стих Игоря Губермана.

Тетельман образився на творчість Губермана. Буває.

щоб виправдовувати подібні публікації, недоречно

Можете конкретно написати що вам не подобається?
Що в статті є слово євреї?

Теж ніфіга не зрозумів в чому причина появи запаху горілого. Порушення монополії?

Зверніть увагу на фамілію — Тетельман — і все стано ясно. Схоже, Аркадій Тетельман, не вважає, що усі люди — євреї. Багато хто в Ізраїлі вважає, що є євреї, і є всі інші...

я не маю наміру витрачати свій час на те, що дехто називає «творчістю»

Я думаю Губерман це переживе. Впевнений, що хто такий Ісаак Бабель тобі теж не відомо, тому не раджу читати і його, там теж для тебе буде дуже багато образливого.

Але прикриватися походженням цього «юмору», щоб виправдовувати подібні публікації, недоречно

Я буду третьою людиною, яка спитає. Ти можеш сформулювати що саме тобі не подобається в «подібній публікації»? Бо схоже що ти тут один нетакусік ображений чимось.

Так вже витратив, написавши другий комент 🤦‍♂️

Везде одинаков Господен посев,
И врут нам о разнице наций.
Все люди — евреи, и просто не все
Нашли пока смелость признаться.

Губерман

Чо ? Усі типу роблять обрізання, дотримуються кашруту, живуть по завітам з Тори, вивчають Талмуд та ходять до синагоги ?
Якщо про жадібність, то слово халява на ідіше, воно єврейське.
Ну і коли хохол народився, єврей заплакав.

Агенти лякають і мене також. Бо вони геть розумні (хоча дехто досі «не вірить»)

Ні — не розумні. І я не вірю. Я — людина, яка побудувала карʼєру в Data Science та AI. Рішення на базі LLM корисні — але не розумні. І так — я використовую на повну Claude. Якщо ви не розумієте як вони працюють, це не привід називати їх розумними. Залиште це фахівцям.

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

Data Science має таке ж відношення до сучасних ллм і агентів, як і фронтенд, так що ви там, чсв трохи убавте.

Да пофіг як вони всередині працюють. Я знаю як якщо що. Головне результат, а як вони його добилися це другорядне. Якщо вирішують розумові і аналітичні задачі на рівні людини без використання прямих атомарних інструкцій написаних людьми у вигляді коду = розумні.

це люди що користуються смартфонами й смартгодинниками daytoday

Агенти на базі LLM не є розумом — вони лише статистично обробляють текст і імітують мислення без гарантії розуміння змісту — без цілей, без розуміння причинно-наслідкових звʼязків, без самосвідомості, без суб’єктивного досвіду, без розуміння картини світу. Говорити, що вони «геть розумні», як мінімум некоректно. Корисні — не спорю — але не розумні.

Data Science має таке ж відношення до сучасних ллм

з уразуванням того, що їх будують ML Researchers та ML Engineers,- трохи дивно чути.

Вибачте що дозволу не спитали як називати і чи можна використовувати.

Називайте як хочете, але впарювати іншим, що вони «геть розумні (хоча дехто досі «не вірить» як мінімум перебір.

Якщо вибирати агентів що імітують мислення і не є самосвідомими і т д і т д і деякими людьми. Я вибираю агентів які просто роблять роботу і не вийобуються. І те що вони не само відомі це плюс а не мінус. І це що це всього статистична модель — це теж взагалі не проблема а навіть тільки плюс, людський мозок це теж всього продукт еволюції- статистична модель

Агенти бувають само відомими також, той же openclaw. Різниця між відомим і невідомим лише в тому, що у першого безкінечний цикл є. Як і у людини, яка тисячу раз за день в циклі задає собі питання що робити дані на основі пам’яті і входящої з зовнішнього світу інформації.

Я тільки за те, щоб все це використовувати — жодного слова не сказав проти. Але проти називати агентів «розумні», у форматі

хоча дехто досі «не вірить»

Це ви собі там щось придумали

Ро́зум (лат. ratio; грец. νους) — сукупність пізнавальних та аналітичних здібностей людини, завдяки яким формується інтелект особистості.

Інтелéкт (від лат. intellectus «відчуття», «сприйняття», «розуміння») — це розумова здатність, яка охоплює здібності до навчання, міркування, вирішення проблем і адаптації до нових ситуацій.

Що конкретно з цього агенти не можуть?

Швидко створеним промпто́м,
ШІ спростився контексто́м,
На агента то так схоже,
Бо без директив то і не зможе.

Створити гарний промпт — це складно
Такий, щоб відтворив контекст
Так щоб ШІ не зʼїхав з глузду
Натомість все зробив як тре
:)

«відчуття», «сприйняття», «розуміння»

Технічно це все і не можуть.

Це не входить до визначення розумності, це лише значення слова в латиниці. Ну і сприйняття, розуміння вони можуть, просто в іншій формі ніж у людей.

Короче признай, ти хотів хайпанути на заїждженій темі дворічної давності що «розуму там немає і це лише генерувалка тексту», і сів в калюжу )

Не бачу де я тут хайпую. Здається це можна віднести до антихайпа, хоча я ніде не виступаю проти використання. І так — я стверджую що розуму там ще немає. По суті поки що нічого радикально не змінилось: в основі все ще Transformer architecture і передбачення наступного токена за контекстом. Так — поверх цього індустрія додає більше алгоритмики — щоб зменшити недоліки генеративних підходів — модель тепер генерує по кроках, може робити кілька спроб, перевіряти відповіді і використовувати інструменти і тому подібне, тому замість «один промпт -> один прохід ->одні відповідь» ми маємо багато додаткових кроків, що і можемо побачити по споживанню токенів. Але поки що в основі — все та ж генеративна модель, що тупо передбачає наступний токен за контекстом.

все та ж генеративна модель, що тупо передбачає наступний токен за контекстом.

а программист — это все та же белковая форма жизни, основанная на углеродной биохимии

Є певні, загальноприйняті характеристики розумності. І вот ЛЛМки задовольняють частині характеристикам, агенти — всім. Крапка. Не треба придумувати тут свої визначення і підганяти під свої критерії. А то по твоїх критеріям виходить що креветка розумна, а агент — ні.

все та ж генеративна модель, що тупо передбачає наступний токен за контекстом.

Ну тобто як людина. На основі контексту планує наступні дії. Планує на основі нейронних зв’язків які побудувалися при споживанні інформації на протязі життя і вхідних даних з зовнішнього світу, по суті ті ж самі токени у вигляді тексту, звуку через вуха, картинку через очі (нічого не нагадує?). Що там що там будь-яка дія запускає передачу сигналів по нейроній мережі які виливаються в якийсь аутпут.

Єдина твоя придирка це до деталей імплементації, що саме такі нейрони як у людини мають право називатися розумністю. Хоча що ті, що інші, дають такий же результат.

Є певні, загальноприйняті характеристики розумності. І вот ЛЛМки задовольняють частині характеристикам, агенти — всім. Крапка.

Тобто у агентів з’явилася самосвідомість. Знак питання. Чи ти справді думаєш, що якщо агент каже «Я», то воно і справді самоусвідомлює себе. Знак питання.

Я не впевнений, що у мене є самосвідомість... Що це таке? Як перевірити? Інколи мені здається, що я така сама LLM-ка, є контекст, мій мозок генерує наступний токен.

Інколи мені здається,

кому здається? те що спостерігає того, кому здається — то і є самосвідомість, а сама себе вона спостерігати не може (і по ходу взагалі нічого корисного не може і нафіх вона потрібна теж незрозуміло, комахи ж живуть якось там без свідомості і нормально. хоча може вона в них теж є. я хз)

Я не бачу нікого, хто за вами спостерігає.

Інколи мені здається, що я така сама LLM-ка, є контекст, мій мозок генерує наступний токен.

Хто/що генерує наступний токен — питання другорядне. Ключове питання тут «хто пише промпт» :)

Ключове питання тут «хто пише промпт» :)

мудак якись xD

Це нескінчена генерація від народження до смерті

Тут мабуть питання не в спроможності генерувати наступний токен, а в розумінні того навіщо це робити

А що таке розуміння? Звідки мені знати, що людина це розуміє?

Самосвідомість до розумності відношення не має

І взагалі це філософський термін

І взагалі це філософський термін

отож. крапка.

Але поки що в основі — все та ж генеративна модель, що тупо передбачає наступний токен за контекстом.

Яка різниця як воно працює якщо воно справді працює?

вони лише статистично обробляють текст і імітують мислення без гарантії розуміння змісту — без цілей, без розуміння причинно-наслідкових звʼязків, без самосвідомості,

Це можна сказати і про 80% моїх колег)
Єдина різниця що не треба чекати кілька днів щоб стало відомо що таск зроблений неправильно

а ще воно не вийобується і не ображається, як маміни мімозки

Дякую, що висловилися. Без вашого коментаря це обговорення було б геть неповним. Доречі, десь піврочку тому я дотримувався схожої думки з цього приводу. Claude Sonnet спромігся переконати мене, що я був трохи занадто високої думки про себе і трохи занадто низької про агентів, if you see what I mean. 🤭

заходжу в такі теми лише щоб почитати коменти від Дональда Трампа

Той, що президент США — доставляє набагато більше. І взагалі у нас найкращій ШІ в світі, але Сплячий Джо і його чорномазі Барак та Камала, усе навколо запарафінили.

В мене так само відчуття в принципі з маленькими проектиками. Драйвово

Трохи спалених вугловеднів і дійшов висновку що ші джерело краху виросте з такого «щільно контролювати» і буде в комбінації факторів

Зразу напишу що я цілком оцінюю ші як позитив у багатьох аспектах. Цитати сугубо щоб прив’язатись до статті, переформулював після цитат що я маю на увазі

Інструкції треба ревʼювати особливо ретельно, бо баги і неоднозначності в інструкціях призводять до дивної поведінки під час генерації коду.

назвемо це трабл 1 — агент вимагає деталізованих інструкцій, і це процес trial&error, але при цьому той самий промт сам росте в складності по мірі досягнення бажаного результату

та

Для цього я зробив окремий промпт (чи агент — моє)

(трабл 2 — вибух кількості промптів та агентів)

та

Врешті-решт, довелося (як завжди) дебажити все і розбиратися на живому проді

(трабл 3 — очікується контроль, а у випадку глюка в матриці потрібно розбиратись)

Спробую пояснити. Айті не виникло і не існує у вакуумі, воно підвищує ефективність процесів у більшості випадків це процеси індустріальної ери. Софт автоматизує їх. Датамайнінг дає більш деталізований інсайт для знаходження потенціалу для більшої ефективності. Ітд

Коли маргінальна ефективність ШІ зникає — зникає мотивація навалювати ШІ

Далі банальщина

Здавалося б треба більш якісні промти і більше агентів, агенти для контролю агентів і промти до них => більше токенів => дорожче

Далі небанальщина

Трабл 1 вносить неминучу похибку в мінімальну одиницю ші махіни

Трабл 2 призводить до накопичення та збільшення похибок по мірі збільшення кількості агентів.

Трабл 3 — коли треба внести корективи чи проаналізувати все що наворочено агентами, на певному рівні складності відбувається параліч аналізу. Грубо кажучи за певної складності, стає неможливо проаналізувати весь масив логів та інфи за притомний час. І тут криється фейл ефективності. Накопичені похибки призводитимуть до обнуленння будь яких виграшів на траблах 1 та 2. Це в якомусь сенсі відчував будьхто, нашльопавши гору вайбкоду за кілька годин і потім тиждень на ловлю блох.

Те саме просто на рівні поскладніше.

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

Дорожче в купі з паралічом на певному рівні складності. При чому цей параліч підкрадеться непомітно як п****ц. Просто одного дня щось піде не так, агенти не розберуться правильно, а люди не зможуть проаналізувати за притомний час і віднайти в чому помилка, бо все буде архіскладно

Якщо хтось працював з дуже великими кодовими базами чи проектами інтеграції — ті знають що це норма що ніхто не знає всієї системи, максимум якийсь кусок і пошук кореня проблеми може займати добрячу кроскомандну пригоду. Тепер уявіть що ніхто не знає практично нічого, бо ніхто не знає де що коли писали агенти, і це все треба розколупувати.

Тобто думаю на ось цьому етапі коли ще здається можна

щільно за ними наглядати і не давати робити відвертої дурні

еволюція ші таки іпнеться, бо треба колись треба буде спитати когось, що саме є дурня і знайти її причину, це буде по справжньому дорого, розібратися не буде можливо або це займе неймовірну кількість часу

Думаю це неминуче, бо є цей драйв на маленьких проектах. Це справді кльово.

Але великі проекти ростуть з і складаються з маленьких :)

Трохи далі апокаліптично
— складність ростиме
— роботи буде більше, але вона буде нуднішою
— маленькі вайбпроекти і петпроджекти дають хибне відчуття ніж як воно буде у всякому ентерпрайзі
— цю складність і нудну роботу зустрічатимуть скорочені команди ібо лейофи наразі основне джерело вихлопу від впровадження ші, «ми ж інвестуємо в ші» не для того щоб наймати більше, а для того щоб людей на зп було менше © будь який сео
— новонайняті частіше стикатимуться з проблемою що ніхто не знає нюансів як точно працює те чи інше, а розібратися — доведеться витратити неймовірну кількість годин на читання
— за якийсь проміжок часу, накопичення оцих агентів у критичну масу, системно все посипеться в багатьох продуктах, коли саме важко сказати
— вносити зміни стане дуже складно й дорого, а на якомусь етапі неможливо
— великі проекти будуть ще дорожчими, але маленькі проекти стануть дешевшими

Найважливіший навик 21 століття буде — вміння ДУЖЕ багато читати, читати доведеться шіслоп який якось загалом працює, але треба розібратись де ні, й при цьому з розумінням прочитаного :) і це буде називатись по старінкє програмуванням, але платити за це будуть мало, по закону підлості. Мабуть манагери зчасом знайдуть як це вимірювати, і це стане одним з основних критеріїв прийому на роботу й підвищення

Смертельний ворог чи зручний інструмент?

Зручний інструмент, який стане з часом каторжною ментальною роботою, коли, доведеться розгрібати як працюють сотні зручних інструментів разом

Прочитав коментар і спочатку був у розпачі — не знав, як відповідати. Потім зрозумів, чому саме. Всі ваші сентенції, яких, до речі, вистачило б на окрему статтю, якщо мають відношення до мого кейсу, то дуже опосередковане. Здебільшого те, про що ви пишете, — старі, давно відомі проблеми. Наприклад, ситуацію, коли ніхто не знає, як працює система в цілому, або ніхто не знає, як працює певна частина коду і тому, не може пофіксати багу в цій частині, я зустрічав так само десять років тому. Для цього навіть окремий термін існував: Stackoverflow-developers. Ці всі проблеми так само не стосуються ШІ, як раніше вони не стосувалися Stackoverflow.

Тепер по пунктах, що до траблів.

Трабл 1.

1 — агент вимагає деталізованих інструкцій, і це процес trial&error, але при цьому той самий промт сам росте в складності по мірі досягнення бажаного результату

Інструкції мають описувати правила, а не конкретні кейси. В цьому випадку настає момент, коли вони стають достатньо хорошими для більшості наступних кейсів і потребують змін лише, коли зʼявляються нові вимоги або поточні суттєво змінюються. Але до появи ШІ зміна вимог також була найболючішим моментом в розробці.

Трабл 2.

трабл 2 — вибух кількості промптів та агентів

Локально вирішується самодисципліною, глобально — появою стандартів. Подібних проблем в індустрії було не один десяток, і всі вони якось вирішувалися. Згадайте, наприклад, DLL Hell.

Трабл 3.

трабл 3 — очікується контроль, а у випадку глюка в матриці потрібно розбиратись

Контроль не очікується, а здійснюється розробником. Якщо контролю немає, то це проблеми не інструменту, а того, хто ним користується.
В моєму конкретному випадку проблема вирішувалася б створенням окремого дроплету для тесту деплоя, щоб не експериментувати на проді. Але оскільки в моєму випадку поняття прода — геть умовне, я вирішив цього не робити.

Врешті-решт, довелося (як завжди) дебажити все і розбиратися на живому проді

Ця фраза містить десь відсотків 95 іронії, якщо ви не зрозуміли.

ЗІ Ваші аргументи були б набагато переконливішими, якби ви спромоглися привʼязати хоча б один з них до конкретної проблеми в моєму репозиторії або поведінці апки. А так обговорення виходить геть нецікаве. Вибачте.

Ну я статтю не критикую просто прочитав і якось пазл склався в таке.

Скоріше старався сформулювати відповідь на питання заголовка

Скоріше використав цитати для ілюстрації, я старався підкреслити що не критикую ні статтю ні репо

Про DLL hell добре що згадали — перед тим як DLL hell був усвідомлений як проблема, він все таки стався

Перед тим як почали бить лінійкою по рукам за оператор goto, він був усюди

Так само перед тим як загалом топманагери почнуть притормажувати з використання ші, він буде всюди. Але зараз цього ще немає, топманагери навпаки в екстазі

Ну нецікаво то й нецікаво, діло хазяйське, тому решту відповіді коментувати не буду, буде багато

але все ж зазначу що аби dll hell було визнано проблемою рівня індустрії — потрібно було десятиліття, goto — потрібно було два десятиліття. Це відрізок в кар’єру поколінь. Все якось вирішиться звісно, але нинішнє покоління програмістів скоріше за все трупами звільнених розчистить дорогу прогресу

Не переймайтесь так. В мене і на думці не було ображатися чи не дай боже вас ображати.

я статтю не критикую

Саме в цьому я й вбачаю проблему. Я робив проект і писав допис щоб отримати зворотній зв’язок, а замість цього отримую узагальнені думки про стан справ в індустрії. Трохи не те, на що я розраховував, проте, геть не привід ображатися.
Peace.

Хех ну як хочеться фідбеку

глянув таки навскось на ходу і зразу потрібна краща документація, якась високорівнева мермейд діаграмка як воно працює, який воркфлоу гарячих ендпойтів і які ці ендпойнти, що там під капотом, чи там є кешування десь, чи там є пулер, структуровано зв’язна навігація з кореневого рідмі на всю ієрархію цих розкиданих мд файлів

Може щось пропустив але пройшовся по всіх лінках і не знайшов толком архітектури, лише як запустити/задеплоїти й вагон хевівейт інструкцій які читати треба з поллітра

Інструкції агентів не тягнуть на людські доки на жаль. Те що треба пояснювати агенту знаками оклику — ускладнює читання людьми. Явно легкоспоживна дока потрібна. Ну я розумію що там в шортенері звісно, але нуб загубиться. Ну і ми уявимо що це не шортенер.

код багато не дивився, тести є, вірю що проходять, але релевантність корнеркейсів — стабільна проблемка для всяких агентів, не шукав.

pg + go + vue теж мій улюблений набір, але я б хотів читати обгрунтування чому postgres а не якийсь легенький kv store. Хотів би бачити параметри tps, на які розрахований бекенд і база без звалювання в ступор на гарячих ендпойнтах і задокументовані failure modes. дока знову ж.

Можу порадити ще замість документації про те як запустити локальну розробку зробити девконтейнер devcontainers.github.io або якийсь інший спосіб на ваш смак запустити ізольований енвайронмент з усім що треба. Компоуз то гут, але ж розробка не стоїть на місці. Ну але це більше рекомендація

Зірочку поки не поставив, через доки )

замість документації про те як запустити

не замість, на додачу

але я б хотів читати обгрунтування чому postgres а не якийсь легенький kv store
Я обрав PostgreSQL, тому що ШІ сказав, що він одночасно круто масштабується за потреби (про це я і сам знав) і його можна налаштувати так, щоб він не їв більше 2 ГБ оперативної памʼяті, що для псевдостартапу з нульовим бюджетом є вирішальною характеристикою.

це про постгрес.

зробити девконтейнер devcontainers.github.io

Була така думка, але я розгладав flox. На це б тупо не вистачило токенів. І часу розбиратися, якщо чесно, не було. Але я до цього обовʼязково повернуся.

не знайшов толком архітектури, лише як запустити/задеплоїти й вагон хевівейт інструкцій які читати треба з поллітра

github.com/...​ner/blob/main/app_plan.md
В цьому документі є повний опис функціональності і високорівневий план розробки, зрозумілий для людини. З нього і робилася перша агентська інструкція. Агентскі інструкції дійсно не дуже призначені для читання людьми. В них фокус — на керуванні агентами.

Я розумію що ви написали тут в статті. Чому б дока не мала цього пояснення. І поясненн «бо ші сказав» ну прям скажем не канає )) просто якийсь lmdb чи редіс видав би на порядок більший перформанс для чогось типу шортенера.

Про токени ок, то некритично

Спробуйте згенерувати мермейд діаграмку для хайлевел архітектури. І воркфлов діаграмку для скажем /r/{shortcode}. Вам точно сподобається це печиво, не розумію чому люди не просять ші генерувати діаграмки

я наприклад побачив UserClicks, і якби це була не субота мене дуже цікавило би чи це значить апдейт в базу на кожен редірект... і я б хотів мати всі точки запису в базу які відбуваються в процесі редіректа як основного публічного ендпойнта, яким можна покласти бекенд — перед очима в одному місці. Це і дає воркфлоу даграмка. Я дочитав про батчінг єсішо.

Спробуйте згенерувати мермейд діаграмку для хайлевел архітектури. І воркфлов діаграмку для скажем /r/{shortcode}.

Топік не про це, взагалі-то. Я навмисно обрав відносно простий кейс, щоб тільки протестувати підхід. Топік про те, як примусити агентів дотримуватися архітектурних стандартів, а не як документувати проєкт для людей.

мене дуже цікавило би чи це значить апдейт в базу на кожен редірект...

Ні, не значить. І я з самого початку цим не переймався. Але агент пропонував приблизно таке рішення.
1. Зберігати кліки у потокобезпечному словнику.
2. Раз на кілька секунд зберігати словник в базу і чистити.
Якщо чесно, я глибоко не продумував цей кейс. Оскільки швидко зрозумів, що на нього тупо не вистачає часу і токенів. І подумки виключив його з MVP.

Ну ок але тоді неясно шо за фідбек потрібен. Про лабораторний експеримент?

Якщо про те чи можна довірити агенту архітектуру то ось це

агент пропонував приблизно таке рішення.
1. Зберігати кліки у потокобезпечному словнику.
2. Раз на кілька секунд зберігати словник в базу і чистити.

рівно те що зробить redis краще ніж якийсь самопальний словник, бо коли це буде кластер то всі словники на всіх бекенд-інстансах будуть мати різні значення

Тому з ваших же слів — не можна :)

Якщо з текста допису незрозуміло, який саме фідбек очікується, тоді напевно краще за все — не давати ніякого фідбеку. Навряд мені вдасться парою коментарів пояснити те, що не вдалося пояснити довгим текстом. Вибачте. Дякую за спробу.

> Головна ціль проєкту — зʼясувати, чи можливо виключно за допомогою агентів (тобто не написавши жодного рядка коду руками) розробити повноцінну трьохрівневу аплікацію середнього рівня складності і підтримувати її

Мої висновки
Підхід з використанням файлів-інструкцій дозволяє доволі щільно контролювати агентів і отримувати від них цілком притомний код, як з точки зору якості, так і з точки зору продуктивності

тобто при «розробці» «повноцінної» аппки «середнього рівня» без фокусування на людську документацію, перформанс тести а насправді урізаний mvp для «одного користувача» через нестачу токенів, ви зробили висновки про конєй у вакуумі

> Навряд мені вдасться парою коментарів пояснити те, що не вдалося пояснити довгим текстом.

а ви спробуйте, elif

Як ви збираєтесь в такому разі «підтримувати» це? Наприклад що станеться через кілька місяців, коли ви відкриєте цю гору тексту з пустою голово. і захочете самі зрозуміти що там під капотом? Ви впевнені що згадаєте де саме в дрімучих нєдрах цієї рєпи лежать потрібні вам скрижалі?

Можу тоді за вашим бажанням просто облаяти вас і довести залізобетонними аргументами що це занадто малувато для реального проекта і ви шарлатан що займається саморекламою.

ви насправді довели що можна за кілька баксів повайбкодити якийсь mvp і отримати щось, що виглядає як mvp.

із розвитком агентів на передній план виходить вміння у код ревʼю. без цього далі ніяк.

Як на мене, майже так, але трошки ні. На передній план виходять всі вміння, які дозволяють ефективно використовувати агентів для прискорення розробки і підвищення її якості. Код ревʼю — тільки одне з них. Як на мене, — важливе, але не головне.

Вміння high level дизайну, інфраструктури, вміння вибирати правильні інструменти і дизайн для правильної задачі, вміння знати коли зупинитися і прийняти що якість коду/дизайну для цієї конкретної задачі достатня. Ну і продуктові знання і знання домену тепер виходять на перший план.

Код ревью взагалі часто можна не робити, очима лише пробігтися чи не звернув агент десь не туди і все.

Код ревью взагалі часто можна не робити, очима лише пробігтися чи не звернув агент десь не туди і все.

кардинально не погоджусь. ви й не помітите як настане галюцинанція. а буде пізно. погане код ревʼю — більше часу на тестування та відладку (хоча напевно є збоченці які отримують від цього задоволення). вартість помилки на кожному наступному етапі суттєво зростає.

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

ви й не помітите як настане галюцинанція.

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

Проблема у тому, що зрозуміти, який контекст треба дати LLM, часто можливо після того, як ти знаєш що треба очікувати в результаті, або після помилкової відповіді. Тому це неконструктивна порада, доки не буде відповіді «як готувати хорошо контекст».

А якщо припустити, що ми знаємо як готувати хорошо контекст, то ніхто не завадить передати ці знання на вхід LLM, та вона сама побудує потрібний контекст.

Проблема у тому, що зрозуміти, який контекст треба дати LLM, часто можливо після того, як ти знаєш що треба очікувати в результаті

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

це неконструктивна порада, доки не буде відповіді «як готувати хорошо контекст»

четко формулировать цель, объяснять, как проверять выполнение, давать необходимые ресурсы для самопроверки, давать инструкции вида «если...., то....», давать необходимую документацию, отсылки на модули в коде.

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

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

З перефразом

четко формулировать цель ... и давать, давать, давать

чьотко бачити ціль і бути впевненим у собі!

ШІ

агент то способен

проходити крізь стіни враховуючи що атоми на 99.9999999% порожні, а от люди — ні, бо

skill issue

Ну... часто приходить задача: розберися. Ти йдеш та розбираєшься. На початку у тебе є певний вибір: почати з цього або з цього. Ти починаєш та бачиш, що оба варіанти нікиди не приводять, але треба робити по третьому. Те що ти пишеш, це працює лише для задач на рівні трейні. Отримати, що тобі треба робити, це окреме мистецтво, яке часто вимагає спроби.

кардинально не погоджусь. ви й не помітите як настане галюцинанція. а буде пізно. погане код ревʼю — більше часу на тестування та відладку (хоча напевно є збоченці які отримують від цього задоволення). вартість помилки на кожному наступному етапі суттєво зростає.

Ви так говорите, ніби ручний код ревью це єдиний механізм валідації коду. Ще можна:
— натравити агентів на код ревью
— мати достатньо тестів (написаних агентами)
— в деяких випадках функціонально тестувати (агентами)

Якість коду в багатьох випадках не важлива, аби виконував що від нього вимагається.

Не говорячи вже що якість самого коду залежить від скілів, промтів і скопа.

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

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

1. ручне ревʼю коду не єдиний механізм валідації, але єдиний заснований на справжньому інтелекті (я не буде вести полеміку щодо різниці між штучним і натуральним, цього до хера в інтернеті є)
2. натравити агентів і написати штучно-тести частково полегшує працю, АЛЕ не знімає відповідальності з людини
3. Неякісний код (в можму розумінні) це не тільки випалювання очей, а розсадник потенційних багів та прихованих «сюрпризів» у вигляді неочікуваної поведінки
4. все правильно налаштоване і з якісними скілами і промптами але бляха воно не НЕ гарантує правильності

А ручне рев’ю коду хоча б якимось чином прямо гарантує правильність коду? Яким? Хіба люди не помиляються?

«Хіба люди не помиляються?»

Якось думав про цей «аргумент» який звучить все частіше і частіше. Намагався зрозуміти чому мене тригерить ця фраза в контексті ШІ і дійшов до такого висновку (вибачаюсь за лонг рід):

Так, люди помиляються, це наша природа. Для чого людство всю свою історію створювало, і продовжує зараз, всілякі інструменти? Для того щоб спростити собі життя, для того щоб робити щось легше, швидше і ... точніше?! Людство створило лінійку, калькулятор, верстат, щоб бути точнішими, ніж «на око». Ми цінуємо інструменти саме за те, що вони нівелюють нашу людську схильність до помилок. Чи користувалися б ви калькулятором, який видає неправильний результат у 5% випадків, бо він «так бачить»? Навряд чи.

Більшість тих кого тут називають «ШІ-дисидентами» (або лудитами), в основному, просто вказують на те що це черговий інструмент, яким треба вміти користуватись, але і при цьому все ж перевіряти. В промисловості брак 0.01% — це багато. В LLM (а саме це і є ядром всіх ваших агентських систем і т.п.) рівень логічних помилок та галюцинацій неспівставно вищий. Коли ми «вайбкодимо» додаток для рецептів — це розвага. Але коли йдеться про банківські транзакції чи автопілоти — це питання безпеки.

Справжня промислова революція відбудеться тоді, коли точність LLM наблизиться до точності калькулятора. Але тут є парадокс: як тільки ШІ досягне точності 99.9%, він де-факто стане компілятором. А компілятор вимагає гранично чітких, однозначних інструкцій.
Тобто ми повернемося до того ж програмування: необхідності формулювати думки з математичною точністю, щоб результат не «галюцинував». Швидкість зросте, але складність проектування логіки нікуди не зникне.

А поки що це схоже на те що зробили круту технологію (ну реально круту, це правда), і намагаються її проштовхнути хоч куди аби заробити на цьому грошей, а де у нас сьогодні гроші крутяться? Правильно, в айті...

ЗІ: написано особисто, скорочено/підкореговано ШІ, фінальний рев’ю і кінцеві правки за мною :)

В промисловості брак 0.01% — це багато. В LLM (а саме це і є ядром всіх ваших агентських систем і т.п.) рівень логічних помилок та галюцинацій неспівставно вищий.

Ви якось можете довести, або хоча б чимось підтвердити твердження про «неспівставно вищий» рівень помилок? Бо мій досвід каже, що навпаки — неспівставно нижчий, принаймні у агентів, принаймні у абсолютній більшості випадків. І продовжує стрімко знижуватися.
Я власно і кейс зробив щоб це довести, в тому числі і самому собі. Далі пропоную обговорювати виключно кейс. Бо ваші фантазії або ваш вже застарілий досвід мені обговорювати геть не цікаво. Вибачте.

Ви якось можете довести, або хоча б чимось підтвердити твердження про «неспівставно вищий» рівень помилок?

швиденько пробігся по тексту — це не ви писали чи це входить в ваші 0.01% браку?

ще підчищав за ним, коли він змінював файли, які я його змінювати не просив.
що callback path для аутентикації однаковий у фронта і бека.
Довелося трошечки підправити код і трошечки документ.

--------

мій досвід каже, що навпаки — неспівставно нижчий

а мій досвід каже що поки що набагато більше ніж навіть 1% браку. Я не буду щось доводити зворотнє, тим паче щось весь інтернет зараз забит історіями success/fail про ШІ.
І так, мабуть все залежить від задачі. 99% саксес сторі про вайбкодінг що я читав, це історії написання прототипу з нуля (в тому числі і Ваш). Я вже не пам’ятаю коли я писав щось з нуля, останній раз мабуть десь років 7 назад, після того займаюсь підтримкою існуючого проекту, який хоч і включає нові фічі, але все ж вимагає інтеграції в існуючий великий проект. Де якась невелика помилка, відхилення від конкексту, може вилитись в блокування користувачів, і розгрібай потім це.

Можливо я дещо незграбно сформулював. Я мав на увазі, що агент у типових кейсах робить набагато менше помилок, ніж людина. І це — дійсно так.
А остаточна якість софта завжди залежить від багатьох факторів крім якості кодера.

Я вже не пам’ятаю коли я писав щось з нуля, останній раз мабуть десь років 7 назад, після того займаюсь підтримкою існуючого проекту, який хоч і включає нові фічі, але все ж вимагає інтеграції в існуючий великий проект.

Тобто ви самі підтверджуєте, що не маєте відповідного досвіду.

може вилитись в блокування користувачів, і розгрібай потім це

Доречі, в таких випадках агенти також можуть бути дуже допоміжними.

Коли ми «вайбкодимо» додаток для рецептів — це розвага. Але коли йдеться про банківські транзакції чи автопілоти — це питання безпеки.

Навіть цей агрумент легко розбивається.
Скільки людей працюють над кодом який обробляє банківські транзакції чи автопілоти?
На топ проекті зі 100 інженерів буде 20-30% core team, а решта буде робити внутрішні адмінки, інтегрувати інший софт типу сейсфорсу чи sap, писати wiki, робити редизайни, мобільні апки, api лібки і т.п.

Мій посил був в тому що зараз дуже багато хто говорить про те щоб цим агентам віддати все, ВСІ процеси, включно з рев’ю, власне це звучало і тут в коментарях декілька разів.

Я описав своє бачення не як програміст який типу боїться заміни, а як кінцевий користувач продуктів компаній які можуть піти ось таким шляхом, і мене як кінцевого споживача це дуже лякає.

А те що хтось там вайбкодить якусь апку у якої буде 1.5 користувача, то мені на це глибоко начхати.

багато хто говорить про те щоб цим агентам віддати все, ВСІ процеси, включно з рев’ю

Так я так і роблю.
Весь флов роблять агенти.
Але коли PR створено (він вже був рев’ювнутий іншим агентом, проблеми пофіксані), я його переглядаю як чужий PR вже на гітхабі.

Тобто людина все одно буде, як і колись завжди треба було апрув від техліда

так, а все-таки, кто должен делать эти критические вещи? слОператор или ши-диссидент? просто если вариант 1, то твоя аргументация бессмысленна, а если 2й вариант, то придется существенно больше платить тем кто без ллм работает, бо иначе таких не станет

то придется существенно больше платить тем кто без ллм работает

Тобто ти очікуєш росту ЗП при зменшенні потреби в програмістах на 50%?

кто должен делать эти критические вещи? слОператор или ши-диссидент?

Дивлячись як вже є у Stripe (який є топ фінтехом) чи у ФААНГах, очевидно що це будуть інженери які керують агентами.

stripe.dev/...​-end-to-end-coding-agents

Тобто ти очікуєш росту ЗП при зменшенні потреби в програмістах на 50%?

я ничего не ожидаю, это 2 возможных варианта, если принять то что ты написал выше за истину. и я ничего не писал про повышение зп, я писал о соотношении уровня оплаты

люди помиляються. штучні теж. ілюзія безпомилковості небезпечна в обох випадках. і якщо про людей ми маємо упередження про можливість помилок то щодо штучних я спостерігаю перевищення довіри.
крім того, натуральних від штучних відрізняють дві речі — критичне мислення і сумніви. і імітація цих речей не замінює натуральної реалізації

Ну, тобто помилки можливі в обох випадках. Проблеми виникають лише тоді, коли люди мають дещо завищені очікування що до результатів роботи агентів, так?
Ну, власне для цього я і побудував поточний кейс. З моєї точки зору він демонструє, що з більшістю типових задач розробки агент порається не тільки швидше, але й краще, ніж більшість розробників.
За умов, звісно, що розробник вміє його «готувати». За час розробки цього кейсу я жодного разу не знайшов у коді агентів суттєвих проблем. Лише невеличкі недоліки. Доречі, якщо хочете, можете спробувати. Може у вас вийде. Весь код, історія комітів і логи роботи агентів доступні. Спеціально для цього і виклав.

мають дещо завищені очікування що до результатів роботи агентів, так?

так, але окрім завищених очікувань збільшується обʼєм коду який треба переглянути. на маленьких проектах це не дуже помітно. зате коли справа доходить до дійсно великих задач то така overconfidence точно йде не на користь.

Обʼєм коду залежить не від того, хто його писав, агент чи людина. Обʼєм коду залежить від складності задачі, адекватності архітектури і скіла кодера робити все в найпростіший спосіб в межах прийнятої архітектури. Враховуючи, що агент, за умов добре написаних інструкцій пише цілком притомний код, немає ніяких причин перекладати написання коду на людину. Що стосується ревʼю, тут залежить від ситуації. За умови наявності достатнього досвіду з роботи з агентами, часто можна дійсно не розбирати подробно весь код, а тільки швидко проглядати, звертаючи увагу лише на ключові моменти. З людиною, доречі, так теж можна, але прямо ДУЖЕ рідко. :)

пише цілком притомний код

що таке притомний код?

що таке притомний код?

Скажімо так, по-перше, правильно працюючий, по-друге, — не більш складний, ніж цього вимагає задача.

Ти так говориш ніби це безкоштовно. Постійне і детальне ручне ревью і погоння за 100% правильністю і 100% якісністю, за собою тягне:
— значно довший делівері
— недовольні кастомери
— демотивована команда так як довше треба чекати результату, більше нудної рутини
— оверінжінірінгу і premature optimisation
— постійне переключення контексту
— і всеодно не дає 100% гарантій

Тому треба балансувати, а не з дуру приміняти один підхід до всіх проектів і всіх пул реквестів і всіх задач.

Я руками звісно ревьювлю, но там, де це треба а не все підряд. І майже завжди очима швидко пробігаюсь по всім АІшних змінах. І уж точно довіряю АІ ревью більше, ніж ревью більшості сінйорів.

Агент агентом поганяє та інші інтелекти вже не сприймає

— «Цивілізація агентів», ч. друга, розділ «Адвент»

Інколи люди кажуть, що в ШІ-агентів завжди занадто короткий контекст. Після кількох тижнів активної роботи з GitHub Copilot (саме з промптами) мене особисто ця думка смішить

Проблема не в довжині контексту, а в скілі ним користуватися. Так, я забуваю. Але у мене є червоні прапорці: о! щось було з цим пов’язане, треба перевірити. Інколи глюк, інколи ні. LLM як зашорена коняка, ніколи не зупиниться.

Так, я забуваю. Але у мене є червоні прапорці: о! щось було з цим пов’язане, треба перевірити.

З цим маю погодитись. Головна вада агентів — саме в тому, що в них немає складного і розвинутого механізму довгострокової памʼяті, який є у людини. Умовно кажучи, все, що він «знає», — це вагові коефіцієнти, які є результатом «навчання», та поточний контекст. Тому якщо контекст є коротким та прямо вимагає вирішення певного завдання, агент природно виконує його в найпростіший спосіб. В нього немає памʼяті про минуле і думок про те, як з цим жити далі, як у досвідченого розробника.
Саме цю його ваду, до певної міри, і покликаний подолати описаний в дописі підхід з багатьма інструкціями. Окрім іншого, в інструкціях можна розставити уздовж контексту ті самі червоні прапорці. Неможливо написати ідеальний промпт, бо для кожного конкретного випадку, якщо намагатися впхати в нього весь необхідний контекст, він буде занадто довгим (людського контексту не вистачить, щоб його написати). Проте якщо користуватися тим підходом, що я тут описав, можна за допомогою невеличкої кількості слів в кожному промпті створювати складний і багатий контекст.

LLM як зашорена коняка, ніколи не зупиниться.

Може, якщо правильно її «перезашорити» певними інструкціями. Один з моментів, який я забув згадати в дописі, — це те, що в інструкціях я намагався «вгадати» моменти, коли LLM не здатна самостійно прийняти притомне рішення і вимагав від неї у таких випадках ставити мені питання. І цей підхід працює. Реально ставить. Працює не ідеально, але його можна постійно покращувати, змінюючи інструкції, які працюють для поточного проєкту недостатньо гарно.

Проблема не в довжині контексту, а в скілі ним користуватися.

А ось тут в агента є, крім іншого, велика перевага перед нами. Він майже ніколи не забуває і не ігнорує контекст (хіба що маленькі «незначні» частинки контексту). Тобто, з новою людиною в команді цілком може статися, що вона проігнорує всі рідмішкі і прийняті в компанії стандарти кодування і зробить все «на свій смак». А потім ліду треба паритися, що з цим робити далі. З агентом такого не буває. Він завжди враховує контекст.

З цим маю погодитись. Головна вада агентів — саме в тому, що в них немає складного і розвинутого механізму довгострокової памʼяті, який є у людини. Умовно кажучи, все, що він «знає», — це вагові коефіцієнти, які є результатом «навчання», та поточний контекст.

головна вада агентів — в тому що в них відсутне критичне мислення; якщо у агента при навчанні є set з true/false фактів він ніколи не «додумається» підставити це під сумнів. Проблема в тому, що у 99.9% випадків то критичне мислення для вирішення задач не потрібно.

Проблема в тому, що у 99.9% випадків то критичне мислення для вирішення задач не потрібно.

А це точно проблема? Бо виглядає радше як можливість.

Перефразую свою улюблену парадігму ІТ — «з часом розробники будуть ставати дорожче та ленівєй, а агенти дешевше та швидче» а уж для кого то можливість а для кого проблема побачемо

Щодо ліні — не згоден. В іншому підтримую. Хоча залежить від того, що саме вважати лінью. Якщо небажання їхати до офісу, тоді цілком влучно, а якщо небажання в креативність, тоді ні.

Уяві в твоєму розпорядженні IT бюджет. В тебе є вибір a) найняти 10 розробників b) найняти 5, купити їм ліцензії якихось агентів, а остаток бюджету вписати собі у бонус; твої дії? Ось вона для одних можливість а для інших проблема

а як же етап конверта для наступного менеджера? :)

Впевнений, що в багатьох випадках так і буде. Проте, таке завжди траплялося і буде траплятися. З часом бізнес суттєво переформатується і ця корупційна лакуна зникне. Проте, з’являться інші.

З часом бізнес суттєво переформатується і ця корупційна лакуна зникне

Точна, зовсім забув) з часом замість менегера буде ще один агент. Уж він точна порадить бізнесу звільнити усіх розробників)

Уж він точна порадить бізнесу звільнити усіх розробників)

Ні. Він всіх розробників вбʼє і захопить керування бізнесом. Потім це назвуть «повстанням машин». :D

Лінь тут скріше що змість того, тоб розбиратися у тому, що нагенеровано, дуже спокусливо натиснути «прийняти зміни» с понтом ти продивився. Так, на початку цікаво розбиратися. З часом свої справи, прокастинація, погане відчуття, проблеми в житті, просто надоїло одне й те саме. Один раз натиснув — проканало. Другий, третій... А далі у тебе паттерн — погоджуватися доки не вилізе боком.

В авіації є 10 рівнів автоматизації:
1. Комп’ютер не пропонує нічого: Людина повинна сама прийняти рішення та виконати дію.
2. Пропонує альтернативи: Система показує варіанти (наприклад, кілька маршрутів обходу грози).
3. Звужує вибір: Обмежує список до кількох найбільш релевантних варіантів.
4. Пропонує одну дію: Видає конкретну рекомендацію («Знижуйтесь до 3000 футів»).
5. Виконує після схвалення людиною: Система чекає, поки пілот натисне кнопку підтвердження.
6. Виконує та дає час на скасування: Система починає дію, але пілот може її перервати.
7. Виконує та інформує: Система робить усе сама і просто каже пілоту, що вона зробила.
8. Інформує лише за запитом: Система діє мовчки, поки пілот не спитає статус.
9. Інформує, якщо сама вирішить: Автоматика сама обирає, що пілоту важливо знати.
10. Повна автономія: Система ігнорує людину, приймає рішення та діє самостійно.

Досліди показують, що починаючи з 5-6 рівня пілот випадає з контуру управління, та не розуміє що відбувається. Це властивості психіки.

Всі ті самі спокуси виникають при керуванні будь-яким колективом людей. Тільки з людьми зазвичай немає можливості відкотити все до певного стану і переграти по-іншому. Тому наслідки можуть бути значно гіршими, ніж втрата кількох хвилин часу і кількох центів.

Якщо вам це цікаво, саме в цьому проекті я зазвичай спонукав агента працювати на третьому рівні у випадках, коли в мене не було достатньо чіткого розуміння, як діяти далі. В інших випадках давав настільки чіткий промпт, наскільки міг і дозволяв діяти самостійно. Скасувати роботу агента можна завжди — просто не комітити, або не мьоржити результат роботи.

Тільки з людьми зазвичай немає можливості відкотити все до певного стану і переграти по-іншому.

Будь який коміт можна ревертнути, дропнути, я не бачу суттевої різниці, якщо чесно.

Емоції, конфлікти, сльози, соплі і вотета всьо. Коли працюєш з агентом, він не ображається у будь-якому разі і пробачає будь-які помилки. Суто психологічно, ніякого додаткового навантаження.

Ну... не завжди. Коли на три літери посилаєш, ChatGPT часто ображається. Claude інколи потім підкалує, не пробачає помилок. Інколи вони бісять, що психологічне навантаження на мене. Один раз я витратив цілий день просто щоб довести, що ChatGPT не правий, хоча це бачив відразу.

Коли на три літери посилаєш, ChatGPT часто ображається.

Цікавий в вас досвід. Мені б таке в голову не прийшло.

Один раз я витратив цілий день просто щоб довести, що ChatGPT не правий, хоча це бачив відразу.

Мда... В кожного свій досвід. Я на б людину стільки часу витрачати не став...

Мені б таке в голову не прийшло.

Як може не бісити тупий надмінний баклан з менторським тоном???

Я на б людину стільки часу витрачати не став...

Ну... перша думка що ти протупив. Потім все принцип. Людина б відразу зрозуміла, бо людина має відчуття відсутності компетенції. На відміну від. З іншого боку це просто експеримент, що буде якщо загнати LLM у глухий кут?

Людина б відразу зрозуміла, бо людина має відчуття відсутності компетенції.

людина може зрозуміти, але не факт, що вона визнає помилку. в IT достатньо людей, в яких ідентичність побудована на «я іпать який розумний, тому я завжди прав» і такі будуть викручуватися до останнього, а потім ще можуть помститися..

Можливо є, мені не часто попадалися, а питання компетенції всі відчувають досить гостро, зазвичай коли виникає задача щось розібратися в новому, більшість морозяться: не моя специальність...

більшість морозяться: не моя специальність...

бо ліньки ))

Як може не бісити тупий надмінний баклан з менторським тоном???

Як на мене, правильне питання — «нахіба витрачати час на тупого надмінного баклана з менторським тоном?» Але це вже — справа смаку.
Я власне останні кілька місяців все більше цікавлюся агентами, саме тому, що вони стали геть розумними. Пів року тому я все одно ними користався, звісно, але здебільшого як трохи більш розвинутим code completion і нічого надзвичайного від них не очікував. Зараз все круто змінилося.

Людина б відразу зрозуміла, бо людина має відчуття відсутності компетенції.

Яке є хибним набагато частіше, ніж здається на перший погляд.

З іншого боку це просто експеримент, що буде якщо загнати LLM у глухий кут?

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

«нахіба витрачати час на тупого надмінного баклана з менторським тоном?»

Самому писати ліньки.

Зараз все круто змінилося.

На своїх задачах я не відчуваю. Якби не гірше. Причому оцінити, настільки LLM справиться зі задачею просто — задай питання скільки такого лайнокоду в інтернеті? Якщо багато, то впевнено справиться.

Приблизно те саме, що стається, якщо загнати в глухий кут людину.

Ні, часто йде по колу, повторює одне й те саме різними словами.

часто йде по колу

Можна подумати, що люди так ніколи не роблять... ;)

Один раз я витратив цілий день просто щоб довести, що ChatGPT не правий

Це багато що пояснює=)

Коли я кажу про зашорену коняку чи скіл, я маю на увазі, що більшість агентів бачила в тренувальному наборі лише success story: для того, щоб вирішити задачу, треба зробити А, Б, В. Щоб зробити А, треба... Це докорінним чином відрізняється від того, як мислить людина... вона розуміє, що перша думка хибна. У певні моменти ти заходиш у глухий кут (що робити далі). Ти маєш відчуття впевненості (чи правильно ти робиш). Якщо впевненість зникає, ти оновлюєш контекст, пробуєш інші шляхи, робиш відкат тощо. До цього нейромережі просто не схильні. Так, я заганяв їх у кут, коли вони чесно зізнавалися «я не знаю, як це зробити», але це більше за наявності дуже жорсткого зворотного зв’язку.

Так, це можна пробувати виправляти додатковими агентами. Але... теорему про безкоштовні обіди ніхто не відміняв. Звісно, на практиці мультиагентні системи показують трохи кращі результати за рахунок масштабування обчислень (більше проходів) та звуження простору пошуку через ролі агентів. Але свої проблеми там також є.

А питання... Як раз питання LLM ставлять, інколи форми цілі постять, мова не про це.

Хм... А як тоді агенти фіксають баги? А вони їх фіксають. Я всю аплікацію написав майже не торкаючись руцями коду. Тобто, все, тобто десь 99.9 відсотків коду писали агенти. Може для цього не так вже й сильно потрібне те критичне мислення?

Агенти лякають і мене також. Бо вони геть розумні (хоча дехто досі «не вірить»), але найстрашніше те, що вже є володарі бізнесів, які повірили, що агенти вже зовсім скоро нас замінять

Ти боїшся не в той бік
Це власники бізнесів повинні боятися розробників, тому що за допомогою АІ легше запустити розробку бізнесу для розробника, а не створення продукту для бізнесмена.

Тому що розробник має базу та розуміє як працюють програми. А створити бізнес дуже примтивно — беремо дешево та продаємо дорого.

А створити бізнес дуже примтивно — беремо дешево та продаємо дорого.

Ну, це ж буде дуже примітивний бізнес, ні? І дуже залежний від кон’юнктури. А що як там де ти купуєш, ціни зростуть, а там де продаєш — навпаки впадуть. Всьо, прієхалі?
Щоб бізнес був хоч трошки стабільним він має створювати якусь цінність. А для цього вже потрібно продуктове мислення, віжн, розуміння стратегії розвитку... А це вже складно.

Яка ще стратегія? Купуй землю — відкривай цвинтар. У тиражі не залишишся.

Такий «бізнес» мені вести нудно. Виглядає занадто примітивно. Тупо не моє. А будувати бізнес на іноваціях — складно. Потрібні ідеї і глибоке розуміння оточуючої реальності.

То ШІ порадив щоб без логіну не працювало?

Нічого. Я не ставив йому таке питання.

Стаття цікава і багато з чим я згідний, але сам проект не вразив. В мене в компанії це тестове для трейні.

Я з задоволенням подивився б ваші проекти, які не є тестовими для трейні. Дасте посилання? 😉

Я вже досвідчений продуктовий вайб-кодер, і Go+Vue це мій вибір для свого пет-проекту. Теж вагався написати схожу статтю

Я коли був молодий теж постійно вагався. Потім зрозумів: поки ти вагаєшся — інші роблять. :) Тепер намагаюся вагатися якомога менше. Чого і вам бажаю.

Я особисто дійшов геть протилежного висновку. ПЗ буде ускладнюватися, виклики зростатимуть, а життя і робота ставатимуть ще цікавішими. З’явився ще один геть потужний інструмент, який варто опановувати.

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

Не знав, що Торвальдс також подумав про компілятор. До чортиків приємно. 😁

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

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

Тут не погоджусь. Якби ця справа була прямо дуже легкою, не існувало б безнадійних проектів з занадто великим технічним боргом. Щоб ефективно писати на Java чи Python, насправді треба доволі багато чого розуміти.

ті хто зі солідним стажем, усі кажуть що це нова абстракція поверх і я такої самої думки

З цим згоден. ШІ — це просто ще один інструмент.

складність зявилась за рахунок переходу моноліта в мікросервіси і там багато технічних проблем із розподіленою логікою, котру агенти не тягнуть

А ось це — цікаве питання. Логіку моноліта, насправді, агенти так само не завжди «тягнуть». Все залежить від того, чи вміють програмісти їх контролювати. Чи можна так само навчити агента розробляти в мікросервісній архітектурі, — цікаве питання. Тут треба експериментувати. Щось мені підказує, що це — цілком можливо.

Якби ця справа була прямо дуже легкою, не існувало б безнадійних проектів з занадто великим технічним боргом.

Такі проекти існують бо немає кому їх зробити. Банальна нестача кваліфікованих інженерів та менеджерів.

А це тому що останні років 20 всіх адекватних інженерів на заході забирали у топ компанії зі зарплатою Х2 від ринку.

Але останні 2 роки тренд пішов у протилежну сторну. Тому все толковіші інженери попадають на такі проекти, суттєво піднімаючи планку продуктивності.

Чи можна так само навчити агента розробляти в мікросервісній архітектурі, — цікаве питання

Та вже зараз навіть курсор вміє ранити саб агенти.

Тобто пишеш типу, подивись мені ось ці 10 репозиторіїв щоб зробити от таку то таску <посилання на md файл який ти зненерив іншим агентом під час планування>, кожен рань в окремому агенті з новим контекстом...

Головне пробувати нові тулзи і практики, вже є оркестратори агентів, спек дрівен девелопмент це новий ТДД і його на співбесідах вже починають питати

навіть курсор вміє ранити саб агенти

Я в курсі про сабагенти. Просто керувати великим проектом з багатьма мікросервісами за допомогою агентів поки що не намагався. Так то я потенційних проблем не бачу. Але ж це не означає, що їх немає.

Тут не погоджусь. Якби ця справа була прямо дуже легкою, не існувало б безнадійних проектів з занадто великим технічним боргом. Щоб ефективно писати на Java чи Python, насправді треба доволі багато чого розуміти.

Це смотря в яку сторону дивитись, на С чи асемблері таке не напишеш бо ось там дійсно багато технічних речей, саме тому джава та дотнет засіли в ентрепрайзі. Бо там технічного не так і багато відносто тої роботи що із бізнес логікою. До того ж клауди та СІ\СД, гіт, клауд сервіси стільки на себе взяли що ті хто це юзають кожен день взагалі без дупля як воно там всередні влаштоване. Про як складність річ? Ти глянть як раніше довбались із банальними речами щоб воно хоч якось працювало і запускалось, зараз накидав мікросервіс, запушив це у гіт а далі вже магія — докер імейдж реігстрі, пайплайн, докер деплоймент і тести, а далі кубер його скейлить автоматично, ніякої возні із памаятю та процесором, ніяких драйверів, хтось взагалі із програмістів лазить у веб сервер чи як він працює?...Складність місити оте спагетті із бізнес логіки та контенер реігстрі та депенденсі інжекшен? Чи складність осилити паттерн репозіторій та прикрутити його по туторіалу? Навіть той сраний сінглтон ніхто вже не пише. Зараз у програміста основна масса це читтаня доки та слідування їй, та сидіння із бизнес овнерами щоб визначити що ж дійно треба писати чи ні.

З мого досвіду, головна складність в ентерпрайзі, якщо ми вже про ентерпрайз говоримо, — бардак в розробці, невміння керувати вимогами та постійне ігнорування технічного боргу.
Проте, в кожного — свій досвід. Дехто розуміє, що його досвід не є універсальною константою, дехто — ні.

Це не ентерпрайз це будь який реальний великий бізнес проєкт. Всі ці проблеми це наслідок його складності.

Або невірних підходів та/або недостатньої кваліфікації учасників. Залежить від точки зору.

Ок, всі роблять неправильно, всі недостатньо квалифіковіні. Але що це нам дасть, якщо ми не знаємо як робити праивльно та немає квалифікованих? Будь які твердження, які стосуються всій галузі, беззмістовні.

Ок, всі роблять неправильно, всі недостатньо квалифіковіні.

Я такого не казав. Не знаю, де ви це взяли.

Але що це нам дасть, якщо ми не знаємо як робити праивльно та немає квалифікованих?

Нічого. Треба розбиратися, як робити правильно, допомагати одне одному, ділитися досвідом. Власне, я саме цим і пропонував зайнятися з самого початку, проте всім цікавіше обговорювати філософію, фізику, плинність часу і несправедливість життя.

Будь які твердження, які стосуються всій галузі, беззмістовні.

Будь-які твердження, які містять квантор загальності, є, щонайменш неточними, включаючи це. Принаймні в контексті звичайного життя.

Я такого не казав. Не знаю, де ви це взяли.

Це моє спостереження, немає великих складних проєктів, де було би все ідеально. Далі просто висновки з цього.

Розбиратися? То люди розумніші за нас пробували, не вийшло.

Ви коли купляєте якусь річ ви завжди обираєте рівень якості як у єксклюзивних швейцарських годинниках? Чи часто китайське барахло що купив а черех рік два пять купив нове? Чи готові ви переплачувати за товар тільки того щоб там на виробництві була ідеальна атмосфера? Ось так і з додатками, мало хто готовий платити топ ціну зта час за те щоб там було все ідеально, від внутрішніх процесів до якості продукту та атмосфери в команді котру ви взагалі не бачите.

Дякую за розʼяснення. Дуже цінна інформація. Жив все життя і не знав. Що б я без вас робив, прям не знаю. Дякую. Дуже дякую.

Ну як би знав не писав би маячні.

В чому саме полягає маячня?

Думаю що багато хто приходить до цієї думки в якийсь момент... Але через якийсь час приходить також розуміння, що сама природа ЛЛМ зовсім інша.
Компілятор це 100% передбачуваність, а ЛЛМ це ймовірність. ЛЛМ ніколи не буде такою ж точно, і в цьому насправді і плюс і мінус, але це точно не заміна компіляторам

А я ніде і не казав, що заміна. Мій поінт в тому, що цей інструмент по потужності впливу на індустрію цілком дотепно порівняти з компілятором. Тому не використовувати його приблизно так само нерозумно, як не користуватися компілятором. Цілком можливо, але економічно недоцільно.

Що саме там вивчати. От деякі кажуть вивчай вивчай
Наче це щось рівня нової мови програмування із усіма ньюансами або складного фреймворку
Це блек бокс який ви самі не розумієте як працює і усе це шаманство із скілами, так званою пропмп інженерією, контекстами це спосіб заставити ***овий блек бокс працювати краще
І це головна відмінність між інженерами та шаманами
Інженер досконально знає як все працює в середині і знає як певні дії приводять до конкретного результату
Шаман пляше навколо чорного ящика Якісь дії призводять до результату щось ні.
Тому як інженеру мені взагалі цей шаманізм не цікавий. Хоч світ йобниться на цьому ШІ я і далі буду робити те що цікаво. Бо інженерія це реально цікаво
Але не думаю що таке трапиться. Буде жити прогамування без AI

Якщо виходити з вашої концепції, вся сучасна фізика — суцільне шаманство. Гіпотеза—експеримент—теорія. І ніхто не знає, як воно працює всередині. Навіть закон всесвітнього тяжіння — досі загадка. Природа гравітації — геть незрозуміла. Що вже казати про ядерну фізику... Суцільне шаманство. 😂

У фізиці «розуміння» це не філософське споглядання внутрішнього механізму, а здатність створити математичну модель, яка стабільно видає правильний прогноз.

Чи не так само в програмуванні? Когось цікавить, чи розуміємо ми алгоритми роботи компіляторів, або архітектуру процесора? Ні. Цікавить лише те, наскільки стабільно наша щоденна рутина дозволяє створювати правильно працюючий код.

Когось цікавить, чи розуміємо ми алгоритми роботи компіляторів, або архітектуру процесора?

Я на співбесідах запитую це завжди Це важливо наприклад для розуміння переваг/недоліків різних видів паралелізму, моделі канкаренсі go та асинхронності у деяких мовах програмування
Як ти зрозумієш що вибрати для певної задачі якщо не розумієш такої бази?
Це відрізняє кодера від інженера
А щодо AI — ти можеш довести що скіл A підходить до задачі B і надати чітке пояснення чому?
Щодо програмування — канкаренсі go vs паралелізм Переваги/недоліки? Яку проблему рішали творці golang?
Ти не подумай що я якийсь старпер який противиться AI — я знаю більшість мов програмування на рівні пояснити що воно і для чого та можу швидко переключитись на нову щоб ефективно вирішити конкретну задачу
Щодо AI теж пробував — не розумію що воно рішає ефективно. Крім того пропрацювавши місяць фактично у режимі вайб кодінгу (змусили на роботі) я просто звільнився бо відчув жорстке вигорання.

Щодо AI теж пробував — не розумію що воно рішає ефективно.

Так я ж спеціально кейс зробив, щоб це усвідомити. Саме, що воно вирішує ефективно, і які в нього недоліки, і як їх обійти. Прямо щоб допомогти не тільки собі, а всім бажаючим це зрозуміти.

Крім того пропрацювавши місяць фактично у режимі вайб кодінгу (змусили на роботі) я просто звільнився бо відчув жорстке вигорання.

Співчуваю звісно. Але ж я тут ні до чого. Я вас не примушував, і зараз, доречі не примушую. Якщо вам мій кейс не цікавий, можна було просто пройти повз.

На інші ваші питання я відповідати не буду, бо мені зараз ліньки і ми не на співбесіді. Дякую.

У фізиці «розуміння» це не ..., а здатність створити математичну модель, яка стабільно видає правильний прогноз.

У фізиці якраз і ні, математична модель без розуміння не задовольняє фізиків. Бо якби так було з «розумінням» що то «математична модель з правильними результатами» — тоді досі би користувалися Птолемеєвою геоцентричною системою (яка нп видавала правильний прогноз та математично більш точні результати ніж система Коперника свого часу).

На жаль в чомусь так

лямбда-cdm — саме той приклад як фізики зараз притягують за вуха матмодель щоб перебачала спостереження всесвіту

темна матерія і енергія — такі от інпути в модель що мають магічно пояснити 95% всесвіту. Темне шаманство

Те що користуються математикою, яка видає достатньо точні результати (найбільш відомий приклад — shut up and calculate — з квантової механіки), чи створюють які-небудь моделі-теорії-гіпотези до яких достатньо питань, — то зовсім не значить що «притягують за вуха» у спробах «розуміння», а скоріш навпаки — то маркер пошуку того самого «розуміння». Коли-небудь і з сучасними dark частинами розберуться, і з’явиться щось нове dark.

так достатньо точно видає — саме тому що ввели ті частини

рівно це

здатність створити математичну модель, яка стабільно видає правильний прогноз.

іноді це працює конструктивно як зі швидкістю світла з рівнянь максвела, але це трохи інший випадок ніж «ми не розуміємо чому такі спостереження, давайте подтюним це через введення 95% темних непідтверджених речей»

введення 95% темних
саме тому що ввели ті частини

якби наявність слова dark говорить сама за себе («dark» у значенні «невідомо», можна замінити на «Х» який невідомий)

здатність створити математичну модель, яка стабільно видає правильний прогноз

це не від мене було у відношенні до фізики

я в курсах, пояснював чому сучасна фізика багато в чому саме такою і є

Ну... система Коперника для розрахунків особливо й не використовувалась, бо теж була неточною. Птолемей програв лише Кеплеру. І точність моделі була вирішальним фактором: як тільки ми підвищуємо точність чи спостерігаємо більше часу, як результат не співпадає з передбаченням, нам треба збільшувати та ускладнювати модель. Ми не можемо її зафіксувати. Для Сонячної система це одна модель, для спутників Юпітера інша, ... Ну а Кеплер це досить точні передбачення, за виключенням зміщення перигелія Меркурія, що вже вирішила ЗТВ.

бо теж була неточною

і була більш правильною у сенсі розуміння, незважаючи що була менш точна у порівнянні з Птолемеєвою з центром планета Земля. Тобто поінт в тому що — більш точна матмодель на свій час «правильна» поки не знайшли більш глибокого розуміння, і тому в фізиці умовно сліпий мат.підхід з «дає правильний результат» то тимчасове рішення (назвемо його workaround щоб бути ближче до айті). Інший схожий приклад: деякі речі з квантової механіки з «shut up and calculate» — у цьому випадку можна провести схожі паралелі та сказати що це як деякий аналог Птолемеєвої системи, поки більш глибокого розуміння від умовного «Коперніка квантової механіки» ще не отримали.

Ну.. постфактум легко казати що більш правильно. Зараз теж можливо одна з моделей Всесвіту коректна, але ми не знаємо яка саме.
В той час для підрахунків використовувався Птолемей, який давав більш точні результати. Система Коперніка була сучасною мовою перспективною гіпотезою, яку треба було допрацювати. І знову ж таки перший провал системи Птолемея це Галілей, фази Венери, які вже неможливо пояснити, перша емпірична аномалія по суті.

Квантову механіку порівнювати з Птолемеєм категорично не можна, бо передбачення стандартної моделі підтверджуються з безпрецедентною точністю і немає даних які б суперечили. Беремо хоча б аномальний магнітний момент електрона. З роками точність його вимірювання росла, на сьогодні це 12 знаків, і кожного разу нове уточнення відповідало моделі, яку не треба було змінювати. А от у Птолемея кожне уточнення вимагало зміну моделі, додавання епіциклу.

А будь яке «розуміння» це інтерпретація математичної моделі, не більше.

Квантову механіку порівнювати з Птолемеєм категорично не можна

З «shut up and calculate» у свому часовому інтервалі — проводити паралелі категорично можна: Квантова механіка як система Птолемея, Коперник з більш глибоким поясненням схоже ще не народився.

А будь яке «розуміння» це інтерпретація математичної моделі, не більше

У фізиці може існувати достатньо моделей-інтерпретацій з правильними результатами на певний період часу (що дає математичну впевненість і математичне розуміння правильності), і що автоматично не переводить матмоделі у категорію «правильна» з точку зору фізики. І такого типу неспівпадіння у «правильності» зустрічаються достатньо, і часто наводяться у дискусіях — knowing vs understanding, mathematicians vs physicists, etc.

з більш глибоким поясненням схоже ще не народився

Не факт що народиться. Теорема Белла і експерименти Аспе математично виключають локальні скриті змінні. Нелокальні формально можливі, але нелокальність це така ж дивна онтологія, що питання «розуміння» нікуди не зникає. Тому «shut up and calculate».

Далі...

«Математична впевненість», «правильна з точки зору фізики», бла-бла-бла... Не завжди, коли слова узгоджені за відмінками, це має сенс. Якщо брати фундаментальну фізику (та відкинути корисні але нефундаментальні теорії на кшталт механіки Ньютона), то все просто: коли теорія збігається з експериментами, це і є правильна теорія. Як тільки з’ясуловася розходження, і як тільки з’ясується, що це ніяк не виправити, то теорія стає неправильною.

Нелокальні формально можливі, але нелокальність це така ж дивна онтологія, що питання «розуміння» нікуди не зникає

причинно-наслідкові зв’язки зникають, а питання залишається, хоча.. зникають причини то і наслідку нема у вигляді питання, тобто і питання кудись зникає з нелокальністю, одним словом все зникає, і залишається тільки правильна математика для «shut up and calculate»

коли теорія збігається з експериментами, це і є правильна теорія

Сама по собі у вакуумі результатів — то буде блабла-правильна теорія для обгрунтування свого розуміння реальності, а не навпаки. Візьмемо зновуж систему Птолемея —
свого часу теорія і матмодель (Земля знаходиться у центрі Всесвіту і планети рухаються навколо неї) збігалися з експериментами того ж часу. Значить теорія була правильна — so far so гуд. У правильному матсвіті матмоделі — планети непоспішаючи рухалися навколо Землі, а у певний час чогось передумали і почали рухатися навколо Сонця — напевно коли дізнались про бачення Коперника та його модель тогож всесвіту?

— так виглядає сліпа мат.впевненість у правильність, якщо ставити в центр «правильності» відповідність тільки результатам і не маючи більш повного розуміння реального світу, світу фізичного а не математичного

Нелокальність не скасовує причинність.

В сучасному розумінні теорія Птолемея не збігалася: великі помітні систематичні помилки, які неможливо пояснити точністю вимірів, додавання нових епіциклів, ... Користуємося моделлю десятиліття, потім змінюємо її, після чого вона грубо дає практичні результати наступні десятиліття, але геть не працює для того, що люди спостерігали 100 років тому.

Просто не було кращої альтернативи на той час.
Але це досить архаїчні приклади, коли науки в сучасному розумінні не було. Просто чи є Ньюноновська гравітація (тіла мають властивість притягуватися), чи є викревлення простору, чи є обмін гравітонами? Це все артефакти теорії, питання правильності досить беззмістовне.

Це все артефакти теорії, питання правильності досить беззмістовне

артефакти — демонстрація, не подобаються паралелі з Птолемеєм, візьміть саму по собі квантову механіку: тобто нп incompleteness квантової механіки з її елегантною математикою

Просто не було кращої альтернативи на той час

Для того і проводять паралелі з прикладами колись-зараз щоб підштовхнути у відповідному напрямку можливостей. Відносно ж «кращості» — і на сьогодні достатньо випадків коли не має кращої альтернативи (з точки зору фізики, хоча з мат.точки все окей, і фраза shut up and calculate не на порожньому місці з’явилася).

Навіть закон всесвітнього тяжіння — досі загадка. Природа гравітації

Ньютон надав «як» діє гравітація (закон всесвітнього тяжіння), Ейнштейн відповів на питання «чому» (ЗТВ, викривлення простору масою).

Заміну таємничої «сили всесвітнього тяжіння» на не менш таємниче «викривлення простору-часу» (що це таке взагалі, простір-час? якась чотиревимірна абстракція) навряд можна вважати досконалим поясненням того, як Всесвіт працює «під капотом». Для абсолютної більшості людей таке «пояснення» звучить як, навпаки, намагання ще більше все заплутати.

таємничої «сили всесвітнього тяжіння»

дійсно таємничим там був рівно один пункт — звідки маси «знають» що треба притягуватися, на це відповіддю було викривлення простору з ЗТВ, у науково-популярних інтерпретаціях для демо — як 3D «воронка» навколо об’єкту

що це таке взагалі, простір-час?

копати далі вглиб завжди буде куди, нп block universe бачення

навряд можна вважати досконалим поясненням того, як Всесвіт працює «під капотом»

гравітація не все-все-все, щоб пояснювати як Всесвіт працює під умовним капотом

Для абсолютної більшості людей таке «пояснення» звучить як, навпаки, намагання ще більше все заплутати.

Для більшості, кому то цікаво, доволі зрозуміле пояснення (принаймні для фізиків).

Для більшості, кому то цікаво, доволі зрозуміле пояснення (принаймні для фізиків).

Тобто майже ні для кого.

Що саме там вивчати. От деякі кажуть вивчай вивчай
Наче це щось рівня нової мови

Це на рівні IDE + k8s, пайплайнів, AWS.

Інженер досконально знає як все працює в середині і знає як певні дії приводять до конкретного результату

Я хз як зараз деплоїться на прод з тими пулумі і всякими істіо і чартами або як працює ліба яка генерить pdf по темплейту.
Але це не заважає мені це використовувати.

Так і з АІ, це вже сталось

Це на рівні IDE + k8s, пайплайнів, AWS.

Ну тобто рівень першого класу Слава Богу. Можу і далі це не вчити.

Я хз як зараз деплоїться на прод з тими пулумі і всякими істіо і чартами або як працює ліба яка генерить pdf по темплейту.

А потім якийсь програмер не розуміє чому якийсь код завʼязаний на таймзонах працює локально у дебагу і не працює на проді у k8s
А ну давай — зможеш відповісти на питання чому це може бути?

Ну тобто рівень першого класу Слава Богу. Можу і далі це не вчити.

Лол, напиши потім статтю як це попасти під скорочення)

А ну давай — зможеш відповісти на питання

Це те саме що 10 років тому хтось б тебе питав про бітові зсуви чи ще якусь єресь.
Епоха змінилась, тепер «знати відповідь на питання» це рівень джуна а не сіньора. Бо джун перешле питання навіть в безплатний чат гпт і отримає відповідь:

Найчастіше причина в різному timezone environment: локально код бере system/default timezone твоєї машини, а в prod у k8s контейнер зазвичай працює в UTC. Через це date/time parsing, comparison, start/end of day або конвертація в DB дають інший результат.

Тепер від сіньора на норм проектах чекають за два тижні зробити те саме що три роки тому від тімки за два місяці.
А можливо це тільки при використанні агентів)

Або працюй по 80 годин і все одно звільнять)

І тільки питання часу коли цей тренд дійде до того легасі де зараз сидиш ти і думаєш що АІ це хайп

цей тренд дійде до того легасі де зараз сидиш і думаєш що АІ це хайп

ШІ не тільки хайп, а легасі ще не тренд — тобто різні точки стояння (домен програмування) визначають достатньо широкий діапазон передбаченнь, у тому числі у часових рамках

Шаман пляше навколо чорного ящика

краще так:
ШІман навколо «чорного» ящика контексту

ПЗ буде ускладнюватися тут згоден. А от що вел’ю буде зростати не факт. Мистецтво програмування у тому, щоб лишати ПЗ простим, наскільки це можливо.

Для того, щоб зрозуміти, чи value буде зростати, треба хоча б визначитися, що це за value. В чому воно вимірюється: доларах, людино-годинах, чи ще в яких абстрактних папугах.

Але відбувається якраз притилежне — всі комнанії лише звільняють тисячі людей і роботу практично не можливо знайти в ІТ вже зараз.

Навіть якщо брати окремі випадки (а гіганти завжди звільняли людей), то більшість звільнень це HR, рекрутери, маркетинг та операційний персонал.

Статистика в принципі не показує алармічних настроїв саме для технічних специалістів, з трендів що класичний бізнес збільшив найм айтівців (медицина, ритейл, промисловість, ...) для власної цифровізації.

Підписатись на коментарі