| import streamlit as st |
|
|
| import time |
| from datetime import datetime |
|
|
| from langchain_openai import ChatOpenAI, OpenAIEmbeddings |
|
|
| from dotenv import load_dotenv |
| load_dotenv() |
|
|
|
|
| from chains import * |
| |
|
|
|
|
| |
| |
| |
| |
| |
| st.set_page_config(page_title="π’ Ask ATI") |
| st.title("π’ Ask ATI") |
| st.markdown("""*Ask ATI is an AI-powered assistant designed to deliver information about Advanced Technology Investment Joint Stock Company (ATI SJC). It helps customers explore ATIβs offerings and enables users to access company-related details, services, and contact information effortlessly.*""") |
|
|
|
|
| |
| def generate_initial_message(): |
| current_time = datetime.now().time() |
| if 5 <= current_time.hour < 12: |
| greeting = "Good morning" |
| elif 12 <= current_time.hour < 18: |
| greeting = "Good afternoon" |
| elif 18 <= current_time.hour < 21: |
| greeting = "Good evening" |
| else: |
| greeting = "Hello" |
| initial_prompt = f"{greeting}! How can I assist you?" |
| return initial_prompt |
|
|
|
|
| |
| def generate_response_message(response): |
| full_response = "" |
| response_words = response.split() |
| with st.chat_message("assistant", avatar="π€"): |
| message_placeholder = st.empty() |
| for word in response_words: |
| full_response += word + " " |
| message_placeholder.markdown(full_response + "β") |
| time.sleep(0.05) |
| message_placeholder.markdown(full_response) |
|
|
| return full_response |
|
|
|
|
|
|
| def main(): |
| import uuid |
|
|
| context = None |
| question = None |
|
|
| |
| if "session_id" not in st.session_state: |
| st.session_state.session_id = str(uuid.uuid4()) |
|
|
| session_id = st.session_state.session_id |
|
|
| with st.sidebar: |
| st.title("Chat Toolbox") |
| st.write(f"Session ID: {session_id}") |
|
|
| |
|
|
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| chat_history = None |
|
|
| |
| if "messages" not in st.session_state: |
| st.session_state.messages = [] |
| st.session_state.messages.append({ |
| "role": "assistant", |
| "content": generate_initial_message() |
| }) |
| |
| for message in st.session_state.messages: |
| with st.chat_message(message["role"], avatar="π€" if message["role"] == "user" else "π€"): |
| st.markdown(message["content"]) |
|
|
|
|
| |
| user_input = st.chat_input("Enter your message:") |
| |
| |
| if user_input: |
|
|
| st.session_state.messages.append({"role": "user", "content": user_input}) |
| with st.chat_message("user", avatar="π€"): |
| st.markdown(user_input) |
| time.sleep(0.5) |
|
|
| with st.spinner(""): |
| |
| response = get_response(session_id, user_input) |
| context = response['context'] |
| question = response['question'] |
| save_message(session_id, "human", user_input) |
| save_message(session_id, "ai", response['answer']) |
|
|
| |
| st.write(response['answer']) |
| |
| full_response = response['answer'] |
| st.session_state.messages.append({"role": "assistant", "content": full_response}) |
|
|
| with st.sidebar: |
| st.subheader("Source") |
| from utils import documents_to_dataframe |
| |
| |
| |
| |
| st.write(question) |
| |
| context_df = documents_to_dataframe(context) |
| st.write(context_df) |
|
|
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| |
| |
| |
|
|
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|
|
|