File size: 2,034 Bytes
37d3a3b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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

model = 'chat-bison'
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 inference(message, history, model = 'gpt-3.5-turbo'):
    try:
        flattened_history = [item for sublist in history for item in sublist]
        full_message = " ".join(flattened_history + [message])
        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"

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",
).queue().launch(share = True)