eleeter commited on
Commit
d60852f
Β·
verified Β·
1 Parent(s): 454aaea

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +64 -42
app.py CHANGED
@@ -1,55 +1,77 @@
1
- import gradio as gr
2
- from openai import OpenAI
3
  import os
 
 
 
 
4
 
5
- MODEL_ID = "llama3.1-8b"
 
6
 
7
- # Retrieve the Cerebras key from Space Secrets
8
- CEREBRAS_API_KEY = os.getenv("CEREBRAS_API_KEY")
 
 
 
 
 
 
 
 
9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  def respond(message, history, system_message, max_tokens, temperature, top_p):
11
- # Initialize the Cerebras client (OpenAI-compatible)
12
- client = OpenAI(
13
- base_url="https://api.cerebras.ai/v1",
14
- api_key=CEREBRAS_API_KEY
15
- )
16
-
17
- messages = [{"role": "system", "content": system_message}]
18
- for user_msg, assistant_msg in history:
19
- if user_msg: messages.append({"role": "user", "content": user_msg})
20
- if assistant_msg: messages.append({"role": "assistant", "content": assistant_msg})
21
- messages.append({"role": "user", "content": message})
22
-
23
- response = ""
24
- try:
25
- stream = client.chat.completions.create(
26
- model=MODEL_ID,
27
- messages=messages,
28
- max_tokens=max_tokens,
29
- temperature=temperature,
30
- top_p=top_p,
31
- stream=True
32
- )
33
-
34
- for chunk in stream:
35
- if chunk.choices[0].delta.content:
36
- token = chunk.choices[0].delta.content
37
- response += token
38
- yield response
39
-
40
- except Exception as e:
41
- yield f"API Error: {str(e)}"
42
 
 
43
  with gr.Blocks() as demo:
44
  gr.Markdown("# πŸ› οΈ Minecraft Modding Log Analyzer")
45
-
46
  with gr.Sidebar():
47
- gr.LoginButton()
48
  gr.Markdown("---")
49
- system_msg = gr.Textbox(value="You are an Elite Minecraft Modder who fixes Fabric and Forge crash logs.", label="System Prompt")
50
- tokens = gr.Slider(128, 8192, value=2048, label="Max Tokens")
51
- temp = gr.Slider(0.1, 1.0, value=0.3, label="Temp")
52
- top_p = gr.Slider(0.1, 1.0, value=0.9, label="Top-P")
 
 
 
 
53
 
54
  gr.ChatInterface(
55
  respond,
 
 
 
1
  import os
2
+ import shutil
3
+ import gradio as gr
4
+ from llama_cpp import Llama
5
+ from huggingface_hub import hf_hub_download
6
 
7
+ # ── Load model onto CPU ──
8
+ MODEL_CACHE = "/tmp/qwen_coder.gguf"
9
 
10
+ if not os.path.exists(MODEL_CACHE) or os.path.getsize(MODEL_CACHE) < 1_000_000:
11
+ print("Downloading model...")
12
+ downloaded = hf_hub_download(
13
+ repo_id="Qwen/Qwen2.5-Coder-0.5B-Instruct-GGUF",
14
+ filename="qwen2.5-coder-0.5b-instruct-q4_k_m.gguf",
15
+ )
16
+ shutil.copy2(downloaded, MODEL_CACHE)
17
+ print("Model cached.")
18
+ else:
19
+ print(f"Cache hit β€” {os.path.getsize(MODEL_CACHE)/1e9:.2f} GB")
20
 
21
+ print("Loading model...")
22
+ llm = Llama(
23
+ model_path=MODEL_CACHE,
24
+ n_ctx=512,
25
+ n_threads=2,
26
+ n_batch=32,
27
+ n_gpu_layers=0,
28
+ use_mlock=False,
29
+ verbose=False,
30
+ )
31
+ print("Model ready!")
32
+
33
+ # ── Inference ──
34
  def respond(message, history, system_message, max_tokens, temperature, top_p):
35
+ # Build ChatML prompt
36
+ prompt = f"<|im_start|>system\n{system_message}<|im_end|>\n"
37
+ for exchange in history[-3:]:
38
+ user_msg = exchange[0] if isinstance(exchange, (list, tuple)) else ""
39
+ asst_msg = exchange[1] if isinstance(exchange, (list, tuple)) else ""
40
+ if user_msg:
41
+ prompt += f"<|im_start|>user\n{user_msg}<|im_end|>\n"
42
+ if asst_msg:
43
+ prompt += f"<|im_start|>assistant\n{asst_msg}<|im_end|>\n"
44
+ prompt += f"<|im_start|>user\n{message}<|im_end|>\n<|im_start|>assistant\n"
45
+
46
+ response_text = ""
47
+ for chunk in llm(
48
+ prompt,
49
+ max_tokens=max_tokens,
50
+ temperature=temperature,
51
+ top_p=top_p,
52
+ top_k=20,
53
+ repeat_penalty=1.1,
54
+ stop=["<|im_end|>", "<|im_start|>"],
55
+ stream=True,
56
+ ):
57
+ response_text += chunk["choices"][0]["text"]
58
+ yield response_text
 
 
 
 
 
 
 
59
 
60
+ # ── UI ──
61
  with gr.Blocks() as demo:
62
  gr.Markdown("# πŸ› οΈ Minecraft Modding Log Analyzer")
63
+
64
  with gr.Sidebar():
65
+ gr.LoginButton()
66
  gr.Markdown("---")
67
+ system_msg = gr.Textbox(
68
+ value="You are an Elite Minecraft Modder who fixes Fabric and Forge crash logs.",
69
+ label="System Prompt",
70
+ lines=4,
71
+ )
72
+ tokens = gr.Slider(128, 2048, value=512, label="Max Tokens")
73
+ temp = gr.Slider(0.1, 1.0, value=0.3, label="Temp")
74
+ top_p = gr.Slider(0.1, 1.0, value=0.9, label="Top-P")
75
 
76
  gr.ChatInterface(
77
  respond,