mirror of
https://github.com/magnus919/agent-skills.git
synced 2026-09-19 07:27:04 +03:00
Squash-merge verified routing remediation at exact head 690f9c14b0. Required validate and paired evaluation checks passed; advisory droid review had no blocking findings.
146 lines
6.5 KiB
Markdown
146 lines
6.5 KiB
Markdown
---
|
|
name: crewai
|
|
description: >-
|
|
Build role-based multi-agent systems with CrewAI. Agents with Role/Goal/Backstory, task
|
|
design, crew composition (sequential or hierarchical), tool integration, callbacks, and
|
|
production deployment. Use when orchestrating multi-agent teams or comparing agent
|
|
frameworks. Do not use this skill for unrelated requests; route to the nearest named
|
|
specialist.
|
|
license: MIT
|
|
metadata:
|
|
author: Magnus Hedemark
|
|
version: 1.1.0
|
|
source: https://docs.crewai.com
|
|
---
|
|
|
|
# CrewAI Expert Skill
|
|
|
|
CrewAI is a framework for **role-based multi-agent orchestration**. Unlike LangGraph's low-level state-machine graphs, CrewAI provides a higher abstraction: agents are defined as Roles with Goals and Backstories, crews are composed with built-in sequential or hierarchical workflows, and inter-agent delegation is built into the framework.
|
|
|
|
## Core Paradigm
|
|
|
|
```python
|
|
from crewai import Agent, Task, Crew, Process
|
|
from crewai.tools import tool
|
|
|
|
@tool("search")
|
|
def search_web(query: str) -> str:
|
|
"""Search the web for information."""
|
|
return f"Results for: {query}"
|
|
|
|
researcher = Agent(
|
|
role="Senior Researcher",
|
|
goal="Find accurate information on any topic",
|
|
backstory="Expert researcher with 10 years of experience",
|
|
tools=[search_web],
|
|
verbose=True,
|
|
)
|
|
|
|
writer = Agent(
|
|
role="Technical Writer",
|
|
goal="Write clear reports from research findings",
|
|
backstory="Experienced technical writer",
|
|
verbose=True,
|
|
)
|
|
|
|
research_task = Task(
|
|
description="Research the topic thoroughly",
|
|
expected_output="A detailed research brief",
|
|
agent=researcher,
|
|
)
|
|
|
|
write_task = Task(
|
|
description="Write a report based on research",
|
|
expected_output="A well-structured report",
|
|
agent=writer,
|
|
)
|
|
|
|
crew = Crew(
|
|
agents=[researcher, writer],
|
|
tasks=[research_task, write_task],
|
|
process=Process.sequential,
|
|
verbose=True,
|
|
)
|
|
|
|
result = crew.kickoff()
|
|
```
|
|
|
|
## Core Principles
|
|
|
|
1. **Agents are Roles, not functions.** Role + Goal + Backstory defines the agent's identity. Strong role definitions reduce hallucination.
|
|
2. **Tasks declare what, not how.** Description + expected_output defines the task. The agent figures out execution.
|
|
3. **Sequential is for pipelines, Hierarchical is for complexity.** Sequential runs tasks in order. Hierarchical uses a manager agent to delegate and validate.
|
|
4. **Manager LLM is required for Hierarchical.** Without `manager_llm`, hierarchical process fails silently.
|
|
5. **Delegation loops are real.** `allow_delegation=True` without `max_iter` bounds can cause infinite handoffs.
|
|
6. **Tool errors don't raise.** A failed tool call marks the task as failed but doesn't raise an exception. Check task output.
|
|
|
|
## Where to Start
|
|
|
|
| You already have... | Start here |
|
|
|---|---|
|
|
| Nothing — exploring CrewAI | Sequential crew with 2 agents (research → write) |
|
|
| Agents you want to coordinate | Build a Hierarchical crew with manager_llm |
|
|
| Tools you want to integrate | Use @tool decorator, add tools to relevant agents |
|
|
| A production deployment | Add callbacks, memory, error handling |
|
|
|
|
## Quick Reference
|
|
|
|
| Task | Approach | Reference |
|
|
|------|----------|-----------|
|
|
| Define agent | `Agent(role, goal, backstory)` | `references/agent-design.md` |
|
|
| Define task | `Task(description, expected_output, agent)` | `references/task-design.md` |
|
|
| Sequential crew | `Crew(process=Process.sequential)` | `references/crew-patterns.md` |
|
|
| Hierarchical crew | `Crew(process=Process.hierarchical, manager_llm=...)` | `references/crew-patterns.md` |
|
|
| Create tool | `@tool("name")` decorator | `references/tool-integration.md` |
|
|
| Add callbacks | `step_callback=fn` on Agent | `references/callbacks.md` |
|
|
| Enable memory | `memory=True` on Crew or Agent | `references/crew-patterns.md` |
|
|
|
|
## Framework Routing Guide
|
|
|
|
| Scenario | Reach for | Why |
|
|
|----------|-----------|-----|
|
|
| Role-based multi-agent teams | **CrewAI** | Role/Goal/Backstory is the native abstraction |
|
|
| State-machine multi-agent | **LangGraph** | Graph topology, subgraphs, human-in-the-loop |
|
|
| Conversational multi-agent | **AutoGen** | Agent chat as orchestration primitive |
|
|
| Chain/agent composition | **LangChain** | LCEL pipe operator for general chains |
|
|
| Documents to query / RAG | **LlamaIndex** | Data ingestion is the primary primitive |
|
|
|
|
## Reference Files
|
|
|
|
| Reference | Load when | File |
|
|
|-----------|-----------|------|
|
|
| Agent Design | Defining agents with roles, goals, backstories | `references/agent-design.md` |
|
|
| Task Design | Creating tasks with descriptions and outputs | `references/task-design.md` |
|
|
| Crew Patterns | Sequential, hierarchical, consensual crews | `references/crew-patterns.md` |
|
|
| Tool Integration | Creating tools with @tool decorator | `references/tool-integration.md` |
|
|
| Callbacks | Monitoring agent and task execution | `references/callbacks.md` |
|
|
| Memory System | Unified Memory class, cross-agent context | `references/memory-system.md` |
|
|
| Flows | Event-driven orchestration connecting crews | `references/flows.md` |
|
|
| FAQ & Troubleshooting | Common errors and fixes | `references/faq-and-troubleshooting.md` |
|
|
|
|
## Templates
|
|
|
|
| Template | When to use | File |
|
|
|----------|-------------|------|
|
|
| Research Crew | Sequential: researcher → writer → reviewer | `templates/research-crew.py` |
|
|
| Hierarchical Crew | Manager with specialist agents | `templates/hierarchical-crew.py` |
|
|
| Customer Support | Triage → specialist → response | `templates/support-crew.py` |
|
|
|
|
## Troubleshooting
|
|
|
|
| Symptom | Likely cause | Fix | Reference |
|
|
|---------|-------------|-----|-----------|
|
|
| Crew runs but no output | Agent stuck in delegation loop | Set `max_iter=15` on agent | `references/agent-design.md` |
|
|
| Hierarchical crew fails | No `manager_llm` set | Add `manager_llm=ChatOpenAI(model="gpt-4")` | `references/crew-patterns.md` |
|
|
| Task never completes | Agent exceeds max_iter | Increase `max_iter` or simplify task | `references/agent-design.md` |
|
|
| Tool not being called | Tool not added to agent | Add `tools=[my_tool]` to Agent definition | `references/tool-integration.md` |
|
|
| High token usage | Hierarchical mode | Manager processes all outputs — use cheaper LLM | `references/crew-patterns.md` |
|
|
| Memory between tasks not working | Crew-level memory not set | Add `memory=True` to Crew | `references/crew-patterns.md` |
|
|
|
|
## When NOT to Use CrewAI
|
|
|
|
- Single-agent task — too much abstraction for one agent
|
|
- Need fine-grained graph control (cycles, conditional branching) — use LangGraph
|
|
- Need conversational agent interactions — use AutoGen
|
|
- Need simple chain composition — use LangChain LCEL
|