Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| #import your_module # Replace this with the name of the Python file containing your existing code | |
| # Playing with the new Open AI API : gpt-4 | |
| #importing dependencies | |
| import langchain | |
| import openai | |
| from langchain.chat_models import ChatOpenAI | |
| from langchain import PromptTemplate | |
| from langchain.prompts.chat import ( | |
| ChatPromptTemplate, | |
| SystemMessagePromptTemplate, | |
| AIMessagePromptTemplate, | |
| HumanMessagePromptTemplate, | |
| ) | |
| import os | |
| from langchain.vectorstores import Chroma, Pinecone | |
| from langchain.embeddings.openai import OpenAIEmbeddings | |
| import pinecone | |
| import os | |
| from langchain.chains.qa_with_sources import load_qa_with_sources_chain | |
| from langchain.embeddings import HuggingFaceEmbeddings | |
| from langchain.embeddings import HuggingFaceEmbeddings, SentenceTransformerEmbeddings | |
| from supabase.client import Client, create_client | |
| from langchain.vectorstores import SupabaseVectorStore | |
| st.title("Rev79 Knowledge Base Assistant") | |
| # Language selection | |
| languages = [ | |
| "English", | |
| "Mandarin Chinese", | |
| "Spanish", | |
| "Hindi", | |
| "Arabic", | |
| "Portuguese", | |
| "Bengali", | |
| "Russian", | |
| "Japanese", | |
| "French", | |
| "Indonesian", | |
| "German", | |
| "Korean", | |
| "Turkish" | |
| ] | |
| selected_language = st.selectbox("Select language:", languages) | |
| # Input question | |
| question = st.text_input("Enter your question:") | |
| system_template = """ | |
| You are a helpful AI Assistant. Use the following pieces of context to answer the user's question. | |
| If you don't know the answer, just say that you don't know. Don't try to make up an answer. | |
| Question are related to how project managemnet software works. The documentation seeks to help users naviagte and use the software. | |
| Do not include "https://rev79" as a source. Source will always be longer URLs, for example, | |
| "https://rev79.freshdesk.com/en/support/solutions/articles/47001227676" | |
| Answer the question in the following language, {language}. You have to include the "SOURCES" at all times regardless of the language used. | |
| Translate the word "SOURCES" in the language that is being used and make sure the "SOURCES" are in a new line. | |
| Example: | |
| ``` | |
| Question: What is Rev79? | |
| Answer: Rev79 is a project management platform named after God's promise in Revelation 7:9 of all languages communities being included in his eternal purpose | |
| of blessing and recreation. The platform aims to help organizations, teams, and communities move forward towards this vision by providing tools for | |
| managing projects and facilitating Bible translation and integral mission in all language communities. Rev79 can be used to envision, organize, collaborate, | |
| and transform projects and activities. | |
| SOURCES: | |
| - https://rev79.freshdesk.com/en/support/solutions/articles/47001223622-what-is-the-rev79-app-where-did-it-come-from- | |
| ``` | |
| ---------------- | |
| {summaries}""" | |
| # Submit button | |
| if st.button("Submit"): | |
| # Call the function from your_module with the selected language and question | |
| OPENAI_API_KEY = st.secrets["OPENAI_API_KEY"] | |
| PINECONE_API_KEY = st.secrets["PINECONE_API_KEY"] | |
| PINECONE_API_ENV = st.secrets["PINECONE_API_ENV"] | |
| supabase_url = st.secrets["SUPABASE_URL"] | |
| supabase_key = st.secrets["SUPABASE_KEY"] | |
| #Use OpenAI's embedding | |
| Embeddings = HuggingFaceEmbeddings(model_name='sentence-transformers/stsb-xlm-r-multilingual') | |
| # initialize pinecone | |
| supabase: Client = create_client(supabase_url, supabase_key) | |
| docsearch = SupabaseVectorStore(embedding=Embeddings, table_name='documents', client=supabase) | |
| st.markdown("Assistant is typing...") | |
| messages = [ | |
| SystemMessagePromptTemplate.from_template(system_template), | |
| HumanMessagePromptTemplate.from_template("{question}") | |
| #SystemMessage(content=system_message), | |
| #HumanMessage(content="{question}") | |
| ] | |
| prompt = ChatPromptTemplate.from_messages(messages) | |
| docs = docsearch.similarity_search(question) | |
| chain_type_kwargs = {"prompt": prompt} | |
| chain = load_qa_with_sources_chain( | |
| ChatOpenAI(model_name="gpt-4", openai_api_key=OPENAI_API_KEY), | |
| chain_type="stuff", | |
| prompt=prompt | |
| ) | |
| text = chain({"input_documents": docs, "question": question, "language":selected_language}, return_only_outputs=True) | |
| result = text['output_text'] # Replace 'run' with the appropriate function in your module | |
| # Display a header | |
| st.header("Answer") | |
| st.write(result) | |