Hur man använder CrewAI: En praktisk guide till arbetsflöden med flera agenter
Grymt löfte: Om du någonsin har önskat att du kunde klona din bästa lagkamrat för att ta itu med ett projekt snabbare, kommer CrewAI dig nära – genom att orkestrera flera AI-agenter som planerar, samarbetar och levererar arbete tillsammans.
I denna praktiska, lösningsorienterade guide kommer du att lära dig exakt hur du använder CrewAI: från att installera ramverket och definiera agenter, till att bygga roller, verktyg, uppgifter och strukturerade arbetsflöden med flera agenter som levererar verkliga resultat. Vi kommer att täcka mönster för research, innehåll, dataanalys och kodgenerering – och hur man undviker vanliga fallgropar som agent-återvändsgränder, prompt-överbelastning och verktygs-överanvändning.
Vårt fokus: att ge dig en steg-för-steg "prova det idag"-väg med copy-paste-kod, stridsprövade bästa praxis och några arbetsflödesritningar som du kan anpassa. Oavsett om du automatiserar marknadsundersökningar eller bygger en produktspecifikation från ärenden, är detta din startpunkt för att använda CrewAI effektivt.
Vad är CrewAI (och varför är det annorlunda)
- CrewAI är ett ramverk för att bygga system med flera agenter där varje agent har en roll, ett mål, verktyg och regler. Ramverket koordinerar sedan dessa agenter – överlämnar uppgifter, delar kontext och itererar mot ett resultat.
- Till skillnad från en enskild LLM-prompt, tvingar CrewAI struktur: agenter är explicita, uppgifter är modulära, verktyg är behörighetsstyrda och resultat är granskningsbara.
- Utbetalningen: dekomponerade arbetsflöden (research → syntes → skrivande → QA) som speglar hur riktiga team arbetar – bara snabbare, skalbart och reproducerbart.
Snabbstart: Hur man använder CrewAI på 10 minuter
Nedan följer ett minimalt mönster för att ta dig från noll till en fungerande multi-agent-crew. Vi antar Python.
1) Installera och konfigurera
pip install crewai langchain-openai python-dotenv
Skapa en .env fil med dina LLM-providernycklar:
OPENAI_API_KEY=sk-your-key
# eller andra leverantörer som stöds av din stack
2) Definiera dina agenter (roller + mål + verktyg)
from crewai import Agent
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0.2)
researcher = Agent(
role="Marknadsanalytiker",
goal="Hitta trovärdiga, aktuella insikter om målmarknaden och konkurrenterna.",
backstory=(
"Du är en noggrann analytiker som verifierar påståenden, citerar källor och sammanfattar "
"signaler från ansedda publikationer."
),
tools=[], # lägg till webb-/sök-/skrapverktyg senare
llm=llm
)
strategist = Agent(
role="Produktstrateg",
goal="Syntetisera research till ett skarpt positionerings- och färdplansalternativ.",
backstory="Du prioriterar tydlighet, genomförbarhet och mätbara resultat.",
tools=[],
llm=llm
)
writer = Agent(
role="Innehållsförfattare",
goal="Producera en välstrukturerad sammanfattning med exempel och nästa steg.",
backstory="Du skriver på kortfattad, övertygande engelska och följer stilguider.",
tools=[],
llm=llm
)
3) Skapa uppgifter (indata, utdata och godkännandekriterier)
from crewai import Task
research_task = Task(
description=(
"Undersök den amerikanska SMB-marknaden för projektledningsprogramvara under 2025. "
"Identifiera de främsta konkurrenterna, prisnivåerna, ICP:er och tre ouppfyllda behov. "
"Returnera punkter med 3–5 citat."
),
expected_output=(
"En markdown-sammanfattning med sektioner: Marknadsstorlek, nyckelaktörer, prissättning, ICP:er, "
"Ouppfyllda behov, källor (med länkar)."
),
agent=researcher
)
synthesis_task = Task(
description=(
"Använd research-sammanfattningen för att producera ett positioneringsuttalande, 2–3 differentierare, "
"och en 90-dagars färdplan med milstolpar."
),
expected_output="Ett kortfattat strategimemo (<= 400 ord).",
agent=strategist
)
writing_task = Task(
description=(
"Omvandla strategimemet till en offentlig en-sida. Inkludera en rubrik, "
"värdeerbjudande, punktlista över funktioner och en CTA."
),
expected_output="En markdown en-sida lämplig för en landningssida.",
agent=writer
)
4) Orkestrera crew:et (flöde + minne)
from crewai import Crew
crew = Crew(
agents=[researcher, strategist, writer],
tasks=[research_task, synthesis_task, writing_task],
process="sequential", # överlämna utdata i ordning
verbose=True
)
result = crew.kickoff
print(result)
Det är din första fungerande pipeline. Du definierade agenter, kopplade uppgifter och körde ett sekventiellt flöde. För att utöka det, lägg till verktyg (sök, skrapning, kodkörning), valideringssteg och parallella steg.
En mental modell för CrewAI-projekt
Tänk som en projektledare:
- Roller: Vem gör vad? Researcher, analytiker, ingenjör, granskare.
- Regler: Vilka standarder måste uppfyllas? Stilguide, citat, tester.
- Verktyg: Vilka funktioner är tillåtna? Webbsökning, vektor-DB, Python, API:er.
- Uppgifter: Hur bryter vi ner problemet? Indata, utdata, godkännandekriterier.
- Överlämningar: Vad skickas vidare? Artefakter, metadata, begränsningar.
- Återkoppling: Vem validerar? En QA-agent, en människa-i-loopen eller tester.
Med CrewAI kodar din kod denna operativa modell.
Hur man använder CrewAI för riktigt arbete: 5 beprövade mönster
1) Research → Syntes → Utkast (Innehåll & Rapporter)
- Agenter: Researcher, redaktör, skribent, faktagranskare.
- Verktyg: Webbsökning, källkontroll, stilguide.
- Tips: Tvinga citat och en "påståendetabell" för att förhindra hallucinationer.
fact_checker = Agent(
role="Faktagranskare",
goal="Validera alla påståenden mot primära källor; flagga svaga citat.",
backstory="Skeptisk, noggrann, opartisk.",
llm=llm
)
qa_task = Task(
description="Validera alla faktapåståenden; lägg till korrigeringar inline med [FIX]-taggar.",
expected_output="Ett korrigerat utkast med en sammanfattning av korrigeringar.",
agent=fact_checker
)
2) Produktspecifikation från ärenden (Engineering)
- Agenter: Ärendegrupperare, specifikationsförfattare, granskare, testförfattare.
- Verktyg: Ärendehanterings-API, kodbas-kontext via inbäddningar, enhetstestgenerator.
- Tips: Lägg till en automatiserad "Definition av klar"-checklista.
3) Data → Insikt → Narrativ (Analys)
- Agenter: Datahanterare (Python), analytiker, berättare.
- Verktyg: Pandas, SQL, kartläggning, notebook-körning.
- Tips: Använd en verktygsaktiverad agent med
python-körning för verifierbar analys.
4) Kodgenerering med skyddsräcken
- Agenter: Planerare, kodare, linter, testare, granskare.
- Verktyg: Repo-läsning, enhetstestkörning, formaterare, säkerhetsskanner.
- Tips: Kräv att granskaren refererar till tester som bevisar korrekthet.
5) Kund-e-postsekvenser i skala
- Agenter: Segmenterare, copywriter, personaliserare, QA.
- Verktyg: CRM-API, mallar, varumärkes-ton-guide.
- Tips: Lägg till ett verktyg för bounce/spam-kontroll och tvinga A/B-varianter.
Lägga till verktyg: Ge agenter verkliga förmågor
CrewAI glänser när agenter kan använda verktyg. Exempel: ge forskaren webbsökning och en URL-läsare.
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]
Bästa praxis:
- Minsta privilegium: Fäst endast verktyg som agenten verkligen behöver.
- Schemadisciplin: Verktyg ska vara deterministiska och typade; returnera kortfattad, strukturerad text (JSON/Markdown) när det är möjligt.
- Kostnadskontroll: Håll verktygsutdata korta; sammanfatta innan överlämning.
Designa uppgifter som lyckas
Väl utformade uppgifter avgör om system med flera agenter lyckas eller misslyckas.
- Var tydlig: "Returnera en markdown-tabell med kolumnerna X, Y, Z."
- Definiera godkännandekriterier: "Innehåller 3 citat som länkar till primära källor."
- Sätt gränser: Ordräkning, tidsgränser eller steggränser minskar drift.
- Inkludera exempel: Ange en mini-specifikation av önskat utdataformat.
- Lägg till minnes-taggar: Använd konsekventa rubriker/nycklar över uppgifter för enkla överlämningar.
Exempel på uppgiftsskelett:
Task(
description=(
"Sammanfatta 5 nyligen genomförda studier om fjärrarbetsproduktivitet (2023–2025) med "
"metodik, urvalsstorlek och viktiga resultat."
),
expected_output=(
"Markdown med H2-sektioner per studie, en slutlig jämförelsetabell och länkar."
),
agent=researcher
)
Orkestreringslägen: Sekventiellt vs. parallellt vs. hybrid
- Sekventiellt: Pålitliga överlämningar; långsammare men enklare att resonera om.
- Parallellt: Flera agenter arbetar samtidigt (t.ex. 3 forskare); slå samman senare.
- Hybrid: Fan-out-research parallellt → fan-in-syntes och QA.
Hybrid exempel:
r1 = Agent(role="Researcher A", goal="Fokusera på prissättning", backstory="", llm=llm)
r2 = Agent(role="Researcher B", goal="Fokusera på funktioner", backstory="", llm=llm)
# Parallella uppgifter för r1, r2; en uppföljande syntesuppgift slår samman deras utdata.
Tips: När du slår samman, instruera syntetisatorn att avduplicera, lösa konflikter och citera den starkare källan.
Skyddsräcken och QA: Håll agenter ärliga
- Domare: Lägg till en granskare eller faktagranskare med explicit vetorätt.
- Checklistor: Koda efterlevnad (sekretess, säkerhet, varumärkeston) som en checklista som QA-agenten måste kryssa för.
- Självkritik: Be agenter att inkludera en kort "Vad jag kan ha missat"-sektion.
- Determinism: Använd lägre temperatur för QA-agenter.
qa = Agent(
role="QA-granskare",
goal="Se till att utdata uppfyller godkännandekriterierna och stilguiden.",
backstory="Du är strikt och pedantisk.",
llm=llm
)
Prompt Engineering för CrewAI-agenter
Dina agent-prompter är mini-jobbbeskrivningar. Håll dem korta.
- Roll-prompt: Vem du är, vad du optimerar för.
- Mål-prompt: Det önskade sluttillståndet.
- Begränsningar: Ordräkning, format, ton, referenser.
- Verktyg: Namn, när du ska använda dem, vad du ska returnera.
- Exempel: 1–2 korta, realistiska exempel.
Snippet:
researcher = Agent(
role="Analytisk researcher",
goal=(
"Leverera kompakta, noggranna sammanfattningar med 3–5 trovärdiga citat och en risknote."
),
backstory=(
"Du verifierar påståenden, föredrar primära källor och flaggar osäkerhet."
),
llm=llm
)
Observerbarhet: Se vad agenter gjorde (och varför)
Aktivera utförliga loggar och bevara artefakter:
- Lagra varje uppgifts prompt, utdata och verktygsanrop.
- Spara ett körningsmanifest med metadata (modell, temp, verktyg).
- Behåll ett kladdpapper för tillfälliga anteckningar; det hjälper felsökning och granskningar.
Mönster:
crew = Crew(..., verbose=True, output_log_file="runs/2025-crew.log")
Tips för kostnad, latens och tillförlitlighet
- Batchbearbetning: Parallelisera oberoende uppgifter; begränsa samtidighet för att undvika hastighetsbegränsningar.
- Sammanfatta: Komprimera mellanliggande artefakter för att minska token-churn.
- Cachelagring: Memorisera stabila steg (t.ex. marknadsdefinitioner) med vektorlager.
- Fallback: Ange en backupmodell eller återförsökspolicy för osäkra anrop.
- Människa-i-loopen: Infoga valfria godkännandeportar för högrisksteg.
Vanliga fallgropar (och hur man åtgärdar dem)
- Fallgrop: Vaga uppgifter → slingrande utdata.
- Fix: Lägg till explicita godkännandekriterier och exempel.
- Fallgrop: För många verktyg → distraktion och kostnad.
- Fix: Endast verktyg med minsta privilegium och uppgiftsspecifika verktyg.
- Fallgrop: Oändliga loopar eller överiteration.
- Fix: Lägg till steg-/tidsgränser och en "stoppa om kriterier uppfylls"-klausul.
- Fallgrop: Kontextförlust mellan agenter.
- Fix: Använd strukturerade överlämningsobjekt (JSON) och konsekventa rubriker.
- Fallgrop: QA i efterhand.
- Fix: Behandla QA som en förstklassig agent med vetorätt.
End-to-end-exempel: Generator för konkurrensanalys
Mål: Generera en konkurrensanalys som jämför tre verktyg för en målpersona.
Agenter:
- Persona Analyst → definierar smärtpunkter och jobb som ska utföras.
- Researcher → samlar in data och citat.
- Synthesizer → bygger jämförelsetabell och insikter.
- Writer → producerar den slutliga sammanfattningen.
- QA → verifierar källor och tydlighet.
Skelett:
persona = Agent(role="Persona Analyst", goal="Definiera ICP och JTBD.", llm=llm)
researcher = Agent(role="Researcher", goal="Samla in trovärdiga data.", llm=llm)
synth = Agent(role="Synthesizer", goal="Jämför och tolka.", llm=llm)
writer = Agent(role="Writer", goal="Skapa en sammanfattning redo för chefer.", llm=llm)
qa = Agent(role="QA", goal="Validera påståenden och tydlighet.", llm=llm)
persona_task = Task(description="Definiera ICP & JTBD för RevOps-ledare i SaaS.", agent=persona,
expected_output="Punkter + smärtpunkter + framgångsmått.")
research_task = Task(description="Samla in prissättning, funktioner och recensioner för 3 verktyg.", agent=researcher,
expected_output="Tabell + 5 citat.")
synth_task = Task(description="Bygg en jämförelsematris och de 3 främsta insikterna.", agent=synth,
expected_output="Markdown-tabell + insikter.")
write_task = Task(description="Utarbeta en 1-sida sammanfattning med rekommendationer.", agent=writer,
expected_output="Executive summary i markdown.")
qa_task = Task(description="Kontrollera noggrannhet och läsbarhet; åtgärda problem.", agent=qa,
expected_output="Ren, validerad sammanfattning.")
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)
När du ska använda CrewAI vs. en enskild prompt
Använd CrewAI när:
- Uppgiften naturligt bryts ner i roller eller steg.
- Du behöver spårbarhet, QA eller verktygsanvändning.
- Du bygger en återanvändbar pipeline, inte en engångsföreteelse.
Håll dig till en enskild prompt när:
- Det är en kort, subjektiv uppgift utan externa verktyg.
- Hastighet är viktigare än struktur.
Förresten: Skapa utkast snabbare med en AI-sidopanel
Om du använder arbetsflöden med flera agenter för att undersöka, skissa och utarbeta innehåll, är det värt att notera att en AI-sidopanel som Sider.ai kan sitta bredvid din webbläsare och dina dokument för att sammanfatta sidor, generera skisser och förfina utkast i realtid. Det kommer inte att ersätta CrewAI:s orkestrering, men det kan påskynda de manuella delarna – samla in utdrag, skriva om avsnitt eller sanity-kontrollera tonen – innan du kopplar tillbaka innehåll till ditt crew. Genomförbara nästa steg
- Installera CrewAI och kör snabbstartsexemplet.
- Välj ett riktigt arbetsflöde (research → utkast → QA) och koda det.
- Lägg till ett verktyg i taget; mät påverkan på utdatakvalitet och kostnad.
- Introducera en QA-agent med explicita godkännandekriterier.
- Gå över till en hybrid orkestreringsmodell för hastighet.
Viktiga takeaways
- CrewAI omvandlar komplexa projekt till modulära arbetsflöden med flera agenter.
- Framgång bygger på skarpa roller, tydliga uppgifter och disciplinerad verktygsanvändning.
- Skyddsräcken (QA, checklistor, gränser) håller kostnaderna nere och kvaliteten uppe.
- Börja smått och skala sedan med parallell research och hybridflöden.
Mini-checklista: Hur man använder CrewAI effektivt
- Definiera roller, mål och verktyg explicit.
- Skriv uppgifter med godkännandekriterier och exempel.
- Använd sekventiellt för tillförlitlighet, hybrid för hastighet.
- Lägg till en QA-agent tidigt; ge den vetorätt.
- Logga allt; lagra artefakter för granskningar.
- Optimera kostnaden med sammanfattningar, cachelagring och batchbearbetning.
FAQ
Q1:What is CrewAI and how do I use it for multi‑agent workflows?
CrewAI is a framework for orchestrating multiple AI agents with roles, tasks, and tools. You use it by defining agents, creating tasks with acceptance criteria, and running a crew that coordinates handoffs to produce a final output.
F2: Hur lägger jag till verktyg som webbsökning till CrewAI-agenter?
Koppla verktygsfunktioner till en agent och instruera när de ska användas. Håll resultaten strukturerade och korta (t.ex. JSON eller markdown) för att kontrollera kostnaderna och förbättra överlämningarna.
F3: När ska jag använda CrewAI istället för en enskild LLM-prompt?
Använd CrewAI när en uppgift bryts ner i steg, kräver användning av verktyg eller kvalitetssäkring, eller behöver repeterbara pipelines. Använd en enskild prompt för snabba, subjektiva uppgifter som inte kräver struktur.
F4: Hur kan jag förhindra hallucinationer i CrewAI-resultat?
Lägg till en Faktakontrollant- eller kvalitetssäkringsagent med vetorätt, kräv citeringar till primärkällor, ställ in låg temperatur för kvalitetssäkring och ange godkännandekriterier som en påståendetabell.
F5: Kan CrewAI köra uppgifter parallellt för att snabba upp processen?
Ja. Använd parallella agenter för oberoende uppgifter (t.ex. flera forskare) och sedan en syntetiseringsuppgift för att sammanfoga resultat. Hybridorkestrering balanserar hastighet och tillförlitlighet.