Задаўанне запытанняў да DataFrame: як агент Pandas з LangChain стварае графікі
Як create_pandas_dataframe_agent ператварае запит на звычнай мове ў код pandas і графік, як адзірваць його проміжныя крокі, а таксама якія захоўныя меры ёму трэбае.
Крыніцы: Building Your Data Visualization Agent: A Student’s Guide to AI Analytics
Раней, каб падзірэць дадзеных выканаў, была неабходна вольнае владанне языкам запытак або бібліятэкай для стварэння графікаў. З агентам, які працуе на адной з моцных большых мов, і які можа працаваць з pandas DataFrame, вы можете проста запісаць запыт на кшталт "стварыць графік колькасці чалавека па аплыву з вярбамі" і атрымаць як сам графік, так і кароткае поясненне. Аднак такая зручнасць супакоўвана рызыкамі, адтолькі што агент працуе пашчыраваннем і выконаваннем коду на вашам комп’ютеры. У гэтым кяліку пояснены тры ключовыя складовы, практычна па шагоў праблэма ператвараецца ў графік, паказана, як пераглядаць код, які пашчырае агент, і пераказаны заходы безпекі, якія неабходны, пры тым, каб даваць веру яго рэзультатам.
Спачатку важна прыемка: create_pandas_dataframe_agent ўключаны ў эксперыментальны пакет LangChain. Ён чырпаецься для стварэння пратотыпаў і дакладнага аналізу, але не прызначаны для практычнага вжывання, якщо толькі вы не дадзеце йому рэгулярнай перагледкі з боку людзяў і не ізолюеце яго.
Ад сынтаксісу да намеру
Традыцыйны падход вымагае, каб вы ведалі, як чыглі ўжо перш чым можаце чаго-небудзь навучыцца: якія методы pandas агрупуюць рядкі, який вызов matplotlib падмалюе столбчатую дыяграму, як пазначаць вісі. Падход з агентамі перакручвае гэта. Вы описвалі, што хочаце дазнацца, а модель вырашвае, як гэта вылічыць і адобразіць.
Практычным наследкам являецца тое, што большая колькасць людзей можа працаваць з дадзеннямі безпосередня. Бізнес-аналітык або эксперт у пэўной галіне, які розумее запытанні, але не синтаксіс, можа знайсці адпаведны ўтвары без чакання на людзіна, якія ведаюць бібліятэкі. Увага пераключаецца з таго, як напісаць код, на тое, якія запытанні насправды маюць значэнне для прыняття рашэння. Компрасам, пра які йдзе мова далей, ёсць тое, што тепер трэба пераканацца ў кодзе, які вы не пісалі.
Тры складовыя, якія стояць за агентам
Прыдатны спосаб прыкладзіць сістэму – як механізм аналізу, структураваны хранальнік дадзенняў і з’ёднанне межы ёх.
LLM як механізм аналізу
Модель мовы адаптаваець вашу запатэчку, пішае код на Python, неабяжны для яго адпаведнага адказу, і выбірае падходячы тип дыяграмы — напрыклад, ступеневую дыяграму для паказання колькасці элементаў па кожнай катэгорыі. Яе задача — стварыць сувязь між нейтральной мовай і выконванай логікай, уключаючы визначэнне таго, што на самай працоўвае даныя.
DataFrame як аранжаваны сховіщ даных
pandas зберагае даныя у вачэйцы з рядкамі і пазначанымі столбцамі. Вярнімся да набора даных UCI Student Alcohol Consumption: атрыбуты такія як sex і age зберагаюцца як столбцы, якія можна фільтраўваць і агрэгаваць. Саме такая адносна стабільная структура дазволяе модэлю быстра выкананы тачныя операцыі.
LangChain як з’єднальны элемент
create_pandas_dataframe_agent апранае ўжо створаныя запросы і засобы, якія дазваляюць модэлю працаваць з DataFrame. По суты, агент отрымае інструмент для выканання коду на Python, у яком ваш DataFrame доступны як df, а таксама запрос, який паведамляе модэлю працаваць з ім. Вам не трэба самостайна налажваць гэты зв’язак.
Як запит ператвараецца ў графік
Праследаванне адзінаго запиту праз систему чыста паказвае ролю кожнага елемента. Падазроўваём, запит звучыць так: "Нарисаваць статыстыку па гэндеру у відах ступакоў."
- Запит прыходзіць. Модэль отрымае текст і пачынае адгуквацца да таго, пра што запитуюць.
- Модэль супарабатоўвае запит з дадзенням. Яна выявляе, што "гэндер" адпавядае столбцу
sex, і вырашае, што ступаковы графік падходзіць для показу колькасці па категоріях.
M і F, прыменяючы неабяжлівы фільтрацыйны прыем, а канектар выконвае гэты код.У кроках 2 і 4 частаюць большасць памылак. Неправильная супарабоўка столбцоў або лёгкая некоректнасць у фільтрацыі все равно можа даць чыстаяя дыяграма, і самэ гэта ўсё значнасткавае наступны раздзіл.
Зьвярненне ўсередзіну: промежуточныя крокі і створаны код
Гэта дапамагае раз'яўляць код, які вы запускаеце, ад коду, які запускае агент. Вы можете самі вызваць df.head(), каб паглядзець першыя пяць рядоў і зразумець столбцы. Агент, на адміну, пішае свой сабэйскі код, каб адпаведзе на кожны запит, і вы можетэ зробіць гэты код видным.
Калі ствараеце агента за дапамою create_pandas_dataframe_agent, пасункніце return_intermediate_steps=True. У такім случае рэзультат будзе включаць кожную дзеянне, якое выканаў агент, а таксама код, які ён запускаў, і рэзультаты, якія ён зафіксаваў. Гэта дапамагае у трох аспектах:
- Перакананне: вы можетэ паўніста пераканацца, што агент вырахаваў свой адпаведз, а не толькі здагадваўся. Вы пабачыце рэальныя выразы, такія як
len(df)для падрахунку рядоў абоdf[df['age'] == 18]для выбору студэнтаў вікам 18 гадоў.
verbose=True, пад час выканання агента ў консоль таксама выводзяцца яго логіка разумовых вычынэнняў і створаны код, таму калі рэзультат выглядае незвычайна, можна пазначыць, дзе паследавалая памылка.Этыя два варыянты дапоўнююць адзін другога. verbose=True ўжыткавы, калі вы інтерактыўна стежыце за выкананням, тады як return_intermediate_steps=True вяртае этыі процес у вачынку дадзенняў, якія можна запісаць, апышаць у нотбуку чы скасаваць аўтаматычна.
Безпека: агент выкананяе код, які сам напісаў
Пакалькі ўпрацоўвач выканае Python, створаны модэлем, таму злонамерны або проста некальківаны запаведзь можа чытаць файлы, выконваць сеансы з’яўлення ў сеті або выкарыстоўваць даныя з тымі ж правамі, якія ў вашам процесе. Няўзабавныя версіі langchain_experimental чытраць гэта, адмовляючыся ствараць упрацоўвач, якщо вы не задасте allow_dangerous_code=True; пераканайцеся ў актуальной даследчыцкай документацыі да вашай версіі. Гэты флаг ўскладнюе рызык, а не усуне яго.
Любыя даныя, якія вы не створылі, таксама трэба спрыймать як ненадзеяныя. Клетка, якая містіць тэкст, напрыклад запаведзь для модэля, можа паўплываць на код, які ён запішае — гэта спосаб втрымкі прампту, які лёгка працягнуць, калі вхідным матэрыялам є табылка.
Спіс пераканаў для адпаведнага выкарыстоўвання
У кожным проекте трэба трываліваць адзнаго чалавека, які будзе в курсе справ, і разглядаць следуючыя пункты:
- Заўядзейце агента ў сандбоксе, напрыклад у контейнеры або ў тымчасовай средзе без крантэнацый і з обмежаным доступам да файлаў і сеті, каб нехтачны аб злонамерны код не могаў завандальваць.
- Запішыце чыстыя, конкрэтныя запиты. Указванне точных столбцоў і спосабу аграгавання зменшае шанс, што агент выберэ неправы поле аб створы новае.
- Пераканайцеся ў рэзультатах на адной з вашых базаў ведамасцей. Ніколі не прымайце графік на веру; выкарыстоўваючы промежуточныя крокі, пераканайцеся, што былі выкарыстаны правильныя столбцы, фільтры і расчыткі.
- Продзейце процес. Аналіз — это дыялог. Якщо першы графік не ўсё такі правільны, выкарыстоўваючы інфармацыю з промежуточных крокаў, скорагаеце наступны запит.
- Работайце з копіяю дадзеных. Аперацыі, якія мэньяюцу DataFrame на месцы, можаць таямна зменіць тое, што будуць бачыць наступныя запиты.
Галоўныя выводы
- Агент на базе Pandas складаецца з трох частэй: LLM, які робіць логічныя выводы і пішае код, DataFrame, які зберагае структураваныя даны, і функцію
create_pandas_dataframe_agentз бібліятэкі LangChain, якая ўз’еднавае іх. - Большасць адмоў выступае, калі модель прысвячвае словы столбцам або пішае код для аналізу, пры чым яны все ж можаць ствараць пераканальваныя графікі.
- Параметры
return_intermediate_steps=Trueіverbose=Trueапублікуюць створаны код, што дазволяе пераканацца ў яго правільнасці і вылучыць бягавыні. - Агент выкананае будь-які код на Python, знаходзіцца ў эксперыментальным пакете і патрэбуе сандкасінгу і перагляду з боку чалавека, прычым яго нельга выкорыстоўваць у працэсе виробніцтва.
- Агент забезпечвае шырокаспектнасць; вы ж забезпечваеце контекст домэна і критычныя меркі, якіе ператвараюць його рэзультаты на точныя заключэння.