Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| from llm import build_rag_chain | |
| from setup import setup | |
| st.set_page_config(layout="wide") | |
| st.title("LinuxGPT") | |
| l_col, r_col = st.columns((3, 1)) | |
| if "trigger" not in st.session_state: | |
| st.session_state["trigger"] = False | |
| def on_enter(): | |
| st.session_state["trigger"] = True | |
| with r_col: | |
| submit_button, openai_models = setup() | |
| # chat input goes here: | |
| with l_col: | |
| user_question = st.text_area( | |
| "Ask about Linux fundamentals", | |
| on_change=on_enter, | |
| ) | |
| # BELOW IS TEMPORARY, JUST FOR DEMOS! | |
| api_key = st.secrets["api_key"] | |
| if (submit_button or st.session_state["trigger"]) and api_key and user_question: | |
| rag_chain = build_rag_chain(api_key=api_key) | |
| formatted_history = [ | |
| {"role": "user", "content": item["question"]} if idx % 2 == 0 | |
| else {"role": "assistant", "content": item["answer"]} | |
| for idx, item in enumerate(st.session_state.get("history", [])) | |
| ] | |
| with st.spinner("Thinking..."): | |
| # invoke answer | |
| result = rag_chain.invoke({"input": user_question, "chat_history": formatted_history}) | |
| answer = result['answer'] | |
| st.header("LinuxGPT says:") | |
| st.write(answer) | |
| # add to chat history automatically | |
| if 'history' not in st.session_state: | |
| st.session_state['history'] = [] | |
| st.session_state['history'].append({"question": user_question, "answer": answer}) | |
| else: | |
| st.write("Please provide an input. No API key is needed for demoing") | |
| # clear history | |
| if st.button("Clear History"): | |
| st.session_state['history'] = [] | |
| st.write("Chat history cleared") | |