================================================================================
π― CREWAI LLM REPLACEMENT - VISUAL GUIDE
================================================================================
PROBLEM: Why CrewAI Uses OpenAI Even When You Configure Another LLM
--------------------------------------------------------------------
CrewAI has 3 LEVELS where it looks for an LLM:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β LEVEL 1: AGENT LEVEL β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β Agent 1 β β Agent 2 β β Agent 3 β β
β β llm=??? β β llm=??? β β llm=??? β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β If llm=None β Goes to Level 2 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β LEVEL 2: CREW LEVEL β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Crew β β
β β manager_llm=??? β β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β If manager_llm=None β Goes to Level 3 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β LEVEL 3: GLOBAL DEFAULT β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β β OpenAI (gpt-4 or gpt-3.5-turbo) β β
β β β CAUSES RATE LIMIT ERRORS! β β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
THE SOLUTION: Assign LLM at ALL Levels
---------------------------------------
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β STEP 1: Define LLM ONCE at the top β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β β llm = LLM( β β
β β model="groq/llama-3.1-8b-instant", β β
β β api_key=os.getenv("GROQ_API_KEY") β β
β β ) β β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β STEP 2: Assign to EVERY Agent β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β Agent 1 β β Agent 2 β β Agent 3 β β
β β llm=llm β
β β llm=llm β
β β llm=llm β
β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β STEP 3: Assign to Crew β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Crew β β
β β manager_llm=llm β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β RESULT: Uses Groq Everywhere! β
β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
No OpenAI calls β β
β β β
No rate limit errors β β
β β β
AgentOps shows correct model β β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
CODE COMPARISON
---------------
β WRONG (Will use OpenAI):
```python
llm = LLM(model="groq/llama-3.1-8b-instant")
agent = Agent(
role="Researcher",
goal="Research",
backstory="Expert"
# β Missing: llm=llm
)
crew = Crew(
agents=[agent],
tasks=[task]
# β Missing: manager_llm=llm
)
```
β
CORRECT (Will use Groq):
```python
llm = LLM(model="groq/llama-3.1-8b-instant")
agent = Agent(
role="Researcher",
goal="Research",
backstory="Expert",
llm=llm # β
Assigned
)
crew = Crew(
agents=[agent],
tasks=[task],
manager_llm=llm # β
Assigned
)
```
PROCEDURE FOR ANY CREWAI PROJECT
---------------------------------
Step 1: Choose Your Free LLM
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Option A: Groq (Cloud, Fast, Free Tier) β
β llm = LLM(model="groq/llama-3.1-8b-instant", β
β api_key=os.getenv("GROQ_API_KEY")) β
β β
β Option B: Ollama (Local, Unlimited, No API Key) β
β llm = LLM(model="ollama/llama3.1", β
β base_url="http://localhost:11434") β
β β
β Option C: HuggingFace (Cloud, Free Tier) β
β llm = LLM(model="huggingface/meta-llama/Llama-3.1-8B", β
β api_key=os.getenv("HUGGINGFACE_API_KEY")) β
β β
β Option D: Google Gemini (Cloud, Free Tier) β
β llm = LLM(model="gemini/gemini-1.5-flash", β
β api_key=os.getenv("GOOGLE_API_KEY")) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Step 2: Create Agents with LLM
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β agent1 = Agent(role="...", goal="...", β
β backstory="...", llm=llm) β CRITICAL! β
β β
β agent2 = Agent(role="...", goal="...", β
β backstory="...", llm=llm) β CRITICAL! β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Step 3: Create Crew with Manager LLM
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β crew = Crew(agents=[agent1, agent2], β
β tasks=[task1, task2], β
β manager_llm=llm) β CRITICAL! β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Step 4: Verify on AgentOps
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Before: Model shows "gpt-4" or "gpt-3.5-turbo" β
β After: Model shows "groq/llama-3.1-8b-instant" β
β β
β This confirms CrewAI is using YOUR LLM, not OpenAI! β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
VERIFICATION CHECKLIST
----------------------
For EVERY CrewAI project, verify:
β‘ Step 1: LLM defined at top of file
llm = LLM(model="...", api_key=...)
β‘ Step 2: EVERY agent has llm parameter
agent = Agent(..., llm=llm)
β‘ Step 3: Crew has manager_llm parameter
crew = Crew(..., manager_llm=llm)
β‘ Step 4: No OpenAI errors when running
No "RateLimitError" or "AuthenticationError"
β‘ Step 5: AgentOps shows correct model
Dashboard displays your model, not OpenAI
COMMON MISTAKES
---------------
Mistake 1: LLM defined but not assigned
β llm = LLM(...)
β agent = Agent(...) # Missing llm=llm
Mistake 2: Assigned to some agents, not all
β agent1 = Agent(..., llm=llm) # β
Good
β agent2 = Agent(...) # β Missing llm=llm
Mistake 3: Assigned to agents but not crew
β agent = Agent(..., llm=llm) # β
Good
β crew = Crew(...) # β Missing manager_llm=llm
Mistake 4: Using different LLMs inconsistently
β agent1 = Agent(..., llm=llm1)
β agent2 = Agent(..., llm=llm2)
β crew = Crew(..., manager_llm=llm3)
(This can work but is confusing and error-prone)
WHY AGENTOPS NOW SHOWS THE CORRECT MODEL
-----------------------------------------
Before Fix:
βββββββββββββββββββββββββββββββββββββββββββ
β AgentOps Dashboard β
β βββββββββββββββββββββββββββββββββββββββ β
β β Session: abc123 β β
β β Model: gpt-4 β β β
β β Provider: OpenAI β β β
β βββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββ
Reason: CrewAI was using OpenAI as fallback
After Fix:
βββββββββββββββββββββββββββββββββββββββββββ
β AgentOps Dashboard β
β βββββββββββββββββββββββββββββββββββββββ β
β β Session: xyz789 β β
β β Model: groq/llama-3.1-8b-instant β
β β
β β Provider: Groq β
β β
β βββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββ
Reason: CrewAI is now using your assigned LLM
SUMMARY
-------
The 3-Step Rule for EVERY CrewAI Project:
1. Define LLM ONCE:
llm = LLM(model="...", api_key=...)
2. Assign to ALL agents:
agent = Agent(..., llm=llm)
3. Assign to Crew:
crew = Crew(..., manager_llm=llm)
Follow this rule, and you'll NEVER get OpenAI rate limit errors again!
================================================================================
β
YOU NOW KNOW THE COMPLETE PROCEDURE!
================================================================================
For detailed examples and code, see: REPLACING_OPENAI_GUIDE.md
================================================================================