Strona główna / Artykuły

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.

Wydawca: REACTAPP.TOP6 min czytania1328 słów

Ź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.”

  1. Pojawia się pytanie. Model otrzymuje tekst i zaczyna interpretować jego treść.
  2. 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.
  • Dostępuje się do danych. Nie ma oddzielnego bazy danych; źródłem danych jest DataFrame w pamięci.
  • Przeprowadza się analizę. Model tworzy kod, który liczy wartości M i F, stosując wszelkie wymagane filtry, a konwerter ten kod wykonywa.
  • Wynik jest interpretowany. Model odczytuje uzyskane liczby i umieszcza je w kontekście populacji uczniów.
  • Prezentuje się odpowiedź. Otrzymujesz wykres słupkowy przedstawiający rozkład wraz z opisem w prostym języku.
  • 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 lub df[df['age'] == 18] do wybrania uczniów w wieku 18 lat.
  • Debugowanie: ustawienie 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.
  • Nauka: agent przestaje być „czarną skrzynką” i staje się żywym przykładem tego, jak używać pandas do manipulacji danymi.
  • 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_agent z 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=True oraz verbose=True umoż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