Welcome to VirtuTA, an innovative project to build a fully functional electronic/virtual teaching assistant for university courses. VirtuTA is designed to enhance the educational experience by providing immediate, accurate, and context-aware responses to student queries. This project leverages the latest advancements in machine learning, natural language processing, and AI to support students and instructors in an academic setting.
In the ever-evolving landscape of education, the demand for effective and efficient teaching tools has never been greater. VirtuTA
aims to meet this demand by providing a virtual teaching assistant capable of handling various tasks, from answering student queries to providing detailed feedback and support. This project is a culmination of the skills we've honed through numerous laboratory assignments and the additional expertise we've gained in domain-specific functions.
Our platform integrates various educational tools and data sources to provide a seamless user experience. This project is part of a larger initiative to explore and implement cutting-edge technology in educational environments.
Click on the image below to view the video
This semester's final project aims to develop a complete working solution for electronic/virtual teaching assistants, dubbed VirtuTA. Our approach is rooted in a structured and incremental development process, ensuring that we build a platform that is not only functional but also scalable and adaptable to different educational needs.
DSCI 560: Data Science Professional Practicum Final Project
-
Automated Login and Real-time Data Collection: VirtuTA supports automated login to platforms like Piazza and web-based forums, ensuring real-time data collection and interaction.
-
Context-Aware Responses: Our system utilizes advanced embedding algorithms to match user queries with the most relevant answers, incorporating static and dynamic content.
-
Multimodal Responses: VirtuTA can include images and videos in its responses, enhancing the explanatory power and engagement of the assistant.
-
Integration with External Tools: The assistant can integrate with tools like OpenAI and HuggingFace for enhanced language processing capabilities.
-
Logistical Support: Provides timely updates and responses related to course logistics, helping students stay informed and organized.
-
Automated Communication: VirtuTA streamlines interactions between students and instructors by providing automated responses to common queries, facilitating discussion forums, and offering personalized assistance.
-
Assignment Management: Manage assignments seamlessly, including creation, distribution, grading, and feedback provision.
-
Content Delivery: Easily upload and organize course materials such as lecture slides, readings, and multimedia content for accessible anytime, anywhere learning.
-
Student Support: Personalized support through Q&A sessions, study guides, tutoring, and additional resource recommendations.
-
Analytics and Insights: Analyze student interactions and performance data to generate valuable insights for improving teaching strategies and tracking student progress.
In addition to the core features, VirtuTA incorporates an agentic workflow inspired by Relevance-Augmented Generation (RAG) principles. This workflow enhances VirtuTA's capabilities by integrating powerful data retrieval and generation techniques, ensuring that the assistant provides accurate and contextually relevant responses.
We have created a multimodal RAG
using Langchain
, powered by Google Gemini
. For context awareness, we utilize two vector stores with Mongo Atlas Vector Search
for content-based and logistics-based queries. VirtuTA generates detailed and comprehensive answers with snapshots from slides, timestamps, links to videos, and sources. Additionally, it queries the YouTube API for content-based queries to provide the best videos explaining the concepts students are seeking.
This agentic workflow is directly integrated into Piazza,
a popular forum students and teachers at many universities use. It leverages the Piazza API to query unanswered and unresolved questions, providing answers directly within the thread.
We invite you to explore VirtuTA and join us on this exciting journey towards revolutionizing the educational experience. Your feedback and contributions are invaluable as we strive to make VirtuTA a state-of-the-art virtual teaching assistant.
Note
Piazza Classroom Invitation: Click here. Classroom may or may not be active as a project is currently not being maintained
-
Clone the Repository: Clone this repository to your local machine.
-
Navigate to Project Directory: Open your terminal or command prompt and navigate to the project's root directory.
-
Create Conda Environment: Run the following command to create a Conda environment using the provided
env.yml
file:conda env create -f env.yml
-
Activate the Environment: Activate the Conda environment using:
conda config --set auto_activate_base false # To not activate "base" env by default conda activate gemini
-
Update the environment: If you already have a Conda environment created, updated it using the command below and have the new dependencies installed
conda env update --file env.yml --prune
OR
-
Navigate to Project Directory: Open your terminal or command prompt and navigate to the project's root directory.
-
Create Virtual Environment: Run the following command to create a virtual environment using
requirements.txt
:python -m venv gemini
-
Activate the Virtual Environment:
- On Windows:
gemini\Scripts\activate
- On macOS and Linux:
source gemini/bin/activate
- On Windows:
-
Create Secrets Directory: While in the root directory of the project, create a directory named
secrets
. -
Place GCP Service Account File: Move your Google Cloud Platform (GCP) service account file into the
secrets
directory. Ensure it is named appropriately. -
Copy and Populate Environment Variables:
- Copy the
example.env
file provided in the project and rename it to.env
. - Open the
.env
file and set the following variables:GCLOUD_SERVICE_ACCOUNT_KEY_PATH
: Path to your GCP service account file relative to thesecrets
directory.PROJECT_ID
: Your GCP project ID.PROJECT_LOCATION
: Location of your GCP project.MONGODB_URI
: URI for your MongoDB instance or database.
- Copy the
Now you're ready to run the AI Virtual Teaching Assistant!!
VirtuTA is poised to revolutionize how students interact with educational content and support systems. We aim to provide a highly effective, engaging, and supportive learning environment by integrating advanced AI techniques with robust educational frameworks. Stay tuned for our weekly progress updates and final project demonstration!
Thank you for your interest in VirtuTA!
- Kayvan Shah |
MS in Applied Data Science
|USC
|Author
- Shreyansh Baredia |
MS in Applied Data Science
|USC
- Soma Meghana Prathipati |
MS in Applied Data Science
|USC
This project is a collaborative effort by a team of dedicated students from the University of Southern California's MS in Applied Data Science program. Special thanks to Mihika Gaonkar, Prathamesh Lonkar, Mithesh Ramachandran, Hritik Bansal, and Suma Sree Gottipati for their contributions to demo video.
This repository is licensed under the MIT
License. See the LICENSE file for details.