| |
| """Olive_XA.ipynb |
| |
| Automatically generated by Colaboratory. |
| |
| Original file is located at |
| https://colab.research.google.com/drive/1WOPxCenW1U3q9tAz2LBSr7TLZxfi0AXe |
| """ |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| import os |
| from langchain.vectorstores import FAISS |
| from langchain.vectorstores import chroma |
| from langchain.document_loaders import DirectoryLoader |
| from langchain.document_loaders import TextLoader |
| from langchain.document_loaders import UnstructuredWordDocumentLoader |
| from langchain.chains.question_answering import load_qa_chain |
| from langchain.prompts import PromptTemplate |
| from langchain.memory import ConversationBufferMemory |
| from langchain.embeddings import HuggingFaceEmbeddings |
| from langchain.chains import RetrievalQA |
| from langchain.chains import ConversationalRetrievalChain |
| from langchain.document_loaders import UnstructuredFileLoader |
| from langchain.text_splitter import RecursiveCharacterTextSplitter |
| from langchain.chains import RetrievalQAWithSourcesChain |
| from huggingface_hub import notebook_login |
| from transformers import pipeline |
| from transformers import AutoTokenizer, AutoModelForCausalLM |
| from langchain import HuggingFacePipeline |
| from langchain.text_splitter import CharacterTextSplitter |
| import textwrap |
| import sys |
|
|
| os.environ['HuggingFaceHub_API_Token']= 'xxxxxxxxxxxxxxxxxxxxxxx' |
|
|
|
|
|
|
| path = "./" |
| text_loader_kwargs={'autodetect_encoding': True} |
| loader = DirectoryLoader(path, glob="**/*.docx", loader_cls=UnstructuredWordDocumentLoader,loader_kwargs=text_loader_kwargs) |
| documents = loader.load() |
|
|
| documents[0] |
|
|
| text_splitter=CharacterTextSplitter(separator='\n\n', |
| chunk_size=600, |
| chunk_overlap=10) |
| text_chunks=text_splitter.split_documents(documents) |
|
|
| len(text_chunks) |
|
|
|
|
|
|
| embeddings = HuggingFaceEmbeddings(model_name='sentence-transformers/all-MiniLM-L6-v2',model_kwargs={'device': 'cuda'}) |
|
|
|
|
|
|
| vectorstore=FAISS.from_documents(text_chunks, embeddings) |
|
|
|
|
|
|
| import torch |
| tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b-chat-hf",token="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") |
|
|
|
|
|
|
| model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-chat-hf", |
| device_map='auto', |
| torch_dtype=torch.float16, |
| |
| |
| token="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", |
| |
| ) |
|
|
| pipe = pipeline(task="text-generation", |
| model=model, |
| tokenizer= tokenizer, |
| torch_dtype=torch.int8, |
| device_map="auto", |
| max_new_tokens = 512, |
| do_sample=True, |
| top_k=1, |
| num_return_sequences=1, |
| eos_token_id=tokenizer.eos_token_id |
| ) |
|
|
| llm=HuggingFacePipeline(pipeline=pipe, model_kwargs={'temperature':0}) |
|
|
| chain = RetrievalQA.from_chain_type(llm=llm, chain_type = "stuff", retriever=vectorstore.as_retriever(), |
| ) |
|
|
| query = "what is the name of the software?" |
| result=chain({"query": query}, return_only_outputs=True) |
| wrapped_text = textwrap.fill(result['result'], width=200) |
| context = wrapped_text |
| context |
|
|
| import locale |
| locale.getpreferredencoding = lambda: "UTF-8" |
|
|
|
|
|
|
| import gradio as gr |
| import random |
| import time |
|
|
| with gr.Blocks() as demo: |
| chatbot = gr.Chatbot() |
| msg = gr.Textbox() |
| clear = gr.ClearButton([msg, chatbot]) |
|
|
| def respond(message, chat_history): |
| result = chain({"query": message}, return_only_outputs=True) |
| bot_message = textwrap.fill(result['result'], width=200) |
| chat_history.append((message, bot_message)) |
| time.sleep(2) |
| return "", chat_history |
|
|
| msg.submit(respond, [msg, chatbot], [msg, chatbot]) |
|
|
| demo.launch() |
|
|
|
|