Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -241,7 +241,49 @@ def analyze_input(text, role):
|
|
| 241 |
if not results:
|
| 242 |
return "No clear abuse pattern detected. Continue listening for contradictions, self-blame, or fear-based justifications."
|
| 243 |
return "\n\n".join(results)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 244 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 245 |
# Gradio UI
|
| 246 |
gr.Interface(
|
| 247 |
fn=analyze_input,
|
|
@@ -252,4 +294,5 @@ gr.Interface(
|
|
| 252 |
outputs="text",
|
| 253 |
title="DV Pattern Recognition Tool (Prototype)",
|
| 254 |
description="Enter a client or witness quote. The tool flags DV-related behavioral cues and suggests follow-up questions based on your role."
|
| 255 |
-
|
|
|
|
|
|
| 241 |
if not results:
|
| 242 |
return "No clear abuse pattern detected. Continue listening for contradictions, self-blame, or fear-based justifications."
|
| 243 |
return "\n\n".join(results)
|
| 244 |
+
# βββ Gradio Danger Assessment Wizard βββββββββββββββββββββββββββββββββββββββ
|
| 245 |
+
def danger_assessment_wizard():
|
| 246 |
+
with gr.Blocks() as demo:
|
| 247 |
+
gr.Markdown("## π Danger Assessment Interview")
|
| 248 |
+
gr.Markdown("Answer each question honestly. Follow-up questions will appear if you answer 'Yes'.")
|
| 249 |
|
| 250 |
+
yes_responses = []
|
| 251 |
+
followup_textboxes = []
|
| 252 |
+
|
| 253 |
+
for dq in danger_questions:
|
| 254 |
+
gr.Markdown(f"**{dq['question']}**")
|
| 255 |
+
answer = gr.Radio(["Yes", "No"], label="Your Answer", value=None)
|
| 256 |
+
yes_responses.append(answer)
|
| 257 |
+
|
| 258 |
+
fups = []
|
| 259 |
+
for fup in dq["follow_ups"]:
|
| 260 |
+
box = gr.Textbox(label=f"Follow-up: {fup}", visible=False)
|
| 261 |
+
fups.append(box)
|
| 262 |
+
followup_textboxes.append(box)
|
| 263 |
+
|
| 264 |
+
def toggle_visibility(ans, *args):
|
| 265 |
+
return [gr.update(visible=(ans == "Yes")) for _ in args]
|
| 266 |
+
|
| 267 |
+
answer.change(
|
| 268 |
+
toggle_visibility,
|
| 269 |
+
inputs=[answer] + fups,
|
| 270 |
+
outputs=fups
|
| 271 |
+
)
|
| 272 |
+
|
| 273 |
+
submit = gr.Button("Submit Responses")
|
| 274 |
+
output = gr.Textbox(label="Summary / Next Step", lines=5)
|
| 275 |
+
|
| 276 |
+
def summarize(*args):
|
| 277 |
+
yes_count = sum([1 for a in args[:len(yes_responses)] if a == "Yes"])
|
| 278 |
+
return f"β
You answered 'Yes' to {yes_count} danger indicators. Follow-up responses captured for risk review."
|
| 279 |
+
|
| 280 |
+
submit.click(fn=summarize, inputs=yes_responses + followup_textboxes, outputs=output)
|
| 281 |
+
|
| 282 |
+
return demo
|
| 283 |
+
|
| 284 |
+
# βββ Launch the Danger Wizard ββββββββββββββββββββββββββββββββββββββββββββ
|
| 285 |
+
if __name__ == "__main__":
|
| 286 |
+
danger_assessment_wizard().launch()
|
| 287 |
# Gradio UI
|
| 288 |
gr.Interface(
|
| 289 |
fn=analyze_input,
|
|
|
|
| 294 |
outputs="text",
|
| 295 |
title="DV Pattern Recognition Tool (Prototype)",
|
| 296 |
description="Enter a client or witness quote. The tool flags DV-related behavioral cues and suggests follow-up questions based on your role."
|
| 297 |
+
if __name__ == "__main__":
|
| 298 |
+
danger_assessment_wizard().launch()
|