health_chatbot / app2.py
Pratik Dwivedi
main functionality
9f98769
raw
history blame
2.38 kB
import streamlit as st
from langchain.memory import ConversationBufferMemory
from langchain.chains import LLMChain
from langchain_community.llms import HuggingFaceHub
from langchain.prompts import PromptTemplate
from dotenv import load_dotenv
import time
def get_response(model, query):
prompt_template = PromptTemplate(
template="I have a question about my health. {user_question}",
input_variables=["user_question"]
)
# get the response
memory = ConversationBufferMemory(memory_key="messages", return_messages=True)
print(memory)
conversation_chain = LLMChain(
llm=model,
prompt=prompt_template,
# retriever=vectorstore.as_retriever(),
memory=memory)
response = conversation_chain.invoke(query)
answer = response["text"]
if "\n\n" in answer:
answer = answer.split("\n\n", 1)[1]
return answer
def main():
st.title("Health Chatbot")
# load the environment variables
load_dotenv()
print("Loading LLM from HuggingFace")
with st.spinner('Loading LLM from HuggingFace...'):
llm = HuggingFaceHub(repo_id="HuggingFaceH4/zephyr-7b-beta", model_kwargs={"temperature":0.7, "max_new_tokens":1028, "top_p":0.95})
# llm = HuggingFaceHub(repo_id="ajdev/falcon_medical", model_kwargs={"temperature":0.7, "max_new_tokens":250, "top_p":0.95})
if "messages" not in st.session_state:
st.session_state.messages = []
if st.button("Clear Chat"):
st.session_state.messages = []
for message in st.session_state.messages:
if message["role"] == "user":
st.chat_message("user").markdown(message["content"])
else:
st.chat_message("bot").markdown(message["content"])
user_prompt = st.chat_input("ask a question", key="user")
if user_prompt:
st.chat_message("user").markdown(user_prompt)
st.session_state.messages.append({"role": "user", "content": user_prompt})
with st.spinner('Thinking...'):
start_time = time.time()
response = get_response(llm, user_prompt)
st.write("Response Time: ", time.time() - start_time)
st.chat_message("bot").markdown(response)
st.session_state.messages.append({"role": "bot", "content": response})
if __name__ == "__main__":
main()