AzeezIsh's picture
Upload 71 files
37d3a3b
import openai;
import json, os,sys
from dotenv import load_dotenv
load_dotenv()
from litellm import completion
from mathpix import extract_text
import gradio as gr
# Mock candidate information
candidates = {
"candidate1": {
"name": "John Doe",
"info": "Experienced software developer with a focus on machine learning."
},
"candidate2": {
"name": "Jane Smith",
"info": "Recent graduate with a strong background in data science."
},
# Add more candidates as needed
}
resume_location = 'resume_pdfs/1BXAuw6f1rDF05P734y_O7K8fYwgDVZvV.pdf'
resume_mmd = extract_text((resume_location))
def get_prompt(resume_mmd, chat_history, question):
history = ''
for user, bot in chat_history:
history += 'User:\n' + user + '\nResponse:\n' + bot + ' '
return ('Given the resmue of a candidate, the previous chat history, and a question, answer the question as if you are the candidate. Keep the answers short and to the point.\n'
+ 'Resume:\n\n' + resume_mmd + '\nEnd Resume\n'
+ 'Chat History:\n\n' + history + '\nEnd Chat History\n'
+ 'Question:\n\n' + question + '\nEnd Question\n')
def chatbot_interface(candidate_name):
candidate = candidates.get(candidate_name, {})
if not candidate:
return "Candidate not found."
candidate_info = candidate.get("info", "")
def inference(message, history, model = 'gpt-3.5-turbo'):
try:
messages_litellm = [{"role": "user", "content": get_prompt(resume_mmd, history, message)}]
partial_message = ""
for chunk in completion(model=model,
messages=messages_litellm,
stream=True):
if 'content' in chunk['choices'][0]['delta']:
partial_message += chunk['choices'][0]['delta']['content']
yield partial_message
except Exception as e:
print("Exception encountered:", str(e))
yield f"An Error occured please 'Clear' the error and try your question again"
return gr.ChatInterface(
inference,
chatbot=gr.Chatbot(height=400),
textbox=gr.Textbox(placeholder="Enter text here...", container=False, scale=5),
description=f"""
You are chatting with a resume.""",
title="Chat with Resume",
examples=["Introduce yourself."],
retry_btn="Retry",
undo_btn="Undo",
clear_btn="Clear",
)
def echo(message, history):
return message
# Create Gradio app
iface = gr.Interface(
fn=chatbot_interface,
inputs=gr.Dropdown(choices=list(candidates.keys()), label="Select Candidate"),
outputs=gr.ChatInterface(echo),
live=True
)
# Launch Gradio app
iface.launch()