Spaces:
Sleeping
Sleeping
changes saved to app.py
Browse files
app.py
CHANGED
|
@@ -5,6 +5,7 @@ import torch
|
|
| 5 |
import os
|
| 6 |
import gradio_client.utils as client_utils
|
| 7 |
import sys
|
|
|
|
| 8 |
|
| 9 |
# ===============================
|
| 10 |
# Recursion Handling Fix
|
|
@@ -232,9 +233,33 @@ def end_interview(state):
|
|
| 232 |
with open(filename, "w") as f:
|
| 233 |
json.dump(summary, f, indent=4)
|
| 234 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 235 |
state["conversation"].append({"role": "System", "content": f"β
Interview ended. \nFinal Score: {summary['score']} ({summary['category']})"})
|
| 236 |
return convert_for_gradio(state["conversation"]), state
|
| 237 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 238 |
def clear_state():
|
| 239 |
return [], reset_state("", "", "", "Entry-Level")
|
| 240 |
|
|
@@ -263,11 +288,18 @@ with gr.Blocks() as demo:
|
|
| 263 |
exit_button = gr.Button("Exit Interview")
|
| 264 |
clear_button = gr.Button("Clear Session")
|
| 265 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 266 |
state = gr.State(value=reset_state("", "", "", "Entry-Level"))
|
| 267 |
|
|
|
|
| 268 |
start_button.click(start_interview, inputs=[name_input, domain_input, company_input, level_input], outputs=[chatbot, state])
|
| 269 |
submit_button.click(submit_response, inputs=[response_input, state], outputs=[chatbot, state]).then(lambda: "", None, response_input)
|
| 270 |
exit_button.click(end_interview, inputs=state, outputs=[chatbot, state])
|
| 271 |
clear_button.click(clear_state, outputs=[chatbot, state])
|
|
|
|
| 272 |
|
| 273 |
demo.launch()
|
|
|
|
| 5 |
import os
|
| 6 |
import gradio_client.utils as client_utils
|
| 7 |
import sys
|
| 8 |
+
import tempfile
|
| 9 |
|
| 10 |
# ===============================
|
| 11 |
# Recursion Handling Fix
|
|
|
|
| 233 |
with open(filename, "w") as f:
|
| 234 |
json.dump(summary, f, indent=4)
|
| 235 |
|
| 236 |
+
# Add detailed evaluations to the conversation
|
| 237 |
+
for ev in state["evaluations"]:
|
| 238 |
+
detail = (
|
| 239 |
+
f"π **Question:** {ev['question']}\n"
|
| 240 |
+
f"π¬ **Your Response:** {ev['response']}\n"
|
| 241 |
+
f"π’ **Rating:** {ev['rating']}\n"
|
| 242 |
+
f"π‘ **Suggestion:** {ev['suggestion']}"
|
| 243 |
+
)
|
| 244 |
+
state["conversation"].append({"role": "System", "content": detail})
|
| 245 |
+
|
| 246 |
state["conversation"].append({"role": "System", "content": f"β
Interview ended. \nFinal Score: {summary['score']} ({summary['category']})"})
|
| 247 |
return convert_for_gradio(state["conversation"]), state
|
| 248 |
|
| 249 |
+
def prepare_downloadable_summary(state):
|
| 250 |
+
summary = {
|
| 251 |
+
"name": state["name"],
|
| 252 |
+
"domain": state["domain"],
|
| 253 |
+
"level": state["level"],
|
| 254 |
+
"company": state["company"],
|
| 255 |
+
"score": f"{sum(rating_scores.get(ev['rating'], 0) for ev in state['evaluations'])}/{len(state['evaluations']) * 3}",
|
| 256 |
+
"evaluations": state["evaluations"]
|
| 257 |
+
}
|
| 258 |
+
|
| 259 |
+
with tempfile.NamedTemporaryFile(mode="w+", delete=False, suffix=".json") as f:
|
| 260 |
+
json.dump(summary, f, indent=4)
|
| 261 |
+
return f.name # Return the path to the downloadable file
|
| 262 |
+
|
| 263 |
def clear_state():
|
| 264 |
return [], reset_state("", "", "", "Entry-Level")
|
| 265 |
|
|
|
|
| 288 |
exit_button = gr.Button("Exit Interview")
|
| 289 |
clear_button = gr.Button("Clear Session")
|
| 290 |
|
| 291 |
+
with gr.Row():
|
| 292 |
+
download_button = gr.Button("π₯ Download Evaluation Report")
|
| 293 |
+
download_file = gr.File(label="Download", visible=True)
|
| 294 |
+
|
| 295 |
+
# Session state holder
|
| 296 |
state = gr.State(value=reset_state("", "", "", "Entry-Level"))
|
| 297 |
|
| 298 |
+
# Hooking up logic to UI
|
| 299 |
start_button.click(start_interview, inputs=[name_input, domain_input, company_input, level_input], outputs=[chatbot, state])
|
| 300 |
submit_button.click(submit_response, inputs=[response_input, state], outputs=[chatbot, state]).then(lambda: "", None, response_input)
|
| 301 |
exit_button.click(end_interview, inputs=state, outputs=[chatbot, state])
|
| 302 |
clear_button.click(clear_state, outputs=[chatbot, state])
|
| 303 |
+
download_button.click(prepare_downloadable_summary, inputs=[state], outputs=[download_file])
|
| 304 |
|
| 305 |
demo.launch()
|