import os import gradio as gr import copy import llama_cpp from llama_cpp import Llama import random from huggingface_hub import hf_hub_download import time from modules.load_presets import load_presets_value from modules.load_model import * @spaces.GPU def generate_text(message, history, system_prompt, preset, temperature, max_tokens, top_p, top_k, repeat_penalty, model, n_ctx, n_gpu_layers, n_threads, verbose, f16_kv, logits_all, vocab_only, use_mmap, use_mlock, n_batch, last_n_tokens_size, low_vram, rope_freq_base, rope_freq_scale): dir = os.getcwd() global llm llm = Llama( model_path=f"{dir}/models/{model}", n_ctx=n_ctx, n_gpu_layers=n_gpu_layers, n_threads=n_threads, verbose=verbose, f16_kv=f16_kv, logits_all=logits_all, vocab_only=vocab_only, use_mmap=use_mmap, use_mlock=use_mlock, n_batch=n_batch, last_n_tokens_size=last_n_tokens_size, low_vram=low_vram, rope_freq_base=rope_freq_base, rope_freq_scale=rope_freq_scale, ) global_sys_prompt = load_presets_value(preset) + " " + system_prompt temp = "" input_prompt = f"[INST] <>\n{global_sys_prompt}.\n<>\n\n " for interaction in history: input_prompt = input_prompt + str(interaction[0]) + " [/INST] " + str(interaction[1]) + " [INST] " input_prompt = input_prompt + str(message) + " [/INST] " output = llm( input_prompt, temperature=temperature, top_p=top_p, top_k=top_k, repeat_penalty=repeat_penalty, max_tokens=max_tokens, stop=[ "<|prompter|>", "<|endoftext|>", "<|endoftext|> \n", "ASSISTANT:", "USER:", "SYSTEM:", ], stream=True, ) for out in output: stream = copy.deepcopy(out) temp += stream["choices"][0]["text"] yield temp history = ["init", input_prompt]