Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import os | |
| hftoken = os.environ["hftoken"] | |
| from langchain_huggingface import HuggingFaceEndpoint | |
| repo_id = "mistralai/Mistral-7B-Instruct-v0.3" | |
| llm = HuggingFaceEndpoint(repo_id = repo_id, max_new_tokens = 128, temperature = 0.7, huggingfacehub_api_token = hftoken) | |
| from langchain_core.output_parsers import StrOutputParser | |
| from langchain_core.prompts import ChatPromptTemplate | |
| prompt = ChatPromptTemplate.from_template("tell me a joke about {topic}") | |
| chain = prompt | llm | StrOutputParser() | |
| # from langchain.document_loaders.csv_loader import CSVLoader | |
| from langchain_community.document_loaders.csv_loader import CSVLoader | |
| loader = CSVLoader(file_path='aiotsmartlabs_faq.csv', source_column = 'prompt') | |
| data = loader.load() | |
| from langchain_huggingface import HuggingFaceEmbeddings | |
| from langchain_chroma import Chroma | |
| from langchain_huggingface.embeddings import HuggingFaceEndpointEmbeddings | |
| # CHECK MTEB LEADERBOARD & FIND BEST EMBEDDING MODEL | |
| model = "BAAI/bge-m3" | |
| embeddings = HuggingFaceEndpointEmbeddings(model = model) | |
| vectorstore = Chroma.from_documents(documents = data, embedding = embeddings) | |
| retriever = vectorstore.as_retriever() | |
| # from langchain.prompts import PromptTemplate | |
| from langchain_core.prompts import ChatPromptTemplate | |
| prompt = ChatPromptTemplate.from_template("""Given the following context and a question, generate an answer based on the context only. | |
| In the answer try to provide as much text as possible from "response" section in the source document context without making much changes. | |
| If somebody asks "Who are you?" or a similar phrase, state "I am Rishi's assistant built using a Large Language Model!" | |
| If the answer is not found in the context, kindly state "I don't know. Please ask Rishi on Discord. Discord Invite Link: https://discord.gg/6ezpZGeCcM. Or email at [email protected]" Don't try to make up an answer. | |
| CONTEXT: {context} | |
| QUESTION: {question}""") | |
| from langchain_core.runnables import RunnablePassthrough | |
| rag_chain = ( | |
| {"context": retriever, "question": RunnablePassthrough()} | |
| | prompt | |
| | llm | |
| | StrOutputParser() | |
| ) | |
| # Define the chat response function | |
| def chatresponse(message, history): | |
| history_text = "\n".join([f"User: {h[0]}\nAssistant: {h[1]}" for h in history]) | |
| msg = message | |
| totalmessage = history_text + msg | |
| output = rag_chain.invoke(totalmessage) | |
| response = output.split('ANSWER: ')[-1].strip() | |
| return response | |
| # Launch the Gradio chat interface | |
| gr.ChatInterface(chatresponse).launch() | |
| # import gradio as gr | |
| # import os | |
| # hftoken = os.environ["hftoken"] | |
| # from langchain_huggingface import HuggingFaceEndpoint | |
| # repo_id = "mistralai/Mistral-7B-Instruct-v0.3" | |
| # llm = HuggingFaceEndpoint(repo_id = repo_id, max_new_tokens = 128, temperature = 0.7, huggingfacehub_api_token = hftoken) | |
| # from langchain_core.output_parsers import StrOutputParser | |
| # from langchain_core.prompts import ChatPromptTemplate | |
| # prompt = ChatPromptTemplate.from_template("tell me a joke about {topic}") | |
| # chain = prompt | llm | StrOutputParser() | |
| # # from langchain.document_loaders.csv_loader import CSVLoader | |
| # from langchain_community.document_loaders.csv_loader import CSVLoader | |
| # loader = CSVLoader(file_path='aiotsmartlabs_faq.csv', source_column = 'prompt') | |
| # data = loader.load() | |
| # from langchain_huggingface import HuggingFaceEmbeddings | |
| # from langchain_chroma import Chroma | |
| # from langchain_huggingface.embeddings import HuggingFaceEndpointEmbeddings | |
| # # CHECK MTEB LEADERBOARD & FIND BEST EMBEDDING MODEL | |
| # model = "BAAI/bge-m3" | |
| # embeddings = HuggingFaceEndpointEmbeddings(model = model) | |
| # vectorstore = Chroma.from_documents(documents = data, embedding = embeddings) | |
| # retriever = vectorstore.as_retriever() | |
| # # from langchain.prompts import PromptTemplate | |
| # from langchain_core.prompts import ChatPromptTemplate | |
| # prompt = ChatPromptTemplate.from_template("""Given the following context and a question, generate an answer based on the context only. | |
| # In the answer try to provide as much text as possible from "response" section in the source document context without making much changes. | |
| # If somebody asks "Who are you?" or a similar phrase, state "I am Rishi's assistant built using a Large Language Model!" | |
| # If the answer is not found in the context, kindly state "I don't know. Please ask Rishi on Discord. Discord Invite Link: https://discord.gg/6ezpZGeCcM. Or email at [email protected]" Don't try to make up an answer. | |
| # CONTEXT: {context} | |
| # QUESTION: {question}""") | |
| # from langchain_core.runnables import RunnablePassthrough | |
| # # rag_chain = ( | |
| # # {"context": retriever, "history": RunnablePassthrough(), "question": RunnablePassthrough()} | |
| # # | prompt | |
| # # | llm | |
| # # | StrOutputParser() | |
| # # ) | |
| # rag_chain = ( | |
| # {"context": retriever, "question": RunnablePassthrough()} | |
| # | prompt | |
| # | llm | |
| # | StrOutputParser() | |
| # ) | |
| # # Define the chat response function | |
| # def chatresponse(message, history): | |
| # # history_text = "\n".join([f"User: {h[0]}\nAssistant: {h[1]}" for h in history]) | |
| # # inputs = { | |
| # # # "context": retriever, # context will be retrieved by the retriever | |
| # # # "history": history_text, | |
| # # "question": message | |
| # # } | |
| # output = rag_chain.invoke(message) | |
| # response = output.split('ANSWER: ')[-1].strip() | |
| # return response | |
| # # Launch the Gradio chat interface | |
| # gr.ChatInterface(chatresponse).launch() | |
| # import gradio as gr | |
| # from langchain.schema import AIMessage, HumanMessage | |
| # import os | |
| # hftoken = os.environ["hftoken"] | |
| # from langchain_huggingface import HuggingFaceEndpoint | |
| # repo_id = "mistralai/Mistral-7B-Instruct-v0.3" | |
| # llm = HuggingFaceEndpoint(repo_id = repo_id, max_new_tokens = 128, temperature = 0.7, huggingfacehub_api_token = hftoken) | |
| # from langchain_core.output_parsers import StrOutputParser | |
| # from langchain_core.prompts import ChatPromptTemplate | |
| # # prompt = ChatPromptTemplate.from_template("tell me a joke about {topic}") | |
| # # chain = prompt | llm | StrOutputParser() | |
| # # from langchain.document_loaders.csv_loader import CSVLoader | |
| # from langchain_community.document_loaders.csv_loader import CSVLoader | |
| # loader = CSVLoader(file_path='aiotsmartlabs_faq.csv', source_column = 'prompt') | |
| # data = loader.load() | |
| # from langchain_huggingface import HuggingFaceEmbeddings | |
| # from langchain_chroma import Chroma | |
| # from langchain_huggingface.embeddings import HuggingFaceEndpointEmbeddings | |
| # # CHECK MTEB LEADERBOARD & FIND BEST EMBEDDING MODEL | |
| # model = "BAAI/bge-m3" | |
| # embeddings = HuggingFaceEndpointEmbeddings(model = model) | |
| # # Define the chat response function | |
| # def chatresponse(message, history): | |
| # # history_langchain_format = [] | |
| # # for human, ai in history: | |
| # # history_langchain_format.append(HumanMessage(content=human)) | |
| # # history_langchain_format.append(AIMessage(content=ai)) | |
| # # history_langchain_format.append(HumanMessage(content=message)) | |
| # data_vectorstore = Chroma.from_documents(documents = data, embedding = embeddings) | |
| # # history_vectorstore = Chroma.from_documents(documents = history, embedding = embeddings) | |
| # # vectorstore = data_vectorstore + history_vectorstore | |
| # vectorstore = data_vectorstore | |
| # retriever = vectorstore.as_retriever() | |
| # history_str = "\n".join([f"Human: {h[0]}\nAI: {h[1]}" for h in history]) | |
| # # from langchain.prompts import PromptTemplate | |
| # from langchain_core.prompts import ChatPromptTemplate | |
| # prompt = ChatPromptTemplate.from_template("""Given the following history, context and a question, generate an answer based on the context only. | |
| # In the answer try to provide as much text as possible from "response" section in the source document context without making much changes. | |
| # If somebody asks "Who are you?" or a similar phrase, state "I am Rishi's assistant built using a Large Language Model!" | |
| # If the answer is not found in the context, kindly state "I don't know. Please ask Rishi on Discord. Discord Invite Link: https://discord.gg/6ezpZGeCcM. Or email at [email protected]" Don't try to make up an answer. | |
| # HISTORY: {history} | |
| # CONTEXT: {context} | |
| # QUESTION: {question}""") | |
| # from langchain_core.runnables import RunnablePassthrough | |
| # rag_chain = ( | |
| # {"history": history_str, "context": retriever, "question": RunnablePassthrough()} | |
| # | prompt | |
| # | llm | |
| # | StrOutputParser() | |
| # ) | |
| # output = rag_chain.invoke(message) | |
| # response = output.split('ANSWER: ')[-1].strip() | |
| # return response | |
| # # Launch the Gradio chat interface | |
| # gr.ChatInterface(chatresponse).launch() | |
| # import gradio as gr | |
| # from langchain.schema import AIMessage, HumanMessage | |
| # import os | |
| # hftoken = os.environ["hftoken"] | |
| # from langchain_huggingface import HuggingFaceEndpoint | |
| # repo_id = "mistralai/Mistral-7B-Instruct-v0.3" | |
| # llm = HuggingFaceEndpoint(repo_id = repo_id, max_new_tokens = 128, temperature = 0.7, huggingfacehub_api_token = hftoken) | |
| # from langchain_core.output_parsers import StrOutputParser | |
| # from langchain_core.prompts import ChatPromptTemplate | |
| # # prompt = ChatPromptTemplate.from_template("tell me a joke about {topic}") | |
| # # chain = prompt | llm | StrOutputParser() | |
| # # from langchain.document_loaders.csv_loader import CSVLoader | |
| # from langchain_community.document_loaders.csv_loader import CSVLoader | |
| # loader = CSVLoader(file_path='aiotsmartlabs_faq.csv', source_column = 'prompt') | |
| # data = loader.load() | |
| # from langchain_huggingface import HuggingFaceEmbeddings | |
| # from langchain_chroma import Chroma | |
| # from langchain_huggingface.embeddings import HuggingFaceEndpointEmbeddings | |
| # # CHECK MTEB LEADERBOARD & FIND BEST EMBEDDING MODEL | |
| # model = "BAAI/bge-m3" | |
| # embeddings = HuggingFaceEndpointEmbeddings(model = model) | |
| # vectorstore = Chroma.from_documents(documents = data, embedding = embeddings) | |
| # retriever = vectorstore.as_retriever() | |
| # # from langchain.prompts import PromptTemplate | |
| # from langchain_core.prompts import ChatPromptTemplate | |
| # prompt = ChatPromptTemplate.from_template("""Given the following history, context and a question, generate an answer based on the context only. | |
| # In the answer try to provide as much text as possible from "response" section in the source document context without making much changes. | |
| # If somebody asks "Who are you?" or a similar phrase, state "I am Rishi's assistant built using a Large Language Model!" | |
| # If the answer is not found in the context, kindly state "I don't know. Please ask Rishi on Discord. Discord Invite Link: https://discord.gg/6ezpZGeCcM. Or email at [email protected]" Don't try to make up an answer. | |
| # CONTEXT: {context} | |
| # HISTORY: {history} | |
| # QUESTION: {question}""") | |
| # from langchain_core.runnables import RunnablePassthrough | |
| # # Define the chat response function | |
| # def chatresponse(message, history): | |
| # # history_langchain_format = [] | |
| # # for human, ai in history: | |
| # # history_langchain_format.append(HumanMessage(content=human)) | |
| # # history_langchain_format.append(AIMessage(content=ai)) | |
| # # history_langchain_format.append(HumanMessage(content=message)) | |
| # rag_chain = ( | |
| # {"context": retriever, "history": history, "question": RunnablePassthrough()} | |
| # | prompt | |
| # | llm | |
| # | StrOutputParser() | |
| # ) | |
| # output = rag_chain.invoke(message) | |
| # response = output.split('ANSWER: ')[-1].strip() | |
| # return response | |
| # # Launch the Gradio chat interface | |
| # gr.ChatInterface(chatresponse).launch() | |
| # import gradio as gr | |
| # def chatresponse(message, history): | |
| # return history | |
| # # Launch the Gradio chat interface | |
| # gr.ChatInterface(chatresponse).launch() | |
| # import gradio as gr | |
| # from huggingface_hub import InferenceClient | |
| # """ | |
| # For more information on `huggingface_hub` Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference | |
| # """ | |
| # client = InferenceClient("HuggingFaceH4/zephyr-7b-beta") | |
| # def respond( | |
| # message, | |
| # history: list[tuple[str, str]], | |
| # system_message, | |
| # max_tokens, | |
| # temperature, | |
| # top_p, | |
| # ): | |
| # messages = [{"role": "system", "content": system_message}] | |
| # for val in history: | |
| # if val[0]: | |
| # messages.append({"role": "user", "content": val[0]}) | |
| # if val[1]: | |
| # messages.append({"role": "assistant", "content": val[1]}) | |
| # messages.append({"role": "user", "content": message}) | |
| # response = "" | |
| # for message in client.chat_completion( | |
| # messages, | |
| # max_tokens=max_tokens, | |
| # stream=True, | |
| # temperature=temperature, | |
| # top_p=top_p, | |
| # ): | |
| # token = message.choices[0].delta.content | |
| # response += token | |
| # yield response | |
| # """ | |
| # For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface | |
| # """ | |
| # demo = gr.ChatInterface( | |
| # respond, | |
| # additional_inputs=[ | |
| # gr.Textbox(value="You are a friendly Chatbot.", label="System message"), | |
| # gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"), | |
| # gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"), | |
| # gr.Slider( | |
| # minimum=0.1, | |
| # maximum=1.0, | |
| # value=0.95, | |
| # step=0.05, | |
| # label="Top-p (nucleus sampling)", | |
| # ), | |
| # ], | |
| # ) | |
| # if __name__ == "__main__": | |
| # demo.launch() |