import gradio as gr from langchain.embeddings import SentenceTransformerEmbeddings from langchain.vectorstores import Chroma from huggingface_hub import InferenceClient embeddings = SentenceTransformerEmbeddings(model_name="msmarco-distilbert-base-v4") db = Chroma(persist_directory="embeddings", embedding_function=embeddings) client = InferenceClient(model="mistralai/Mixtral-8x7B-Instruct-v0.1") def respond( message, history: list[tuple[str, str]], ): messages = [] for val in history: if val[0]: messages.append({"role": "user", "content": val[0]}) if val[1]: messages.append({"role": "assistant", "content": val[1]}) matching_docs = db.similarity_search(message) if not matching_docs: prompt = ( f"[INST] You are an expert in generating responses when there is no information available. " f"Unfortunately, there are no relevant documents available to answer the following query:\n\n" f"Query: {message}\n\n" f"Please provide a polite and original response to inform the user that the requested information is not " f"available.[/INST]" ) else: context = "" current_length = 0 for i, doc in enumerate(matching_docs): doc_text = f"Document {i + 1}:\n{doc.page_content}\n\n" doc_length = len(doc_text.split()) context += doc_text current_length += doc_length prompt = ( f"[INST] You are an expert in summarizing and answering questions based on given documents. " f"You're an expert in English grammar at the same time. " f"This means that your texts are flawless, correct and grammatically correct." f"Never write in the output response what document the response is in. It looks very unprofessional." f"Please provide a detailed and well-explained answer to the following query in 4-6 sentences:\n\n" f"Query: {message}\n\n" f"Based on the following documents:\n{context}\n\n" f"Answer:[/INST]" ) messages.append({"role": "user", "content": prompt}) response = "" for message in client.chat_completion( messages, max_tokens=250, stream=True, temperature=0.7, top_p=0.95, ): token = message.choices[0].delta.content response += token yield response demo = gr.ChatInterface( respond, title="Boost.space Docs LLM", ) if __name__ == "__main__": demo.launch()