Autonomia totală a agenților AI este dezirabilă pentru sarcini de cercetare sau redactare, dar reprezintă un risc inacceptabil în acțiuni cu impact direct asupra lumii reale: trimiterea de emailuri către clienți, executarea de tranzacții financiare sau publicarea de articole pe site-uri live.
Funcționalitatea Human-in-the-Loop (HITL) din CrewAI permite setarea parametrului human_input=True pe orice sarcină. Când agentul termină redactarea rezultatului preliminar, acesta oprește execuția și afișează conținutul în consolă sau interfață grafică, așteptând confirmarea sau corecturile utilizatorului.
Utilizatorul poate aproba rezultatul prin simpla apăsare a tastei Enter sau poate introduce comentarii de corecție (ex: ‘Schimbă tonul să fie mai formal și elimină mențiunea despre reducerea de 10%’). Agentul reia sarcina, încorporează criticile umane și iterează până la aprobarea finală.
Sintaxă, opțiuni și concepte cheie
| Opțiune / Concept | Descriere practică |
|---|---|
human_input=True |
Directiva setată pe nivelul `Task` care obligă agentul să ceară aprobare umană. |
Interactive Refinement Loop |
Bucla interactivă de feedback în care omul dictează modificări suplimentare. |
Terminal / Webhook Prompt |
Canalul prin care este expus dialogul de aprobare (linie de comandă sau apel API extern). |
Task Fallback Action |
Politica de abandon sau reluare în cazul în care utilizatorul respinge categoric execuția. |
Exemple practice și configurații
Exemplul 1: Sarcină de publicare articol pe blog cu aprobare umană obligatorie
Cum se configurează o echipă în care editorul final este asistat de om.
from crewai import Agent, Task, Crew
redactor = Agent(
role="Senior Content Creator",
goal="Scrie articole tehnice aprofundate",
backstory="Jurnalist tehnologic experimentat",
verbose=True
)
task_redactare = Task(
description="Scrie un ghid despre securitatea serverelor MCP.",
expected_output="Articol complet formatat în Markdown cu subtitluri.",
agent=redactor,
human_input=True # Solicita validare umană înainte de finalizare
)
echipa = Crew(agents=[redactor], tasks=[task_redactare])
echipa.kickoff()
Rezultat & Impact
Agentul prezintă draftul în consolă și așteaptă acordul explicit înainte de a marca sarcina ca încheiată.
Greșeli frecvente și bune practici
- Activarea `human_input=True` în medii automate de tip cron job sau scripturi headless unde nu există o sesiune TTY activă, blocând execuția la infinit.
- Folosirea aprobării umane pentru sarcini triviale de rutină, creând oboseală de alertă (alert fatigue) pentru operator.