tsadoq's picture
Upload 10 files
40072a5
import os
import streamlit as st
from service.haystack_documentation_pipeline import return_haystack_documentation_agent
st.title('Haystack Documentation Chatbot')
if 'image_bytes' not in st.session_state:
st.session_state.image_bytes = open('service/assets/bot.png', 'rb').read()
if 'messages' not in st.session_state:
st.session_state.messages = [{'role': 'assistant', 'content': 'Hello there!'}]
with st.sidebar:
st.image('service/assets/bot.png')
st.markdown(
"""
# Haystack Documentation Chatbot
This chatbot can answer questions about the Haystack documentation.
## How to use
1. Type your question in the chat input box.
2. Press enter.
3. Wait for the chatbot to respond (since it works as an agent responses may take a while).
4. enjoy!
"""
)
for message in st.session_state.messages:
with st.chat_message(
message['role'],
avatar=st.session_state.image_bytes if message['role'] == 'assistant' else None,
):
st.markdown(message['content'])
if 'agent' not in st.session_state:
st.session_state.agent = return_haystack_documentation_agent(openai_key=os.environ['OPENAI_KEY'])
if prompt := st.chat_input('What is up?"'):
st.chat_message('user').markdown(prompt)
st.session_state.messages.append({'role': 'user', 'content': prompt})
chat_message = st.chat_message(name='assistant', avatar=st.session_state.image_bytes)
with chat_message:
with st.spinner('Thinking...'):
response = st.session_state.agent.run(query=prompt)
answer = response['answers'][0].answer
chat_message.markdown(answer)
st.session_state.messages.append({'role': 'assistant', 'content': answer})