Zadawanie pytań do DataFrame: Jak agent Pandas w LangChain tworzy wykresy
Jak create_pandas_dataframe_agent przekształca pytanie w języku potocznym na kod pandas oraz wykres, jak sprawdzić jego pośrednie kroki oraz jakie zabezpieczenia są potrzebne.
Źródła: Building Your Data Visualization Agent: A Student’s Guide to AI Analytics
Kiedyś analiza zbioru danych wymagała biegłości w języku zapytań lub bibliotece do tworzenia wykresów, aby móc dostrzec choćby jeden trend. Dzięki agentowi napędzanemu LLM pracującemu z DataFrame w pandas można natomiast wpisać prośbę typu „narysuj liczbę osób według płci w postaci słupków” i otrzymać zarówno wykres, jak i krótkie wyjaśnienie. Ta wygoda niesie ze sobą rzeczywiste ryzyko, ponieważ agent działa poprzez pisanie i wykonywanie kodu Python na twoim komputerze. Ten przewodnik wyjaśnia trzy zaangażowane składniki, krok po kroku omawia proces przekształcania pytania w wykres, pokazuje, jak sprawdzić kod napisany przez agenta, oraz wymienia środki ostrożności niezbędne przed zaufaniem do jego wyników.
Najpierw ważna uwaga: create_pandas_dataframe_agent znajduje się w eksperymentalnym pakiecie LangChain. Doskonale nadaje się do tworzenia prototypów i eksploracji, ale nie jest przeznaczony do użycia w produkcji, chyba że dodasz wokół niego dokładną ludzką kontrolę i izolację.
Tradycyjny model pracy wymaga, abyś znał już sposób wykonania czegoś, zanim będziesz mógł cokolwiek nauczyć się: które metody pandas grupują wiersze, jaka funkcja matplotlib rysuje wykres słupkowy, jak oznaczyć osie. Podejście oparte na agentach odwraca tę zasadę – opisujesz, co chcesz wiedzieć, a model decyduje, jak to obliczyć i wyświetlić.
Praktycznym skutkiem jest to, że więcej osób może pracować bezpośrednio z danymi. Analityk biznesowy lub ekspert w danej dziedzinie, który rozumie pytania, ale nie zna składni, może znaleźć odpowiedź bez czekania na kogoś, kto zna biblioteki. Uwaga przenosi się z tego, jak napisać kod, na to, które pytania są rzeczywiście istotne dla podjęcia decyzji. Kompromis, o którym mowa poniżej, polega na tym, że teraz trzeba weryfikować kod, którego nie napisało się samemu.
Trzy komponenty stanowiące podstawę agenta
Korzystnym sposobem na przedstawienie tego systemu jest wyobrażenie go jako silnika rozumowania, strukturyzowanego magazynu danych oraz łącznika pomiędzy nimi.
LLM jako silnik rozumowania
Model językowy interpretuje twoją prośbę, pisze kod w Pythonie potrzebny do jej odpowiedzi i wybiera odpowiedni typ wykresu – na przykład wykres słupkowy do pokazania liczby przypadeków w poszczególnych kategoriach. Jego zadaniem jest połączenie języka naturalnego z wykonywalną logiką, w tym określenie tego, co faktycznie reprezentują dane.
DataFrame jako zorganizowany magazyn danych
pandas przechowuje dane w postaci tabeli z wierszami i oznaczonymi kolumnami. Weźmy jako przykład zestaw danych UCI Student Alcohol Consumption: atrybuty takie jak sex i age są przechowywane jako kolumny, gotowe do filtrowania i agregacji. To spójna struktura umożliwia agentowi szybkie wykonywanie precyzyjnych operacji.
LangChain jako łącznik
create_pandas_dataframe_agent dostarcza gotowe instrukcje oraz narzędzia, które umożliwiają modelowi dostęp do DataFrame. W rzeczywistości agent otrzymuje narzędzie do wykonywania kodu Pythona, w którym Twoja tabela DataFrame jest dostępna pod nazwą df, oraz instrukcje wskazujące modelowi, jak z niej skorzystać. Nie musisz samodzielnie łączyć tych elementów.
Jak pytanie staje się wykresem
Przebieg pojedynczej prośby w systemie sprawia, że rola każdego komponentu staje się jasna. Załóżmy, że pytanie brzmi: „Narysuj liczbę osób według płci w postaci słupków.”
- Pojawia się pytanie. Model otrzymuje tekst i zaczyna interpretować jego treść.
- Model przyporządkowuje prośbę do danych. Rozpoznaje, że „płeć” odpowiada kolumnie
sex, i decyduje, że wykres słupkowy jest odpowiedni do przedstawienia liczb według kategorii.
M i F, stosując wszelkie wymagane filtry, a konwerter ten kod wykonywa.Najwięcej błędów pojawia się na etapach 2 i 4. Błędne mapowanie kolumn lub subtelnie nieprawidłowy filtr mogą nadal dać wyglądający poprawnie wykres, i właśnie dlatego następny rozdział jest tak ważny.
Zaglądanie do środka: kroki pośrednie i generowany kod
Pomaga to oddzielić kod, który uruchamiasz, od kodu, który uruchamia agent. Możesz sam wywołać df.head(), aby zobaczyć pierwsze pięć wierszy i zrozumieć kolumny. Agent natomiast pisze swój własny kod, aby odpowiedzieć na każde żądanie, a ty możesz sprawić, by ten kod był widoczny.
Podczas tworzenia agenta za pomocą create_pandas_dataframe_agent przekaż parametr return_intermediate_steps=True. W rezultacie zostaną uwzględnione wszystkie działania podjęte przez agenta, wraz z kodem, który uruchomił, oraz wynikami, które zaobserwował. Dzięki temu możliwe jest realizowanie trzech celów:
- Weryfikacja: możesz potwierdzić, że agent obliczył swoją odpowiedź, a nie zgadywał. Zobaczysz rzeczywiste wyrażenia, takie jak
len(df)do liczenia wierszy lubdf[df['age'] == 18]do wybrania uczniów w wieku 18 lat.
verbose=True dodatkowo wyświetla w konsoli rozumowanie agenta oraz generowany kod podczas jego działania, dzięki czemu gdy wynik wydaje się nietypowy, można zobaczyć, gdzie pomyliła się logika.Oba te opcje uzupełniają się wzajemnie. verbose=True jest przydatne podczas interaktywnego obserwowania działania, natomiast return_intermediate_steps=True zwraca poszczególne kroki w formie danych, które można zapisać, wyświetlić w notatniku lub sprawdzić automatycznie.
Bезpieczeństwo: agent wykonywa kod, który sam pisze
Ponieważ agent uruchamia Python wygenerowany przez model, złośliwa lub błędna instrukcja może odczytywać pliki, wykonywać połączenia sieciowe lub usuwać dane z takimi samymi uprawnieniami jak Twój proces. Najnowsze wersje langchain_experimental czynią to jawnym, odmawiając utworzenia agenta, chyba że podasz parametr allow_dangerous_code=True; sprawdź aktualną dokumentację dotyczącą swojej wersji. Ten flag jest jedynie przyznaniem się do ryzyka, a nie sposobem na jego zmniejszenie.
Traktuj również jako niewiarygodne wszelkie dane, których nie stworzyłeś. Komórka zawierająca tekst, np. instrukcję dla modelu, może wpłynąć na kod, który ten generuje – jest to forma iniekcji promptu, którą łatwo przeoczyć, gdy danymi wejściowymi jest arkusz kalkulacyjny.
Lista kontrolna odpowiedzialnego użytkowania
Zawsze informuj kogoś o postępach w każdym projekcie i przeanalizuj następujące punkty:
- Zapewnij działanie agenta w środowisku izolowanym, takim jak kontener lub tymczasowe środowisko bez uprawnień oraz z ograniczonym dostępem do plików i sieci, aby kod niezamierzony lub złośliwy nie mógł wyrządzić szkód.
- Pisz jasne, konkretne instrukcje. Wskazanie dokładnych kolumn oraz rodzaju agregacji zmniejsza ryzyko, że agent wybierze niewłaściwą wartość lub ją wymyśli.
- Sprawdzaj wyniki w oparciu o własną wiedzę. Nigdy nie przyjmuj wykresu bez krytycznej oceny; użyj kroków pośrednich, aby upewnić się, że zastosowano właściwe kolumny, filtry i obliczenia.
- Korzystaj z iteracji. Analiza to dialog – jeśli pierwszy wykres nie jest dokładny, wykorzystaj informacje uzyskane na etapach pośrednich, aby udoskonalić kolejne zapytanie.
- Pracuj na kopii danych. Operacje modyfikujące DataFrame bezpośrednio mogą potajemnie zmienić treść, którą będą widzieć późniejsze zapytania.
Główne wnioski
- Agent pandas składa się z trzech elementów: modelu LLM, który rozumuje i pisze kod, tablicy DataFrame przechowującej dane strukturalne oraz funkcji
create_pandas_dataframe_agentz LangChain, która łączy te elementy. - Najwięcej błędów występuje podczas mapowania słów na kolumny lub przy pisaniu kodu analitycznego, mimo to agent nadal może tworzyć przekonujące wykresy.
- Ustawienie
return_intermediate_steps=Trueorazverbose=Trueumożliwia pokazanie wygenerowanego kodu, co ułatwia weryfikację i debugowanie. - Agent wykonywać może dowolny kod w Pythonie, znajduje się w pakiecie eksperymentalnym i wymaga zabezpieczeń typu sandbox oraz przeglądu przez człowieka, zanim zostanie użyty w środowisku produkcyjnym.
- Agent zapewnia szybkość; to wy dostarczacie kontekst dziedzinowy oraz krytyczną ocenę, które przekształcają jego wyniki w dokładne wnioski.
Literatura pokrewna
- Dostarczanie zapytań między narzędziami SQL a wyszukiwarką webową z użyciem agenta Gemini — Jak agent do wywoływania narzędzi LangChain w Vertex AI dokonuje wyboru pomiędzy trzema narzędziami SQLite do konwersji tekstu na SQL a bezpośrednią wyszukiwarką webową, oraz jakie błędy związane z danymi, zależnościami i autoryzacją można się spodziewać.
- Wzmacnianie bezpieczeństwa agenta Python LangChain siedmioma wbudowanymi middlewarami — Dowiedz się, w jaki sposób middleware LangChain 1.0 dodaje funkcje takie jak streszczanie, limity wywołań, próby ponowne, fallback na inne modele, maskowanie danych osobowych i zatwierdzenie przez człowieka do agenta Gemini, nie wpływając na jego podstawową logikę.