Configuration guide for CrewAI agents and crews.
from crewai import Agent
agent = Agent(
role="Senior Researcher",
goal="Discover cutting-edge developments in AI",
backstory="You're a seasoned researcher with a knack for finding insights.",
verbose=True,
allow_delegation=False,
llm="gpt-4o"
)
from crewai import Agent
from crewai_tools import SerperDevTool
agent = Agent(
role="Senior Data Researcher",
goal="Uncover cutting-edge developments in {topic}",
backstory="""You're a seasoned researcher with a knack for uncovering
the latest developments. Known for finding insights others miss.""",
verbose=True,
allow_delegation=False,
tools=[SerperDevTool()],
llm="gpt-4o",
memory=True,
max_iter=10,
max_rpm=10 # Rate limit: requests per minute
)
from crewai import Agent
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-4o",
temperature=0.7,
max_tokens=2000
)
agent = Agent(
role="Content Writer",
goal="Create engaging content",
backstory="You're a skilled writer.",
llm=llm
)
from crewai import Task
task = Task(
description="Research the latest AI developments",
expected_output="5 bullet points of key developments",
agent=researcher
)
from crewai import Task
from pydantic import BaseModel
class ResearchOutput(BaseModel):
title: str
bullet_points: list[str]
sources: list[str]
task = Task(
description="Research AI developments in 2026",
expected_output="Structured research findings",
agent=researcher,
output_pydantic=ResearchOutput, # Structured output
human_input=True, # Human-in-the-loop
output_file="research_output.md", # Save to file
context=[previous_task] # Context from other tasks
)
from crewai import Task
from crewai_tools import SerperDevTool, ScrapeWebsiteTool
task = Task(
description="Research and write about AI trends",
expected_output="A comprehensive blog post",
agent=writer,
tools=[SerperDevTool(), ScrapeWebsiteTool()],
max_rpm=10
)
from crewai import Crew, Process
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task],
process=Process.sequential,
verbose=True
)
from crewai import Crew, Process
crew = Crew(
agents=[researcher, writer, editor],
tasks=[research_task, write_task, edit_task],
process=Process.sequential,
verbose=True,
memory=True, # Enable memory
cache=True, # Enable caching
max_rpm=100, # Rate limit for entire crew
share_crew=True, # Share with CrewAI for improvement
step_callback=lambda step: print(f"Step: {step}"), # Callback
manager_llm="gpt-4o" # For hierarchical process
)
crew = Crew(
agents=[agent1, agent2, agent3],
tasks=[task1, task2, task3],
process=Process.hierarchical,
manager_llm="gpt-4o",
manager_agent=None, # Auto-select or specify
verbose=True
)
# Required: OpenAI API Key
export OPENAI_API_KEY="sk-..."
# Optional: Serper API for web search
export SERPER_API_KEY="..."
# Optional: Other API keys
export ANTHROPIC_API_KEY="..."
export GOOGLE_API_KEY="..."
# Optional: CrewAI telemetry
export CREWAI_TELEMETRY_DISABLED="true"
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-4o",
temperature=0.7,
max_tokens=2000,
api_key="sk-..."
)
from langchain_anthropic import ChatAnthropic
llm = ChatAnthropic(
model="claude-sonnet-4-20250514",
temperature=0.7,
max_tokens=2000
)
from langchain_ollama import ChatOllama
llm = ChatOllama(
model="llama3.1",
base_url="http://localhost:11434",
temperature=0.7
)
from langchain_openai import AzureChatOpenAI
llm = AzureChatOpenAI(
azure_endpoint="https://your-endpoint.openai.azure.com/",
azure_deployment="gpt-4o",
openai_api_version="2025-01-01-preview",
api_key="..."
)
from crewai_tools import (
SerperDevTool, # Web search
ScrapeWebsiteTool, # Web scraping
FileReadTool, # Read files
DirectorySearchTool # Search directories
)
tools = [
SerperDevTool(),
ScrapeWebsiteTool(),
FileReadTool()
]
from crewai_tools import BaseTool
class CustomTool(BaseTool):
name: str = "Custom Tool"
description: str = "Does something useful"
def _run(self, input: str) -> str:
# Your logic here
return f"Result: {input}"
tool = CustomTool()
from crewai import Crew, Agent, Task
from crewai.memory import ShortTermMemory, LongTermMemory
# Enable memory
crew = Crew(
agents=[agent1, agent2],
tasks=[task1, task2],
memory=True,
short_term_memory=ShortTermMemory(),
long_term_memory=LongTermMemory()
)
def step_callback(step):
print(f"Step completed: {step}")
def task_callback(task_output):
print(f"Task completed: {task_output}")
crew = Crew(
agents=[agent1, agent2],
tasks=[task1, task2],
step_callback=step_callback,
task_callback=task_callback
)