Spaces:
Running
Running
File size: 4,307 Bytes
83be74e f571126 83be74e f571126 83be74e 9f5efd9 f571126 4fd3a9c f571126 83be74e 674a813 77708a2 83be74e 77708a2 ac75410 83be74e 77708a2 ac75410 f571126 83be74e ac75410 83be74e ac75410 83be74e ac75410 db05947 ac75410 83be74e db05947 83be74e 77708a2 9f5efd9 8bc5bae ac75410 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
import time
import streamlit as st
from utils.questions_dataset import system_instruction, get_model_tools
from google.genai import types
from google import genai
import time
from utils.firebase_util import push_study_time_data
st.set_page_config(page_title="LSAT Group A", page_icon="📘")
GEMINI_API_KEY = "AIzaSyAjpHA08BUwLhK-tIlORxcB18RAp3541-M"
client = genai.Client(api_key=GEMINI_API_KEY)
new_chat_id = f'{time.time()}'
MODEL_ROLE = 'ai'
AI_AVATAR_ICON = '✨'
st.title("📘Logical Reasoning: Group A")
next_btn = st.button("Click here when finished")
st.write("Use this AI Tutor to help you understand the concepts. You can ask it to explain the concepts, provide examples, or clarify any doubts you have.")
st.write("Start by sending a hello message!")
sys_prompt = system_instruction % (
st.session_state.prequiz_df['num_correct'][0],
st.session_state.prequiz_df['num_questions'][0],
st.session_state.prequiz_df['num_correct'][1],
st.session_state.prequiz_df['num_questions'][1],
st.session_state.prequiz_df['num_correct'][2],
st.session_state.prequiz_df['num_questions'][2],
st.session_state.prequiz_df['num_correct'][3],
st.session_state.prequiz_df['num_questions'][3],
st.session_state.prequiz_df['num_correct'][4],
st.session_state.prequiz_df['num_questions'][4],
st.session_state.prequiz_df['num_correct'][5],
st.session_state.prequiz_df['num_questions'][5],
st.session_state.prequiz_df['num_correct'][6],
st.session_state.prequiz_df['num_questions'][6],
st.session_state.prequiz_df['num_correct'][7],
st.session_state.prequiz_df['num_questions'][7],
st.session_state.prequiz_df['num_correct'][8],
st.session_state.prequiz_df['num_questions'][8]
) if st.session_state.prequiz_df is not None else ""
st.session_state.chat_id = new_chat_id
st.session_state.chat_title = f'ChatSession-{st.session_state.chat_id}'
st.session_state.gemini_history = []
# Initialize session state
if "chat" not in st.session_state:
st.session_state.chat = None
st.session_state.chat = client.chats.create(model='gemini-2.0-flash',
config=types.GenerateContentConfig(
tools=[get_model_tools()],
system_instruction=sys_prompt),
history=st.session_state.gemini_history
)
if "messages" not in st.session_state:
st.session_state.messages = []
# Display chat messages from history on app rerun
for message in st.session_state.messages:
with st.chat_message(
name=message['role'],
avatar=message.get('avatar'),
):
st.markdown(message['text'])
# Chat input
user_input = st.chat_input("💬 Ask your tutor a question...")
if user_input:
st.chat_message("user").markdown(user_input)
st.session_state.messages.append({"role": "user", "text": user_input})
full_response = ""
response = st.session_state.chat.send_message_stream(user_input)
full_reply = ""
with st.chat_message(
name=MODEL_ROLE,
avatar=AI_AVATAR_ICON,
):
response_box = st.empty()
try:
for chunk in response:
chunk_text = chunk.text
if chunk_text:
full_reply += chunk_text
time.sleep(0.05)
response_box.markdown(full_reply + "▌")
# Final display after stream ends
response_box.markdown(full_reply)
except Exception as e:
response_box.markdown(f"⚠️ Error: {e}")
full_reply = "Sorry, there was an error."
print(e)
st.session_state.messages.append({"role": "assistant", "text": full_reply, "avatar": AI_AVATAR_ICON})
if len(st.session_state.messages) > 10:
st.session_state.messages = st.session_state.messages[-10:]
st.session_state.gemini_history = st.session_state.chat.get_history()
if next_btn:
print(time.time())
print(st.session_state.tutor_start_time)
push_study_time_data(time.time() - st.session_state.tutor_start_time)
st.session_state.postquiz_start_time = time.time()
st.switch_page("pages/postquiz.py") |