import os import streamlit as st import google.generativeai as genai from dotenv import load_dotenv # Load environment variables load_dotenv() api_key = os.getenv("GEMINI_API_KEY") # Check if API key is set if not api_key: st.error("API key not found. Please set GEMINI_API_KEY in your .env file.") st.stop() # Configure the generative AI model genai.configure(api_key=api_key) generation_config = { "temperature": 0.7, "top_p": 0.9, "top_k": 50, "max_output_tokens": 1024, "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() # Main function for Streamlit app def main(): st.title("Personalized Course Recommendation System") # List of questions for the user questions = [ "Write your career interests shortly.", "What is Your Academic Background?", "What are your specific skills?", "How many hours per week can you dedicate to learning?", "Do you prefer short-term or long-term courses?", "Do you prefer online or in-person learning?", "What is your preferred working environment (e.g., office, remote, hybrid)?", "What are your long-term career goals?", "How do you prefer to learn new concepts (e.g., reading, hands-on practice, videos)?", "What are your hobbies and interests?", "What is your preferred learning style (e.g., visual, auditory, kinesthetic)?", "What motivates you to learn new things?", "What are your strengths and weaknesses?", ] # Collect user responses responses = {q: st.text_area(q, "") for q in questions} # Button to get recommendations if st.button("Get Career Path Recommendation"): if all(responses.values()): with st.spinner("Generating recommendations..."): try: # Start chat session and send the message 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() # Display the recommendation 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.") # Run the app if __name__ == "__main__": main()