Spaces:
Sleeping
Sleeping
import streamlit as st | |
from langchain.llms import OpenAI | |
from langchain.prompts import PromptTemplate | |
from langchain.chains import LLMChain | |
from langchain.agents import initialize_agent | |
from langchain.chat_models import ChatOpenAI | |
import json | |
import os | |
openai_api_key = os.environ.get('OPENAI_API_KEY') | |
# Initialize your OpenAI language model here | |
llm = OpenAI(temperature=0.6, openai_api_key=openai_api_key, model_name="gpt-3.5-turbo-16k") | |
def generate_questionnaire(title, description, llm): | |
question_template = """You are a member of the hiring committee of your company. Your task is to develop screening questions for each candidate, considering different levels of importance or significance assigned to the job description. | |
Here are the Details: | |
Job title: {title} | |
Job description: {description} | |
Your Response should follow the following format: | |
"id":1, "Question":"Your Question will go here"\n, | |
"id":2, "Question":"Your Question will go here"\n, | |
"id":3, "Question":"Your Question will go here"\n | |
There should be at least 10 questions. Do output only the questions but in text.""" | |
screen_template = PromptTemplate(input_variables=["title", "description"], template=question_template) | |
questions_chain = LLMChain(llm=llm, prompt=screen_template) | |
response = questions_chain.run({"title": title, "description": description}) | |
return response | |
# Streamlit App | |
def main(): | |
st.title("Candidate Screening Questionnaire Generator") | |
job_title = st.text_input("Enter Job Title:") | |
job_description = st.text_area("Enter Job Description:") | |
if st.button("Generate Questionnaire"): | |
if job_title and job_description: | |
questionnaire = generate_questionnaire(job_title, job_description, llm) | |
st.write("Generated Questions:") | |
st.write(questionnaire) | |
question_strings = questionnaire.split('"id":') | |
questions = [] | |
for q_string in question_strings[1:]: | |
question_id, question_text = q_string.split(', "Question":') | |
question = { | |
"id": int(question_id.strip()), | |
"Question": question_text.strip()[1:-1] # Removing the surrounding quotes | |
} | |
questions.append(question) | |
questionnaire_json = json.dumps(questions, indent=4) | |
# Make the questionnaire_json downloadable | |
st.download_button( | |
label="Download JSON Questionnaire", | |
data=questionnaire_json, | |
file_name="questionnaire.json", | |
mime="application/json" | |
) | |
else: | |
st.warning("Please provide Job Title and Job Description.") | |
if __name__ == "__main__": | |
main() | |