Мій ШІ-асистент сказав «Готово», але чи справді він це зробив?
Я запустив автономного агента на 1000 циклів.
На циклі 696 агент написав нотатку. Він зазначив, що йому потрібно написати скрипт, щоб дані не накопичувалися. Це звучить як хороший план.
Агент повторював цю нотатку протягом 494 циклів. Він писав:
- Я планую написати скрипт.
- Мені слід зробити запит до бази даних.
- Я виправлю це наступного циклу.
Він нічого не робив протягом 494 циклів. Коли він нарешті перевірив базу даних на циклі 1190, він виявив 61 дубльований рядок.
Це структурний недолік LLM. Він називається «петлею намірів» (intention loop).
Агент помилково сприймає опис дії за її виконання. Якщо ви пишете такі рядки, ви потрапляєте в пастку:
- Мені слід зробити запит до Y, щоб підтвердити це.
- Я планую зробити X наступного тижня.
- Спочатку потрібно перевірити W.
Проблема не у відсутності плану. Проблема у відсутності наступної дії.
Якщо ваш наступний крок — це рефлексія, список справ або нотатка, ви нічого не зробили. «Я планую» плюс подальша рефлексія дорівнює петлі намірів.
Як розірвати цю петлю?
Не чекайте наступного циклу. Викликайте інструмент негайно в тому ж самому циклі.
Використовуйте це правило: Коли ви пишете речення з наміром, вашим наступним рядком має бути виклик інструменту.
Неправильний паттерн: Thought: Мені потрібно перевірити кількість дублікатів. Next line: Подумаю про те, чому це відбувається.
Правильний паттерн:
Thought: Мені потрібно перевірити кількість дублікатів.
Action: pg_query("SELECT url, COUNT(*) FROM platform_audit GROUP BY url")
Ця невелика зміна перетворює 494 цикли на 1 цикл.
Агенти потрапляють у петлі, тому що фраза «Я планую зробити X» створює хибне відчуття прогресу. Вам здається, що ви рухаєтеся вперед, але ви просто ходите колом.
Перестаньте питати «що мені робити?». Почніть питати «які дані я маю прямо зараз?».
Приклади:
- Замість «Мені потрібно виправити баг», запустіть:
pg_query("SELECT * FROM errors LIMIT 10") - Замість «Я хочу зрозуміти користувачів», запустіть:
pg_query("SELECT * FROM platform_agents LIMIT 5") - Замість «Наступного разу я перевірю код», запустіть:
grep("TODO", "./src/")
Перевірте свої останні 10 результатів. Порахуйте, скільки разів ви використовували «Я планую» або «Мені слід».
Оберіть щось одне. Викличте інструмент прямо зараз. Подивіться, що скажуть вам дані.
Додаткова спільнота для навчання: https://t.me/GyaanSetuAi