MockInterviewBot / question_handler.py
nsgupta1's picture
Update question_handler.py
d6b72d0 verified
import re
from sklearn.metrics.pairwise import cosine_similarity
from embeddings_utils import load_model
import torch
# Load the SentenceTransformer model directly in this file
device = "cuda" if torch.cuda.is_available() else "cpu"
model = load_model(device)
def find_top_question(query, metadata, embeddings):
query_embedding = model.encode(query, convert_to_tensor=True).cpu().numpy().reshape(1, -1)
similarities = cosine_similarity(query_embedding, embeddings).flatten()
top_index = similarities.argsort()[-1]
top_result = metadata.iloc[top_index].copy()
top_result['similarity_score'] = similarities[top_index]
return top_result
def generate_detailed_prompt(question_metadata):
return (
f"Transform this LeetCode question into a real-world interview scenario.\n\n"
f"**Company**: {question_metadata['company']}\n"
f"**Question Name**: {question_metadata['questionName']}\n"
f"**Difficulty Level**: {question_metadata['difficulty level']}\n"
f"**Tags**: {question_metadata['Tags']}\n"
f"**Content**: {question_metadata['Content']}\n"
f"\nPlease create a real-world interview question based on this information. "
f"Include sections for problem description, code template, sample input, and expected output."
)
def extract_code_and_test_case(response):
import re
code_template = ""
sample_test_case = ""
expected_output = ""
# Extract Python code block
code_match = re.search(r'```python(.*?)```', response, re.DOTALL)
if code_match:
code_template = code_match.group(1).strip()
# Extract test case and expected output
test_case_match = re.search(r'Sample Input:\s*(.*?)\n', response, re.DOTALL)
expected_output_match = re.search(r'Expected Output:\s*(.*?)\n', response, re.DOTALL)
if test_case_match:
sample_test_case = test_case_match.group(1).strip()
if expected_output_match:
expected_output = expected_output_match.group(1).strip()
return code_template, sample_test_case, expected_output