37072-vm/core/views.py
2025-12-19 16:46:59 +00:00

62 lines
2.6 KiB
Python

import os
from django.shortcuts import render
from ai.local_ai_api import LocalAIApi
import logging
logger = logging.getLogger(__name__)
def index(request):
"""
Render the Baymax Healthcare Companion landing page and handle the symptom checker form.
"""
context = {
"project_name": "Baymax Healthcare Companion",
"project_description": "An AI-assisted non-invasive health assistant for symptom triage.",
}
ai_result = None
if request.method == "POST":
symptoms = request.POST.get("symptoms", "").strip()
context["symptoms"] = symptoms
if symptoms:
try:
# Construct the prompt for the AI
prompt = (
"A user has the following symptoms: '{symptoms}'. "
"Analyze these symptoms and provide a general, non-prescriptive triage suggestion. "
"Structure the response in markdown. Start with a friendly greeting. "
"Then, provide a section with a summary of possible causes. "
"Finally, provide a section with recommendations on what to do next (e.g., rest, see a doctor). "
"Begin the entire response with a clear, bolded disclaimer: "
"**Disclaimer: This is not a substitute for professional medical advice. Always consult a doctor for any health concerns.**"
).format(symptoms=symptoms)
# Call the AI API
response = LocalAIApi.create_response(
{
"input": [
{"role": "system", "content": "You are a friendly and helpful healthcare assistant."},
{"role": "user", "content": prompt},
],
},
{
"poll_interval": 5,
"poll_timeout": 300,
},
)
if response.get("success"):
text = LocalAIApi.extract_text(response)
ai_result = text if text else "I am sorry, but I couldn't process your request. Please try again."
else:
logger.error("AI API Error: %s", response.get("error"))
ai_result = "There was an error communicating with the AI. Please try again later."
except Exception as e:
logger.error("An exception occurred during AI processing: %s", e)
ai_result = "A system error occurred. Please try again later."
context["ai_result"] = ai_result
return render(request, "core/index.html", context)