|
from langchain.chains import ConversationalRetrievalChain |
|
from langchain.chains.question_answering import load_qa_chain |
|
from langchain.chains import RetrievalQA |
|
from langchain.memory import ConversationBufferMemory |
|
from langchain.memory import ConversationTokenBufferMemory |
|
from langchain.llms import HuggingFacePipeline |
|
|
|
from langchain.prompts import PromptTemplate |
|
from langchain.embeddings import HuggingFaceEmbeddings |
|
from langchain.text_splitter import RecursiveCharacterTextSplitter |
|
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler |
|
from langchain.vectorstores import Chroma |
|
from langchain.embeddings import HuggingFaceBgeEmbeddings |
|
from langchain.document_loaders import ( |
|
CSVLoader, |
|
DirectoryLoader, |
|
GitLoader, |
|
NotebookLoader, |
|
OnlinePDFLoader, |
|
PythonLoader, |
|
TextLoader, |
|
UnstructuredFileLoader, |
|
UnstructuredHTMLLoader, |
|
UnstructuredPDFLoader, |
|
UnstructuredWordDocumentLoader, |
|
WebBaseLoader, |
|
PyPDFLoader, |
|
UnstructuredMarkdownLoader, |
|
UnstructuredEPubLoader, |
|
UnstructuredHTMLLoader, |
|
UnstructuredPowerPointLoader, |
|
UnstructuredODTLoader, |
|
NotebookLoader, |
|
UnstructuredFileLoader |
|
) |
|
from transformers import ( |
|
AutoModelForCausalLM, |
|
AutoTokenizer, |
|
StoppingCriteria, |
|
StoppingCriteriaList, |
|
pipeline, |
|
GenerationConfig, |
|
TextStreamer, |
|
pipeline |
|
) |
|
from langchain.llms import HuggingFaceHub |
|
import torch |
|
from transformers import BitsAndBytesConfig |
|
import os |
|
from langchain.llms import CTransformers |
|
import streamlit as st |
|
from langchain.document_loaders.base import BaseLoader |
|
from langchain.schema import Document |
|
import gradio as gr |
|
import tempfile |
|
import timeit |
|
|
|
FILE_LOADER_MAPPING = { |
|
"csv": (CSVLoader, {"encoding": "utf-8"}), |
|
"doc": (UnstructuredWordDocumentLoader, {}), |
|
"docx": (UnstructuredWordDocumentLoader, {}), |
|
"epub": (UnstructuredEPubLoader, {}), |
|
"html": (UnstructuredHTMLLoader, {}), |
|
"md": (UnstructuredMarkdownLoader, {}), |
|
"odt": (UnstructuredODTLoader, {}), |
|
"pdf": (PyPDFLoader, {}), |
|
"ppt": (UnstructuredPowerPointLoader, {}), |
|
"pptx": (UnstructuredPowerPointLoader, {}), |
|
"txt": (TextLoader, {"encoding": "utf8"}), |
|
"ipynb": (NotebookLoader, {}), |
|
"py": (PythonLoader, {}), |
|
|
|
} |
|
|
|
def load_model(): |
|
config = {'max_new_tokens': 1024, |
|
'repetition_penalty': 1.1, |
|
'temperature': 0.1, |
|
'top_k': 50, |
|
'top_p': 0.9, |
|
'stream': True, |
|
'threads': int(os.cpu_count() / 2) |
|
} |
|
|
|
llm = CTransformers( |
|
model = "TheBloke/zephyr-7B-beta-GGUF", |
|
model_file = "zephyr-7b-beta.Q4_0.gguf", |
|
callbacks=[StreamingStdOutCallbackHandler()], |
|
lib="avx2", |
|
**config |
|
|
|
|
|
|
|
) |
|
return llm |