-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
137 lines (100 loc) · 4.16 KB
/
app.py
File metadata and controls
137 lines (100 loc) · 4.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
import streamlit as st
from pypdf import PdfReader
from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage, SystemMessage, AIMessage
from langchain.memory import ChatMessageHistory
memory = ChatMessageHistory()
openai_api_key = st.sidebar.text_input('OpenAI API Key', type='password')
if openai_api_key:
llm = ChatOpenAI(model="gpt-3.5-turbo",temperature = 0, api_key=openai_api_key)
def get_resume_summary(resume_data):
data = llm([
SystemMessage(content="you need to summarize the text"),
HumanMessage(content=resume_data)
])
st.session_state.sessionMessages.append(SystemMessage(content=data.content))
return data.content
def get_description_summary(description_data):
data = llm([
SystemMessage(content="you need to summarize the text"),
HumanMessage(content=description_data)
])
st.session_state.sessionMessages.append(SystemMessage(content=data.content))
return data.content
def generate_question(resume_data, description_data):
data = llm([
SystemMessage(content="You need to Generate 5 Question each time on reading the resume and job description summaries from Human" ),
HumanMessage(content=resume_data),
HumanMessage(content=description_data)
])
st.session_state.sessionMessages.append(SystemMessage(content=data.content))
data_questions['questions'].append(data.content)
return data.content
st.title('InterviewPrep GPT')
if "sessionMessages" not in st.session_state:
st.session_state.sessionMessages = []
st.session_state.sessionMessages.append(SystemMessage(content="You will be Given Resume and Job Description to Analyze and Generate Questions and after user answers then you need to give him feedback"))
data_questions = {
'questions' : [],
'answers' : []
}
def answers_from_users():
input_answer = st.text_input("Enter answer: ")
if input_answer:
data_questions['answers'].append(input_answer)
return input_answer
upload_resume = st.file_uploader("Upload your resume", type="pdf")
resume_data = ''
if upload_resume:
reader = PdfReader(upload_resume)
for i in range(len(reader.pages)):
resume_data += reader.pages[i].extract_text()
upload_description = st.file_uploader("Upload job description", type="pdf")
description_data = ''
if upload_description:
reader = PdfReader(upload_description)
for i in range(len(reader.pages)):
description_data += reader.pages[i].extract_text()
def generate_feeback():
answers = ''
for i in data_questions['answers']:
answers += i
questions = ''
for i in data_questions['questions']:
questions += i
data = llm([
SystemMessage(content="Analyze all the Questions & Answers and then provide feedback." + questions),
HumanMessage(content=(answers + questions)),
#HumanMessage(content=questions)
])
return data.content
resume_button = st.button("Get Resume Summary")
if resume_button:
if len(resume_data) != None:
st.subheader('Resume Summary')
st.write(get_resume_summary(resume_data))
else:
st.write("Please upload resume")
description_button = st.button("Get Description Summary")
if description_button:
if len(description_data) != None:
st.subheader('Description Summary')
st.write(get_description_summary(description_data))
else:
st.write("Please upload description")
if resume_data is not None and description_data is not None:
question_button = st.button("Generate Questions", key="generate_questions")
if question_button:
questions = generate_question(resume_data, description_data)
memory.add_ai_message(AIMessage(content=questions))
st.subheader('Questions')
st.write(questions)
data_questions['questions'].append(questions)
answer = st.text_input("Your Answer : ")
if st.button("submit"):
memory.add_user_message(HumanMessage(content=answer))
data_questions['answers'].append(answer)
feedback = generate_feeback()
st.subheader('Feedback')
st.write(feedback)
st.write("Thank you for using InterviewPrep GPT")