Spaces:
Runtime error
Runtime error
from langchain_community.llms import CTransformers | |
from langchain.chains import LLMChain | |
from langchain.prompts import PromptTemplate | |
from langchain.chains import RetrievalQA | |
from langchain_community.vectorstores import FAISS | |
from langchain_huggingface import HuggingFaceEmbeddings | |
model_name = "vilm/vinallama-2.7b-chat-GGUF" | |
model_file_path = './models/vinallama-7b-chat_q5_0.gguf' | |
model_embedding_name = 'bkai-foundation-models/vietnamese-bi-encoder' | |
def load_model(): | |
llm = CTransformers( | |
model = model_file_path, | |
model_type = 'llama', | |
max_new_tokens = 1024, | |
temperature = 0.01, | |
config = { | |
'context_length': 1024, | |
}, | |
) | |
return llm | |
def create_prompt(template): | |
prompt = PromptTemplate( | |
template=template, | |
input_variables=['context', 'question'], | |
) | |
return prompt | |
def create_chain(llm, prompt, db): | |
chain = RetrievalQA.from_chain_type( | |
llm = llm, | |
chain_type = 'stuff', | |
retriever = db.as_retriever( search_kwargs={"k": 3}), | |
return_source_documents = True, | |
chain_type_kwargs = { | |
'prompt': prompt, | |
}, | |
) | |
return chain | |
vectorDB_path = './db' | |
def load_db(): | |
model_kwargs = {'device': 'cuda'} | |
encode_kwargs = {'normalize_embeddings': False} | |
embeddings = HuggingFaceEmbeddings( | |
model_name=model_embedding_name, | |
model_kwargs=model_kwargs, | |
encode_kwargs=encode_kwargs | |
) | |
db = FAISS.load_local(vectorDB_path, embeddings, allow_dangerous_deserialization=True) | |
return db | |
db = load_db() | |
llm = load_model() | |
template = """<|im_start|>system | |
Sử dụng thông tin sau đây để trả lời câu hỏi. Nếu bạn không biết câu trả lời, hãy nói không biết, đừng cố tạo ra câu trả lời \n | |
{context}<|im_end|>\n | |
<|im_start|>user\n | |
{question}!<|im_end|>\n | |
<|im_start|>assistant | |
""" | |
prompt = create_prompt(template=template) | |
llm_chain = create_chain(llm, prompt, db) | |
# Test the chain | |
# question = "2/9 ở Việt Nam là ngày gì ?" | |
question = "Diễn biến Chiến dịch biên giới thu đông 1950" | |
response = llm_chain.invoke({"query": question}) | |
print(response) | |
print() | |
print(response['query']) | |
print(response['result']) | |
print() | |
print(response['source_documents']) | |