Portia: Ein Open-Source-Agent-Harness für verifizierbares Data Engineering
Portia ist ein neues Open-Source-Tool, das Daten profiliert, SQL generiert und Ergebnisse validiert, ohne dass das KI-Modell jemals auf Rohdatensätze zugreift.
Automatisch aus dem englischen Original übersetzt.
Am 7. Oktober 2026 veröffentlicht, ist Portia ein Open-Source-Agent-Harness, der entwickelt wurde, um bei realen Aufgaben im Bereich Data Engineering zu unterstützen. Dieses von Jad1908 erstellte und auf GitHub gehostete Tool verbindet sich mit großen Data Warehouses und lokalen Dateisystemen, um Tabellen zu profilieren, Fragen zu beantworten und SQL-Pipelines zu generieren. Im Gegensatz zu vielen KI-Assistenten, die Rohdaten direkt verarbeiten, stellt Portia sicher, dass das zugrunde liegende Sprachmodell niemals auf den tatsächlichen Datensatz zugreift, sondern sich für alle numerischen Aussagen auf deterministischen Code verlässt.
Was passiert ist
Das Projekt stellt einen Copiloten für Datenaufgaben vor, der in Snowflake, BigQuery, PostgreSQL oder lokale Ordner integriert werden kann, die CSV- und Parquet-Dateien enthalten. Nach der Verbindung profilt Portia jede Tabelle, auf die es trifft, und misst Nullraten, Distinct Counts, Key Coverage und Fan-out, bevor Join-Operationen ausgeführt werden. Benutzer können natürliche Sprachfragen zur Struktur und zum Inhalt ihrer Daten stellen, z. B. prüfen, ob eine bestimmte Kennung eindeutig ist, oder Umsatz-Aufschlüsselungen nach Monat anfordern. Das System baut dann die angeforderten Tabellen Schritt für Schritt auf und protokolliert jeden Schritt in einer YAML-Spezifikation.
Eine entscheidende architektonische Wahl bei Portia ist die Trennung von Reasoning und Datenzugriff. Das für die Interaktion verwendete Sprachmodell hat keinen Dateisystemzugriff und keine Shell-Fähigkeiten. Jede Zahl oder Statistik, die dem Benutzer präsentiert wird, wird durch deterministischen Code berechnet und nicht durch die probabilistische Next-Token-Vorhersage des Modells generiert. Dieses Design stellt sicher, dass das Tool Tabellen handhaben kann, die zu groß sind, um in den Speicher zu passen, während jede Aussage überprüfbar bleibt. Die finale Ausgabe wird in dbt-förmige SQL-Dateien kompiliert, die unabhängig von Portia laufen können, was sicherstellt, dass die generierte Pipeline nicht an das Tool selbst gebunden ist.
Das System enthält außerdem ein Wissensgraphen-System, das von Neo4j betrieben wird und Spalten-Lineage sowie gemessene Überlappungen zwischen Datensätzen speichert. Dieser Graph hilft dem Copiloten dabei, festzustellen, welche Tabellen für eine Benutzerabfrage relevant sind. Benutzer können diesen Graphen lokal durchsuchen, um zu verstehen, wie Spalten innerhalb der Pipeline miteinander in Beziehung stehen. Zusätzlich unterstützt Portia visuelle Diagramme innerhalb der Konversationsoberfläche. Wenn das zugrunde liegende Modell Bild-Eingaben unterstützt, kann der Copilot ein im Browser des Benutzers gerendertes Diagramm visuell inspizieren, um seine Genauigkeit zu überprüfen, bevor er Befunde meldet, wobei das Bild selbst jedoch niemals gespeichert oder für numerische Entscheidungen verwendet wird.
Wie es funktioniert
Portia arbeitet, indem es Datenquellen indiziert und einen Katalog von Metadaten erstellt. Wenn ein Benutzer eine Frage stellt, konsultiert der Copilot den Wissensgraphen, um relevante Tabellen und Spalten zu identifizieren. Er formuliert dann Abfragen, die unter Verwendung der eigenen Zugangsdaten des Benutzers gegen die Datenquelle ausgeführt werden. Bei Datenbankverbindungen laufen die Abfragen unter der Rolle des Benutzers, was bedeutet, dass nichts auf den Anwendungsserver heruntergeladen wird und neue Tabellen direkt im Warehouse erstellt werden. Bei lokalen Dateien bleiben die Daten auf der Festplatte und werden nicht kopiert. Das Modell sieht nur das Schema, Zusammenfassungsstatistiken und die Ergebnisse dieser deterministischen Abfragen.
Das Tool läuft auf dem Claude Agent SDK und kann Claude Code unverändert steuern. Es erfordert Python 3.11 oder höher, uv und Docker. Die Installation umfasst das Klonen des Repositorys, das Synchronisieren der Abhängigkeiten und das Starten eines Neo4j-Containers. Benutzer müssen ihren eigenen Anthropic-API-Key bereitstellen oder einen lokalen Modellanbieter wie Ollama oder llama.cpp konfigurieren. Da die Anweisungen für den Agenten etwa 15.000 Tokens lang sind, müssen lokale Modelle einen Kontextfenster von mindestens 32K Tokens unterstützen. Das System prüft diese Anforderung vor dem Senden von Prompts und verweigert die Fortsetzung, wenn der Kontext unzureichend ist.
Wichtige Details
- Datenschutz: Das Sprachmodell liest niemals Rohdaten, hat keinen Dateisystemzugriff und besitzt keine Shell-Fähigkeiten.
- Unterstützte Quellen: Verbindet sich mit Snowflake, BigQuery, PostgreSQL und lokalen Ordnern mit CSV- oder Parquet-Dateien.
- Verifizierung: Jede numerische Aussage wird durch deterministischen Code berechnet, sodass Benutzer die Ergebnisse unabhängig überprüfen können.
- Ausgabeformat: Generiert dbt-förmige SQL-Dateien, die in einem
models/-Verzeichnis gespeichert werden und ohne Portia laufen können. - Wissensgraph: Nutzt Neo4j, um Spalten-Lineage zu speichern und Überlappungen zwischen Spalten innerhalb der Pipeline zu messen.
- Lokale Modellunterstützung: Kompatibel mit Ollama und llama.cpp, erfordert ein minimales 32K-Kontextfenster für lokale Inferenz.
Warum es wichtig ist
Für Software-Ingenieure und Data-Teams liegt der Hauptwert von Portia in seiner Verifizierbarkeit. Traditionelle KI-gestützte Coding-Tools halluzinieren oft Syntax oder Logik, was eine erhebliche manuelle Überprüfung erfordert. Im Data Engineering kann falsches SQL zu stiller Datenkorruption oder irreführender Analytik führen. Indem Portia das Modell zwingt, sich für alle Messungen auf deterministischen Code zu verlassen und verhindert, dass es Rohdaten sieht, reduziert es das Risiko halluzinierter Statistiken. Die Funktion "Gate on zeros" schützt zusätzlich vor häufigen Fehlern, indem sie das Schreiben von Ergebnissen verweigert, wenn eine Abfrage leere Mengen, nicht eindeutige Grains oder vollständig nullbehaftete Spalten zurückgibt.
Die Fähigkeit, Spezifikationen in Standard-SQL zu kompilieren, mildert auch Vendor-Lock-in. Teams können Portia nutzen, um die initiale Entwicklung von Datenpipelines zu beschleunigen, aber die resultierenden SQL-Dateien in ihren bestehenden Produktionsumgebungen bereitstellen. Das bedeutet, dass das Tool als Entwicklungsbeschleuniger dient und nicht als Laufzeitabhängigkeit. Die Integration in CI-Pipelines über den Befehl build --check stellt sicher, dass der Build fehlschlägt, wenn eine SQL-Datei von ihrer ursprünglichen Spezifikation abweicht, wodurch die Konsistenz zwischen Absicht und Implementierung gewahrt bleibt.
Was Sie tun können
- Installieren Sie Portia mit uv und Docker und stellen Sie sicher, dass Python 3.11+ verfügbar ist.
- Verbinden Sie das Tool mit einer Testdatenbank oder einem Ordner mit Beispiel-CSV-Dateien, um die Profilierungsfunktionen zu erkunden.
- Verwenden Sie das Modul
devtools.demodata, um ein Demo-Projekt mit fünf Tabellen und bekannten Problemen zum Testen zu generieren. - Konfigurieren Sie ein lokales Modell wie Qwen 3 8B über Ollama, wenn Sie cloud-basierte APIs vermeiden möchten.
- Prüfen Sie die generierten YAML-Spezifikationen und kompilierten SQL-Dateien, um zu verstehen, wie der Agent seine Entscheidungen strukturiert.
- Durchsuchen Sie den Neo4j-Wissensgraphen unter localhost:7474, um Spalten-Lineage und Überlappungen zu visualisieren.



