Apache Burr: Zuverlässige KI-Agenten und Anwendungen entwickeln
(burr.apache.org)- Apache Burr ist ein Framework, mit dem sich entscheidungsbasierte KI-Anwendungen in Python entwickeln lassen – von einfachen Chatbots bis hin zu komplexen Multi-Agenten-Systemen
- Anwendungen werden als Menge von Aktionen und Übergängen definiert und ohne DSL oder YAML nur mit Python-Funktionen und Decorators geschrieben
- Die Burr UI bietet Monitoring, Debugging und Nachverfolgung für jeden Ausführungsschritt, sodass sich Zustandsänderungen in Echtzeit prüfen lassen
- Zustände können auf Datenträgern, in Datenbanken oder in benutzerdefinierten Backends gespeichert werden; außerdem lässt sich die Ausführung an Unterbrechungspunkten fortsetzen, mit Unterstützung für menschliche Eingaben und parallele Ausführung
- Die Integration mit bestehenden Tools wie OpenAI, Anthropic, LangChain, FastAPI und PostgreSQL ist möglich, ohne Lock-in-Effekt oder Wrapper
Zuverlässige KI-Agenten und Anwendungen entwickeln
- Apache Burr ist ein Apache Incubating Project, das die Entwicklung von Anwendungen mit Entscheidungslogik vereinfacht
- Der Anwendungsbereich reicht von einfachen Chatbots bis zu komplexen Multi-Agenten-Systemen
- Die Implementierung erfolgt in reinem Python und folgt dem Prinzip „no magic“
- Als öffentliche Kennzahlen werden 1.641 GitHub Stars, 379k+ PyPI-Downloads und 457+ Discord-Mitglieder angezeigt
Einfache und leistungsfähige Python-API
- Burr bietet eine kombinierbare Schnittstelle, mit der sich alles von Chatbots bis zu Multi-Agenten-Systemen aufbauen lässt
- Im Beispielcode wird mit
burr.coresowieaction,StateundApplicationBuildereinechat-Aktion definiert @action(reads=["messages"], writes=["messages"])legt fest, welche Zustände gelesen und geschrieben werdenApplicationBuilder()konfiguriert Aktionen, Übergänge, den Initialzustand und den lokalen Tracker und erstellt anschließend die Anwendung- Im Ausführungsbeispiel wird der LLM-Client in der Form
app.run(halt_after=["chat"], inputs={"llm_client": client})als Eingabe übergeben
Erforderliche Bausteine für den Aufbau von KI-Anwendungen
- Simple Python API definiert Anwendungen als Menge aus Aktionen und Übergängen und verwendet dazu ausschließlich Python-Funktionen und Decorators, ohne DSL oder YAML
- Built-in Observability ermöglicht mit der Burr UI das Echtzeit-Monitoring, Debugging und Nachverfolgen aller Anwendungsschritte
- Persistence & State Management speichert Zustände automatisch auf Datenträgern, in Datenbanken oder in benutzerdefinierten Backends und ermöglicht das Fortsetzen ab Unterbrechungspunkten
- Human-in-the-Loop kann die Ausführung an jedem Schritt anhalten und auf menschliche Eingaben warten, was sich für Freigabe-Workflows und interaktive Agenten eignet
- Branching & Parallelism unterstützt parallele Aktionsausführung, fan out / fan in, den Aufbau komplexer DAGs und die Kombination von Unteranwendungen
- Testing & Replay erhöht das Vertrauen in KI-Systeme durch das Wiedergeben früherer Ausführungen, Unit-Tests einzelner Aktionen und die Verifikation von Zustandsübergängen
Integration in bestehende Stacks
- Burr integriert sich in bereits verwendete Tools und Frameworks und erfordert weder Lock-in-Effekt noch Wrapper
- Als LLM-Integrationen werden OpenAI, Anthropic und Instructor genannt
- Als Framework-Integrationen werden LangChain, Hamilton und Haystack genannt
- Als UI- und Serving-Integrationen werden Streamlit und FastAPI genannt
- Als Integrationen für Validierung und Datenspeicher werden Pydantic und PostgreSQL genannt
- Die vollständige Integrationsliste ist in der Dokumentation zu finden
Nutzungserfahrungen von Entwicklern und Teams
- Peanut Robotics berichtet, nach der Bewertung mehrerer LLM-Frameworks sei das State Management von Burr eine starke Lösung für die Bereitstellung von Robotern auf Basis KI-gestützter Entscheidungslogik gewesen
- Watto.ai berichtet, dass sich modulare KI-Anwendungen leicht erstellen lassen und die UI das Debugging vereinfacht
- Paxton AI hebt hervor, dass Burr nicht nur wegen KI auf seltsame oder schwer verständliche Konzepte setzt
- Provectus berichtet, dass Burrs State Management hilfreich für das Erstellen von State-Snapshots, Debugging, Replay und den Aufbau von Evaluierungsfällen ist
- CognitiveGraphs berichtet, dass Burr im Vergleich zu verschiedenen agentischen LLM-Plattformen wie LangChain, CrewAi, AutoGen und Agency Swarm ein robusteres Framework für das Design komplexer Abläufe bietet
- TaskHuman berichtet, nach dem Wechsel von LangChain zu Burr innerhalb weniger Stunden gestartet zu sein und die gesamte Codebasis auf Burr umgestellt zu haben
Community und Projektstatus
- Die Community dient als Raum, um Hilfe zu bekommen, Projekte zu teilen und zur Zukunft von Burr beizutragen
- Beteiligungsmöglichkeiten gibt es über Discord, GitHub und Twitter / X
- Projektressourcen verlinken auf Dokumentation, Beispiele, YouTube, Roadmap und Changelog
- Apache Burr ist ein Projekt in der Inkubationsphase bei der Apache Software Foundation und wird vom Apache Incubator unterstützt
- Der Inkubationsstatus spiegelt nicht zwangsläufig den Reifegrad oder die Stabilität des Codes wider, zeigt jedoch an, dass noch keine vollständige Zustimmung der ASF vorliegt
1 Kommentare
Hacker-News-Kommentare
Bei Agent-Frameworks halte ich mein Urteil noch zurück, und ihr Nutzen hängt stark von der Art des Agenten ab. Es ist zum Beispiel etwas anderes, ob man innerhalb von 3 Sekunden eine ausreichend gute Antwort liefern muss oder ob ein einzelnes Problem 3 Stunden lang bearbeitet werden soll.
Letztlich lassen sich Agenten auf Kontextaufbau, LLM-Aufrufe, das Ausführen angeforderter Tool-Aufrufe, das Parsen der finalen Modellausgabe und die Rückgabe ans Frontend herunterbrechen. Es gibt Erweiterungen wie Memory oder asynchrone Tool-Aufrufe, aber aus Sicht klassischer Softwareentwicklung ist das nicht so komplex.
Alle wollen ihr eigenes Agent-Framework bauen, aber wenn man einen konkreten Agenten bauen muss, ist 1:1-Code, der genau auf diesen Agenten zugeschnitten ist, meiner Meinung nach deutlich einfacher und besser wartbar. Die Abstraktionen von Frameworks verdecken oft die Kernlogik und stehen eher im Weg; am Ende muss man sich nach den vom Framework gewählten Abstraktionen richten, was vom eigentlichen Ziel abweichen kann.
Dazu kommen Projektmanagement für Tickets, Abhängigkeiten, Fortschritt und das Neustarten festgefahrener Tickets, das Speichern von Gesprächsverläufen sowie Funktionen für Memory, Träumen und kumulatives Lernen, Observability für Kosten und Nutzung, Prompt-Evaluierung und automatische Anpassung, der Wechsel zwischen Modellanbietern und das Pinning von Modellversionen sowie Sandboxes, in denen echte Sessions laufen können.
Das muss man nicht alles von einem Anbieter beziehen, aber in den meisten Fällen sollte man sich nicht an einen einzelnen Modellanbieter binden und den eigenen Kontext sowie kumulatives Lernen selbst besitzen.
Alles in agentischen Anwendungen wird letztlich als Tokensequenz oder Anbieteraufruf umgesetzt, daher sollte das auf fast jeder Ebene der Anwendung deutlich sichtbar sein.
Trotzdem brauchen Leute etwas zu tun oder interessante Spielzeuge, und „die nächste Person“ ist den meisten offenbar nicht besonders wichtig, also scheint es akzeptabel, ihr die Ergebnisse bezahlter Spielzeit aufzubürden.
Apache Burr unterstützt oder wird wohl ein steckbares Vektor-RAG-System unterstützen, aber ich brauche eher einen Ansatz, bei dem Dokumente dem Kontext hinzugefügt und als Teil des aktualisierten Systemprompts erhalten bleiben, mit sehr spezifischer Feinabstimmung in diesem Prozess. Das ist eine maßgeschneiderte Nutzung des bestehenden RAG-Konzepts und passt nicht gut zu einem bestimmten Framework.
Für meinen Anwendungsfall ist eine maßgeschneiderte Implementierung richtig, aber die Engineering-Entscheidungen zur Aktualisierung älterer Agenten bleiben bestehen.
Einen Chatbot von Grund auf selbst zu bauen kann einfach oder sogar einfacher sein, aber sobald man Observability oder Tracing hinzufügen muss, sieht die Sache anders aus. Wenn man mit nur einer zusätzlichen Umgebungsvariable sämtliches Tracing in der UI nahezu ohne weiteren Aufwand durchsehen kann, ist eine Eigenlösung schwer konkurrenzfähig.
Ich frage mich, ob diese Seite mit https://vorpus.github.io/performativeUI/ erstellt wurde.
Sie erfüllt so ziemlich jedes denkbare Klischee einer KI-generierten Landingpage. Oder ist das absichtlich als Satire gemeint?
Ich nutze dieses Framework gern in privaten und beruflichen Projekten. Es war gut, einen zuverlässigen zustandsbehafteten Workflow für KI-Modelle und kostenlose Observability zu bekommen.
Ich habe ein Tool daran gekoppelt, das die Burr-Zustandsmaschine über MCP mountet und dem Agenten Leitplanken gibt; selbst wenn die Zustandsmaschine noch so komplex wird, sind die MCP-Tools auf die Navigation innerhalb der Zustandsmaschine beschränkt: https://github.com/msradam/theodosia
Im Moment arbeite ich daran, Skills in Zustandsmaschinen umzuwandeln. Viele populäre Skills sind bereits als Abfolge von Schritten geschrieben, denen KI-Modelle folgen sollen, und ich denke, dass man sie mit Burrs expliziten Funktionen robuster machen kann.
Ich frage mich, wie das im Vergleich zu https://strandsagents.com/ abschneidet. Ich interessiere mich für Tools in diesem Bereich und bin noch nicht an ein bestimmtes gebunden, aber Bedrock + Serverless on Agent Core fühlt sich wie der „einfache geführte Weg“ an. Plattformbindung gefällt mir allerdings nicht.
Bisher fühlt es sich nicht so an, und manchmal wirkt es sogar, als würden die beiden miteinander kollidieren.
Hier sieht man das Builder-Pattern und Decorators. Python hat zwar auch Decorators, aber ich finde, sie eignen sich am besten als „Filter“, die auf Funktionen oder Methoden angewendet werden. Also etwa: Diese Funktion cachen, die Ausgabe dieser Funktion immer serialisieren oder diese Funktion als Tool für eine agentenartige Laufzeit vorbereiten
Für Registrierung oder Ablaufsteuerung sind sie meiner Meinung nach nicht gedacht. Man kann anderer Meinung sein, aber irgendwer muss es sagen. FastAPI hat die moderne Verwendung von Decorators viel zu sehr in die falsche Richtung gezogen
Das Builder-Pattern ist in Rust eher eine Konvention, die daraus entstanden ist, dass es dort keine benannten Keyword-Argumente gibt, und Python-Funktionen legen ohnehin schon einen benannten Vertrag offen. Es gibt fast nie einen guten Grund, Konfigurationsparameter der Reihe nach über verkettete Methodenaufrufe zu übergeben
Wenn man einen Zustand hinzufügen muss, der im Konstruktor oder in einer Factory noch nicht existiert, dann ist das keine Anwendung des Builder-Patterns, sondern Registrierung. Ein Ort, an dem man das Builder-Pattern gerade noch gelten lassen kann, sind Query-Builder. Dort baut man wiederholt Konzepte auf, und die Metadaten-Slots in Form von Methodennamen und Keyword-Argumenten sind tatsächlich nützlich. Methoden zu verwenden, die statt Keyword-Argumenten einen einzelnen Parameter entgegennehmen, halte ich für falsch
Das wirkt wie eine ziemlich naive Vorstellung davon, was ein zuverlässiger AI-Agent ist
Zuverlässigkeit bedeutet, „kann er die übertragene Aufgabe zu Ende bringen“, und hat mit einer Zustandsmaschine an sich nichts zu tun
Von Burr habe ich zum ersten Mal gehört, und ich frage mich, warum es bei Apache inkubiert wurde
Einige werden erfolgreich abgeschlossen und werden zu Namen, die jeder kennt, andere scheitern und landen im Attic. Die ASF bietet organisatorische Unterstützung und fördert im Allgemeinen gute Communities
Die Seite sieht aus wie Wegwerf-Müll, der mit Claude Code gebaut wurde, und sie versucht nicht einmal, ohne JavaScript zu funktionieren. Wenigstens gibt es Markenkonsistenz
Ich konnte keine explizite Begründung für den Namen finden, aber für Interessierte gibt es hier ein Hamilton-Beispiel: https://github.com/apache/burr/tree/main/examples/multi-agen...
Die Verbindung zu Hamilton besteht darin, dass es sich um die zweite Open-Source-Bibliothek handelt, die DAGWorks nach der Hamilton-Bibliothek veröffentlicht hat. Der Name spielt mit der Vorstellung, wie es gewesen wäre, wenn Burr und Hamilton zusammengefunden und ihre Unterschiede überwunden hätten, um eine bessere Föderation zu schaffen
Ursprünglich wurde Burr als Mechanismus gebaut, um Zustände zwischen Hamilton-DAG-Ausführungen zu handhaben. DAGs haben schließlich keine Zyklen. Später wurde klar, dass sich das viel breiter anwenden lässt, und dann wurde es entsprechend breiter veröffentlicht
https://pypi.org/project/burr/
Ich frage mich, ob jemand ein empfehlenswertes Orchestrierungs-Tool oder eine Plattform für Coding-Agenten kennt. Ich möchte codex- oder claude-Agenten auf mehreren Maschinen ausführen, verwalten und überwachen
Wenn möglich, wäre Self-Hosting oder Open Source gut. Ich weiß, dass Claude Code intern schon viel davon mitbringt, aber das ist Claude-spezifisch
Ich bin nicht sicher, wie gut es sich mit Skills und Ähnlichem integrieren lässt, aber auf den ersten Blick scheint es zu funktionieren
https://burr.apache.org/docs/examples/agents/