|
|
import gradio as gr |
|
|
from huggingface_hub import hf_hub_download |
|
|
from llama_cpp import Llama |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MODEL_REPO = "mlabonne/Meta-Llama-3.1-8B-Instruct-abliterated-GGUF" |
|
|
MODEL_FILE = "Meta-Llama-3.1-8B-Instruct-abliterated.Q4_K_M.gguf" |
|
|
|
|
|
print("Downloading model from HF Hub...") |
|
|
model_path = hf_hub_download( |
|
|
repo_id=MODEL_REPO, |
|
|
filename=MODEL_FILE |
|
|
) |
|
|
print(f"Model downloaded to: {model_path}") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
llm = Llama( |
|
|
model_path=model_path, |
|
|
n_gpu_layers=-1, |
|
|
n_ctx=4096, |
|
|
chat_format="llama-3", |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def chat_stream(message, history): |
|
|
|
|
|
messages = [{"role": "system", "content": "You are a helpful assistant."}] |
|
|
|
|
|
|
|
|
for user_msg, bot_msg in history: |
|
|
messages.append({"role": "user", "content": user_msg}) |
|
|
if bot_msg: |
|
|
messages.append({"role": "assistant", "content": bot_msg}) |
|
|
|
|
|
|
|
|
messages.append({"role": "user", "content": message}) |
|
|
|
|
|
partial = "" |
|
|
|
|
|
|
|
|
for chunk in llm.create_chat_completion(messages=messages, stream=True): |
|
|
delta = chunk["choices"][0]["delta"] |
|
|
if "content" in delta: |
|
|
partial += delta["content"] |
|
|
yield partial |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gr.ChatInterface( |
|
|
fn=chat_stream, |
|
|
title="Llama.cpp Chat (Streaming, Auto-Download Model)", |
|
|
chatbot=gr.Chatbot(height=600), |
|
|
textbox=gr.Textbox(placeholder="Ask me anything...", container=True), |
|
|
examples=["Hello!", "Write a poem.", "Explain how gravity works."], |
|
|
retry_btn=None, |
|
|
undo_btn=None, |
|
|
).launch() |
|
|
|