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