62 lines
2.6 KiB
Python
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)
|