hruday96's picture
Update app.py
797951b verified
import streamlit as st
import google.generativeai as genai
# App header
st.header("Candidate Outreach Using Ai")
# Retrieve the API key from Streamlit secrets
GOOGLE_API_KEY = st.secrets["GEMINI_API_KEY"]
# Configure the Google Generative AI API with your API key
genai.configure(api_key=GOOGLE_API_KEY)
# Create a container for better grouping
with st.container():
st.subheader("Enter Candidate Details:")
# Create two columns for alignment
col1, col2 = st.columns([2, 3]) # Adjust column proportions as needed
# First column for candidate details
with col1:
candidate_name = st.text_input('Candidate Name:', '')
candidate_designation = st.text_input('Candidate Designation:', '')
candidate_details = st.text_input('Candidate Details - Skills, Experience (comma separated):', '')
# Second column for job description
with col2:
job_description = st.text_area('Your Job Description:', '', height=250)
# Dropdown menu for tone selection
st.subheader("Select the Tone of the Message:")
tone_options = ["Formal", "Friendly", "Persuasive", "Neutral"]
selected_tone = st.selectbox("Tone", tone_options)
# Buttons for message type
st.subheader("Select Message Type:")
col1, col2, col3 = st.columns(3)
with col1:
linkedin_invite = st.button("LinkedIn Invite")
with col2:
email_invite = st.button("Email Invite")
with col3:
whatsapp_invite = st.button("Whatsapp Invite")
# Generate message based on input
if linkedin_invite or email_invite or whatsapp_invite:
if not candidate_name or not candidate_designation or not candidate_details or not job_description:
st.error("Please fill in all the above details before proceeding.")
else:
if linkedin_invite:
message_type = "LinkedIn Invite"
elif email_invite:
message_type = "Email Invite"
else:
message_type = "WhatsApp Invite"
st.info(f"Generating {message_type}...")
# Construct the prompt for analysis
prompt = f"""
Candidate Details:
- Name: {candidate_name}
- Designation: {candidate_designation}
- Details: {candidate_details}
Job Description:
{job_description}
### Tasks:
"Write a personalized {message_type.lower()} message for candidate outreach. The message should maintain a {selected_tone.lower()} tone and adhere
to professional communication standards.
Use the provided candidate details (Name: {candidate_name}, Designation: {candidate_designation}, Skills and Experience: {candidate_details})
and the job description ({job_description}) to craft the message.
Highlight why the candidate is a strong fit for the role, referencing their skills and experience concerning the job requirements. Ensure the message is engaging, concise, and tailored to the platform ({message_type.lower()})."
"""
try:
# Initialize the generative model
model = genai.GenerativeModel("gemini-pro")
# Generate content using the Gemini API
response = model.generate_content(
prompt,
generation_config=genai.types.GenerationConfig(
temperature=0.0, # Ensures deterministic output
max_output_tokens=500, # Limits the response length to 500 tokens
candidate_count=1 # Generates only one candidate
)
)
# Display the generated message
st.success(f"{message_type} Generated:")
st.write(response.text)
except Exception as e:
st.error(f"An error occurred while generating the message: {e}")