|
|
import gradio as gr |
|
|
from llama_cpp import Llama |
|
|
from huggingface_hub import snapshot_download |
|
|
import os |
|
|
|
|
|
|
|
|
MODEL_REPO = "mradermacher/DeepHat-V1-7B-GGUF" |
|
|
MODEL_FILE = "DeepHat-V1-7B.Q4_K_M.gguf" |
|
|
LOCAL_PATH = "./models/" |
|
|
|
|
|
|
|
|
def load_model(): |
|
|
os.makedirs(LOCAL_PATH, exist_ok=True) |
|
|
model_path = snapshot_download( |
|
|
repo_id=MODEL_REPO, |
|
|
filename=MODEL_FILE, |
|
|
local_dir=LOCAL_PATH, |
|
|
local_dir_use_symlinks=False |
|
|
) |
|
|
full_path = os.path.join(model_path, MODEL_FILE) |
|
|
|
|
|
llm = Llama( |
|
|
model_path=full_path, |
|
|
n_ctx=2048, |
|
|
n_threads=4, |
|
|
verbose=False |
|
|
) |
|
|
return llm |
|
|
|
|
|
|
|
|
print("Baixando DeepHat... (pode demorar na CPU)") |
|
|
llm = load_model() |
|
|
|
|
|
def generate_response(prompt, max_tokens=500): |
|
|
full_prompt = f"<|im_start|>user\n{prompt}<|im_end|>\n<|im_start|>assistant\n" |
|
|
output = llm( |
|
|
full_prompt, |
|
|
max_tokens=max_tokens, |
|
|
temperature=0.7, |
|
|
top_p=0.9, |
|
|
stop=["<|im_end|>", "</s>"] |
|
|
) |
|
|
return output['choices'][0]['text'].strip() |
|
|
|
|
|
|
|
|
with gr.Blocks(title="DeepHat Uncensored Chat") as demo: |
|
|
gr.Markdown("# DeepHat - IA Uncensored pra Cibersegurança & Hacking Ético") |
|
|
chatbot = gr.Chatbot() |
|
|
msg = gr.Textbox(placeholder="Pergunte sobre hacking WiFi, pentest ou censura...") |
|
|
clear = gr.Button("Clear") |
|
|
|
|
|
def respond(message, chat_history): |
|
|
bot_message = generate_response(message) |
|
|
chat_history.append((message, bot_message)) |
|
|
return "", chat_history |
|
|
|
|
|
msg.submit(respond, [msg, chatbot], [msg, chatbot]) |
|
|
clear.click(lambda: None, None, chatbot, queue=False) |
|
|
|
|
|
if __name__ == "__main__": |
|
|
demo.launch() |