Execuție Asincronă & Batch: kickoff_for_each() și kickoff_async() în CrewAI & Sisteme Multi-Agent

Metodele de scalare din CrewAI pentru rularea aceleiași echipe pe o listă de zeci de intrări (batch processing) sau în paralel în aplicații asincrone FastAPI.

Sintaxă & invocare Python
# Procesarea unei liste de subiecte (Batch):
intrari = [
    {"companie": "UiPath", "piata": "Automatizare AI"},
    {"companie": "Bitdefender", "piata": "Securitate Cibernetică"}
]
rezultate = echipa.kickoff_for_each(inputs=intrari)

Descriere & Utilizare

Odată ce ai construit o echipă Crew care generează un raport de analiză pentru un client sau un produs, următoarea cerință firească este: „Cum o rulez pentru o listă de 50 de clienți sau în interiorul unui server web asincron fără să blochez firul de execuție?”.

CrewAI oferă patru variante complementare ale metodei de pornire: kickoff(inputs) (sincron, o singură intrare), kickoff_for_each(inputs=[...]) (rulează secvențial echipa pentru fiecare dicționar din listă), kickoff_async(inputs) (asincron cu await) și kickoff_for_each_async(inputs=[...]) (procesează toată lista de intrări în paralel folosind asyncio!).

Aceste metode fac integrarea unei echipe CrewAI într-un endpoint async def din FastAPI sau într-un job de procesare nocturnă extrem de simplă.

Cum să o reții ușor

💡 Dacă kickoff() este prepararea unei singure cafele la comandă, kickoff_for_each_async() este pornirea unei baterii de espressoare care pregătesc simultan comenzile pentru o sală întreagă de conferințe.

Opțiuni și parametri tehnici

  • kickoff_for_each(inputs: list[dict]): primește o listă de dicționare și returnează o listă de obiecte CrewOutput.
  • await kickoff_async(inputs: dict): variantă nativă async pentru integrarea în bucle de evenimente Python (FastAPI, Discord.py, Aiogram).
  • await kickoff_for_each_async(inputs: list[dict]): lansează execuțiile echipei concurent pentru toate elementele din listă.

Exemple practice și cazuri de utilizare

  • Rulare în paralel cu asyncio: rezultate = await echipa.kickoff_for_each_async(inputs=[{"url": u} for u in lista_urluri])
  • Parcurgerea rezultatelor după batch: for r in rezultate: print(r.raw)
  • Integrare directă în FastAPI: @app.post("/analiza") async def analiza(req: Cerere): res = await echipa.kickoff_async(inputs=req.model_dump()); return {"raport": res.raw}

Sfaturi de configurare & capcane

Când folosești kickoff_for_each_async() pe liste mari (ex: > 10 elemente), setează parametrul max_rpm pe Crew sau pe Agent pentru a nu lovi limita de Rate Limit (429) a furnizorului API!

Comenzi și ghiduri înrudite