Configurarea Declarativă YAML (@CrewBase, @agent, @task) în CrewAI & Sisteme Multi-Agent

Arhitectura recomandată de producție în CrewAI: separarea prompturilor în fișierele agents.yaml și tasks.yaml și legarea lor în Python prin decoratorii @CrewBase, @agent, @task și @crew.

Sintaxă & invocare Python
# config/agents.yaml:
cercetator:
  role: >
    Cercetător {domeniu}
  goal: >
    Descoperă cele mai noi inovații în {domeniu}
  backstory: >
    Ești un analist meticulos orientat spre date verificabile.

Descriere & Utilizare

În proiectele reale, scrierea unor stringuri lungi de role, goal, backstory și description direct în mijlocul codului Python devine greu de întreținut și de versionat.

De aceea, arhitectura standard generată de CrewAI separă complet prompturile (în fișierele declarative config/agents.yaml și config/tasks.yaml) de logica de cod (în fișierul crew.py).

Clasa Python este decorată cu @CrewBase, care încarcă automat fișierele YAML în self.agents_config și self.tasks_config. Metodele decorate cu @agent și @task sunt colectate automat în listele self.agents și self.tasks folosite în metoda @crew.

Cum să o reții ușor

💡 Exact ca separarea HTML/CSS de JavaScript în dezvoltarea web: textele și instrucțiunile stau curate în fișiere YAML ușor de editat, iar Python-ul se ocupă doar de conectarea uneltelor și a modelelor.

Opțiuni și parametri tehnici

  • @CrewBase: decorator de clasă care încarcă automat config/agents.yaml și config/tasks.yaml.
  • @agent: marchează o metodă care returnează un obiect Agent(config=self.agents_config["nume"], ...).
  • @task: marchează o metodă care returnează un Task(config=self.tasks_config["nume"], ...).
  • @before_kickoff / @after_kickoff: hook-uri pentru modificarea dicționarului inputs înainte de start sau post-procesarea rezultatului final.

Exemple practice și cazuri de utilizare

  • Definirea agentului în crew.py din YAML: @agent def cercetator(self) -> Agent: return Agent(config=self.agents_config["cercetator"], tools=[SerperDevTool()])
  • Asocierea agentului direct din tasks.yaml: adaugă cheia agent: cercetator sub numele task-ului în YAML.
  • Pre-procesarea intrărilor cu @before_kickoff: adaugă automat data curentă în inputs["data_azi"] înainte de pornirea echipei.

Sfaturi de configurare & capcane

În fișierele YAML, folosește întotdeauna indicatorul > (folded block scalar) după role:, goal: și description: pentru a putea scrie prompturi pe mai multe rânduri fără erori de parsare a ghilimelelor.

Comenzi și ghiduri înrudite