Spaces:
Sleeping
Sleeping
import utils | |
import streamlit as st | |
from streaming import StreamHandler | |
from langchain_openai import ChatOpenAI | |
from langchain.chains.conversation.base import ConversationChain | |
st.set_page_config(page_title="Chatbot", page_icon="π¬") | |
st.header('Basic Chatbot') | |
st.write('Allows users to interact with a Language Model') | |
class BasicChatbot: | |
def __init__(self): | |
self.openai_model = utils.configure_openai() | |
def setup_chain(self): | |
llm = ChatOpenAI(model_name=self.openai_model, temperature=0, streaming=True) | |
chain = ConversationChain(llm=llm, verbose=True) | |
return chain | |
def main(self): | |
chain = self.setup_chain() | |
user_query = st.chat_input(placeholder="Ask me anything!") | |
if user_query: | |
utils.display_msg(user_query, 'user') | |
with st.chat_message("assistant"): | |
st_cb = StreamHandler(st.empty()) | |
result = chain.invoke( | |
{"input":user_query}, | |
{"callbacks": [st_cb]} | |
) | |
response = result["response"] | |
st.session_state.messages.append({"role": "assistant", "content": response}) | |
if __name__ == "__main__": | |
obj = BasicChatbot() | |
obj.main() | |