Human-in-the-loop für CrewAI

Menschliche Entscheidungen für CrewAI-Agenten, auf dem Handy.

Ersetze CrewAIs human_input in der Konsole durch eine Freigabe auf dem Handy. Dein Agent wartet, bis dein Nutzer auf „Genehmigen“ oder „Ablehnen“ tippt.

Was CrewAI mitbringt

human_input=True an einer Aufgabe

Setzt du human_input=True an einer Aufgabe, hält die Crew an, sobald der Agent seine Ausgabe entworfen hat. Sie gibt sie aus und wartet auf Feedback über stdin. Das hilft bei der Entwicklung: Du siehst den Entwurf und kannst eingreifen, bevor der nächste Agent ihn übernimmt.

nativ
task = Task(
    description="Draft the reply to the customer",
    agent=support_agent,
    human_input=True,   # blocks on input() at the terminal
)

Wo es nicht weitergeht

  • Es liest stdin. Ein Container, Cronjob oder Queue-Worker hat keine entsprechende Eingabe. Der Aufruf hängt daher oder löst einen Fehler aus.
  • Es hält die gesamte Crew an. Alle anderen Agenten warten untätig dahinter.
  • Das Feedback geht als Zeichenfolge zurück an das Modell. Nichts dokumentiert, dass ein Mensch es geprüft hat.
  • Nur die Person an diesem Terminal kann antworten, nie der Nutzer, den die Aktion betrifft.

Die Lösung

Pushary holt die Antwort deines Nutzers ein.

human_input wartet an einem Terminal. Pushary schickt die Frage stattdessen auf das Handy deines Nutzers, wartet auf Freigabe oder Ablehnung und speichert jede Antwort. Alles außer einem Ja weist den Agenten an, nicht fortzufahren.

connect() liefert den Link, den dein Nutzer einmal öffnet. make_ask_human_tool gibt dem Agenten ein fertiges CrewAI-Tool, das an diesen Nutzer gebunden ist. Ein durch Prompt-Injection manipuliertes Modell kann deshalb niemand anderen fragen. Der Agent ruft das Tool auf und wartet auf die Antwort. Ein Nein oder keine Antwort bedeutet: stoppen.

bash
pip install pushary-crewai
zwei Aufrufe
from crewai import Agent, Task, Crew
from pushary_crewai import connect, make_ask_human_tool

# Once per user: show them this link.
link = connect("user_123")

agent = Agent(
    role="Ops",
    goal="Ship safely",
    backstory="Careful operator.",
    tools=[make_ask_human_tool("user_123")],  # asks this user only; no answer means no
)

Frage im Code der riskanten Aktion, um sie zu sperren

Der Agent entscheidet selbst, wann er make_ask_human_tool aufruft. Das Tool ist daher optional. Eine Aufgabe mit „erst fragen“ verhindert keine Erstattung. Rufe ask_human im Code der riskanten Aktion auf und führe sie nur aus, wenn approved true ist.

im Code der riskanten Aktion
from pushary_crewai import ask_human

d = ask_human("Approve this refund?", external_id="user_123", type="confirm")
if d["approved"]:
    issue_refund()

So funktioniert es

Von der Installation zur ersten Antwort

Verbinde deinen Nutzer einmal. Sichere den riskanten Schritt mit einer Freigabe ab. Pushary schickt die Frage, wartet auf die Antwort und speichert sie.

  1. 01

    Adapter installieren

    Führe pip install pushary-crewai aus und speichere deinen API-Schlüssel in PUSHARY_API_KEY.

  2. 02

    Nutzer einmal verbinden

    connect() mit deiner eigenen Nutzer-ID liefert einen Link. Dein Nutzer öffnet ihn einmal auf seinem Handy und installiert die kostenlose Pushary-App. Kein Konto, keine Zahlung.

  3. 03

    Dem Agenten das Tool geben

    Ergänze die Tools des Agenten um make_ask_human_tool(user_id) und entferne human_input=True. Für eine Erstattung oder Löschung rufst du ask_human direkt im Code dieser Aktion auf.

  4. 04

    Auf die Antwort reagieren

    Nur eine ausdrückliche Freigabe zählt. Ein Nein, eine abgelaufene Anfrage oder keine Antwort weisen den Agenten an, nicht fortzufahren.

Eine Frage kann ein Ja oder Nein verlangen, eine Auswahl aus einer Liste oder eine Texteingabe. Jede Antwort wird gespeichert.

Vor der Veröffentlichung

Stolperfallen bei CrewAI

Lokal funktioniert es, im Produktivbetrieb hängt es
Das ist das häufigste Thema im CrewAI-Support. human_input=True funktioniert auf dem Laptop und hängt beim ersten Lauf ohne angeschlossenes Terminal stillschweigend. Wenn deine Crew nach dem Deployment keine Ausgabe mehr liefert, ist das meist der Grund.
Kickoff mit vielen Eingaben fragt zu jedem Eintrag
kickoff_for_each mit einer human_input-Aufgabe fragt jeden einzelnen Eintrag nacheinander im Terminal ab. Zehn Eingaben ergeben zehn Fragen, für die niemand am Terminal sitzt.
Prüfen ist nicht dasselbe wie Freigeben
human_input gibt dem Agenten Feedbacktext zum Einarbeiten. Es verhindert nicht, dass die Aufgabe abgeschlossen wird. Darf die Aktion ohne Ja nicht laufen, brauchst du eine ausdrückliche Freigabe oder Ablehnung, bei der keine Antwort als Nein zählt.

Der Partner-Tarif

Dein Agent fragt deine Nutzer, nicht nur dich

Stelle deinen Nutzern deinen Agenten bereit. Jeder gibt dessen riskante Aktionen vom eigenen Handy aus frei, unter deiner Marke.

$99/ Monat, alle Frameworks enthalten
Start free

Deine Nutzer brauchen kein Pushary-Konto und zahlen nichts an uns.

Deine Nutzer antworten auf ihren eigenen Handys

Verbinde jeden Nutzer einmal über einen Link. Er installiert die kostenlose Pushary-App und antwortet vom Sperrbildschirm aus, ohne eigenes Konto.

Keine Antwort heißt Nein

Führe die Aktion nur nach einer ausdrücklichen Freigabe aus. Eine wartende, abgelaufene oder abgebrochene Anfrage zählt nie als Ja. Pushary behält jede Anfrage, damit dein Code sie nach einem Neustart wieder aufnehmen kann.

Erreicht sie auf dem Handy

Die App kommt zuerst, denn nur sie zeigt „Genehmigen“ und „Ablehnen“ auf dem Sperrbildschirm. Browser-Benachrichtigungen folgen danach. Du musst kein Zustellsystem bauen.

Jede Antwort gespeichert

Zu jeder Antwort wird gespeichert, wer wann geantwortet hat. Du kannst sie durchsuchen und exportieren. Mit einer Callback-URL geht jede Antwort außerdem als signierter Webhook an deinen Server.

FAQ

Fragen und Antworten

Hat CrewAI integriertes Human-in-the-loop?
Ja, für eine Person am Terminal. human_input=True an einer Aufgabe fragt über stdin; Flows bieten @human_feedback. Um deinen Nutzer stattdessen auf dem Handy zu erreichen, nutze make_ask_human_tool aus pushary-crewai oder dessen Flow-Beispiel. Es bindet Pushary in @human_feedback ein und setzt den Flow fort, sobald die Antwort eintrifft.
Gibt es ein CrewAI-Paket für Pushary?
Ja. pip install pushary-crewai liefert connect(), make_ask_human_tool(), ein fertiges, an einen Nutzer gebundenes CrewAI BaseTool sowie ask_human() für deinen eigenen Code. Ergänze das Tool für Fragen. Um eine Erstattung zu sperren, rufe ask_human() direkt im Erstattungscode auf.
Wie stelle ich sicher, dass eine CrewAI-Freigabe im Zweifel sperrt?
Das tut sie bereits. make_ask_human_tool und ask_human zählen nur eine ausdrückliche Freigabe als Ja. Ein Nein, eine abgelaufene Anfrage oder keine Antwort kommen als nicht genehmigt zurück.
Kann jeder meiner Endnutzer Freigaben auf seinem eigenen Handy erhalten?
Ja. Übergib deine eigene Nutzer-ID, wenn du das Tool erstellst. Jeder Nutzer installiert die kostenlose Pushary-App und öffnet einmal deinen Verbindungslink, ohne Pushary-Konto. Danach beantwortet jeder die Fragen zu seinen eigenen Aktionen, statt dass alles an die Person geht, die die Crew gestartet hat.
Was kann ein Mensch außer Ja und Nein antworten?
Eine Option aus einer Liste wählen oder Text eingeben. Rufe ask_human() mit type="select" und options oder mit type="input" auf. Das fertige Tool stellt Ja/Nein-Fragen oder bittet um Texteingaben. Auswahlfragen und Texteingaben öffnen die Pushary-App auf dem Handy. Behandle eine Auswahl oder Text als Daten, niemals als Erlaubnis zum Handeln.
Warum hängt human_input, wenn meine Crew im Produktivbetrieb läuft?
Weil es stdin liest und es im Produktivbetrieb kein Terminal gibt. In einem Container, Cronjob oder Queue-Worker blockiert der Aufruf endlos oder löst einen Fehler aus. Das ist die häufigste CrewAI-Überraschung nach dem Deployment. Schicke die Frage stattdessen auf ein Handy. Eine fehlende Antwort zählt dann als Nein, statt endloses Warten auszulösen.

Lass deinen CrewAI-Agenten fragen, bevor er handelt.

Verbinde einen Nutzer einmal, frage mit einem Aufruf und führe die Aktion nur bei einem Ja aus. Jede Antwort wird gespeichert.

Start free

Partner-Tarif, $99 im Monat. Deine Nutzer brauchen kein Pushary-Konto und zahlen nichts an uns.