from langchain.memory import ConversationBufferMemory from langchain.vectorstores.faiss import FAISS import os from langchain.memory import ConversationBufferMemory from langchain.chains import ConversationalRetrievalChain import pandas as pd import numpy as np from langchain.embeddings import HuggingFaceEmbeddings from langchain import HuggingFaceHub from typing import Any, Dict, List from InstructorEmbedding import INSTRUCTOR from langchain.embeddings import HuggingFaceInstructEmbeddings instructor_embeddings = HuggingFaceInstructEmbeddings(model_name="hkunlp/instructor-xl") new_vectorstore = FAISS.load_local("./faiss_docs_xl_index", instructor_embeddings ) llm = HuggingFaceHub(repo_id="declare-lab/flan-alpaca-large", model_kwargs={"temperature": 0.1, "max_length": 512},huggingfacehub_api_token= "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") # Front end web app import gradio as gr with gr.Blocks() as demo: chatbot = gr.Chatbot() msg = gr.Textbox("Ask Freddy") clear = gr.Button("Clear") chat_history = [] def user(user_message, history): # Get response from QA chain memory = ConversationBufferMemory(memory_key='chat_history', return_messages=True, output_key='answer') qa=ConversationalRetrievalChain.from_llm( llm=llm ,retriever=new_vectorstore.as_retriever(search_kwargs={"k":1, "include_metadata": True}),chain_type="refine",memory=memory,return_source_documents=True) result = qa({"question": user_message,"chat_history": chat_history}) myresponse=result['answer'] # Append user message and response to chat history chat_history.append((user_message, myresponse)) return gr.update(value=""), chat_history msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False) clear.click(lambda: None, None, chatbot, queue=False) if __name__ == "__main__": demo.launch(debug=True,share=False)