123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- ---
- title: Personalized AI Tutor
- ---
- 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.
- ## Setup
- Before you begin, ensure you have the required dependencies installed. You can install the necessary packages using pip:
- ```bash
- pip install openai mem0ai
- ```
- ## Full Code Example
- Below is the complete code to create and interact with a Personalized AI Tutor using Mem0:
- ```python
- from openai import OpenAI
- from mem0 import Memory
- # Initialize the OpenAI client
- 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.
- """
- # Start a streaming chat completion request to the AI
- 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}
- ]
- )
- # Store the question in memory
- self.memory.add(question, user_id=user_id, metadata={"app_id": self.app_id})
- # Print the response from the AI in real-time
- 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)
- # Instantiate the PersonalAITutor
- ai_tutor = PersonalAITutor()
- # Define a user ID
- user_id = "john_doe"
- # Ask a question
- 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:
- ```python
- 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.
|