| import os |
| import gradio as gr |
| from llama_cpp import Llama |
|
|
| |
| os.environ["OMP_NUM_THREADS"] = "8" |
| os.environ["OPENBLAS_NUM_THREADS"] = "8" |
| os.environ["MKL_NUM_THREADS"] = "8" |
|
|
| llm = Llama.from_pretrained( |
| repo_id="summerMC/ume-GGUF", |
| filename="ume-Q4_K_M.gguf", |
| n_ctx=768, |
| n_threads=8, |
| n_batch=512, |
| n_ubatch=128, |
| use_mmap=True, |
| use_mlock=False, |
| logits_all=False, |
| embedding=False, |
| verbose=False, |
| ) |
|
|
| def respond(message, history, system_message, max_tokens, temperature, top_p): |
| messages = [{"role": "system", "content": system_message}] |
|
|
| |
| 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}) |
|
|
| response = "" |
| for chunk in llm.create_chat_completion( |
| messages=messages, |
| max_tokens=min(int(max_tokens), 256), |
| temperature=float(temperature), |
| top_p=float(top_p), |
| stream=True, |
| ): |
| delta = chunk["choices"][0].get("delta", {}) |
| token = delta.get("content", "") |
| response += token |
| yield response |
|
|
|
|
| chatbot = gr.ChatInterface( |
| fn=respond, |
| additional_inputs=[ |
| gr.Textbox( |
| value="You are a concise and helpful assistant.", |
| label="System message" |
| ), |
| gr.Slider(1, 256, value=128, step=1, label="Max new tokens"), |
| gr.Slider(0.1, 1.5, value=0.7, step=0.1, label="Temperature"), |
| gr.Slider(0.1, 1.0, value=0.9, step=0.05, label="Top-p"), |
| ], |
| ) |
|
|
| with gr.Blocks() as demo: |
| chatbot.render() |
|
|
| if __name__ == "__main__": |
| demo.queue(default_concurrency_limit=1).launch() |