Атамовыя графы заданняў: планаванне работы агента як граф залежнасцяў
Як фрэймворк Atomic Task Graph разбівае задачы агента на вузлы з пазначэнням типа, сімулюе планы і выправляе толькі неудачныя падграфы, каб дапамогчы маленькім відкрытым моделям конкуруваць.
Крыніцы: This New AI Framework Turned 7B Models Into GPT-4 Competitors (Without Any Training)
Большая частка спроб зробіць агенты LLM болей надзеянымі пачынаецца з викорыстання большога модэлю. Фреймворк Atomic Task Graph (ATG), запропанаванный дакладчыкамі з Універсітэту Цінхуа і Паўденнага тэхнічнага універсітэту Кітаю, пачынае з іншага: ён зміняе спосаб, яким агент структуруе свою роботу. За дакладам, модэлі 7B і 8B з адкрытым кодам, запакаваныя ў ATG, перамагаюць GPT-4, які працуе за стандартным цыклам ReAct, у двух вядомых тэстах агентоў, без жадных налаштавань, навучэння па адзынкам чы пераканання ваг, усё гэта. Нижчэй: чаму лінейныя ланцюгі разумовых выводоў не функцыонуюць, як ATG заменяе іх графам залежнасцей, і якія ідеі можна запозычыць для своіх агентоў.
Чаму лінейныя цыклы агентоў не працуюць пад час вялікіх заданняў
Разглянем такі запит, як «стварыць адчыт пра продажы за 2024 год з дыяграмамі». Типовы агент у стыле ReAct спрацоўвае гэта як адну довгую серію крокаў, кожны з якіх залежыць ад пярэднега.
Step 1
↓
Find database
↓
Query data
↓
Analyze numbers
↓
Create graphs
↓
Write report
Ланцюг застосункоў працуе нормальна, якшо кожны з етапаў завершыцца успешна. Проблемы пачынаюцца, калі хоць адны з іх не задаеся. Якшо запит да базы дадзеных не задаеся, кожны наступны етап будуе на недастатковых або некоректных данных.
Database query
↓
Everything after it becomes wrong
У такі момент агент можа або пачаць занова з самага початку, або продаваць далей на основе таго, што ў яго є. Большасць выбірае другой варыянт, і гэта є важлівым джерелам галюцинацый: модель стварае правдападобныя даны, каб запаліць прасоўку, а кожна наступная рашэнне успадковуе гэтую памылку.
Контекст продовжвае растаць
Другая проблема — як гэтыя агенты зберагаюць стан. Пасля кожнай дзеяння мысль, вызов інструмента і спостерэнне дадаюцца да ўсе большага запису.
User
↓
Thought
↓
Action
↓
Observation
↓
Thought
↓
Action
↓
Observation
↓
Thought
↓
Action
Зрэшты, модель аналізуе вялікі об'ём історыі. Контэкст стае пераплутаным, а ранніяі памылкі застаюцца виднымі, таму яны продовжваюць вплываць на пазнейшыя рашэнні. Як у гэйме «тэлефон», кожны раунд лёгкая спакісвае план, пакуль ён не адхіляецца ад рэальнасці.
Основная ідея: граф у замену ланцюгу
ATG заменяе адзінную последовальнасць на граф задач. Кожны вузол — это адна единіца роботы, а кожная грань фіксуе залежнасць між двумя единіцамі.
Report
/ \
Analysis Charts
/ \
Database Statistics
Такая структура робіць незалежнасць видной: некалякуючыя між сабою задачы больш не чакаюць, а памылка ў однай з галузей не робіць недзеяснымі іншыя задачы той жа галузі.
Як ATG стварае і запускае граф
Фрэймворк працуе у пяці етапах.
1. Рекурсыўныя дэкомпазіі на атамарныя задачы
Усё пачынаецца з запиту пользователя.
Create sales report
ATG дзеліць гэту мету на падзадачы.
Create sales report
↓
Load data
↓
Analyze sales
↓
Create charts
↓
Write summary
Потым продовжаецца раздзелэнне будзь-яго падзеўкі, якая ўсё ж застаецца занадта шырокай, напрыклад, крока аналізу.
Analyze sales
↓
Revenue
↓
Profit
↓
Growth
↓
Regional trends
Разбіўка завершаецца, калі кожны листоўскі элемент адпавядае адзінам вызову інструмента, напрыклад:
SQL query
Python calculation
Matplotlib chart
Markdown writer
Этыя листоўскія элементы — это атомныя задачы: единіцы, якія ўстаткуць настолькі маленькія, што ўсё працэс раздзелэння іх далей не мае сенсу. Правіло завершэння мае значэнне: расплывчаты вузол заставляе модэль занадто многа імпровізаваць, тады калі адна SQL-запытка дае чыстае, можна пераканацца рэзультат.
2. Адкрытыя вхідныя і выходныя даны для кожнага вузла
Кожнаму вузлу надаецца інтэрфейс, падобны до падпису функцыі. Уместо інструкцыі на кшталт „здзейсні аналіз“, планавальнік описвае, што спрыямае вузел і што ён выдае.
def analyze_sales(data):
return summary
Шматак коду ўжоў як ілюстрацыю, а не код фрэймворку, але ён паказвае контракт. Паколькі граф залежыць толькі ад гэтага контракта, вузел можна перапрацаваць або заменіць на інструмент без таго, каб яго суседзі гэта пазналі; гэта тая жа якосць, якая робіць модульны код падтрымнім.
3. Паралельная експансія незалежных галузей
Последовны агент выканае задачі адна за іншай, нават калі дзеяныя з іх не асоцыяваны.
Task A
↓
Task B
↓
Task C
Якщо B і C патрэбны толькі рэзультаты A, а не рэзультаты другія, ATG можа гэта прымусова выразіць.
Task A
/ \
Task B Task C
\ /
Task D
Тады B і C можаць выканацца адночасова, пры чым D чакае на оба. У студзіі апісваецца значна корэйшы час выканання ў всіх тестах, якія былі пераглянуты, што ўсунуцца як наследак аб’яднання незалежных крокаў у паралельныя.
4. Тэставанне без выкарыстання рэальных інструментаў
Перад выкананнем чаго-небудзь ATG внутршняя чынюе модэлюўанне всіх планаў, фактычна запытваючы модэль, чы план будзе працаваць, якщо ўжыцца так, як напісана. Модэлюванне шукае:
- этапы, якія не ўключаны
- неправильны інструмент, прызначаны для вузла
- некоректныя залежнасці між вузламі
- неспадкороднасці інтэрфейсаў, калі выходны даны однаго вузла не падходяць для вхідных даных наступнага вузла
- шляхі выканання, якія фактычна не можаць быць завершаны
- паўзы правілаў задання
Это ў тэчасці агента эквівалент запуску тэстаў перад размешчаннем, і гэта дышэўна, таму што не выклікаецца жадны зовнішні інструмент. Аднак якосць перагледу залежыць толькі ад модэля, який яго выкананае: модэль, які напісаў план, можа матыць свои слепыя пункты, таму трэба спрыймать яго як фільтр, а не гаранцыю.
5. Цільава рэмонтка зламанага падграфа
Найболей выдатным аспектам ёсць спосаб, яким ATG распрацоўвае абыякавасці пад час выканання. Возьмем просты граф:
Database
↓
Analysis
↓
Charts
↓
Report
Падазроўваючы, што вузел аналізу не працуюць. Традыцыйны агент часта реагуе так, што відмовляецца ад своих досягненняў і пачынае зноў.
Database
↓
Analysis
↓
Charts
↓
Report
↓
Start over
ATG жа застаеіць той самы граф і замарожвае кожны вузел, які вже даў правядомы рэзультат. Дыяграма нижчэй спецыяльна зроблена так, каб была ідэнтычная да первачной: структура не змінюецца, толькі вузел аналізу пазначаецца на перапрацоўку, тады калі вузлы базы даных, графіка і атласа застаюцца такімі, якія ўсё.
Database
↓
Analysis
↓
Charts
↓
Report
Перагенеруецца толькі неякавы падграф, і калі ён успее, граф продовжае працаваць з новым рэзультатам.
Database
↓
New Analysis
↓
Charts
↓
Report
Это поступовая компіляцыя, яка прыменяецца да планавання. Заўважкай ёсць тое, што якщо пасправленая аналіза дае іншыя цифры, вузлы, якія ўжоўаюць яе, все рава павінны перзапускацца; тое, што захоўваецца, — цэ это робота вышэй у ланцузе та некалякія галузі.
Чаму меньшыя контексты значаюць меншых галюцинацый
У цыкле ReAct кожны крок бачыць усю історію. У ATG кожны вузел отрымае толькі тыя даннэ, якія заявляе його інтарфейс, таму ёсць менш шуму і меньш можлівасцей для праникнення паканальных бягаў.
У старонцы практычна паказана гэта на прыкладзе ALFWorld:
- за дапамогою ReAct 42,86% траекторыяў мелі галюцинаваныя дзеянні
- за дапамогою ATG гэты паказначык знизіўся да 12,14%
Это стосавыя змена прыблізна на 72%, якая была досягнутая без змены самага модэлю.
Што паказваюць тэсты
Для ацэнкі былі выкарыстаны тры адкрытыя модэлі:
- Mistral 7B
- Gemma 7B
- Llama 3 8B
і трыя крэты для адзначэння якосці агентаў:
- ALFWorld
- WebShop
- ScienceWorld
У галоўным парабранні Llama 3 8B з ATG прырównваецца з GPT-4 з ReAct. У ALFWorld базовы варіант GPT-4 парадуў:
GPT-4 + ReAct
41.24
тады як маленький модель з ATG парадуў:
Llama 3 8B + ATG
63.65
У WebShop базовы варіант GPT-4 дасяг:
GPT-4 + ReAct
64.34
а Llama 3 8B з ATG дасяг:
Llama 3 8B + ATG
68.36
Это цыфры, зафіксаваныя ў студзіі. Цифры GPT-4 апісваюць базовы варіант з ReAct, таму парабранне паказвае, насколькі структура можа компенсаваць розмер модэлю, а не тое, што 8B-модель узагалі сильнейшая за GPT-4.
Чаму гэя ідея падае на спракт лінгвістам програмнаў
Стандартная стратэгія галузі — адгукаванне модэляў, кластэраў і бюджэтаў. ATG спытвае, як замест таго краща арганізаваць работу, што ўжо больш пытанне інжынеріі програмнаў, чым машыннага навучэння. Гэта адгукваецца да Git, графаў залежнасцяў, систем будовы, планавальнікаў задач, оптымізаціі компайляра і распадзеленых систем. Большасць програмнаў ўжо давно перестала быць строга последовной; агенты ўжо наздаганяюць.
Конкрэтны прыклад: стварэнне веб-сайту
Якщо папросіце агента стварыць веб-сайт, лінейны агент зазвычай стварае план такі:
Think
↓
Write HTML
↓
Write CSS
↓
Write JavaScript
↓
Debug
↓
Deploy
Планавальнік у стыле ATG можа замест таго стварыць дрэва з незалежных частак:
Website
│
├── HTML
├── CSS
├── Images
├── API
└── Tests
Кожную галузь можна розвіюваць окрема. Якщо CSS не працуе, перагенеруецца толькі вузол CSS. Гэта здаецца бяспрэчным, але большасць сучасных агентаў не працуюць так. Спадзяючыся захоўнічныя патэрны адбіваюцца ў архітэктуры проты нараджання халюзінацый у графах агентаў.
Калі граф заданняя не ўзрабатна
Планаванне, сімуляцыя і ведэнне узловаў дадаюць дапаможны час. Для заданняў, якія выкалічваюць два-тры ўзывы інструментоў, простая петля ReAct є простейшай. Граф становіць сэнс тады, калі заданняя є дугімі, часткова незалежнымі і дорогімі для пачатку занова, і толькі якщо планавальнік розбівае іх разумна: паспелы граф, які выкананы эфектыўна, застаецца паспелым планам.
Ключовыя выводы
- Лінейныя петлі дазваляюць адной неудачнай ступені зіпсаваць усё, што лежыць пасля яе, а зростаючыя транскрыпты падсіліваюць ранніяі помылкі.