Fragen an einen DataFrame stellen: Wie der Pandas-Agent von LangChain Diagramme erstellt
Wie create_pandas_dataframe_agent eine Frage in Alltagssprache in Pandas-Code und einen Diagramm umwandelt, wie man die Zwischenschritte überprüft sowie welche Schutzmaßnahmen erforderlich sind.
Quellen: Building Your Data Visualization Agent: A Student’s Guide to AI Analytics
Zuvor erforderte die Analyse eines Datensatzes oft fließende Beherrschung einer Abfragesprache oder einer Visualisierungsbibliothek, um überhaupt einen Trend erkennen zu können. Mit einem von einem LLM gesteuerten Agenten vor einem pandas DataFrame kann man hingegen eine Anfrage wie „Zeichne die Geschlechterzählung als Balkendiagramm“ eingeben und erhält sowohl ein Diagramm als auch eine kurze Erklärung. Diese Bequemlichkeit birgt jedoch echte Risiken, da der Agent auf Ihrem Rechner Python schreibt und ausführt. Dieser Leitfaden erläutert die drei beteiligten Komponenten, verfolgt eine Frage Schritt für Schritt bis zur Erstellung eines Diagramms, zeigt, wie man den von dem Agenten geschriebenen Code überprüfen kann, und listet die Schutzmaßnahmen auf, die man ergreifen muss, bevor man seinen Ausgaben vertraut.
Zunächst eine wichtige Hinweis: create_pandas_dataframe_agent ist im experimentellen Paket von LangChain enthalten. Er eignet sich hervorragend für Prototypenentwicklung und Erkundung, ist aber nicht für den Produktivbetrieb vorgesehen – es sei denn, man fügt umfassende menschliche Überprüfung sowie Isolierungsmaßnahmen hinzu.
Von der Syntax zur Absicht
Der traditionelle Arbeitsablauf verlangt, dass man bereits weiß, wie etwas gemacht wird, bevor man etwas lernen kann: welche pandas-Methode Zeilen gruppiert, welcher matplotlib-Aufruf einen Balkendiagramm zeichnet oder wie Achsen beschriftet werden. Der Agent-Ansatz kehrt das um: Man beschreibt, was man wissen möchte, und das Modell überlegt sich, wie es dies berechnen und anzeigen kann.
Die praktische Folge ist, dass mehr Menschen direkt mit Daten arbeiten können. Ein Business Analyst oder Fachexperte, der die Fragen versteht, aber nicht die Syntax kennt, kann zu einer Antwort gelangen, ohne auf jemanden warten zu müssen, der die Bibliotheken kennt. Die Aufmerksamkeit verschiebt sich von der Art und Weise, wie Code geschrieben wird, auf die Fragen, die tatsächlich für eine Entscheidung relevant sind. Der unten erläuterte Kompromiss besteht darin, dass man nun Code überprüfen muss, den man selbst nicht geschrieben hat.
Die drei Komponenten hinter dem Agenten
Eine nützliche Art, das System darzustellen, ist als Schlussfolgerungsmechanismus, einen strukturierten Datenspeicher sowie einen Verbindungsmechanismus zwischen ihnen.
Das LLM als Schlussfolgerungsmechanismus
Das Sprachmodell interpretiert Ihre Anfrage, schreibt den für die Beantwortung erforderlichen Python-Code und wählt einen geeigneten Diagrammtyp aus – beispielsweise ein Balkendiagramm für die Anzahl pro Kategorie. Seine Aufgabe besteht darin, natürliche Sprache mit ausführbarer Logik zu verbinden, einschließlich der Ermittlung dessen, was die Daten tatsächlich darstellen.
Der DataFrame als strukturierte Datenspeicherung
pandas speichert die Daten als Tabelle mit Zeilen und benannten Spalten. Nehmen wir das UCI-Studenten-Alkoholkonsum-Datensatz als Beispiel: Attribute wie sex und age werden als Spalten gespeichert, sodass sie gefiltert und aggregiert werden können. Genau diese konsistente Struktur ermöglicht es dem Agenten, präzise Operationen schnell auszuführen.
LangChain als Verbindungsstück
create_pandas_dataframe_agent stellt den vorgefertigten Prompt sowie die notwendigen Werkzeuge bereit, damit das Modell auf den DataFrame zugreifen kann. Im Hintergrund erhält der Agent ein Python-Exekutionswerkzeug, in dem Ihr DataFrame als df verfügbar ist, sowie einen Prompt, der dem Modell mitteilt, dieses Werkzeug zu verwenden. Sie müssen diese Verbindung nicht selbst herstellen.
Wie eine Frage zu einem Diagramm wird
Durch die Verfolgung einer einzigen Anfrage durch das System wird die Rolle jedes Komponenten klar. Nehmen wir an, die Frage lautet „Zeichne die Geschlechterzählung als Balkendiagramm.“
- Die Frage erreicht das System. Das Modell erhält den Text und beginnt, zu interpretieren, was gefragt wird.
- Das Modell ordnet die Anfrage den Daten zu. Es erkennt, dass „Geschlecht“ der Spalte
sexentspricht, und entscheidet, dass ein Balkendiagramm für eine Zählung nach Kategorien geeignet ist.
M und F zählt, ggf. notwendige Filter anwendet, und der Connector führt diesen Code aus.In den Schritten 2 und 4 treten die meisten Fehler auf. Eine falsche Zuordnung der Spalten oder ein leicht fehlerhafter Filter erzeugen dennoch ein ansprechend aussehendes Diagramm – genau deshalb ist der folgende Abschnitt so wichtig.
Ein Blick ins Innere: Zwischenschritte und generierter Code
Das Hilft dabei, den von Ihnen ausgeführten Code vom von dem Agenten ausgeführten Code zu trennen. Sie können selbst df.head() aufrufen, um sich die ersten fünf Zeilen anzusehen und die Spalten zu verstehen. Der Agent hingegen schreibt seinen eigenen Code, um auf jede Anfrage zu antworten, und Sie können diesen Code sichtbar machen.
Beim Erstellen des Agenten mit create_pandas_dataframe_agent geben Sie return_intermediate_steps=True an. Das Ergebnis enthält dann jede Aktion, die der Agent ausgeführt hat, zusammen mit dem von ihm ausgeführten Code und dem beobachteten Ausgabeergebnis. Dies unterstützt drei Dinge:
- Überprüfung: Sie können sicherstellen, dass der Agent seine Antwort berechnet hat und nicht nur geraten hat. Sie sehen echte Ausdrücke wie
len(df), um Zeilen zu zählen, oderdf[df['age'] == 18], um 18-jährige Schüler auszuwählen.
verbose=True werden während der Ausführung das Denkverfahren des Agenten sowie der generierte Code zusätzlich in die Konsole ausgegeben, sodass Sie erkennen können, wo die Logik fehlschlägt, wenn das Ergebnis ungewöhnlich erscheint.Die beiden Optionen ergänzen sich gegenseitig. verbose=True ist praktisch, wenn Sie eine Ausführung interaktiv verfolgen, während return_intermediate_steps=True die Schritte als Daten zurückgibt, die Sie protokollieren, in einem Notebook anzeigen oder automatisch überprüfen können.
Sicherheit: Der Agent führt den von ihm geschriebenen Code aus
Weil der Agent Python-Code ausführt, der vom Modell generiert wird, kann eine bösartige oder lediglich fehlerhafte Anweisung mit denselben Berechtigungen wie Ihr Prozess Dateien lesen, Netzwerkaufrufe tätigen oder Daten löschen. Neuere Versionen von langchain_experimental machen dies explizit, indem sie die Erstellung des Agents verweigern, sofern Sie nicht allow_dangerous_code=True angeben; prüfen Sie die aktuelle Dokumentation für Ihre Version. Dieses Flag ist eine Anerkennung des Risikos, keine Maßnahme zur Minderung desselben.
Betrachten Sie auch alle Daten, die Sie nicht selbst erstellt haben, als unzuverlässig. Eine Zelle mit Text wie einer Anweisung an das Modell kann den von ihm generierten Code beeinflussen – eine Form der Prompt-Injection, die leicht übersehen wird, wenn die Eingabe ein Tabellenkalkulator ist.
Checkliste für eine verantwortungsvolle Nutzung
Lassen Sie bei jedem Projekt jemanden im Bilde und gehen Sie diese Punkte durch:
- Führen Sie den Agenten in einer Sandbox aus, wie zum Beispiel in einem Container oder einer einmaligen Umgebung ohne Anmeldeinformationen sowie mit eingeschränktem Zugriff auf Dateien und das Netzwerk, damit unbeabsichtigter oder bösartiger Code keinen Schaden anrichten kann.
- Schreiben Sie klare, präzise Anweisungen. Wenn Sie die genauen Spalten sowie die gewünschte Aggregation angeben, verringern Sie das Risiko, dass der Agent die falsche Spalte auswählt oder eine eigene erfindet.
- Überprüfen Sie die Ergebnisse anhand Ihres eigenen Wissens. Akzeptieren Sie niemals ein Diagramm ohne weitere Prüfung; nutzen Sie die Zwischenschritte, um sicherzustellen, dass tatsächlich die richtigen Spalten, Filter und Berechnungen verwendet wurden.
- Iterieren Sie. Analyse ist ein Dialog. Falls das erste Diagramm nicht ganz korrekt ist, nutzen Sie die Erkenntnisse aus den Zwischenschritten, um Ihre nächste Anfrage zu verfeinern.
- Arbeiten Sie mit einer Kopie der Daten. Operationen, die den DataFrame direkt verändern, können unbemerkt dazu führen, dass spätere Abfragen andere Daten sehen.
Wichtige Erkenntnisse
- Ein Pandas-Agent setzt sich aus drei Komponenten zusammen: einem LLM, das logisch denkt und Code schreibt, einem DataFrame, der strukturierte Daten enthält, sowie LangChain’s
create_pandas_dataframe_agent, das diese Komponenten miteinander verbindet. - Die meisten Fehler treten auf, wenn das Modell Wörter mit Spalten verknüpft oder den Analysecode schreibt, obwohl es dennoch überzeugende Diagramme erzeugen kann.
return_intermediate_steps=Trueundverbose=Truegeben den generierten Code preis, wodurch eine Überprüfung und Fehlerbehebung möglich werden.- Der Agent führt beliebigen Python-Code aus, befindet sich in einem experimentellen Paket und benötigt vor dem Einsatz in der Produktion ein Sandbox-Umfeld sowie menschliche Überprüfung.
- Der Agent sorgt für Geschwindigkeit; Sie liefern den Fachkontext sowie die kritische Beurteilung, die seine Ausgabe in eine genaue Schlussfolgerung verwandeln.