bnsapa's picture
Create app.py (#1)
ec8234a
from langchain.agents import ConversationalChatAgent, AgentExecutor
from langchain.callbacks import StreamlitCallbackHandler
from langchain.chat_models import ChatOpenAI
from langchain import HuggingFaceHub
from langchain.memory import ConversationBufferMemory
from langchain.memory.chat_message_histories import StreamlitChatMessageHistory
from langchain.chains import LLMChain, RetrievalQA
from langchain import PromptTemplate
import streamlit as st
import os
import dotenv
dotenv.load_dotenv()
HUGGINGFACE_API = os.getenv("HUGGINGFACE_API")
st.set_page_config(page_title="ChatBot", page_icon="😊")
st.title("ChatBot")
msgs = StreamlitChatMessageHistory()
memory = ConversationBufferMemory(
chat_memory=msgs, return_messages=True, memory_key="chat_history", output_key="output"
)
if len(msgs.messages) == 0:
msgs.clear()
msgs.add_ai_message("How can I help you?")
st.session_state.steps = {}
avatars = {"human": "user", "ai": "assistant"}
for idx, msg in enumerate(msgs.messages):
with st.chat_message(avatars[msg.type]):
# Render intermediate steps if any were saved
for step in st.session_state.steps.get(str(idx), []):
if step[0].tool == "_Exception":
continue
with st.expander(f"βœ… **{step[0].tool}**: {step[0].tool_input}"):
st.write(step[0].log)
st.write(f"**{step[1]}**")
st.write(msg.content)
if prompt := st.chat_input(placeholder="Who won the Women's U.S. Open in 2018?"):
st.chat_message("user").write(prompt)
msgs.add_user_message(prompt)
llm = HuggingFaceHub(
repo_id="tiiuae/falcon-7b-instruct",
model_kwargs={"temperature": 0.5, "max_new_tokens": 500},
huggingfacehub_api_token=HUGGINGFACE_API,
)
prompt_template = PromptTemplate.from_template(
"Answer the question: {prompt}"
)
qa_chain = LLMChain(llm = llm, prompt = prompt_template)
with st.chat_message("assistant"):
st_cb = StreamlitCallbackHandler(st.container(), expand_new_thoughts=False)
response = qa_chain({"prompt": prompt})
msgs.add_ai_message(response["text"])
st.write(response["text"])