import gradio as gr from gpt4all import GPT4All from huggingface_hub import hf_hub_download title = "Tamil-LLaMA-7B-Instruct-GGUF (CPU Demo)" description = """ 🔎 [Tamil LLaMA 7B Instruct v0.1](https://huggingface.co/abhinand/tamil-llama-7b-instruct-v0.1) [GGUF format model](https://huggingface.co/abhinand/tamil-llama-7b-instruct-v0.1-gguf). Running the Q5_KM Quantized version. 🔨 Running on free CPU hardware. Suggest duplicating this space to run without a queue. > **Note:** The inference is quite slow as it is running on CPU. """ model_path = "models" model_name = "tamil-llama-7b-v0.1-q5_k_m.gguf" hf_hub_download(repo_id="abhinand/tamil-llama-7b-instruct-v0.1-gguf", filename=model_name, local_dir=model_path, local_dir_use_symlinks=False) print("Start the model init process") model = model = GPT4All(model_name, model_path, allow_download = False, device="cpu") print("Finish the model init process") model.config["promptTemplate"] = """நீங்கள் உதவிகரமான மற்றும் மரியாதைக்குரிய மற்றும் நேர்மையான AI உதவியாளர். பாதுகாப்பாக இருக்கும்போது எப்போதும் முடிந்தவரை உதவிகரமாக பதிலளிக்கவும். உங்கள் பதில்களில் தீங்கு விளைவிக்கும், நெறிமுறையற்ற, இனவெறி, பாலியல், நச்சு, ஆபத்தான அல்லது சட்டவிரோதமான உள்ளடக்கம் இருக்கக்கூடாது. உங்கள் பதில்கள் சமூக சார்பற்றதாகவும் நேர்மறையான இயல்புடையதாகவும் இருப்பதை உறுதிசெய்யவும். ஒரு கேள்விக்கு எந்த அர்த்தமும் இல்லை என்றால் அல்லது அது உண்மையாக ஒத்திசைந்ததாக இல்லை என்றால், சிலவற்றுக்குப் பதிலளிப்பதற்குப் பதிலாக ஏன் என்று விளக்கவும். ஒரு கேள்விக்கான பதில் உங்களுக்குத் தெரியாவிட்டால், தவறான தகவல்களைப் பகிர வேண்டாம். ### Instruction: {0} ### Response: """ model.config["systemPrompt"] = "" model._is_chat_session_activated = False max_new_tokens = 2048 def generator(message, history, temperature, top_p, top_k): prompt = "" for user_message, assistant_message in history: prompt += model.config["promptTemplate"].format(user_message) prompt += model.config["promptTemplate"].format(message) outputs = [] for token in model.generate(prompt=prompt, temp=temperature, top_k = top_k, top_p = top_p, max_tokens = max_new_tokens, streaming=True): outputs.append(token) yield "".join(outputs) def vote(data: gr.LikeData): if data.liked: return else: return chatbot = gr.Chatbot(bubble_full_width=False) additional_inputs=[ gr.Slider( label="temperature", value=0.2, minimum=0.0, maximum=2.0, step=0.05, interactive=True, info="Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.", ), gr.Slider( label="top_p", value=1.0, minimum=0.0, maximum=1.0, step=0.01, interactive=True, info="0.1 means only the tokens comprising the top 10% probability mass are considered. Suggest set to 1 and use temperature. 1 means 100% and will disable it", ), gr.Slider( label="top_k", value=40, minimum=0, maximum=1000, step=1, interactive=True, info="limits candidate tokens to a fixed number after sorting by probability. Setting it higher than the vocabulary size deactivates this limit.", ) ] iface = gr.ChatInterface( fn = generator, title=title, description = description, chatbot=chatbot, additional_inputs=additional_inputs, examples=[ ["வணக்கம், நீங்கள் யார்?"], ["நான் பெரிய பணக்காரன் இல்லை, லேட்டஸ்ட் iPhone-இல் நிறைய பணம் செலவழிக்க வேண்டுமா?"], ["பட்டியலை வரிசைப்படுத்த பைதான் செயல்பாட்டை எழுதவும்."], ["சிவப்பும் மஞ்சளும் கலந்தால் என்ன நிறமாக இருக்கும்?"], ["விரைவாக தூங்குவது எப்படி?"] ] ) with gr.Blocks(css="css/index.css") as demo: chatbot.like(vote, None, None) iface.render() if __name__ == "__main__": demo.queue(max_size=3).launch()