import streamlit as st from streamlit_chat import message import os from utils import ( parse_docx, parse_pdf, parse_txt, parse_csv, search_docs, embed_docs, text_to_docs, get_answer, get_sources, wrap_text_in_html, ) from openai.error import OpenAIError def clear_submit(): st.session_state["submit"] = False def set_openai_api_key(api_key: str): st.session_state["OPENAI_API_KEY"] = api_key st.markdown('
Read the article to know how it works: Medium Article
', unsafe_allow_html=True) st.write("File GPT was written with the following tools:") st.markdown("#### Code GPT") st.write('All code was written with the help of Code GPT. Visit https://codegpt.co to get the extension.') st.markdown("#### Streamlit") st.write('The design was written with Streamlit.', unsafe_allow_html=True) st.markdown("#### LangChain") st.write('Question answering with source Langchain QA.', unsafe_allow_html=True) st.markdown("#### Embedding") st.write('Embedding is done via the OpenAI API with "text-embedding-ada-002"', unsafe_allow_html=True) st.markdown("""---""") st.write('Author: Daniel Avila', unsafe_allow_html=True) st.write('Repo: Github', unsafe_allow_html=True) st.write("This software was developed with Code GPT, for more information visit: https://codegpt.co", unsafe_allow_html=True) with tab2: st.write('To obtain an API Key you must create an OpenAI account at the following link: https://openai.com/api/') if 'generated' not in st.session_state: st.session_state['generated'] = [] if 'past' not in st.session_state: st.session_state['past'] = [] def get_text(): if user_secret: st.header("Ask me something about the document:") input_text = st.text_area("You:", on_change=clear_submit) return input_text user_input = get_text() button = st.button("Submit") if button or st.session_state.get("submit"): if not user_input: st.error("Please enter a question!") else: st.session_state["submit"] = True sources = search_docs(index, user_input) try: answer = get_answer(sources, user_input) st.session_state.past.append(user_input) st.session_state.generated.append(answer["output_text"].split("SOURCES: ")[0]) except OpenAIError as e: st.error(e._message) if st.session_state['generated']: for i in range(len(st.session_state['generated'])-1, -1, -1): message(st.session_state["generated"][i], key=str(i)) message(st.session_state['past'][i], is_user=True, key=str(i) + '_user')