File size: 3,399 Bytes
90b97aa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
import together
import PyPDF2
import io

# Initialize Together AI client
client=together.Together(api_key="8969731d768db64b1406eaa5e70bae31bcb4cbf57719295a03aed2ebfa45fe51")

def read_pdf(pdf_file):
    """Extract text from uploaded PDF file"""
    if pdf_file is not None:
        pdf_reader = PyPDF2.PdfReader(io.BytesIO(pdf_file.getvalue()))
        text = ""
        for page in pdf_reader.pages:
            text += page.extract_text()
        return text
    return None

def get_ai_response(prompt):
    """Get response from Together AI API"""
    response = client.chat.completions.create(
        # prompt=prompt,
        model="meta-llama/Llama-3.2-11B-Vision-Instruct-Turbo",  # or your preferred model
        messages=[{"role": "user", "content": prompt}],
        max_tokens=1024,
        temperature=0.7,
    )
    print(response)
    return response.choices[0].message.content

def create_prompt(resume_text, job_description, user_question):
    """Create prompt based on available information"""
    prompt = "You are a helpful career advisor. "
    
    if resume_text:
        prompt += f"\nResume Content:\n{resume_text}\n"
    
    if job_description:
        prompt += f"\nJob Description:\n{job_description}\n"
    
    prompt += f"\nUser Question: {user_question}\n"
    prompt += "\nPlease provide a detailed and helpful response: "
    
    return prompt

# Streamlit UI
st.title("Resume Bot Assistant")

# Initialize session state for chat history
if 'messages' not in st.session_state:
    st.session_state.messages = []

# Sidebar
with st.sidebar:
    st.header("Upload Documents")
    
    # Resume upload
    resume_file = st.file_uploader("Upload Resume (PDF)", type=['pdf'])
    resume_text = None
    if resume_file:
        resume_text = read_pdf(resume_file)
        st.success("Resume uploaded successfully!")
    else:
        st.warning("Please upload your resume")
    
    # Job description input
    job_description = st.text_area("Enter Job Description")

# Display chat messages
for message in st.session_state.messages:
    with st.chat_message(message["role"]):
        st.markdown(message["content"])

# User input
if prompt := st.chat_input("Ask a question about your resume or the job..."):
    # Add user message to chat history
    st.session_state.messages.append({"role": "user", "content": prompt})
    with st.chat_message("user"):
        st.markdown(prompt)
    
    # Check if resume is uploaded
    if not resume_text:
        with st.chat_message("assistant"):
            error_message = "Please upload your resume first to get personalized advice."
            st.session_state.messages.append({"role": "assistant", "content": error_message})
            st.markdown(error_message)
    else:
        # Generate AI response
        with st.chat_message("assistant"):
            with st.spinner("Thinking..."):
                # Create full prompt with context
                full_prompt = create_prompt(resume_text, job_description, prompt)
                response = get_ai_response(full_prompt)
                
                # Add assistant message to chat history
                st.session_state.messages.append({"role": "assistant", "content": response})
                st.markdown(response)

# Add a reset button
if st.button("Reset Chat"):
    st.session_state.messages = []
    st.experimental_rerun()