Skip to content

Commit 1643902

Browse files
committed
added banner + more changes
1 parent 6b7a80e commit 1643902

File tree

5 files changed

+26
-46
lines changed

5 files changed

+26
-46
lines changed

.github/assets/classrooms.png

1.12 MB
Loading

.github/assets/logo-text.png

97.5 KB
Loading
489 KB
Loading

.github/assets/tech-overview.png

693 KB
Loading

README.md

Lines changed: 26 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
# ClassroomLM
1+
# ![Logo](.github/assets/logo-text.png)
2+
3+
---
24

35
![ClassroomLM Banner](.github/assets/main-banner.png)
4-
ClassroomLM provides each of the many classrooms within an organization a specialized LLM assistant that is specific and accurate to the subject matter and resources of that particular classroom.
6+
ClassroomLM provides each of the many classrooms within an organization a specialized LLM assistant that is specific and accurate to the subject matter and resources of that particular classroom.
57

68
???? add more to above about generating material, etc
79

@@ -11,59 +13,48 @@ The core feature and main value that ClassroomLM provides is the application's f
1113
1214
[video walktrhough of everything]
1315

16+
2038 x 3200 at 37%
17+
1418
## Features
1519

1620
### **Classroom-Style Structure**
1721

1822
Teachers can create classrooms, upload documents (PDFs, slides, handwritten notes), and invite students.
1923

20-
Diagram of docs to classes (maybe add it sidebyside to main classroom page screenshot?)
24+
![Classroom page screenshot and diagram of knowledge base per classroom](.github/assets/classrooms.png)
2125

2226
### **Classroom-Specific AI Assistants**
2327

2428
Each classroom has access to an LLM assistant that is RAG-enabled, allowing it to be more specific and accurate, while also being more grounded and smarter at retrieving information from the class' resources unlocking greater potential for engaging learning, peer interaction, and more.
2529

30+
![Personal Assistant Example](.github/assets/personal-example.png)
31+
2632
#### **Advantages over current user-facing AI assistant systems with use case examples**
2733

28-
**More accurate, specific, and grounded**: The assistant can now operate in niche and specific or even specially created context just for classrooms.
34+
????**More accurate, specific, and grounded**: The assistant can now operate in niche, specific, and even specially created context just for classrooms.
2935
> **Use case example**: An NYU Professor has a variation of assembly created specifically for the classroom, called E20. Putting the E20 manual into the shared classroom dataset gave all students within this classroom access to an assistant that is now specialized, knowledgeable, and with full context of this niche, not-seen-before language personally created by a professor. \
3036
> Comparing it to existing systems, they gave vague, non-specific, and non-accurate answers relevant to other assembly variants.
3137
3238
**Logistical and practical benefits**: Created knowledge bases are shared across the entire classroom.
3339

34-
> Rather than an entire classroom's worth of students across all of their individual classes having to upload their documents individually, keep it up to date with new resources, and separate it from other classes, having a shared (but siloed) knowledge base for an entire classroom reduces the overhead, friction, and allows for superior use of resources.\
35-
\
36-
Implementing this core mechanism now provides a foundation for all the features that could benefit from having shared knowledge bases for subgroups.
40+
Rather than an entire classroom's worth of students across all of their individual classes having to upload their documents individually, keep it up to date with new resources, and separate it from other classes, having a shared (but siloed) knowledge base for an entire classroom reduces the overhead, friction, and allows for superior use of resources.
41+
42+
> Implementing this core mechanism now provides a foundation for all the features that could benefit from having shared knowledge bases for subgroups.
3743
38-
**Diverse abilities and potential contexts**: Your imagination is the only limit on what is possible with your RAG-enabled LLM assistant
44+
**Diverse abilities and potential contexts**: Your imagination is the only limit on what is possible with your RAG-enabled LLM assistant ???
3945

4046
> We use the existing power of LLMs and bring out their full potential for educators and students.
4147
The assistant can be used to generate exam questions, review material, interrogate the classroom documents, have a discussion about the content, judge and correct your understanding, etc. with many other abilities tested, and many more possible. And again, all of these will be more accurate and specific because of the grounding that comes from the classroom's resource dataset.\
4248
In terms of contexts, ClassroomLM was tested to be useful for subjects ranging from physics, different math topics, computer science, and also the humanities. For something like philosophy or other classes with many readings, ClassroomLM can shine because it's able to synthesize across the many readings, and without each student having to reupload all documents.
4349

44-
45-
46-
<!-- Building conversation context | Continues and LLM triggered with /ask | LLM responds
47-
:-------------------------:|:-------------------------: |:-------------------------:
48-
border: black 2px solid;
49-
![]() | ![]()
50-
<!-- <p float="center" align="middle" style="
51-
<!-- padding-top: 5px; border-radius: 10px;">
52-
<img src=".github/assets/collab-1.png" style="border-radius: 10px;" width="300" />
53-
<img src=".github/assets/collab-2.png"
54-
style="border-radius: 10px;"
55-
width="335" /> <br>
56-
<img src=".github/assets/collab-3.png" style="border-radius: 10px;" width="700" />
57-
</p> --> -->
58-
5950
### **Collaborative AI Chats**
6051

6152
Group chat support with other students the AI can participate with full chat context.
6253

6354
- Students can create multiple chatrooms per classroom and choose who to invite within each chatroom.
6455
- Within the chatroom, students can pull the LLM into the conversation in the manner of a group chat with the **`/ask [message]`** command.
6556
- The assistant in this case retains all the benefits described above for the personal chat, as it is also RAG enabled.
66-
57+
???? can we move this out of quote
6758
> To be clear, this isn’t the common implementation of a "group chat with an assistant" very often found in company Slacks, etc. where the LLM is just responding to the message that triggered it. In that case, it's only more useful than just doing asking the LLM personally since the answer is visible to everyone. Instead here, when triggered with the `/ask` command the LLM will have knowledge of all the previous conversation and respond accordingly, as if it’s just part of the conversation.
6859
6960
![Collaborative Chat Example](.github/assets/collab-full.png)
@@ -72,25 +63,13 @@ Group chat support with other students the AI can participate with full chat con
7263
![Collaborative chat with interactivity](.github/assets/example2-full.png)
7364
??? add commentts to this
7465

75-
7666
## Technical Overview
7767

78-
Diagram showing where evrything is stored
79-
RagFlow has knowkedge bases, stores actual docs
80-
Stores personal chat history
81-
82-
Supabase stores user information, classroom/chatroom metadata, collaborative chat history as realtime database
83-
84-
Node JS Shadcn ui
85-
86-
Then on the side we have dev stack
68+
![Technical overview](.github/assets/tech-overview.png)
8769

88-
- **Framework**: Next.js 15 with App Router
89-
- **Language**: TypeScript
90-
- **Styling**: Tailwind CSS with shadcn/ui components
91-
- **Testing**: Vitest with React Testing Library
92-
- **Database**: Supabase
93-
- **Deployment**: Docker and Kubernetes support
70+
**ClassroomLM builds on top of the [RAGFlow](https://github.com/infiniflow/ragflow) engine.** This is an open-source RAG (Retrieval-Augmented Generation) engine with the benefits of being polished, actively-maintained, and mature. \
71+
This is especially true in terms of handling bugs and having a comprehensive and [well-documented HTTPS API](https://ragflow.io/docs/v0.19.0/http_api_reference) for the ClassroomLM application to utilize.
72+
As seen above in the diagram, the RAGFlow instance (note that this is self-hosted) is responsible for storing the documents within the knowledge base and handling the RAG functionality with the LLMs. **The application links the corresponding siloed datasets within RAGFlow to the correct classroom during all assistant functionality.**
9473

9574
### Repository contents
9675

@@ -130,7 +109,6 @@ git clone https://github.com/TechAtNYU/dev-team-spring-25.git
130109
cd dev-team-spring-25
131110
```
132111

133-
134112
#### Provision Supabase instance
135113

136114
First, [install the Supabase CLI](https://supabase.com/docs/guides/local-development/cli/getting-started). If you already have the `npm` dependencies installed from the development setup, then you should already have it.
@@ -139,6 +117,7 @@ Next, get the *`CONNECTION_STRING`*. You can either use the dashboard and press
139117

140118
If you don't already have it, [get the Postgres CLI.](https://www.postgresql.org/download/)
141119
And finally, run the following command to automatically set up the tables, functions, trigger, realtime functionality, etc. Replace `[CONNECTION_STRING]` with what you determined above.
120+
142121
```bash
143122
psql --single-transaction -variable ON_ERROR_STOP=1 --file supabase-setup.sql --dbname [CONNECTION_STRING]
144123
```
@@ -150,15 +129,16 @@ Even if you self-hosted, you can access the Supabase dashboard (exposed at port
150129

151130
#### Add allowed domains to database
152131

153-
Either by connecting to the database through the `psql` CLI or through the Supabase dashboard (recommended), add.\
154-
Add a domain (or multiple) in the following manner:
132+
Either by connecting to the database through the `psql` CLI or through the Supabase dashboard (recommended), add any allowable domains to the `Allowed_Domains` table.\
133+
When a user signs in with Google, it will only work if their Google account's address is found in table. E.g. for `[email protected]`, `domain.com` must be an entry in `Allowed_Domains`.
134+
135+
Add a domain (or multiple) in the following manner to `Allowed_Domains`:
155136

156137
| id | domain |
157138
| ----- | ------- |
158139
| 1 | nyu.edu |
159140

160-
**Note**: in the section below, you'll see that you need to add the allowed domains to the `.env` file as well.
161-
141+
**Note**: In the section below, you'll see that you need to add the allowed domains to the `.env` file as well.
162142

163143
### 3. Add config info
164144

@@ -171,7 +151,7 @@ Explanation of each variable:
171151
| NEXT_PUBLIC_SUPABASE_URL | Use either the given URL from the hosted version or a custom URL from your self-hosted solution |
172152
| NEXT_PUBLIC_SUPABASE_ANON_KEY | Should be available somewhere in Supabase's settings |
173153
| NEXT_PUBLIC_SITE_URL | The root URL for the site, to be used for callbacks after authentication |
174-
| NEXT_PUBLIC_ALLOWED_EMAIL_DOMAINS | When users login with Google, these are the only email domains allowed to sign up.&#10;**Note that this is also needs to be configured within Supabase** |
154+
| NEXT_PUBLIC_ALLOWED_EMAIL_DOMAINS | When users login with Google, these are the only email domains allowed to sign up.&#10;**Note that this is also needs to be configured in a table within Supabase** |
175155
| NEXT_PUBLIC_ORGANIZATION_NAME | The name of the organization |
176156
| SUPABASE_SERVICE_ROLE_KEY | Should be available somewhere in Supabase's settings |
177157
| RAGFLOW_API_KEY | Go back section 2 to make this key |

0 commit comments

Comments
 (0)