CrewAI Integration
Build collaborative AI agent teams with CrewAI and Memorystack. Give your crew persistent memory to learn and improve over time.
✓ CrewAI✓ Agent Teams✓ Python Only
Installation
pip install crewai memorystackCrew with Memory
Create a CrewAI team with persistent memory:
from crewai import Agent, Task, Crew
from langchain.chat_models import ChatOpenAI
from memorystack import MemoryStackClient
import os
# Initialize Memorystack
memory_client = MemoryStackClient(
api_key=os.environ["MEMORYSTACK_API_KEY"]
)
# Custom tool to access memories
from crewai import Tool
def search_memories(query: str, user_id: str = None):
"""Search user memories for relevant information"""
memories = memory_client.list_memories(
user_id=user_id,
limit=10
)
return "\n".join([
f"[{m.memory_type}] {m.content}"
for m in memories.results
])
memory_tool = Tool(
name="search_memories",
description="Search user's memories for context and preferences",
func=lambda q: search_memories(q, "user_123")
)
# Create agents with memory access
researcher = Agent(
role='Researcher',
goal='Research topics based on user preferences',
backstory='Expert researcher who remembers user interests',
tools=[memory_tool],
llm=ChatOpenAI(model="gpt-4"),
verbose=True
)
writer = Agent(
role='Writer',
goal='Write content tailored to user preferences',
backstory='Creative writer who personalizes content',
tools=[memory_tool],
llm=ChatOpenAI(model="gpt-4"),
verbose=True
)
# Create tasks
research_task = Task(
description='Research AI trends considering user preferences from memory',
agent=researcher,
expected_output='Research summary'
)
write_task = Task(
description='Write an article based on research and user preferences',
agent=writer,
expected_output='Article content'
)
# Create crew
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task],
verbose=True
)
# Run crew
result = crew.kickoff()
# Save crew output to memory
memory_client.add_message(
f"Crew completed task: {result}",
user_id="user_123"
)
print(result)Self-Learning Crew
Build a crew that learns from feedback and improves over time:
class LearningCrew:
def __init__(self, api_key: str, user_id: str):
self.memory_client = MemoryStackClient(api_key=api_key)
self.user_id = user_id
self.setup_crew()
def get_learnings(self):
"""Get past learnings from memory"""
memories = self.memory_client.list_memories(
user_id=self.user_id,
memory_type="experience",
limit=20
)
return "\n".join([m.content for m in memories.results])
def setup_crew(self):
# Get past learnings
learnings = self.get_learnings()
# Create learning-aware agent
self.agent = Agent(
role='Learning Assistant',
goal='Help user while learning from feedback',
backstory=f'I learn from experience. Past learnings:\n{learnings}',
llm=ChatOpenAI(model="gpt-4"),
verbose=True
)
self.task = Task(
description='Complete user request and learn from outcome',
agent=self.agent,
expected_output='Task result'
)
self.crew = Crew(
agents=[self.agent],
tasks=[self.task],
verbose=True
)
def execute(self, request: str):
"""Execute task and save learnings"""
# Run crew
result = self.crew.kickoff()
# Save interaction
self.memory_client.add_conversation(
request,
str(result),
user_id=self.user_id
)
return result
def add_feedback(self, feedback: str):
"""Learn from user feedback"""
self.memory_client.create_memory(
messages=[
{
"role": "user",
"content": f"Feedback: {feedback}"
}
],
user_id=self.user_id,
metadata={"type": "learning"}
)
# Refresh crew with new learnings
self.setup_crew()
# Usage
crew = LearningCrew(
api_key=os.environ["MEMORY_OS_API_KEY"],
user_id="user_123"
)
# Execute task
result = crew.execute("Write a blog post about AI")
print(result)
# Provide feedback
crew.add_feedback("Great! But make it more technical next time")
# Next execution will use the feedback
result2 = crew.execute("Write another blog post")
print(result2)Benefits
🤝 Team Memory
All agents in the crew can access shared memory for better collaboration.
📚 Learning from Experience
Crews improve over time by learning from past interactions and feedback.
🎯 Personalization
Agents remember user preferences and tailor their work accordingly.
💾 Persistent State
Crew knowledge persists across sessions and deployments.
