| import gradio as gr |
| import pandas as pd |
| import requests |
| from transformers import AutoTokenizer, AutoModelForSeq2SeqLM |
| from rag_embeddings import RagRetriever |
|
|
| |
| rag_retriever = RagRetriever("rag_sequence") |
|
|
| |
| tokenizer = AutoTokenizer.from_pretrained("EleutherAI/mistral-small-12L-4H-768d-albert") |
| model = AutoModelForSeq2SeqLM.from_pretrained("EleutherAI/mistral-small-12L-4H-768d-albert") |
|
|
| |
| data = pd.read_csv("data.csv") |
| |
|
|
| def langchain(user_prompt, master_prompt): |
| |
| retrieved_data = rag_retriever.retrieve(user_prompt, data, num_results=5) |
|
|
| |
| input_text = user_prompt + " " + master_prompt + " " + " ".join(retrieved_data) |
|
|
| |
| input_ids = tokenizer(input_text, return_tensors="pt").input_ids |
| generated_ids = model.generate(input_ids) |
| response = tokenizer.decode(generated_ids[0], skip_special_tokens=True) |
|
|
| return response |
|
|
| iface = gr.Interface( |
| fn=langchain, |
| inputs=["text", "text"], |
| outputs="text", |
| title="LangChain App", |
| description="A Gradio app that retrieves specific datachunks using RAG embeding, from tabular csv data, and then connects those into the user prompt and the master prompt and then feed them into a Mistral model called from Hugging Face ran locally, then returns the response to the user via the gradio app GUI.", |
| ) |
|
|
| iface.launch() |
|
|
| iface.launch(share=True) |
|
|
|
|