Not-Grim-Refer's picture
Update app.py
2e00c46
raw
history blame
2.2 kB
import streamlit as st
from queue import Queue
from langchain import HuggingFaceHub, PromptTemplate, LLMChain
# Set the title of the Streamlit app
st.title("Falcon QA Bot")
# Get the Hugging Face Hub API token from Streamlit secrets
huggingfacehub_api_token = st.secrets["hf_token"]
# Set the repository ID for the Falcon model
repo_id = "tiiuae/falcon-7b-instruct"
# Initialize the Hugging Face Hub and LLMChain
llm = HuggingFaceHub(
huggingfacehub_api_token=huggingfacehub_api_token,
repo_id=repo_id,
model_kwargs={"temperature": 0.2, "max_new_tokens": 2000}
)
# Define the template for the assistant's response
template = """
You are an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions.
{question}
"""
# Create a queue to store user questions
queue = Queue()
def chat(query):
"""
Generates a response to the user's question using the LLMChain model.
:param query: User's question.
:type query: str
:return: Response to the user's question.
:rtype: str
"""
# Create a prompt template with the question variable
prompt = PromptTemplate(template=template, input_variables=["question"])
# Create an LLMChain instance with the prompt and the Falcon model
llm_chain = LLMChain(prompt=prompt, verbose=True, llm=llm)
# Generate a response to the user's question
result = llm_chain.predict(question=query)
return result
def main():
"""
Main function for the Streamlit app.
"""
# Get the user's question from the input text box
user_question = st.text_input("What do you want to ask about", placeholder="Input your question here")
if user_question:
# Add the user's question to the queue
queue.put(user_question)
# Check if there are any waiting users
if not queue.empty():
# Get the next user's question from the queue
query = queue.get()
# Generate a response to the user's question
response = chat(query)
# Display the response to the user
st.write(response, unsafe_allow_html=True)
if __name__ == '__main__':
main()