Was ist Pyspur?

Pyspur ist eine Open-Source-Plattform, die entwickelt wurde, um die Entwicklung von KI-Agenten durch Bereitstellung einer visuellen, knotenbasierten Umgebung zu beschleunigen. Sie ermöglicht es Ingenieuren, komplexe KI-Workflows zu erstellen, zu debuggen und bereitzustellen, indem sie modulare Komponenten auf einer Drag-and-Drop-Leinwand verbinden.
Drag & Drop to build AI Agents.
— Shubham Saboo (@Saboo_Shubham_) December 19, 2024
And deploy to API in one click with Nocode.
100% Opensource. pic.twitter.com/iPEJEzIHVI
Das Kernproblem, das Pyspur löst, ist der Mangel an Transparenz und der langsame Iterationszyklus, der in der KI-Entwicklung üblich ist. Es bekämpft "Prompt-Hölle" und "Workflow-Blindstellen", indem es Entwicklern ermöglicht, die Eingaben und Ausgaben jedes Schritts in der Logik ihres Agenten in Echtzeit zu überprüfen. Die Plattform bietet integrierte Unterstützung für fortgeschrittene Muster wie Retrieval-Augmented Generation (RAG), ermöglicht Breakpoints mit menschlicher Beteiligung (human-in-the-loop) und kann jeden Workflow mit einem einzigen Klick als produktionsreife API bereitstellen. Letztendlich hilft Pyspur Ingenieuren, zuverlässigere und besser debuggbare KI-Systeme schneller zu erstellen.
Möchten Sie eine integrierte All-in-One-Plattform für Ihr Entwicklerteam, um mit maximaler Produktivität zusammenzuarbeiten?
Apidog erfüllt alle Ihre Anforderungen und ersetzt Postman zu einem viel günstigeren Preis!
We’re thrilled to share that MCP support is coming soon to Apidog! 🚀
— Apidog (@ApidogHQ) March 19, 2025
Apidog MCP Server lets you feed API docs directly to Agentic AI, supercharging your vibe coding experience! Whether you're using Cursor, Cline, or Windsurf - it'll make your dev process faster and smoother.… pic.twitter.com/ew8U38mU0K
Fangen wir an!
1. Umgebungseinrichtung
Wählen Sie die Einrichtungsoption, die am besten zu Ihrem Ziel passt. Für die lokale Entwicklung und Experimente ist die pip
-Installation ausreichend. Für skalierbare oder Produktionssysteme wird die Docker-basierte Einrichtung empfohlen, da sie eine reproduzierbare, containerisierte Umgebung mit einer dedizierten PostgreSQL-Instanz bietet.
Option A: Lokale pip
-Installation
Voraussetzungen: Python 3.11+
Von PyPI installieren:
pip install pyspur
Projektverzeichnis initialisieren: Dieser Befehl erstellt ein Projektgerüst, einschließlich einer .env
-Datei für die Konfiguration.
pyspur init my-pyspur-project && cd my-pyspur-project
Server starten: Das Flag --sqlite
weist Pyspur an, eine lokale SQLite-Datenbank zu verwenden, wodurch die Abhängigkeit von einem separaten Datenbankserver entfällt.
pyspur serve --sqlite
Auf UI zugreifen: Navigieren Sie in Ihrem Browser zu http://localhost:6080
.
Option B: Docker-Einrichtung
Voraussetzungen: Docker Engine
Setup-Skript ausführen: Dieser Befehl lädt ein Shell-Skript herunter und führt es aus, das das Pyspur-Repository klont, die Datei docker-compose.dev.yml
konfiguriert und den Anwendungsstack (Frontend, Backend, Datenbank) startet.
curl -fsSL https://raw.githubusercontent.com/PySpur-com/pyspur/main/start_pyspur_docker.sh | bash -s pyspur-project
Auf UI zugreifen: Navigieren Sie zu http://localhost:6080
.
2. Erstellen wir einen Workflow mit Pyspur
Anstatt von Grund auf neu zu bauen, laden und analysieren wir eine vorhandene Pyspur-Vorlage. Dieser Ansatz bietet einen realistischen Einblick in einen nicht-trivialen Workflow.
Vorlage laden:
- Klicken Sie auf dem Pyspur-Dashboard auf "New Spur".
- Wählen Sie im erscheinenden Modal den Tab "Templates".
- Wählen Sie die Vorlage "Joke Generator" (Witz-Generator). Die Leinwand wird mit einem vorgefertigten Workflow gefüllt.
Workflow-Analyse:
Dieser Workflow wurde entwickelt, um einen Witz zu generieren und ihn dann zu verfeinern. Er verwendet einen BestOfNNode
, eine fortgeschrittene Komponente, die einen LLM-Prompt N Mal ausführt, einen weiteren LLM-Aufruf verwendet, um die N Ausgaben zu bewerten, und die beste auswählt.
Betrachten wir die wichtigsten Knoten, wie in joke_generator.json
definiert:
input_node
(InputNode
): Dieser Knoten definiert den Einstiegspunkt des Workflows.
config.output_schema
:{ "topic": "string", "audience": "string" }
- Dies gibt an, dass der Workflow zwei String-Eingaben benötigt: das
topic
(Thema) des Witzes und die beabsichtigteaudience
(Zielgruppe).
JokeDrafter
(BestOfNNode
): Dies ist die erste Stufe der Witzerstellung.
config.system_message
:"You are a stand-up comedian who uses dark humor like Ricky Gervais or Jimmy Carr..."
config.user_message
:"Your audience is: {{input_node.audience}}\nThe topic should be about {{input_node.topic}}"
- Diese Jinja2-Vorlage fügt die Daten aus dem
input_node
dynamisch ein. config.samples
:10
- Dies weist den Knoten an, 10 Witzentwürfe zu generieren.
config.rating_prompt
:"Rate the following joke on a scale from 0 to 10..."
- Nach der Generierung von 10 Witzen wird dieser Prompt verwendet, um ein LLM jeden Witz bewerten zu lassen. Der Knoten wählt dann den am höchsten bewerteten Witz aus.
config.output_schema
:{ "initial_joke": "string" }
- Die Ausgabe des Knotens ist ein einzelner String: der beste Witz aus den 10 Entwürfen.
JokeRefiner
(BestOfNNode
): Dieser Knoten nimmt den entworfenen Witz und verbessert ihn.
config.system_message
:"Your goal is to refine a joke to make it more vulgar and concise..."
config.user_message
:{{JokeDrafter.initial_joke}}
- Entscheidend ist, dass die Eingabe dieses Knotens die Ausgabe des
JokeDrafter
-Knotens ist. config.samples
:3
- Er generiert 3 verfeinerte Versionen des ursprünglichen Witzes.
- Er verwendet auch einen Bewertungs-Prompt, um die beste der drei Verfeinerungen auszuwählen.
config.output_schema
:{ "final_joke": "string" }
Links: Das links
-Array im JSON definiert den Datenfluss:input_node
-> JokeDrafter
-> JokeRefiner
.
Ausführung und Inspektion:
- Verwenden Sie im Testpanel auf der rechten Seite die vorausgefüllte Testeingabe oder erstellen Sie Ihre eigene (z. B. Thema: "KI-Assistenten", Zielgruppe: "Entwickler").
- Klicken Sie auf Run (Ausführen).
- Während der Workflow ausgeführt wird, klicken Sie auf den
JokeDrafter
-Knoten. Sie können dessenrun_data
überprüfen, die alle 10 generierten Entwürfe und ihre entsprechenden Bewertungen zeigt, was Ihnen einen transparenten Einblick in den "Denkprozess" des Agenten gibt. - Der endgültige, verfeinerte Witz wird in der Ausgabe des
JokeRefiner
-Knotens verfügbar sein.
3. Implementierung einer RAG-Pipeline
Obwohl nicht Teil des Witz-Generators, ist Retrieval-Augmented Generation (RAG) eine entscheidende Fähigkeit von Pyspur. Hier ist der technische Prozess zum Hinzufügen von Wissen zu einem Agenten:
- Dokumentaufnahme (Collection): Navigieren Sie zum Abschnitt RAG. Wenn Sie eine "Document Collection" erstellen und eine Datei hochladen (z. B. ein PDF), initiiert Pyspur einen Backend-Prozess, der das Dokument in Text parst, es basierend auf der Token-Länge in konfigurierbare Abschnitte (Chunks) unterteilt und diese Abschnitte mit Quell-Metadaten in seiner Datenbank speichert.
- Vektorisierung (Index): Das Erstellen eines "Vector Index" aus einer Collection löst einen weiteren Prozess aus. Pyspur durchläuft jeden Textabschnitt, macht einen API-Aufruf an ein angegebenes Embedding-Modell (z. B. OpenAIs
text-embedding-ada-002
), um eine Vektorrepräsentation zu erhalten, und fügt diese Vektoren in eine konfigurierte Vektordatenbank ein (z. B. ChromaDB, PGVector). - Abruf (Workflow Node): In einem Workflow wird der Retriever Node so konfiguriert, dass er auf einen bestimmten Vector Index verweist. Zur Laufzeit wird dessen Eingabe
query
mit demselben Modell eingebettet, und eine semantische Suche (ungefährer nächster Nachbar) wird gegen die Vektordatenbank durchgeführt, um die relevantesten Textabschnitte abzurufen. Diese Abschnitte werden dann als Kontext an ein nachgeschaltetes LLM übergeben.
4. Bereitstellung als Produktions-API
Wenn Ihr Workflow fertiggestellt ist, können Sie ihn als sicheren HTTP-Endpunkt bereitstellen.
Bereitstellung initiieren: Klicken Sie in der oberen Navigationsleiste auf die Schaltfläche "Deploy" (Bereitstellen).
API-Aufruftyp auswählen:
- Blocking (Synchron): Für schnell ausführende Workflows. Der Client erhält das Ergebnis in derselben HTTP-Antwort.
- Endpunkt:
POST /api/wf/{workflow_id}/run/?run_type=blocking
- Non-Blocking (Asynchron): Für langlaufende Workflows (wie unser Witz-Generator mit über 10 LLM-Aufrufen). Der Client erhält sofort eine
run_id
und muss einen separaten Endpunkt nach dem Ergebnis abfragen. Dies verhindert Client-Timeouts. - Start-Endpunkt:
POST /api/wf/{workflow_id}/start_run/?run_type=non_blocking
- Status-Endpunkt:
GET /api/runs/{run_id}/status/
Integration in Ihre Anwendung:
Das Bereitstellungs-Modal generiert Client-Code. Der Body der POST
-Anfrage muss ein JSON-Objekt sein, bei dem der Schlüssel initial_inputs
ein Objekt enthält, dessen Schlüssel mit dem title
Ihrer Eingabeknoten übereinstimmen.
Beispiel Python Client (für den Witz-Generator):
import requests
import json
import time
PYSUR_HOST = "http://localhost:6080"
WORKFLOW_ID = "your_workflow_id_here" # Get this from the deploy modal
# The keys in this dict must match the 'output_schema' of the input_node
payload = {
"initial_inputs": {
"input_node": {
"topic": "Python decorators",
"audience": "Senior Software Engineers"
}
}
}
# 1. Start the non-blocking run
start_url = f"{PYSUR_HOST}/api/wf/{WORKFLOW_ID}/start_run/?run_type=non_blocking"
start_resp = requests.post(start_url, json=payload)
run_id = start_resp.json()['id']
print(f"Workflow started with run_id: {run_id}")
# 2. Poll for the result
status_url = f"{PYSUR_HOST}/api/runs/{run_id}/status/"
while True:
status_resp = requests.get(status_url)
data = status_resp.json()
status = data.get("status")
print(f"Current status: {status}")
if status in ["COMPLETED", "FAILED"]:
print("Final Output:")
print(json.dumps(data.get("outputs"), indent=2))
break
time.sleep(2)
Fazit
Pyspur bietet eine robuste, transparente und technisch fundierte Umgebung für die Entwicklung von KI-Agenten. Durch die Abstraktion einzelner Operationen in modulare Knoten und die Bereitstellung einer visuellen Leinwand ermöglicht es Ingenieuren, sich auf die übergeordnete Logik ihrer Agenten zu konzentrieren. Die wahre Stärke der Plattform liegt in ihrer tiefen Inspektionsfähigkeit – die es Ihnen ermöglicht, den Datenfluss zu verfolgen und die Ein-/Ausgabe jeder Komponente zu debuggen – und ihrem nahtlosen Übergang vom visuellen Prototyp zur produktionsreifen API. Der Übergang von einfachen Single-Call-Agenten zu komplexen, mehrstufigen Workflows, die Muster wie Best-of-N oder RAG nutzen, ist nicht nur möglich, sondern intuitiv. Mit Pyspur bauen Sie nicht nur Kästchen zusammen; Sie entwickeln zuverlässige, debuggbare und skalierbare KI-Systeme.
Möchten Sie eine integrierte All-in-One-Plattform für Ihr Entwicklerteam, um mit maximaler Produktivität zusammenzuarbeiten?
Apidog erfüllt alle Ihre Anforderungen und ersetzt Postman zu einem viel günstigeren Preis!