Spaces:
Runtime error
Runtime error
File size: 5,150 Bytes
5348e91 410face 209e20b 410face 5348e91 410face 2c970f4 f09eba4 0a860cd 410face 5348e91 f09eba4 209e20b 5348e91 410face 7c82687 410face 5348e91 410face 5348e91 f09eba4 7c82687 5348e91 7c82687 209e20b 7c82687 209e20b 410face 7c82687 410face 209e20b 7c82687 209e20b 7c82687 209e20b 7c82687 209e20b f09eba4 7c82687 209e20b 7c82687 5348e91 410face 7c82687 410face 5348e91 209e20b |
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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# modules/llm_handler.py
import os
import config
import regex as re
from groq import Groq
from modules.web_search import search_for_example_answers
# Initialize the Groq client
groq_api_key = os.environ.get("GROQ_API_KEY")
if not groq_api_key:
print("โ ๏ธ WARNING: GROQ_API_KEY environment variable is not set")
print(" The application will not work properly without this API key")
print(" Please set your GROQ API key before running the application")
client = None
MODEL = None
else:
client = Groq(api_key=groq_api_key)
MODEL = "llama-3.1-8b-instant" # Updated to supported model
def generate_question(interview_type, document_text):
if not client:
return "Error: GROQ_API_KEY not configured. Please set your API key to use this feature."
prompt = f"As an expert {interview_type} interviewer, ask one relevant, open-ended question based on this document:\n\n---\n{document_text}\n---"
try:
chat_completion = client.chat.completions.create(
messages=[{"role": "user", "content": prompt}], model=MODEL
)
return chat_completion.choices[0].message.content
except Exception as e:
return f"Error generating question from API: {e}"
def evaluate_answer(question, answer):
if not client:
return "Error: GROQ_API_KEY not configured. Please set your API key to use this feature."
# This new prompt demands a much higher level of detail
prompt = f"""
You are a meticulous and insightful interview coach. Your task is to provide a highly detailed evaluation of a candidate's answer.
**INTERVIEW QUESTION:**
"{question}"
---
**CANDIDATE'S ANSWER:**
"{answer}"
---
**YOUR TASK:**
Provide a detailed, multi-part evaluation. You MUST include scores and written analysis for each section.
**1. Score Breakdown (Format: `Category: [SCORE]/10`)**
You must provide a score for each of the following:
- Factual Accuracy: [SCORE]/10
- Relevance & Directness: [SCORE]/10
- Structure & Clarity (STAR Method): [SCORE]/10
**2. Detailed Written Evaluation**
- **Strengths:** What did the candidate do well? (e.g., "Good use of a specific example...")
- **Areas for Improvement:** What were the key weaknesses? (e.g., "The result of the action was unclear...")
**3. Concrete Suggestion**
- **Example Rephrasing:** Provide a short example of how they could have phrased a key part of their answer more effectively.
"""
try:
chat_completion = client.chat.completions.create(
messages=[{"role": "user", "content": prompt}], model=MODEL
)
return chat_completion.choices[0].message.content
except Exception as e:
return f"An error occurred during evaluation: {e}"
def parse_scores_from_evaluation(evaluation_text: str) -> dict:
scores = {
'Factual Accuracy': 0,
'Relevance & Directness': 0,
'Structure & Clarity (STAR Method)': 0
}
# Updated regex to match the new category name
pattern = r"(Factual Accuracy|Relevance & Directness|Structure & Clarity \(STAR Method\)):\s*\[?(\d{1,2})\]?\/10"
matches = re.findall(pattern, evaluation_text, re.IGNORECASE)
for match in matches:
category_name, score_value = match[0].strip(), int(match[1])
# Normalize the key for consistency
if "Structure" in category_name:
scores['Structure & Clarity (STAR Method)'] = score_value
elif category_name in scores:
scores[category_name] = score_value
print(f"๐ Parsed scores: {scores}")
return scores
def generate_holistic_feedback(full_interview_log):
if not client:
return "Error: GROQ_API_KEY not configured. Please set your API key to use this feature."
# This prompt is also enhanced for more detail
prompt = f"""
You are a senior career strategist reviewing a candidate's full interview performance.
Based on the entire Q&A log, provide a detailed "Overall Performance Summary" and an "Actionable Improvement Plan".
**FULL INTERVIEW LOG:**
---
{full_interview_log}
---
**YOUR TASK:**
1. **Overall Performance Summary:** Write a detailed paragraph summarizing the candidate's performance. Analyze their communication style, confidence, and consistency. Identify the most significant recurring strengths and weaknesses across all answers.
2. **Actionable Improvement Plan:** Provide a bulleted list of the top 3 most critical and specific actions the candidate must take. For each action, explain *why* it's important and provide a *concrete example*. (e.g., "- Action: Quantify your achievements. Why: It demonstrates impact. Example: Instead of 'improved the system,' say 'reduced server response time by 15%.'").
"""
try:
chat_completion = client.chat.completions.create(
messages=[{"role": "user", "content": prompt}], model=MODEL
)
return chat_completion.choices[0].message.content
except Exception as e:
return "Could not generate holistic feedback due to an error." |