reikernx commited on
Commit
e07a1f9
·
verified ·
1 Parent(s): c0e113a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -11
app.py CHANGED
@@ -1,20 +1,17 @@
1
  from flask import Flask, request, jsonify
2
  import subprocess
3
 
4
- # Absolute paths
5
- MODEL_PATH = "/app/model/model.gguf"
6
- BINARY_PATH = "/llama.cpp/build/bin/llama-cli" # Correct path
7
- MAX_TOKENS = "256"
8
- THREADS = "4"
9
 
10
  app = Flask(__name__)
11
 
12
  def query_model(system: str, user: str) -> str:
13
- """
14
- Run the local GGUF model using llama.cpp binary.
15
- Combines system + user prompt if system is provided.
16
- """
17
  prompt = f"System: {system}\nUser: {user}" if system else user
 
18
  try:
19
  cmd = [
20
  BINARY_PATH,
@@ -23,20 +20,31 @@ def query_model(system: str, user: str) -> str:
23
  "--prompt", prompt,
24
  "--n_predict", MAX_TOKENS
25
  ]
26
- result = subprocess.run(cmd, capture_output=True, text=True, check=True)
 
 
 
 
 
 
 
27
  return result.stdout.strip() or "No output from model."
 
 
 
28
  except subprocess.CalledProcessError as e:
29
  return f"Error running model:\n{e.stderr or str(e)}"
30
  except Exception as e:
31
  return f"Unexpected error:\n{str(e)}"
32
 
 
33
  @app.route("/api/query", methods=["GET", "POST"])
34
  def api_query():
35
  if request.method == "POST":
36
  data = request.json or {}
37
  user_prompt = data.get("prompt", "")
38
  system_prompt = data.get("system", "")
39
- else: # GET request
40
  user_prompt = request.args.get("prompt", "")
41
  system_prompt = request.args.get("system", "")
42
 
@@ -46,5 +54,10 @@ def api_query():
46
  output = query_model(system_prompt, user_prompt)
47
  return jsonify({"output": output})
48
 
 
 
 
 
 
49
  if __name__ == "__main__":
50
  app.run(host="0.0.0.0", port=7860)
 
1
  from flask import Flask, request, jsonify
2
  import subprocess
3
 
4
+ MODEL_PATH = "/app/model/qwen2.5-coder-1.5b-instruct-q4_k_m.gguf"
5
+ BINARY_PATH = "/llama.cpp/build/bin/llama-cli"
6
+
7
+ MAX_TOKENS = "128" # ↓ reduce for speed (important)
8
+ THREADS = "2" # ↓ safer for HF CPU
9
 
10
  app = Flask(__name__)
11
 
12
  def query_model(system: str, user: str) -> str:
 
 
 
 
13
  prompt = f"System: {system}\nUser: {user}" if system else user
14
+
15
  try:
16
  cmd = [
17
  BINARY_PATH,
 
20
  "--prompt", prompt,
21
  "--n_predict", MAX_TOKENS
22
  ]
23
+
24
+ result = subprocess.run(
25
+ cmd,
26
+ capture_output=True,
27
+ text=True,
28
+ timeout=60 # 🔥 prevents hanging forever
29
+ )
30
+
31
  return result.stdout.strip() or "No output from model."
32
+
33
+ except subprocess.TimeoutExpired:
34
+ return "Error: Model took too long (timeout)."
35
  except subprocess.CalledProcessError as e:
36
  return f"Error running model:\n{e.stderr or str(e)}"
37
  except Exception as e:
38
  return f"Unexpected error:\n{str(e)}"
39
 
40
+
41
  @app.route("/api/query", methods=["GET", "POST"])
42
  def api_query():
43
  if request.method == "POST":
44
  data = request.json or {}
45
  user_prompt = data.get("prompt", "")
46
  system_prompt = data.get("system", "")
47
+ else:
48
  user_prompt = request.args.get("prompt", "")
49
  system_prompt = request.args.get("system", "")
50
 
 
54
  output = query_model(system_prompt, user_prompt)
55
  return jsonify({"output": output})
56
 
57
+
58
+ @app.route("/")
59
+ def home():
60
+ return "API is running"
61
+
62
  if __name__ == "__main__":
63
  app.run(host="0.0.0.0", port=7860)