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)