Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import google.generativeai as genai | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| import re | |
| import time | |
| import os | |
| genai.configure(api_key=os.getenv("GOOGLE_API_KEY")) | |
| model = genai.GenerativeModel("gemini-pro") | |
| chat = model.start_chat( | |
| history=[ | |
| {"role": "user", "parts": "Hello"}, | |
| {"role": "model", "parts": "Great to meet you. What would you like to know?"}, | |
| ] | |
| ) | |
| def generate_questions(chat, tech): | |
| """Generates 3-5 technical questions for a specific tech item, starting from easy to advanced.""" | |
| prompt = ( | |
| f"You are a technical interviewer. Create 3 to 5 technical interview questions for the technology: {tech}. " | |
| "Don't mention level of question and just provide the questions directly." | |
| ) | |
| open_ended_response = chat.send_message(prompt, stream=True) | |
| open_ended_response.resolve() | |
| open_ended= open_ended_response.text if open_ended_response.text else "Unable to generate open-ended questions." | |
| # print(open_ended) | |
| return open_ended | |
| # Streamlit UI | |
| st.title("TalentScout - Hiring Assistant Chatbot") | |
| st.sidebar.title("Candidate Details") | |
| # Collect Candidate Information | |
| with st.sidebar.form("candidate_form"): | |
| name = st.text_input("Full Name") | |
| email = st.text_input("Email Address") | |
| phone = st.text_input("Phone Number") | |
| experience = st.number_input("Years of Experience", min_value=0, step=1) | |
| position = st.text_input("Desired Position") | |
| location = st.text_input("Current Location") | |
| tech_stack = st.text_area("Tech Stack (comma-separated)").split(",") | |
| submit = st.form_submit_button("Submit") | |
| if submit: | |
| st.success("Candidate information submitted successfully!") | |
| # Display Candidate Information | |
| st.write("### Candidate Information") | |
| st.write(f"**Name:** {name}") | |
| st.write(f"**Email:** {email}") | |
| st.write(f"**Phone:** {phone}") | |
| st.write(f"**Experience:** {experience} years") | |
| st.write(f"**Position:** {position}") | |
| st.write(f"**Location:** {location}") | |
| st.write(f"**Tech Stack:** {', '.join(tech_stack)}") | |
| # Interactive Question and Answer Section | |
| st.write("### Technical Questions") | |
| all_answers = [] | |
| if tech_stack: | |
| for tech in tech_stack: | |
| tech = tech.strip() | |
| if tech: | |
| st.write(f"**Questions for {tech}:**") | |
| questions = generate_questions(chat, tech[:5]) | |
| for idx, question in enumerate(questions.split("\n\n")): | |
| st.write(f"{question.strip("\n")}") | |
| answer = st.text_area(f"Answer for Q{idx+1} ({tech})", key=f"answer_{tech}_{idx}") | |
| all_answers.append({"question": question, "answer": answer}) | |
| # Final Submission Button | |
| if st.button("Submit All Answers"): | |
| st.write("### Thank You for Completing the Questions!") | |
| st.write("We appreciate your time and effort in answering the questions.") | |
| st.write("Our team will review your responses and get back to you shortly.") | |
| st.write("Warm regards,\nTalentScout Team") | |
| else: | |
| st.error("Please provide a valid tech stack.") | |
| # Exit Conversation | |
| # if st.button("End Conversation"): | |
| # st.write("Thank you for using TalentScout! Best of luck to the candidates.") | |
| # st.stop() |