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()