Chat_Bot / app.py
eudoxie's picture
Update app.py
e2faa8d verified
import pandas as pd
context_data = pd.read_csv("./drugs_side_effects_drugs_com.csv")
import os
from langchain_groq import ChatGroq
llm = ChatGroq(model="llama-3.1-70b-versatile",api_key=os.environ.get("GROQ_API_KEY"))
## Embedding model!
from langchain_huggingface import HuggingFaceEmbeddings
embed_model = HuggingFaceEmbeddings(model_name="mixedbread-ai/mxbai-embed-large-v1")
# create vector store!
from langchain_chroma import Chroma
vectorstore = Chroma(
collection_name="medical_dataset_store",
embedding_function=embed_model,
)
# add data to vector nstore
vectorstore.add_texts(context_data)
retriever = vectorstore.as_retriever()
from langchain_core.prompts import PromptTemplate
template = ("""You are a medical expert.
Use the provided context to answer the question.
If you don't know the answer, say so. Explain your answer in detail.
Do not discuss the context in your response; just provide the answer directly.
Context: {context}
Question: {question}
Answer:""")
rag_prompt = PromptTemplate.from_template(template)
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough
rag_chain = (
{"context": retriever, "question": RunnablePassthrough()}
| rag_prompt
| llm
| StrOutputParser()
)
import gradio as gr
def rag_memory_stream(message, history):
# Define possible greeting messages and their responses
greetings = {
"hello": "Hello! How can I assist you today?",
"hi": "Hi there! How can I help you?",
"good morning": "Good morning! How can I assist you?",
"good afternoon": "Good afternoon! What can I help you with?",
"good evening": "Good evening! Do you have any questions for me?",
}
# Normalize the input message to lowercase for comparison
normalized_message = message.strip().lower()
# Check if the message is a greeting
if normalized_message in greetings:
yield greetings[normalized_message]
return # End early as the greeting is handled
# Default behavior for non-greeting messages
partial_text = ""
for new_text in rag_chain.stream(message):
partial_text += new_text
yield partial_text
examples = [
"What is Aspirin",
"Can Doxycycline Treat Acnes",
]
description = "Hello! Welcome to MediGuide ChatBot,AI-powered assistant designed to facilitate healthcare providers to make informed decision-making by providing reliable information about various medical drugs, including their uses, side effects, contraindications and classification"
title = "MediGuide ChatBot"
demo = gr.ChatInterface(fn=rag_memory_stream,
type="messages",
title=title,
description=description,
fill_height=True,
examples=examples,
theme=gr.themes.Soft(),
)
if __name__ == "__main__":
demo.launch()