|
|
import os |
|
|
import streamlit as st |
|
|
import google.generativeai as genai |
|
|
from dotenv import load_dotenv |
|
|
|
|
|
|
|
|
load_dotenv() |
|
|
api_key = os.getenv("GEMINI_API_KEY") |
|
|
|
|
|
|
|
|
if not api_key: |
|
|
st.error("API key not found. Please set GEMINI_API_KEY in your .env file.") |
|
|
st.stop() |
|
|
|
|
|
|
|
|
genai.configure(api_key=api_key) |
|
|
generation_config = { |
|
|
"temperature": 1, |
|
|
"top_p": 0.95, |
|
|
"top_k": 64, |
|
|
"max_output_tokens": 8192, |
|
|
"response_mime_type": "text/plain", |
|
|
} |
|
|
|
|
|
try: |
|
|
model = genai.GenerativeModel( |
|
|
model_name="gemini-1.5-flash", |
|
|
generation_config=generation_config |
|
|
) |
|
|
except Exception as e: |
|
|
st.error(f"Failed to load model: {str(e)}") |
|
|
st.stop() |
|
|
|
|
|
|
|
|
def main(): |
|
|
st.title("Personalized Course Recommendation System") |
|
|
|
|
|
|
|
|
questions = [ |
|
|
"How would you want your course look like? ", |
|
|
"From previous semesters which course was your favorite?", |
|
|
"list some of your strongest skills or competencies.", |
|
|
"If you had unlimited resources, what research topic would you dedicate your time to?", |
|
|
"Where do you envision yourself five years from now?", |
|
|
"When face an intellectual problem what strategies do you naturally tend to employ to find solutions?", |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
] |
|
|
|
|
|
|
|
|
responses = {q: st.text_area(q, "") for q in questions} |
|
|
print(responses) |
|
|
|
|
|
|
|
|
if st.button("Get Career Path Recommendation"): |
|
|
if all(responses.values()): |
|
|
with st.spinner("Generating recommendations..."): |
|
|
try: |
|
|
|
|
|
chat_session = model.start_chat( |
|
|
history=[{"role": "user", "parts": [{"text": f"{q}: {a}"} for q, a in responses.items()]}] |
|
|
) |
|
|
response = chat_session.send_message("Based on the answers provided, which major Subject of Department of Computer Science & Engineering should the user can take?") |
|
|
recommendation = response.text.strip() |
|
|
|
|
|
|
|
|
st.subheader("Career Path Recommendation:") |
|
|
st.write(recommendation) |
|
|
except Exception as e: |
|
|
st.error(f"An error occurred while generating recommendations: {str(e)}") |
|
|
else: |
|
|
st.error("Please answer all the questions to get a recommendation.") |
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
main() |
|
|
|