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)