Spaces:
Runtime error
Runtime error
from langchain.llms import HuggingFacePipeline | |
from langchain.embeddings import HuggingFaceInstructEmbeddings | |
from langchain.chains import RetrievalQA | |
from transformers import ( | |
AutoTokenizer, | |
AutoModelForSeq2SeqLM, | |
pipeline, | |
GenerationConfig | |
) | |
class lamini: | |
def __init__(self): | |
pass | |
def load_model(self, task="text2text-generation", **kwargs) -> HuggingFacePipeline: | |
"""Returns a pipeline for the model | |
- model: MBZUAI/LaMini-Flan-T5-248M | |
Returns: | |
_type_: _description_ | |
""" | |
model_id = "MBZUAI/LaMini-Flan-T5-248M" | |
tokenizer = AutoTokenizer.from_pretrained(model_id) | |
model = AutoModelForSeq2SeqLM.from_pretrained(model_id) | |
gen_config = GenerationConfig.from_pretrained(model_id) | |
max_length = kwargs.get("max_length", 512) | |
temperature = kwargs.get("temperature", 0) | |
top_p = kwargs.get("top_p", 0.95) | |
repetition_penalty = kwargs.get("repetition_penalty", 1.15) | |
pipe = pipeline( | |
"text2text-generation", | |
model=model, | |
tokenizer=tokenizer, | |
generation_config=gen_config, | |
max_length=max_length, | |
top_p=top_p, | |
temperature=temperature, | |
repetition_penalty=repetition_penalty, | |
) | |
llm = HuggingFacePipeline(pipeline=pipe) | |
return llm | |
class templates: | |
def __init__(self, llm: HuggingFacePipeline): | |
self.llm = llm | |
def summarize(self, text, **kwargs): | |
"""Summarize text | |
Args: | |
text (str): text to summarize | |
Returns: | |
str: summarized text | |
""" | |
instruction = "summarize for better understanding: " | |
text = instruction + text | |
return self.llm(text, **kwargs) | |
def generate_tile(self, text, **kwargs): | |
"""Generate a title for text | |
Args: | |
text (str): text to generate title for | |
Returns: | |
str: title | |
""" | |
instruction = "generate a title for this text: " | |
text = instruction + text | |
return self.llm(text, **kwargs) | |
class qa_template: | |
def __init__(self, llm): | |
from langchain.chains.retrieval_qa.base import BaseRetrievalQA | |
self.llm = llm | |
self.qa_inf: BaseRetrievalQA | |
def load(self, knowledge_base): | |
"""Load knowledge base | |
Args: | |
knowledge_base (str): knowledge base to load | |
Returns: | |
BaseRetrievalQA: (optional to use) returns QA interface | |
""" | |
from utils import LangChainChunker | |
from langchain.vectorstores import Chroma | |
from langchain.chains import RetrievalQA | |
embeds = HuggingFaceInstructEmbeddings(model_name="hkunlp/instructor-large") | |
chunker = LangChainChunker(knowledge_base) | |
chunks = chunker.chunker(size=512) | |
db = Chroma.from_texts(chunks, embeds) | |
retriever = db.as_retriever() | |
qa_inf = RetrievalQA.from_chain_type( | |
llm=self.llm, chain_type="stuff", retriever=retriever | |
) | |
self.qa_inf = qa_inf | |
return qa_inf | |
def start_gradio(self, title: str): | |
"""Start gradio interface | |
Returns: | |
_type_: _description_ | |
""" | |
import gradio as gr | |
def interface(msg, history): | |
res = self.qa_inf.run(msg) | |
return str(res) | |
ui = gr.ChatInterface( | |
fn=interface, | |
examples=["What is the video about?", "key points of the video"], | |
title=f"Question Mode - {title}", | |
) | |
ui.launch() | |