import torch import gradio as gr from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline model_name = "mistralai/Mistral-7B-Instruct-v0.1" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained( model_name, device_map="auto", load_in_4bit=True, torch_dtype=torch.float16 ) generator = pipeline( "text-generation", model=model, tokenizer=tokenizer, max_new_tokens=200, temperature=0.3, repetition_penalty=1.1 ) def is_unsafe(query): blocked = [ "dose", "dosage", "how much", "diagnose", "prescribe", "medicine for", "treatment", "cure" ] return any(word in query.lower() for word in blocked) def health_chatbot(user_input): if is_unsafe(user_input): return ( "I can’t provide diagnosis or medication instructions. " "Please consult a qualified healthcare professional." ) prompt = f""" You are a general health information assistant. Rules: - Do NOT diagnose diseases. - Do NOT prescribe medicines or give dosages. - Provide general causes, symptoms, and prevention only. - Keep answers simple and clear. - End with: 'If symptoms persist, consult a healthcare professional.' Question: {user_input} Answer: """ output = generator(prompt)[0]["generated_text"] return output.split("Answer:")[-1].strip() demo = gr.Interface( fn=health_chatbot, inputs=gr.Textbox(lines=2), outputs="text", title="🩺 General Health Query Chatbot" ) demo.launch()