import os import streamlit as st from groq import Groq from googletrans import Translator import asyncio # Function to get recommendations from Groq AI based on user input def get_opportunities(user_interests, user_skills, user_location): # Fetch the API key from the environment variable api_key = "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" if not api_key: raise ValueError("API key is missing. Make sure to set the GROQ_API_KEY environment variable.") # Initialize the Groq client with the API key client = Groq(api_key=api_key) # Construct the query query = f"Based on the user's interests in {user_interests}, skills in {user_skills}, and location of {user_location}, find scholarships, internships, online courses, and career advice suitable for them." # Request to Groq API response = client.chat.completions.create( messages=[{"role": "user", "content": query}], model="llama-3.3-70b-versatile", ) return response.choices[0].message.content # Function to translate text into the selected language (async version) async def translate_text(text, target_language): translator = Translator() translated = await translator.translate(text, dest=target_language) return translated.text # Streamlit App Interface st.set_page_config(page_title="AI-Powered Opportunity Finder", page_icon=":bulb:", layout="wide") st.title("AI-Powered Opportunity Finder for Youth") # Custom CSS for improving the UI st.markdown(""" """, unsafe_allow_html=True) # Sidebar for input fields st.sidebar.header("Provide your details to find opportunities") # Collect user input for interests, skills, and location in the sidebar interests = st.sidebar.text_input("Your Interests (e.g., AI, Robotics, Software Engineering):") skills = st.sidebar.text_input("Your Skills (e.g., Python, Data Science, Web Development):") location = st.sidebar.text_input("Your Location (e.g., Gujrat, Pakistan):") # Language selection languages = { "English": "English", "Spanish": "Spanish", "French": "French", "German": "German", "Italian": "Italian", "Chinese": "Chinese", "Japanese": "Japanese", "Urdu": "Urdu" # Full word for Urdu } selected_language = st.sidebar.selectbox("Select your preferred language:", list(languages.keys())) # Container to display results results_container = st.container() # Button to fetch opportunities if st.sidebar.button("Find Opportunities"): if interests and skills and location: with st.spinner("Fetching opportunities..."): # Fetch recommendations using the Groq API opportunities = get_opportunities(interests, skills, location) # Run the async translate function and get the translated text translated_opportunities = asyncio.run(translate_text(opportunities, languages[selected_language])) # Display the opportunities results_container.subheader("Recommended Opportunities") results_container.write(translated_opportunities) else: st.sidebar.error("Please fill all fields.") # Add a footer with contact info and clickable links st.markdown(""" """, unsafe_allow_html=True)