careerv3 / linkedInv2.py
ombhojane's picture
Upload 88 files
8d404bc verified
import streamlit as st
import google.generativeai as genai
import os
def configure_genai_api():
api_key = os.getenv("GENAI_API_KEY")
if api_key is None:
st.error("API key not found. Please set the GENAI_API_KEY environment variable.")
return None
else:
genai.configure(api_key=api_key)
generation_config = {
"temperature": 0.9,
"top_p": 1,
"top_k": 40,
"max_output_tokens": 2048,
}
safety_settings = [
{"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_MEDIUM_AND_ABOVE"},
{"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_MEDIUM_AND_ABOVE"},
{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_MEDIUM_AND_ABOVE"},
{"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_MEDIUM_AND_ABOVE"},
]
return genai.GenerativeModel(model_name="gemini-1.0-pro",
generation_config=generation_config,
safety_settings=safety_settings)
def app():
st.header("LinkedIn Profile Creator")
model = configure_genai_api()
if not model:
return
# User input sections for experience
experiences = []
with st.form("experience_form"):
num_experiences = st.number_input("How many experiences do you want to add?", min_value=1, value=1, step=1)
for i in range(int(num_experiences)):
exp = {
"Title": st.text_input(f"Title {i+1}", placeholder="Ex: Retail Sales Manager"),
"Employment Type": st.selectbox(f"Employment Type {i+1}", ["Please select", "Full-time", "Part-time", "Self-employed", "Freelance", "Contract", "Internship"], index=0),
"Company Name": st.text_input(f"Company Name {i+1}", placeholder="Ex: Microsoft"),
"Location": st.text_input(f"Location {i+1}", placeholder="Ex: London, United Kingdom"),
"Location Type": st.selectbox(f"Location Type {i+1}", ["Please select", "On-site", "Remote", "Hybrid"], index=0),
"Is Current": st.checkbox(f"I am currently working in this role {i+1}"),
"Start Date": st.date_input(f"Start Date {i+1}"),
"End Date": st.date_input(f"End Date {i+1}") if not st.checkbox(f"End current position as of now {i+1}", value=True) else "Present",
"Industry": st.text_input(f"Industry {i+1}", placeholder="Ex: Software Development"),
"Description": st.text_area(f"Description {i+1}", placeholder="Describe your role, responsibilities, achievements...", max_chars=2000),
"Skills": st.text_input(f"Skills {i+1}", placeholder="Add skills separated by commas"),
}
experiences.append(exp)
submitted = st.form_submit_button("Submit")
if submitted and experiences:
# Generate the prompt for each experience and combine them
experience_prompts = []
for exp in experiences:
experience_prompt = f"""
Title: {exp['Title']}
Employment Type: {exp['Employment Type']}
Company Name: {exp['Company Name']}
Location: {exp['Location']}
Location Type: {exp['Location Type']}
Start Date: {exp['Start Date']}
End Date: {exp['End Date']}
Industry: {exp['Industry']}
Description: {exp['Description']}
Skills: {exp['Skills']}
"""
experience_prompts.append(experience_prompt)
combined_prompt = " ".join(experience_prompts)
prompt_template = f"""
Generate a professional LinkedIn experience section based on the following details:
{combined_prompt}
"""
try:
response = model.generate_content([prompt_template])
st.subheader("Generated Experience Section")
st.write("Based on your input, here's the generated experience section for your LinkedIn profile:")
st.write(response.text)
except Exception as e:
st.error("An error occurred while generating your LinkedIn experience section. Please try again later.")
st.error(f"Error: {e}")
if __name__ == "__main__":
app()