MemoryStackMemoryStack/Documentation

    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 memorystack

    Crew 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.