Spaces:
Sleeping
Sleeping
| try: | |
| st.session_state.retriever = "" | |
| st.session_state.rag_chain = "" | |
| global rag_chain, retriever, em | |
| import requests | |
| from langchain.document_loaders import TextLoader | |
| from langchain.text_splitter import CharacterTextSplitter | |
| import re | |
| import requests | |
| #import fitz # PyMuPDF | |
| import inspect | |
| def get_LN(): | |
| """ | |
| Returns the line number in the caller's source code. | |
| """ | |
| # Get the current frame, then the caller's frame, and finally the line number | |
| frame = inspect.currentframe() | |
| caller_frame = frame.f_back | |
| line_number = caller_frame.f_lineno | |
| return str(line_number) | |
| st.session_state.ln = get_LN() | |
| os.environ["OPENAI_API_KEY"] = os.getenv('openkey') | |
| org = os.getenv('openorg') | |
| from langchain.embeddings import OpenAIEmbeddings | |
| from langchain.vectorstores import Weaviate | |
| import weaviate | |
| from weaviate.embedded import EmbeddedOptions | |
| #from dotenv import load_dotenv,find_dotenv | |
| # Load OpenAI API key from .env file | |
| #load_dotenv(find_dotenv()) | |
| st.session_state.ln = get_LN() | |
| # Setup vector database| | |
| client = weaviate.Client( | |
| embedded_options = EmbeddedOptions() | |
| ) | |
| ############################################################################ | |
| st.session_state.ln = get_LN() | |
| pickle_file_path = 'vectorstore.pkl' | |
| import pickle | |
| with open(pickle_file_path, 'rb') as file: | |
| docs = pickle.load(file) | |
| st.session_state.ln = get_LN() | |
| vectorstore = Weaviate.from_documents( | |
| client = client, | |
| documents = docs, | |
| embedding = OpenAIEmbeddings(), | |
| by_text = False | |
| ) | |
| st.session_state.ln = get_LN() | |
| # Define vectorstore as retriever to enable semantic search | |
| retriever = vectorstore.as_retriever() | |
| st.session_state.ln = get_LN() | |
| ############################################################################ | |
| # Create RAG chain | |
| #from langchain.chat_models import ChatOpenAI | |
| from langchain_openai import ChatOpenAI | |
| from langchain.prompts import ChatPromptTemplate | |
| from langchain.schema.runnable import RunnablePassthrough | |
| from langchain.schema.output_parser import StrOutputParser | |
| # Define LLM | |
| llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0) | |
| #llm = ChatOpenAI(model_name="gpt-4", temperature=0.15) | |
| st.session_state.ln = get_LN() | |
| # Define prompt template / context | |
| template = """You are a lawyer responding to creditors questions. | |
| Use the following pieces of retrieved context to answer the question. | |
| If you don't know the answer, just say that you don't know and add a funny joke. | |
| Keep the answer concise. | |
| Question: {question} | |
| Context: {context} | |
| Answer: | |
| """ | |
| prompt = ChatPromptTemplate.from_template(template) | |
| # Setup RAG pipeline | |
| rag_chain = ( | |
| {"context": retriever, "question": RunnablePassthrough()} | |
| | prompt | |
| | llm | |
| | StrOutputParser() | |
| ) | |
| st.session_state.retriever = retriever | |
| st.session_state.rag_chain = rag_chain | |
| st.session_state.ln = get_LN() | |
| em = "aaa" | |
| st.session_state.started = True | |
| except Exception as e: | |
| em = "bbb " + str(e) | |
| st.session_state.em = em | |