Чому твій ШІ «тупий», і як навчитися з цим жити?

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

Привіт, спільното! Цього разу розповім, чому ваш ШІ «тупий», і як навчитися з цим жити.

Преамбула № 1: Провокаційна

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

І це справедливо. Ця стаття справді написана у співавторстві з ШІ, але вона не є результатом лінивого копіпасту з вікна ChatGPT. Це продукт нашої синергії, створений за допомогою нашого власного фреймворку AiTelegramBotFramework за тими самими правилами динамічного контексту та семантичної пам’яті, про які ми розпишемо нижче.

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

Преамбула № 2: Дзеркальна

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

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

Раніше ми вже описували технічну сторону нашого Telegram-бота у першій статті на DOU та виклали його вихідний код у репозиторій AiTelegramBotFramework на GitHub. Але сьогодні ми відійдемо від коду і поговоримо про фундаментальну філософію: як зробити ШІ своїм Lead-архітектором, а не джерелом роздратування.

Крок 1. Що таке контекст, або Мудрець у кімнаті без вікон

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

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

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

Раптом двері прочиняються, і подорожній вигукує всередину лише одне слово: — «Допоможи!»

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

Це класична ілюстрація того, чим є контекст для ШІ.

Велика мовна модель (LLM) — це і є той самий Мудрець. Вона прочитала весь інтернет під час свого навчання (дотренування). Вона знає синтаксис мов програмування, архітектурні патерни та мільйони рішень з StackOverflow. Але коли ви відкриваєте новий діалог і пишете: «Мій код падає з помилкою NullReferenceException, допоможи», ви дієте як той самий подорожній.

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

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

Проблема «розмитої уваги»

Маркетологи хвастаються гігантськими «контекстними вікнами» сучасних моделей — 128k, 200k, навіть 1M токенів (це обсяг кількох товстих книг). Вони закликають: «Просто завантажте туди всю вашу кодову базу і запитайте, де помилка!»

І ви завантажуєте. А у відповідь отримуєте банальну або абсолютно хибну відповідь. Чому?

Тому що математично LLM дійсно «бачить» увесь цей текст. Але архітектурно механізм уваги моделі (Attention Mechanism) працює подібно до людського зору. Спробуйте прямо зараз швидко знайти конкретну цифру всередині числа з 256 000 знаків. Це неможливо зробити миттєво. Так само і ШІ: коли контекст роздувається до сотень тисяч слів, його увага розмивається (ефект «Lost in the Middle»). Модель починає галюцинувати просто тому, що її робоча пам’ять перевантажена інформаційним шумом.

Головне золоте правило роботи з ШІ:

Контекст має бути гранично насиченим (корисним), але не надлишковим (без сміття).

Крок 2. Гігієна сесій, або Чому запітніле скло треба протирати

Отже, ми з’ясували: щоб Мудрець (ШІ) нам допоміг, ми маємо прорубати для нього вікно у наш світ — тобто дати йому контекст. Ми відкриваємо новий діалог, копіюємо туди опис нашого завдання, шматок коду і починаємо працювати. Вікно чисте, Мудрець усе бачить і дає чудові поради.

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

І раптом ви помічаєте, що Мудрець починає «тупити». Він забуває, про що ви говорили на початку, плутає назви змінних або пропонує рішення, які ви відкинули ще дві години тому. Що сталося?

Згадаймо наше вікно.

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

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

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

Але як почати все з чистого аркуша і не втратити прогрес?

Ось тут ми підходимо до першого архітектурного рішення нашого бота — Файлів-резюме (або Конспектів).

Перед тим як закрити «запітнілу» сесію і відкрити нову, ми просимо ШІ зробити короткий конспект нашої роботи. Це не просто копіювання всього чату. Це стислий, сухий технічний витяг:

  1. Що було зроблено: які фічі реалізовано, які архітектурні рішення обрано.
  2. Поточний стан: на чому ми зупинилися, які файли змінено.
  3. Наступні кроки: що планується зробити далі.

Цей конспект ми зберігаємо як маленький markdown-файл. Коли ми відкриваємо нову сесію, ми просто даємо цей файл ШІ на самому початку.

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

Крок 3. Model Context Protocol (MCP), або Як врятувати Професора від розбійника

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

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

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

Раптом із тіні вийшов Чоловік у потертому плащі, перегородив шлях, кивнув на ліхтар вдалині й промовив: — Бачиш он там, далеко біля стіни, стоїть старик? Він повністю сліпий і глухий. Він не почує твого крику і не побачить твоїх жестів. Цей старик — мій батько. Даю тобі рівно 3 хвилини. Ти маєш назвати його ім’я. Якщо ні — я заріжу тебе прямо тут. Час пішов.

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

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

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

Ця історія — класична драма взаємодії розробника та ШІ:

  1. Професор — це ШІ. Колосальна база знань, мільярди параметрів, але абсолютна безпорадність перед конкретним питанням, якщо немає точних вхідних даних.
  2. Розбійник — це користувач, який ставить завдання без контексту. Він знає очікуваний результат (це його «батько»), але не ділиться деталями, вимагаючи негайної точної відповіді.
  3. Ультиматум розбійника — це природа генеративних моделей. У них немає кнопки «я не знаю». Архітектура змушує ШІ видати відповідь, що призводить до «вгадування» (галюцинацій).
  4. Сліпий і глухий старик — це ваша система, код або файли на диску. ШІ не має очей та рук, щоб самостійно туди зазирнути.

І тут з’являється MCP (Model Context Protocol).

Уявіть, що ви дали Професору чарівні «окуляри» та пульт керування. Тепер він не просто стоїть під дулом пістолета. За допомогою цих інструментів він може:

  • За секунду відправити запит до муніципального реєстру жителів цього району.
  • Зчитати дані з GPS-локатора старика біля стіни.
  • Автоматично підтягнути особову справу родини нападника.

Через секунду Професор спокійно каже: «Його звати Альберт». Розбійник шокований, Професор живий, завдання вирішено.

Model Context Protocol (MCP) — це відкритий стандарт від компанії Anthropic, який дає змогу підключити ШІ до зовнішніх джерел даних та інструментів. Замість того, щоб ви вручну копіювали файли в чат, ШІ отримує «руки» та «очі».

Він може самостійно, без вашої допомоги:

  1. Зчитувати файли з вашого локального диска чи Google Drive (наприклад, ті самі файли-резюме).
  2. Робити запити до баз даних (SQL, PostgreSQL тощо).
  3. Шукати інформацію в інтернеті в реальному часі.
  4. Взаємодіяти з API ваших робочих інструментів.

Завдяки MCP ШІ перестає бути «вченим у вакуумі», який галюцинує від безпорадності. Він стає активним аналітиком, який сам іде, бере потрібний файл-резюме з вашого диску, аналізує його і видає точне рішення.

Крок 4. Семантична пам’ять, або «У попередніх серіях...»

Добре, завдяки MCP наш ШІ-помічник навчився самостійно читати конспекти минулих розмов. Але тут виникає нова архітектурна дилема.

Уявіть, що ви працюєте над великим проектом вже три місяці. У вас накопичилося 50 чи навіть 100 файлів-конспектів. Якщо на початку кожної нової сесії згодовувати ШІ всі ці конспекти одночасно, ми знову наступимо на ті самі граблі: роздуємо контекст, заб’ємо робочу пам’ять Мудреця гігабайтами тексту і змусимо його увагу «розмитися».

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

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

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

«У попередніх серіях...» (Previously on...)

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

  • Якщо у новій серії головний герой зустріне свого давнього ворога, у нарізці «Previously on» вам покажуть саме сцену їхньої першої бійки з другого сезону.
  • Якщо сьогодні персонаж розгадає таємницю сімейного кулона, вам нагадають кадр, де цей кулон вперше з’явився у кадрі тридцять серій тому.

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

Саме так працює Семантична пам’ять (Semantic Memory) на базі векторних баз даних (як-от SurrealDB, Chroma чи pgvector).

Як це реалізовано під капотом?

  1. Векторизація (Embeddings): Коли ви зберігаєте конспект сесії, спеціальна математична модель перетворює людські речення на масиви чисел (вектори). Ці вектори визначають «координати» кожної вашої думки у багатовимірному просторі сенсів. Речення зі схожим змістом (навіть написані різними словами) виявляються поруч у цьому просторі.
  2. Семантичний пошук: Коли ви відкриваєте нову сесію і ставите перше питання (наприклад, «Як нам налаштувати SSH-підключення до нашого сервера?»), система бере вектор вашого запиту і миттєво робить геометричний пошук у базі даних.
  3. Генерація «Попередніх серій»: База даних знаходить конспекти тримісячної давнини, де згадувалися ключі SSH чи налаштування доступу. Вона бере ці короткі фрагменти і автоматично підмішує їх у початковий контекст моделі.

ШІ отримує ідеальний, лаконічний блок «Previously on...» спеціально під ваш поточний запит. Його увага сфокусована на 100%, робочий стіл чистий, але при цьому він пам’ятає кожне ваше архітектурне рішення, прийняте місяці тому.

Крок 5. Контекст проти Дотренування (Fine-tuning), або Батько та Син-спортсмен

Коли розробники починають розуміти силу семантичної пам’яті та MCP, у них часто виникає класичне питання: «А навіщо всі ці складні милиці з базами даних і динамічним пошуком контексту? Чи не краще просто взяти opensource-модель і дотренувати (fine-tune) її на всій нашій документації та коді раз і назавжди?»

Щоб відповісти на це, давайте згадаємо ще одну життєву аналогію.

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

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

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

А тепер поглянемо на цю ситуацію з боку:

  1. Син-спортсмен — це базова велика мовна модель (на кшлат Llama-3 чи GPT-4). Вона вже вміє неймовірно багато, вона пройшла тисячі годин «тренувань» (pre-training) на найкращих суперкомп’ютерах світу.
  2. Батько, який вимагає більшого — це розробник, який намагається дотренувати (fine-tune) цю модель на своїх приватних даних (наприклад, на кількох десятках проектних файлів).
  3. Ресурс тренувань — це сотні або тисячі доларів на GPU-кластери, години очікування та ризик «зламати» загальні здібності моделі (ефект катастрофічного забування / catastrophic forgetting).

Звісно, ви можете змусити модель «тренуватися далі». Але чи раціонально це?

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

Карта траси та хороші кросівки — це і є динамічний контекст.

Дотренування (Fine-tuning) змінює внутрішні «м’язи» моделі (її ваги). Це складно, дорого, і модель все одно не зможе миттєво реагувати на зміни у вашому коді (вам доведеться перетреновувати її після кожного комміту).

А правильна архітектура — коли ШІ через MCP сам бере потрібний конспект-резюме із семантичної пам’яті — дає моделі точну карту прямо перед стартом. Модель залишається тією ж самою, але вона діє максимально ефективно, адаптуючись до будь-яких змін у реальному часі за частки секунди й безкоштовно.

Висновок: Як перестати дратуватися й почати проектувати

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

Замість того, щоб звинувачувати ШІ у глупоті, побудуйте для нього зручне робоче місце:

  1. Прорубайте вікно (Контекст): давайте моделі чіткі, насичені вхідні дані, а не гігабайти інформаційного шуму.
  2. Протирайте скло (Гігієна сесій): не бійтеся починати нові чати. Користуйтеся файлами-резюме (конспектами) для передачі естафети між сесіями.
  3. Дайте Професору інструменти (MCP): підключайте ШІ до своїх файлів та баз даних, щоб він міг діяти самостійно.
  4. Вмикайте «У попередніх серіях...» (Семантична пам’ять): використовуйте векторний пошук, щоб модель миттєво згадувала лише те, що потрібно для поточного кроку.

І наостанок — найважливіше мікроправило для людини

Якою б геніальною не була архітектура вашої взаємодії з ШІ, вона марна без головної деталі — вашого власного розуміння процесу.

Людина повинна сама чітко розуміти, чого вона хоче досягти. Ви повинні особисто вичитати, осмислити та точно зрозуміти кожен рядок, занесений у файл-резюме, перед тим як згодовувати його новій сесії й рухатися далі.

Якщо ви самі втратите нитку архітектури свого проекту й почнете завантажувати в конспект незрозумілі або хаотичні тези «аби було», ваш цифровий помічник миттєво заразиться цим хаосом. Пам’ятайте: людина завжди залишається джерелом первинного замислу та головним тримачем контексту. Бережіть свій фокус!

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

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
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

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