I like CrewAI, but I must admit its name has fooled me.
Problems with AI frameworks start before you’ve even chosen one. There are a ton of frameworks already, so we guess their properties based on very fragmented knowledge.
ℹ️ This post is part of the “Crew AI Caveats” series, which I create to fill in the gaps left by official courses and to help you master CrewAI faster and easier.
How did the name of CrewAI fool me? I imagined agents interacting like a crew, but in practice, it turned out to be built for sequential processes, and the behavior that you expect for a virtual crew—resembling a human crew—is either not working or is absent completely.
What is already available
Objecting to this thesis, CrewAI offers asynchronous tasks and hierarchical processes, but these features are underwhelming.
Asynchronous tasks only optimize execution time without affecting the outcomes.
The hierarchical process is buggy and poorly documented. For instance, tasks calling other tasks often produce errors, and the manager meant to dispatch tasks sometimes mishandles them. Telemetry reveals bizarre interactions, like a Frankenstein-style combination of a task definition with a wrong agent. Join my topic to see the research I conducted.
What is a “crew,” according to my intuition
The agents should decide what they do and what they don’t. The tasks and task dependencies should be a set of best practices rather than a strict to-do list. Agents or their dispatcher should decide which sub-tasks (or predefined processes) are relevant to the current request and which are not.
This isn’t available right now in CrewAI. All the tasks in a crew are mandatory. The sequential process is the only type that works reliably.
Can I implement it manually?
Look, the process in CrewAI is a sort of state machine. And CrewAI also comes with an explicit state machine—the Flow
class. It might be the base for DIY solutions.
I’m going to experiment with a LangGraph example where CrewAI is only a node in a LangGraph state machine. Also, I found how to run a single CrewAI task (with its agent) out of the Crew and Process—will see if it helps or not.
Wrapping up, if you want something more complex than a sequential process with CrewAI, implement it yourself. Do you know a framework that allows agents to decide which task definitions are relevant to the current user request? Please share.
Stay tuned
In the next post: You are probably getting CrewAI’s Task
object wrong, as I did. Let’s clarify how it physically works.
Top comments (0)