Spaces:
Sleeping
Sleeping
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder | |
from langchain_core.messages import HumanMessage | |
from langchain_core.messages import AIMessage | |
from langchain_community.chat_message_histories import ChatMessageHistory | |
from pypdf import PdfReader | |
import os | |
import gradio as gr | |
from langchain_openai import AzureChatOpenAI | |
client = AzureChatOpenAI( | |
azure_deployment = "GPT-4o" | |
) | |
def extract_text( pdf_path): | |
# creating a pdf reader object | |
reader = PdfReader(pdf_path) | |
all_text = "" | |
for page in reader.pages: | |
all_text += page.extract_text() | |
return all_text | |
def get_response( candidate, chat_history, resume, jd): | |
resume = extract_text(resume.name) | |
jd = extract_text(jd.name) | |
prompt = ChatPromptTemplate.from_messages( | |
[ | |
( | |
"system", | |
"""Your Task is Perform as intelligent interviewer, Your Task is ask question to the resume's candidate by following candidate Answer. | |
at the end exit with greeting to the candidate. | |
**Ask question follow up on the candidate response. get chat history.** | |
""", | |
), | |
MessagesPlaceholder(variable_name="messages"), | |
] | |
) | |
chain = prompt | client | |
# chat_histroy_prompt = chat_history | |
answer = chain.invoke( | |
{ | |
"messages": [ | |
HumanMessage( | |
content=f" job description :{jd}\n Resume :{resume}" | |
), | |
AIMessage(content=f"""Perform as intelligent interviewer, Your Task is ask question to the resume's candidate by following candidate Answer. | |
chat history : {chat_history}"""), | |
HumanMessage(content=candidate), | |
], | |
} | |
) | |
# print("INTERVIEWER :", answer.content) | |
# chat_history.append({"candidate":candidate,"interviewer":answer.content }) | |
result = answer.content | |
chat_history.append((candidate, result)) | |
print("chat_history", chat_history) | |
return "", chat_history | |
def gradio_interface() -> None: | |
"""Create a Gradio interface for the chatbot.""" | |
with gr.Blocks(css = "style.css" ,theme="shivi/calm_seafoam") as demo: | |
gr.HTML("""<center class="darkblue" text-align:center;padding:30px;'></center> | |
<center> | |
<br><h1 style="color:#006e49">Screening Assistant Chatbot</h1></center>""") | |
with gr.Row(): | |
with gr.Column(scale=0.50): | |
resume = gr.File(label="Resume", elem_classes="resume") | |
with gr.Column(scale=0.50): | |
jd = gr.File(label="Job Description", elem_classes="jd") | |
with gr.Row(): | |
with gr.Column(): | |
chatbot = gr.Chatbot() | |
with gr.Row(): | |
with gr.Column(scale=0.80): | |
msg = gr.Textbox(label="Question", show_label=False, placeholder="Question...") | |
with gr.Column(scale=0.20): | |
clear = gr.ClearButton([msg, chatbot], elem_classes="clear") | |
msg.submit(get_response, [msg, chatbot, resume, jd], [msg, chatbot]) | |
demo.launch(debug=True, share=True) | |
gradio_interface() |