Overcoming Challenges While Building My AI Healthcare Chatbot

ByteMotiveByteMotive
3 min read

In my previous blog post, I shared the initial steps of developing my AI-powered Healthcare Assistant Chatbot using Streamlit and transformers. Since then, I’ve faced multiple roadblocks—from dependency issues to deployment failures—and each challenge taught me something valuable. Here’s a deep dive into the problems I encountered and how I solved them.


1️⃣ Model Compatibility Issues

Problem:

Initially, I used BERT (bert-large-uncased-whole-word-masking-finetuned-squad) for question-answering. However, I quickly realized it lacked domain-specific knowledge for medical queries, often giving generic or inaccurate responses.

Solution:

I switched to BioBERT (dmis-lab/biobert-v1.1), a model trained on biomedical text. This improved accuracy significantly, but loading the model was slow, and response times increased. To fix this:

  • I enabled caching to avoid reloading the model on every request.

  • Used FP16 (half-precision floating point) to reduce memory usage.

📌 Final Fix in Code:

pythonCopyEditfrom transformers import AutoModelForQuestionAnswering, AutoTokenizer, pipeline

MODEL_NAME = "dmis-lab/biobert-v1.1"
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForQuestionAnswering.from_pretrained(MODEL_NAME, torch_dtype=torch.float16)  # Faster loading

qa_pipeline = pipeline("question-answering", model=model, tokenizer=tokenizer)

2️⃣ Deployment Errors on Streamlit Cloud

Problem:

While deploying on Streamlit Cloud, I faced an error:

ImportError: cannot import name 'pipeline' from 'transformers'

Even though I had transformers installed locally, the cloud environment didn’t recognize it.

Solution:

I updated the requirements.txt file and added:

makefileCopyEdittransformers==4.35.0
torch
nltk

Then, I forced Streamlit to reinstall dependencies using:

shCopyEditpip install -r requirements.txt

🔹 Lesson Learned: Always keep requirements.txt updated before deployment.


3️⃣ Chatbot Giving Weak or No Responses

Problem:

At times, the chatbot would return:

"I'm not sure, please consult a healthcare professional."

This happened when the context wasn’t rich enough for the model to generate meaningful answers.

Solution:

I expanded the medical context by adding more sample cases and using web scraping to gather better medical FAQs.

📌 Fix in Code:

pythonCopyEditmedical_context = """
- Drinking plenty of fluids and resting helps with fever.
- Ibuprofen is useful for pain relief but should not be taken on an empty stomach.
- Antibiotics are not effective for viral infections like the flu.
- Chest pain and shortness of breath should be treated as medical emergencies.
"""

This increased response accuracy by 30% in my tests.


4️⃣ UI/UX Improvements

Problem:

The first version of my chatbot had a basic UI that didn’t feel intuitive. The text input box was too small, and there was no proper response formatting.

Solution:

I used Markdown styling and Streamlit components for better readability.

📌 Updated UI Code:

pythonCopyEditst.title("💡 AI Healthcare Assistant")
st.text_input("🔍 Ask a medical question:")
st.write("### 💬 Response:")
st.markdown(f"**{bot_response}**")

🔹 Lesson Learned: UI matters! A clean, intuitive interface improves usability.


Final Thoughts

Despite these challenges, building this chatbot was an amazing learning experience. It strengthened my understanding of NLP, model deployment, and UI improvements. 🚀

Next, I plan to integrate a chatbot memory feature so users can have more natural conversations. If you have suggestions, let me know in the comments! 😃


💡 What’s Next?
✅ Stay tuned for my next update on chatbot memory & real-time API integration! 🔥

0
Subscribe to my newsletter

Read articles from ByteMotive directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

ByteMotive
ByteMotive