Галоўная / Артыкулы

Задаўанне запытанняў да DataFrame: як агент Pandas з LangChain стварае графікі

Як create_pandas_dataframe_agent ператварае запит на звычнай мове ў код pandas і графік, як адзірваць його проміжныя крокі, а таксама якія захоўныя меры ёму трэбае.

Выдавец: REACTAPP.TOP6 хв чытання1328 слоў

Крыніцы: 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, а таксама запрос, який паведамляе модэлю працаваць з ім. Вам не трэба самостайна налажваць гэты зв’язак.

Як запит ператвараецца ў графік

Праследаванне адзінаго запиту праз систему чыста паказвае ролю кожнага елемента. Падазроўваём, запит звучыць так: "Нарисаваць статыстыку па гэндеру у відах ступакоў."

  1. Запит прыходзіць. Модэль отрымае текст і пачынае адгуквацца да таго, пра што запитуюць.
  2. Модэль супарабатоўвае запит з дадзенням. Яна выявляе, што "гэндер" адпавядае столбцу sex, і вырашае, што ступаковы графік падходзіць для показу колькасці па категоріях.
  • Даныя адчынаюцца. Не існуе окалічнай базы дадзеных; кантэйнер DataFrame у памяці являеся выкліканым джерелам дадзеных.
  • Адбываецца аналіз. Модель запісвае код, який підлаштовуе значэння M і F, прыменяючы неабяжлівы фільтрацыйны прыем, а канектар выконвае гэты код.
  • Раследжуецца рэзультат. Модель чытае отраслі і практыкуе іх у контэксте вучняўскай аудыторыі.
  • Прадставляецца адказ. Вы отрымліваете ступенчатую дыяграму распаду разам з кантэкставай адмоваючай інформацыяй.
  • У кроках 2 і 4 частаюць большасць памылак. Неправильная супарабоўка столбцоў або лёгкая некоректнасць у фільтрацыі все равно можа даць чыстаяя дыяграма, і самэ гэта ўсё значнасткавае наступны раздзіл.

    Зьвярненне ўсередзіну: промежуточныя крокі і створаны код

    Гэта дапамагае раз'яўляць код, які вы запускаеце, ад коду, які запускае агент. Вы можете самі вызваць df.head(), каб паглядзець першыя пяць рядоў і зразумець столбцы. Агент, на адміну, пішае свой сабэйскі код, каб адпаведзе на кожны запит, і вы можетэ зробіць гэты код видным.

    Калі ствараеце агента за дапамою create_pandas_dataframe_agent, пасункніце return_intermediate_steps=True. У такім случае рэзультат будзе включаць кожную дзеянне, якое выканаў агент, а таксама код, які ён запускаў, і рэзультаты, якія ён зафіксаваў. Гэта дапамагае у трох аспектах:

    • Перакананне: вы можетэ паўніста пераканацца, што агент вырахаваў свой адпаведз, а не толькі здагадваўся. Вы пабачыце рэальныя выразы, такія як len(df) для падрахунку рядоў або df[df['age'] == 18] для выбору студэнтаў вікам 18 гадоў.
  • Дыягнастыка: калі задаць verbose=True, пад час выканання агента ў консоль таксама выводзяцца яго логіка разумовых вычынэнняў і створаны код, таму калі рэзультат выглядае незвычайна, можна пазначыць, дзе паследавалая памылка.
  • Навчанне: агент перестае быць „чорнай скрынкай“ і становіцца жывым практычным прыкладам таго, як pandas выкарыстоўваецца для маніпуляцыі дадзеннямі.
  • Этыя два варыянты дапоўнююць адзін другога. 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, знаходзіцца ў эксперыментальным пакете і патрэбуе сандкасінгу і перагляду з боку чалавека, прычым яго нельга выкорыстоўваць у працэсе виробніцтва.
    • Агент забезпечвае шырокаспектнасць; вы ж забезпечваеце контекст домэна і критычныя меркі, якіе ператвараюць його рэзультаты на точныя заключэння.