Spaces:
No application file
No application file
File size: 5,351 Bytes
26ce7c2 e95727f |
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 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
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
# Function to get chatbot response
def get_chatbot_response(user_message):
# 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)
# Request to Groq API for chatbot response
response = client.chat.completions.create(
messages=[{"role": "user", "content": user_message}],
model="llama-3.3-70b-versatile",
)
return response.choices[0].message.content
# 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("""
<style>
.css-1v0mbdj {padding-top: 30px; font-size: 1.5rem;}
.css-1wa3m6h {padding: 10px; background-color: #f0f0f5;}
.css-1w4t6pm {border: 1px solid #ccc; padding: 10px; background-color: #fff;}
.css-1f4y1re {font-size: 1.2rem;}
</style>
""", 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()
# Chatbot container
chatbot_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.")
# Chatbot functionality
with chatbot_container:
st.subheader("AI Chatbot")
user_message = st.text_area("Ask anything to the chatbot:", "")
if user_message:
with st.spinner("Getting response from AI..."):
chatbot_response = get_chatbot_response(user_message)
st.write(f"**Chatbot Response**: {chatbot_response}")
# Add a footer with contact info and clickable links
st.markdown("""
<footer style="text-align:center; padding: 20px; font-size: 1rem; background-color: #f0f0f5;">
<p>Powered by Groq, Google Translate, and Streamlit</p>
<p>For more opportunities, visit:</p>
<ul style="list-style-type:none; padding: 0;">
<li><a href="https://www.groq.com" target="_blank">Groq - AI Solutions</a></li>
<li><a href="https://www.scholarships.com" target="_blank">Scholarships.com</a></li>
<li><a href="https://www.coursera.org" target="_blank">Coursera - Online Courses</a></li>
<li><a href="https://www.linkedin.com/jobs" target="_blank">LinkedIn Jobs</a></li>
</ul>
<p>Contact: [email protected]</p>
</footer>
""", unsafe_allow_html=True)
|