Spaces:
Sleeping
Sleeping
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() |