Spaces:
No application file
No application file
| 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() |