Spaces:
Sleeping
Sleeping
Download src/chatbot_generate.py from Sharanlekka/ExclusibleBot: direct link, hf CLI and curl.
- Browser
- Download file 2.04 kB
-
https://huggingface.co/spaces/Sharanlekka/ExclusibleBot/resolve/main/src/chatbot_generate.py
- Command line
-
hf download hf://spaces/Sharanlekka/ExclusibleBot/src/chatbot_generate.py
-
curl -L -o chatbot_generate.py https://huggingface.co/spaces/Sharanlekka/ExclusibleBot/resolve/main/src/chatbot_generate.py
2.04 kB
| from transformers import AutoTokenizer,TextIteratorStreamer,AutoModelForCausalLM | |
| import torch | |
| from threading import Thread | |
| from peft import AutoPeftModelForCausalLM | |
| import faiss | |
| from sentence_transformers import SentenceTransformer | |
| import numpy as np | |
| import logging | |
| gateKeeper = SentenceTransformer('all-MiniLM-L6-v2') | |
| index=faiss.read_index("src/Exclusible_bot.index") | |
| # from langchain_core.prompts import ChatPromptTemplate,FewShotChatMessagePromptTemplate | |
| # Few-shot examples in plain text format | |
| tokenizer = AutoTokenizer.from_pretrained("vaibhavss/results") | |
| model=AutoModelForCausalLM.from_pretrained("vaibhavss/results") | |
| tokenizer.pad_token = tokenizer.eos_token | |
| print(tokenizer) | |
| # System prompt style (simulate chat model preamble) | |
| system_prompt = """You are ExclusibleBot, a refined assistant for a premium NFT marketplace focused on luxury digital collectibles and metaverse experiences." | |
| """ | |
| print("Model Intialized") | |
| # Combine everything into one prompt string | |
| def build_prompt(user_input): | |
| return f"{system_prompt}\n\nQuestion: {user_input}\nAnswer:" | |
| def tokenize_input(prompt): | |
| inputs = tokenizer(prompt, return_tensors="pt",truncation=False) | |
| return inputs | |
| def generate_response(prompt): | |
| embeddings = gateKeeper.encode([prompt], convert_to_numpy=True).astype('float32') | |
| embeddings = embeddings / np.linalg.norm(embeddings, axis=1, keepdims=True) | |
| D, I = index.search(embeddings, k=5) | |
| print("embedding scores = ",D) | |
| if D[0][0]<0.2: | |
| yield "I can not help you with that." | |
| return | |
| inputs = tokenize_input(build_prompt(prompt+"?")) | |
| streamer = TextIteratorStreamer(tokenizer, skip_prompt=True,skip_special_tokens=True) | |
| generation_kwargs = dict(inputs, streamer=streamer,max_length=200, do_sample=True, top_k=50, top_p=0.95, temperature=0.1) | |
| thread = Thread(target=model.generate, kwargs=generation_kwargs) | |
| thread.start() | |
| for new_text in streamer: | |
| print(new_text) | |
| if new_text!=" " and new_text!="\n": | |
| yield new_text | |