Spaces:
Build error
Build error
| import streamlit as st | |
| from langchain_community.llms import OpenAI | |
| import configparser | |
| import os | |
| from langchain_openai import OpenAIEmbeddings | |
| from langchain_community.vectorstores import FAISS | |
| from langchain_openai import ChatOpenAI | |
| from langchain_core.prompts import ChatPromptTemplate | |
| from langchain.chains import create_retrieval_chain | |
| from langchain.chains.combine_documents import create_stuff_documents_chain | |
| Config = configparser.ConfigParser() | |
| Config.read("config.ini") | |
| st.title('⚖️🔗 Поисковик по академической политике университета Narxoz') | |
| st.markdown('Наш чатбот ответ на вопросы по правилам из академической политики университета Narxoz') | |
| #openai_api_key = st.sidebar.text_input('OpenAI API Key', type='password') | |
| #openai_api_key = Config.get('Pass','OpenaiKey') | |
| openai_api_key = st.secrets['openai'] | |
| os.environ["OPENAI_API_KEY"] = openai_api_key | |
| embeddings = OpenAIEmbeddings(model="text-embedding-3-large") | |
| new_db = FAISS.load_local("AcademicPolicy", embeddings,allow_dangerous_deserialization= True) | |
| retriever = new_db.as_retriever(search_type="similarity", search_kwargs={"k": 6}) | |
| llm = ChatOpenAI(model="gpt-3.5-turbo-0125") | |
| system_prompt = ( | |
| "Вы бот который отвечает на вопросы по внутренним правилам университета Narxoz." | |
| "Используйте следующий набор документов. " | |
| "Если не знаете ответ, ответьте что вы не знаете. " | |
| "Постарайте уложиться в три предложения." | |
| "Университет Narxoz также подчиняется правилам Республики Казахстан" | |
| "И входит в Болонскую систему образования" | |
| "\n\n" | |
| "{context}" | |
| ) | |
| prompt = ChatPromptTemplate.from_messages( | |
| [ | |
| ("system", system_prompt), | |
| ("human", "{input}"), | |
| ] | |
| ) | |
| question_answer_chain = create_stuff_documents_chain(llm, prompt) | |
| rag_chain = create_retrieval_chain(retriever, question_answer_chain) | |
| import firestore_util | |
| def load_firestore_connection_ref(): | |
| db = firestore_util.load_firestore() | |
| doc_ref = db.collection('requests').document("client_queries") | |
| return doc_ref | |
| #doc_ref = load_firestore_connection_ref() | |
| def generate_response(input_text): | |
| response = rag_chain.invoke({"input": text}) | |
| #doc_ref.set({"query":input_text,"response":response['answer']}) | |
| return response | |
| with st.form('my_form'): | |
| text = st.text_area('Напишите свой вопрос:', '') | |
| submitted = st.form_submit_button('Submit') | |
| if submitted: | |
| response = generate_response(text) | |
| st.markdown(response['answer']) | |
| print(response['context']) | |
| for context in response['context']: | |
| with st.expander(context.metadata['title']): | |
| st.write(context.page_content) | |
| #generate_response(text) |