You can create a personalized AI Tutor using Mem0. This guide will walk you through the necessary steps and provide the complete code to get you started.
Overview
The Personalized AI Tutor leverages Mem0 to retain information across interactions, enabling a tailored learning experience. By integrating with OpenAI’s GPT-4 model, the tutor can provide detailed and context-aware responses to user queries.
Before you begin, ensure you have the required dependencies installed. You can install the necessary packages using pip:
pip install openai mem0ai
Full Code Example
Below is the complete code to create and interact with a Personalized AI Tutor using Mem0:
from openai import OpenAI
from mem0 import Memory
os.environ['OPENAI_API_KEY'] = 'sk-xxx'
client = OpenAI()
class PersonalAITutor:
def __init__(self):
"""
Initialize the PersonalAITutor with memory configuration and OpenAI client.
"""
config = {
"vector_store": {
"provider": "qdrant",
"config": {
"host": "localhost",
"port": 6333,
}
},
}
self.memory = Memory.from_config(config)
self.client = client
self.app_id = "app-1"
def ask(self, question, user_id=None):
"""
Ask a question to the AI and store the relevant facts in memory
:param question: The question to ask the AI.
:param user_id: Optional user ID to associate with the memory.
"""
stream = self.client.chat.completions.create(
model="gpt-4",
stream=True,
messages=[
{"role": "system", "content": "You are a personal AI Tutor."},
{"role": "user", "content": question}
]
)
self.memory.add(question, user_id=user_id, metadata={"app_id": self.app_id})
for chunk in stream:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="")
def get_memories(self, user_id=None):
"""
Retrieve all memories associated with the given user ID.
:param user_id: Optional user ID to filter memories.
:return: List of memories.
"""
return self.memory.get_all(user_id=user_id)
ai_tutor = PersonalAITutor()
user_id = "john_doe"
ai_tutor.ask("I am learning introduction to CS. What is queue? Briefly explain.", user_id=user_id)
Fetching Memories
You can fetch all the memories at any point in time using the following code:
memories = ai_tutor.get_memories(user_id=user_id)
for m in memories:
print(m['text'])
Key Points
- Initialization: The PersonalAITutor class is initialized with the necessary memory configuration and OpenAI client setup.
- Asking Questions: The ask method sends a question to the AI and stores the relevant information in memory.
- Retrieving Memories: The get_memories method fetches all stored memories associated with a user.
Conclusion
As the conversation progresses, Mem0’s memory automatically updates based on the interactions, providing a continuously improving personalized learning experience. This setup ensures that the AI Tutor can offer contextually relevant and accurate responses, enhancing the overall educational process.