|
import streamlit as st |
|
import datetime |
|
from db import courses_collection2, faculty_collection, students_collection, vectors_collection, chat_history_collection |
|
from PIL import Image |
|
from dotenv import load_dotenv |
|
import os |
|
from datetime import datetime |
|
from bson import ObjectId |
|
from file_upload_vectorize import model |
|
from gen_mcqs import generate_mcqs, quizzes_collection |
|
|
|
load_dotenv() |
|
MONGO_URI = os.getenv('MONGO_URI') |
|
OPENAI_KEY = os.getenv('OPENAI_KEY') |
|
GEMINI_KEY = os.getenv('GEMINI_KEY') |
|
|
|
def insert_chat_message(user_id, session_id, role, content): |
|
message = { |
|
"role": role, |
|
"content": content, |
|
"timestamp": datetime.utcnow() |
|
} |
|
|
|
chat_history_collection.update_one( |
|
{"user_id": ObjectId(user_id), "session_id": session_id}, |
|
{"$push": {"messages": message}, "$set": {"timestamp": datetime.utcnow()}}, |
|
upsert=True |
|
) |
|
|
|
def give_chat_response(user_id, session_id, question, title, description, context): |
|
context_prompt = f""" |
|
Based on the following session title, description, and context, answer the user's question in 3-4 lines: |
|
|
|
Title: {title} |
|
Description: {description} |
|
Context: {context} |
|
|
|
Question: {question} |
|
|
|
Please provide a clear and concise answer based on the information provided. |
|
""" |
|
|
|
response = model.generate_content(context_prompt) |
|
if not response or not response.text: |
|
return "No response received from the model" |
|
|
|
assistant_response = response.text.strip() |
|
|
|
|
|
insert_chat_message(user_id, session_id, "assistant", assistant_response) |
|
|
|
return assistant_response |
|
|
|
def create_quiz_by_context(user_id, session_id, context, length, session_title, session_description): |
|
"""Create a quiz based on the context provided""" |
|
quiz = generate_mcqs(context, length, session_title, session_description) |
|
if not quiz: |
|
return "No quiz generated"; |
|
|
|
|
|
quizzes_collection.insert_one({ |
|
"user_id": ObjectId(user_id), |
|
"session_id": ObjectId(session_id), |
|
"questions": quiz, |
|
"timestamp": datetime.utcnow() |
|
}) |
|
return "Quiz created successfully" |