Kaip naudoti CrewAI: praktinis vadovas multiojagentų darbo eigoms
Drąsus pažadas: jei kada nors norėjote „klonuoti“ geriausią komandos narį darbui atlikti greičiau, CrewAI jus priartina prie to – derindamas kelis AI agentus, kurie planuoja, bendradarbiauja ir kartu įgyvendina užduotis.
Šiame praktiniame, sprendimais pagrįstame vadove išmoksite tiksliai, kaip naudoti CrewAI: nuo sistemos įdiegimo ir agentų apibrėžimo iki vaidmenų, įrankių, užduočių ir struktūruotų multiojagentų darbo eigų kūrimo, kurios duoda realių rezultatų. Apžvelgsime tyrimų, turinio, duomenų analizės ir kodo generavimo šablonus bei kaip išvengti dažniausių klaidų kaip agentų aklavietės, užklausų perkrova ir įrankių piktnaudžiavimas.
Mūsų tikslas: žingsnis po žingsnio „išbandyk šiandien“ kelias su kopijuojamu kodu, patikrintomis geriausiomis praktikomis ir keliais darbo eigos šablonais, kuriuos galite pritaikyti. Nesvarbu, ar automatizuojate rinkos tyrimus, ar kuriate produkto specifikaciją iš užduočių, tai jūsų efektyvaus CrewAI naudojimo pamoka.
Kas yra CrewAI (ir kuo jis skiriasi)
- CrewAI yra sistema, skirta kurti multiojagentų sistemas, kur kiekvienas agentas turi vaidmenį, tikslą, įrankius ir taisykles. Sistema koordinuoja agentus – perduoda užduotis, dalijasi kontekstu ir vystosi link galutinio rezultato.
- Skirtingai nei vieno didelio kalbos modelio užklausa, CrewAI užtikrina struktūrą: agentai yra aiškiai apibrėžti, užduotys modularios, įrankiai su leidimais, o rezultatai – audituojami.
- Nauda: darbo eigos suskaidymas (tyrimai → apibendrinimas → rašymas → kokybės užtikrinimas), atspindintis realių komandų darbą – tik greičiau, mastelio keičiamai ir pakartotinai.
Greitas startas: kaip naudoti CrewAI per 10 minučių
Žemiau pateiktas minimalus pavyzdys, padėsiantis sukurti veikiantį multiojagentų kolektyvą. Naudosime Python.
1) Įdiegimas ir paruošimas
pip install crewai langchain-openai python-dotenv
Sukurkite .env failą su LLM teikėjų raktais:
OPENAI_API_KEY=sk-your-key
# arba kiti jūsų sistemos palaikomi teikėjai
2) Apibrėžkite agentus (vaidmenys + tikslai + įrankiai)
from crewai import Agent
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0.2)
researcher = Agent(
role="Rinkos tyrėjas",
goal="Rasti patikimą, šviežią informaciją apie tikslinę rinką ir konkurentus.",
backstory=(
"Jūs esate kruopštus analitikas, tikrinantis teiginius, cituojantis šaltinius ir apibendrinantis "
"signalus iš patikimų leidinių."
),
tools=[], # vėliau pridėkite įrankius paieškai, naršymui, prasiurbimui
llm=llm
)
strategist = Agent(
role="Produkto strategas",
goal="Apibendrinti tyrimus į aiškią pozicionavimo ir veiksmų kelią.",
backstory="Jūs prioritetą teikiate aiškumui, įgyvendinamumui ir matomiems rezultatams.",
tools=[],
llm=llm
)
writer = Agent(
role="Turinio kūrėjas",
goal="Parengti struktūruotą santrauką su pavyzdžiais ir tolesniais veiksmais.",
backstory="Rašote glaustai, įtikinamai ir laikotės stiliaus gairių.",
tools=[],
llm=llm
)
3) Sukurkite užduotis (įėjimai, išėjimai ir priėmimo kriterijai)
from crewai import Task
research_task = Task(
description=(
"Ištirti JAV mažų ir vidutinių įmonių projektų valdymo programinės įrangos rinką 2025 m. "
"Identifikuoti pagrindinius konkurentus, kainų lygius, ICP ir tris nepatenkintas poreikių sritis. "
"Pateikti svarbiausias išvadas su 3–5 citatomis."
),
expected_output=(
"Markdown formato santrauka su skyriais: rinkos dydis, pagrindiniai žaidėjai, kainodara, ICP, "
"nepatenkinti poreikiai, šaltiniai (su nuorodomis)."
),
agent=researcher
)
synthesis_task = Task(
description=(
"Remiantis tyrimo santrauka, sukurti pozicionavimo teiginį, 2–3 išskirtinumus ir 90 dienų veiksmų planą su etapais."
),
expected_output="Trumpa strateginė ataskaita (iki 400 žodžių).",
agent=strategist
)
writing_task = Task(
description=(
"Paversti strateginę ataskaitą viešu vieno puslapio dokumentu. Įtraukti antraštę, vertės pasiūlymą, funkcijų punktus ir kvietimą veikti."
),
expected_output="Markdown formato vieno puslapio medžiaga, tinkama nukreipimo puslapiui.",
agent=writer
)
4) Koordinuokite komandą (darbo eiga + atmintis)
from crewai import Crew
crew = Crew(
agents=[researcher, strategist, writer],
tasks=[research_task, synthesis_task, writing_task],
process="sequential", # perduoti rezultatus paeiliui
verbose=True
)
result = crew.kickoff
print(result)
Tai jūsų pirmoji veikianti darbo eiga. Apibrėžėte agentus, sujungėte užduotis ir paleidote sekvencinį srautą. Norėdami išplėsti, pridėkite įrankius (paieška, prasiurbimas, kodo vykdymas), patikrinimo etapus ir paralelines stadijas.
Mentalinis modelis CrewAI projektams
Mąstykite kaip projektų vadovas:
- Vaidmenys: Kas ką daro? Tyrėjas, analitikas, inžinierius, recenzentas.
- Taisyklės: Kokie standartai privalo būti laikomasi? Stiliaus gidas, citatos, testai.
- Įrankiai: Kokios galimybės leidžiamos? Interneto paieška, vektorinės bazės, Python, API.
- Užduotys: Kaip mes skaidome užduotį? Įėjimai, išėjimai, priėmimo kriterijai.
- Perdavimai: Kas perduodama? Dokumentai, metaduomenys, apribojimai.
- Atsiliepimai: Kas patikrina? Kokybės užtikrinimo agentas, žmogus procese arba testai.
CrewAI atveju jūsų kodas įrašo šį veiklos modelį.
Kaip naudoti CrewAI tikram darbui: 5 patikrinti šablonai
1) Tyrimas → Apibendrinimas → Juodraštis (turinys ir ataskaitos)
- Agentai: tyrėjas, redaktorius, rašytojas, faktų tikrintojas.
- Įrankiai: interneto paieška, šaltinių tikrintuvas, stiliaus gidas.
- Patartina: priversti nurodyti citatas ir pateikti „teiginių lentelę“, kad būtų išvengta klaidingos informacijos.
fact_checker = Agent(
role="Faktų tikrintojas",
goal="Patikrinti visus teiginius pagrindiniuose šaltiniuose; pažymėti silpnas citatas.",
backstory="Skeptiškas, kruopštus, nešališkas.",
llm=llm
)
qa_task = Task(
description="Patikrinti visus faktinius teiginius; įterpti pataisas su [FIX] žymėmis.",
expected_output="Pataisytas juodraštis su pataisų santrauka.",
agent=fact_checker
)
2) Produkto specifikacija iš užduočių (inžinerija)
- Agentai: užduočių grupuotojas, specifikacijos autorius, peržiūrėtojas, testų autorius.
- Įrankiai: užduočių valdymo API, kodų bazės kontekstas per įterpimus, vienetinių testų generatorius.
- Patartina: pridėti automatizuotą „galutinio įvykdymo“ kontrolinį sąrašą.
3) Duomenys → Įžvalga → Pasakojimas (analitika)
- Agentai: duomenų tvarkytojas (Python), analitikas, pasakotojas.
- Įrankiai: Pandas, SQL, diagramų braižymas, užrašų blokas.
- Patartina: naudoti įrankį turintį agentą su
python vykdymu patikimam duomenų analizavimui.
4) Kodo generavimas su apsaugomis
- Agentai: planuotojas, programuotojas, stiliaus tikrintojas, testuotojas, peržiūrėtojas.
- Įrankiai: kodų saugyklos skaitymas, vienetinių testų paleidimas, formatavimo įrankiai, saugumo skeneris.
- Patartina: peržiūrėtojas turi nurodyti testus, įrodančius teisingumą.
5) Kliento el. laiškų sekos dideliu mastu
- Agentai: segmentuotojas, tekstų kūrėjas, suasmenintojas, kokybės užtikrinimas.
- Įrankiai: CRM API, šablonai, prekės ženklo tono vadovas.
- Patartina: pridėti įrankį sprendžiančią nepageidaujamo pašto riziką ir priversti A/B variantus.
Įrankių pridėjimas: suteikite agentams realias galimybes
CrewAI išsiskiria, kai agentai gali naudoti įrankius. Pavyzdžiui, suteikite tyrėjui interneto paieškos ir URL skaitymo funkcijas.
from langchain_community.tools import DuckDuckGoSearchRun
from langchain_community.document_loaders import WebBaseLoader
search = DuckDuckGoSearchRun
def web_search_tool(query: str):
return search.run(query)
def read_url_tool(url: str):
loader = WebBaseLoader(url)
docs = loader.load
return "\n\n".join([d.page_content[:2000] for d in docs])
researcher.tools = [web_search_tool, read_url_tool]
Geriausios praktikos:
- Mažiausios privilegijos principas: pridėkite tik tas priemones, kurių agentas tikrai reikia.
- Schemų laikymasis: įrankiai turėtų būti deterministiniai ir tipiški; kiek įmanoma grąžinti trumpą, struktūruotą tekstą (JSON/Markdown).
- Sąnaudų valdymas: laikykite įrankių atsakymus trumpus; apibendrinkite prieš perduodami kitam agentui.
Užduočių kūrimas, kuris pavyksta
Tinkamai sukurta užduotis yra esminė multiojagentų sistemų sėkmei.
- Būkite konkretūs: „Grąžinkite markdown lentelę su stulpeliais X, Y, Z.“
- Apibrėžkite priėmimo kriterijus: „Turi būti 3 citatos, susietos su pirminiais šaltiniais.“
- Nustatykite ribas: žodžių skaičius, laiko ar žingsnių limitai sumažina nukrypimus.
- Pridėkite pavyzdžių: pateikite trumpą norimos išvesties formato specifikaciją.
- Naudokite atminties žymes: taikykite nuoseklias antraštes/raktinius žodžius visose užduotyse, kad būtų lengva perduoti informaciją.
Pavyzdinė užduoties struktūra:
Task(
description=(
"Apibendrinti 5 naujausius tyrimus apie nuotolinio darbo produktyvumą (2023–2025) su metodologija, imties dydžiu ir pagrindinėmis išvadomis."
),
expected_output=(
"Markdown su H2 skyriais kiekvienam tyrimui, galutinė palyginimo lentelė ir nuorodos."
),
agent=researcher
)
Koordinavimo režimai: sekvencinis, paralelinis ir hibridinis
- Sekvencinis: patikimi duomenų perdavimai; lėtesnis, bet paprastesnis valdyti.
- Paralelinis: keli agentai dirba vienu metu (pvz., 3 tyrėjai); rezultatai sujungiami vėliau.
- Hibridinis: tyrimai išskirstomi paraleliai → apibendrinimas ir kokybės užtikrinimas – sutelkiama į vieną vietą.
Hibridinis pavyzdys:
r1 = Agent(role="Tyrėjas A", goal="Dėmesys kainodarai", backstory="", llm=llm)
r2 = Agent(role="Tyrėjas B", goal="Dėmesys funkcijoms", backstory="", llm=llm)
# Veiklos r1, r2 paraleliai; apibendrinimo užduotis sujungs jų rezultatus.
Patartina: sujungiant nurodykite apibendrintojui šalinėti pasikartojimus, spręsti konfliktus ir cituoti tvirtesnius šaltinius.
Apsaugos ir kokybės užtikrinimas: palaikykite agentų sąžiningumą
- Teisėjai: pridėkite recenzentą ar faktų tikrintoją su aiškia veto teise.
- Kontroliniai sąrašai: įrašykite atitiktį (privatumui, saugumui, prekės ženklo tonui) kaip kontrolinį sąrašą, kurį turi patikrinti kokybės agentas.
- Savikritika: paprašykite agentų įtraukti trumpą skyrių „Ką galėjau praleisti“.
- Deterministiškumas: kokybės agentams nustatykite mažesnę temperatūrą.
qa = Agent(
role="Kokybės užtikrinimo recenzentas",
goal="Užtikrinti, kad rezultatai atitiktų priėmimo kriterijus ir stiliaus gaires.",
backstory="Esate griežtas ir pedantiškas.",
llm=llm
)
Užklausų kūrimas CrewAI agentams
Agentų užklausos yra mini darbo aprašymai. Laikykite jas aiškias ir glaustas.
- Vaidmens užklausa: kas esi, ką optimizuoji.
- Tikslo užklausa: norima galutinė būsena.
- Apribojimai: žodžių skaičius, formatas, tonas, nuorodos.
- Įrankiai: pavadinimai, kada juos naudoti, ką grąžinti.
- Pavyzdžiai: 1–2 trumpi, realūs pavyzdžiai.
Pavyzdys:
researcher = Agent(
role="Analitinis tyrėjas",
goal=(
"Pateikti glaustus, tikslius santraukas su 3–5 patikimomis citatomis ir rizikos pastaba."
),
backstory=(
"Jūs tikrinate teiginius, renkate pirminius šaltinius ir pažymite nežinomybę."
),
llm=llm
)
Stebėjimas: matykite, ką agentai darė (ir kodėl)
Įjunkite išsamią registraciją ir saugokite artefaktus:
- Išsaugokite kiekvienos užduoties užklausą, atsakymą ir įrankių kvietimus.
- Išsaugokite paleidimo manifestą su metadata (modelis, temperatūra, įrankiai).
- Laikykite užrašų bloką tarpinėms pastaboms – tai padeda derinant ir auditui.
Pavyzdys:
crew = Crew(..., verbose=True, output_log_file="runs/2025-crew.log")
Kainos, delsos ir patikimumo patarimai
- Bandymai grupėmis: paralelizuokite nepriklausomas užduotis; apribokite kartu vykstančių užduočių skaičių dėl dažnio limitų.
- Apibendrinimas: glaustinkite tarpinę informaciją, kad sumažintumėte žodžių kiekį.
- Kešavimas: memorizuokite stabilias užduotis (pvz., rinkos apibrėžimus) su vektorinių duomenų bazėmis.
- Atsarginiai planai: numatykite atsarginį modelį arba pakartotinį bandymą prastiems kvietimams.
- Žmogus procese: pridėkite savanoriškus patvirtinimo etapus rizikingoms užduotims.
Dažnos klaidos (ir kaip jas ištaisyti)
- Klaida: neaiškios užduotys → nenuoseklūs rezultatai.
- Sprendimas: pridėkite aiškius priėmimo kriterijus ir pavyzdžius.
- Klaida: pernelyg daug įrankių → dėmesio išblaškymas ir papildomos sąnaudos.
- Sprendimas: laikykitės mažiausio leidimo principo, naudokite tik konkrečioms užduotims reikalingus įrankius.
- Klaida: begaliniai ciklai ar per didelis iteravimas.
- Sprendimas: nustatykite laiko/žingsnių limitus ir „sustabdyti, jei kriterijai pasiekti“ sąlygą.
- Klaida: konteksto praradimas tarp agentų.
- Sprendimas: naudokite struktūruotus perdavimo objektus (JSON) ir nuoseklias antraštes.
- Klaida: kokybės užtikrinimas paliekamas paskutinis.
- Sprendimas: laikykite kokybės užtikrinimą kaip pirmos klasės agentą su veto teise.
Viso proceso pavyzdys: konkurencingo santraukos generatorius
Tikslas: sugeneruoti konkurencinę santrauką, palyginant tris įrankius tikslinei auditorijai.
Agentai:
- Persona analizatorius → apibrėžia skausmo taškus ir užduotis.
- Tyrėjas → renka duomenis ir citatas.
- Apibendrintojas → kuria palyginimo lentelę ir įžvalgas.
- Rašytojas → parengia galutinę santrauką.
- Kokybės užtikrinimas → tikrina šaltinius ir aiškumą.
Struktūra:
persona = Agent(role="Persona analizatorius", goal="Apibrėžti ICP ir JTBD.", llm=llm)
researcher = Agent(role="Tyrėjas", goal="Surinkti patikimus duomenis.", llm=llm)
synth = Agent(role="Apibendrintojas", goal="Palyginti ir interpretuoti.", llm=llm)
writer = Agent(role="Rašytojas", goal="Paruošti vadovams skirtą santrauką.", llm=llm)
qa = Agent(role="Kokybės užtikrinimas", goal="Patikrinti teiginius ir aiškumą.", llm=llm)
persona_task = Task(description="Apibrėžti ICP ir JTBD SaaS RevOps lyderiams.", agent=persona,
expected_output="Punktai + skausmo taškai + sėkmės rodikliai.")
research_task = Task(description="Surinkti kainas, funkcijas ir apžvalgas 3 įrankiams.", agent=researcher,
expected_output="Lentelė + 5 citatos.")
synth_task = Task(description="Parengti palyginimo matrica ir 3 svarbiausias įžvalgas.", agent=synth,
expected_output="Markdown lentelė + įžvalgos.")
write_task = Task(description="Parašyti 1 puslapio santrauką su rekomendacijomis.", agent=writer,
expected_output="Vadovų santrauka markdown formatu.")
qa_task = Task(description="Patikrinti tikslumą ir skaitomumą; taisyti klaidas.", agent=qa,
expected_output="Švari, patvirtinta santrauka.")
crew = Crew(agents=[persona, researcher, synth, writer, qa],
tasks=[persona_task, research_task, synth_task, write_task, qa_task],
process="sequential", verbose=True)
print(crew.kickoff)
Kada naudoti CrewAI vietoje vienos užklausos
Naudokite CrewAI, kai:
- Užduotis natūraliai suskaidoma į vaidmenis ar etapus.
- Reikia sekamumo, kokybės užtikrinimo arba įrankių naudojimo.
- Kuriate pakartotinai naudojamą darbo eigą, o ne vienkartinį sprendimą.
Naudokite vieną užklausą, kai:
- Užduotis trumpa, subjektyvi ir nereikalauja išorinių įrankių.
- Svarbesnis greitis nei struktūra.
Beje: greitesnis juodraščių kūrimas su AI šonine panelėle
Jei naudojate multiojagentų darbo eigas tyrimams, struktūrai ir juodraščių rašymui, verta pažymėti, kad AI šoninė panelė kaip Sider.ai gali veikti šalia naršyklės ir dokumentų, apibendrindama puslapius, kuriant struktūras ir koreguojant juodraščius realiu laiku. Ji nepakeis CrewAI koordinavimo, bet pagreitins rankinius darbus – rinkti ištraukas, perrašyti dalis ar tikrinti toną – prieš įtraukiant turinį atgal į komandą. Veiksmingi tolesni žingsniai
- Įdiekite CrewAI ir paleiskite greito starto pavyzdį.
- Pasirinkite realią darbo eigą (tyrimai → juodraštis → kokybės užtikrinimas) ir ją užkoduokite.
- Pridėkite po vieną įrankį; matuokite poveikį rezultatų kokybei ir kainai.
- Įtraukite kokybės užtikrinimo agentą su aiškiais priėmimo kriterijais.
- Pereikite prie hibridinės koordinacijos greičiui pasiekti.
Pagrindinės įžvalgos
- CrewAI paverčia sudėtingus projektus moduliniu multiojagentų darbo eigos procesu.
- Sėkmė priklauso nuo aiškių vaidmenų, aiškių užduočių ir disciplinuoto įrankių naudojimo.
- Apsaugos (kokybės užtikrinimas, kontroliniai sąrašai, apribojimai) padeda mažinti kainas ir palaikyti kokybę.
- Pradėkite nuo mažo, vėliau skalėkite su paraleliniais tyrimais ir hibridinėmis darbo eigomis.
Mini kontrolinis sąrašas: kaip efektyviai naudoti CrewAI
- Aiškiai apibrėžkite vaidmenis, tikslus ir įrankius.
- Rašykite užduotis su priėmimo kriterijais ir pavyzdžiais.
- Naudokite sekvencinį režimą patikimumui, hibridinį – greičiui.
- Anksti pridėkite kokybės užtikrinimo agentą; suteikite jam veto teisę.
- Registruokite viską; saugokite artefaktus auditui.
- Optimizuokite sąnaudas su santraukomis, kešavimu ir bandymais grupėmis.
DUK
Klausimas 1: Kas yra CrewAI ir kaip jį naudoti multiojagentų darbo eigoms?
CrewAI yra sistema, skirta koordinuoti kelis AI agentus turinčius vaidmenis, užduotis ir įrankius. Naudojama apibrėžiant agentus, kuriant užduotis su priėmimo kriterijais ir paleidžiant komandą, kuri koordinuoja perdavimus ir sukuria galutinį produktą.
Q2: Kaip pridėti įrankius, tokius kaip interneto paieška, į CrewAI agentus?
Priskirkite įrankių funkcijas agentui ir nurodykite, kada jas naudoti. Išlaikykite struktūruotus ir trumpus rezultatus (pvz., JSON arba markdown), kad kontroliuotumėte išlaidas ir pagerintumėte perdavimą.
Q3: Kada turėčiau naudoti CrewAI, o ne vieną LLM raginimą?
Naudokite CrewAI, kai užduotis suskaidoma į etapus, reikalauja įrankių naudojimo arba kokybės užtikrinimo, arba jai reikia pasikartojančių procesų. Naudokite vieną raginimą greitoms, subjektyvioms užduotims, kurioms nereikia struktūros.
Q4: Kaip aš galiu išvengti haliucinacijų CrewAI rezultatuose?
Pridėkite faktų tikrintojo arba kokybės užtikrinimo agentą su veto teise, reikalaukite citatų iš pirminių šaltinių, nustatykite žemą temperatūrą kokybės užtikrinimui ir nurodykite priėmimo kriterijus, tokius kaip teiginių lentelė.
Q5: Ar CrewAI gali vykdyti užduotis lygiagrečiai, kad pagreitintų procesą?
Taip. Naudokite lygiagrečius agentus nepriklausomoms užduotims (pvz., keliems tyrėjams), o tada sintezatoriaus užduotį rezultatams sujungti. Hibridinis orkestravimas subalansuoja greitį ir patikimumą.