import peft import bitsandbytes import datasets import accelerate import loralib import transformers import sacremoses import sentencepiece import gradio as gr import os import torch from peft import PeftModel, PeftConfig from transformers import AutoModelForCausalLM,AutoTokenizer, LlamaForCausalLM import joblib from deployML import predd import time #load the chatbot model = LlamaForCausalLM.from_pretrained( "medalpaca/medalpaca-7b", return_dict=True, load_in_8bit=True, device_map="auto", ) tokenizer = AutoTokenizer.from_pretrained("medalpaca/medalpaca-7b") #load the first interface def fn(*args): global symptoms all_symptoms = [symptom for symptom_list in args for symptom in symptom_list] if len(all_symptoms) > 17: raise gr.Error("Please select a maximum of 17 symptoms.") elif len(all_symptoms) < 3: raise gr.Error("Please select at least 3 symptoms.") symptoms = all_symptoms # Update global symptoms list loaded_rf = joblib.load("model_joblib") return predd(loaded_rf,symptoms) symptoms = [] demo = gr.Interface( fn, [ gr.CheckboxGroup(['itching', 'skin rash', 'nodal skin eruptions', 'dischromic patches'], label='Skin Issues'), gr.CheckboxGroup(['continuous sneezing', 'shivering', 'chills', 'cough', 'breathlessness', 'phlegm', 'blood in sputum', 'throat irritation', 'runny nose', 'congestion', 'loss of smell', 'sinus pressure'], label='Respiratory Problems'), gr.CheckboxGroup(['stomach pain', 'acidity', 'ulcers on tongue', 'vomiting', 'nausea', 'loss of appetite', 'abdominal pain', 'burning micturition', 'spotting urination', 'passage of gases', 'internal itching', 'indigestion', 'muscle wasting', 'patches in throat', 'constipation'], label='Digestive Complaints'), gr.CheckboxGroup(['high fever', 'fatigue', 'weight loss', 'restlessness', 'lethargy', 'mild fever'], label='Fever and Fatigue'), gr.CheckboxGroup(['blurred and distorted vision', 'red spots over body', 'pain behind the eyes', 'redness of eyes'], label='Vision and Eye Problems'), gr.CheckboxGroup(['chest pain', 'fast heart rate', 'swelling of stomach'], label='Cardiovascular Issues'), gr.CheckboxGroup(['muscle pain', 'joint pain', 'pain in anal region', 'painful walking', 'movement stiffness'], label='Joint and Muscle Pain'), gr.CheckboxGroup(['headache', 'dizziness', 'loss of balance', 'lack of concentration', 'stiff neck', 'depression', 'irritability', 'visual disturbances', 'back pain', 'weakness in limbs', 'neck pain', 'weakness of one body side', 'altered sensorium'], label='Neurological Symptoms'), gr.CheckboxGroup(['dark urine', 'sweating', 'mucoid sputum', 'toxic look (typhos)', 'bladder discomfort', 'foul smell of urine', 'continuous feel of urine'], label='Urinary Issues'), gr.CheckboxGroup(['skin peeling', 'silver like dusting', 'small dents in nails', 'inflammatory nails', 'blister', 'red sore around nose', 'yellow crust ooze'], label='Skin Abnormalities'), gr.CheckboxGroup(['family history', 'headache', 'mood swings', 'anxiety', 'slurred speech', 'palpitations', 'drying and tingling lips'], label='Psychological Symptoms'), gr.CheckboxGroup(['knee pain', 'hip joint pain', 'swelling joints'], label='Joint and Bone Issues'), gr.CheckboxGroup(['spinning movements', 'unsteadiness'], label='Neurological Movements') ], outputs="textbox",allow_flagging="never" ) def predict(message, history): prompt = f""" Answer the following question: {message}/n Answer: """ batch = tokenizer(prompt, return_tensors='pt') with torch.cuda.amp.autocast(): output_tokens = model.generate(**batch, max_new_tokens=100) return tokenizer.decode(output_tokens[0], skip_special_tokens=True).replace(prompt,"") loaded_rf = joblib.load("model_joblib") Fmessage="hello im here to help you!" chatbot=gr.ChatInterface(predict, chatbot=gr.Chatbot(value=[(None, Fmessage)],),clear_btn=None, retry_btn=None, undo_btn=None) gr.TabbedInterface( [demo, chatbot], ["symptoms checker", "chatbot"] ).queue().launch()