resume-bot / app.py
Harsimran19's picture
Upload 2 files
90b97aa verified
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()