Garush65 commited on
Commit
58c0c73
·
verified ·
1 Parent(s): 222076e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +86 -37
app.py CHANGED
@@ -1,37 +1,53 @@
1
  from fastapi import FastAPI, HTTPException
2
  from pydantic import BaseModel
 
3
  from llama_cpp import Llama
4
  from huggingface_hub import hf_hub_download
5
- from fastapi.middleware.cors import CORSMiddleware
6
  import os
 
 
 
 
 
7
 
8
- # --- РЕЖИМ "ТУРБО" (1.5B) ---
9
- # Это модель весом всего 1 ГБ. Она очень быстрая.
10
- # При этом Qwen 2.5 даже в размере 1.5B умнее старых моделей на 7B.
11
- REPO_ID = "bartowski/Qwen2.5-1.5B-Instruct-GGUF"
12
- FILENAME = "Qwen2.5-1.5B-Instruct-Q4_K_M.gguf"
13
 
14
- print(f"System: Включаю турбо-режим. Качаю {FILENAME}...")
15
 
16
  try:
17
- model_path = hf_hub_download(repo_id=REPO_ID, filename=FILENAME)
18
- print(f"System: Модель загружена: {model_path}")
 
 
19
  except Exception as e:
20
- print(f"CRITICAL: Ошибка: {e}")
21
- raise e
 
 
 
 
 
22
 
23
- # --- НАСТРОЙКА СКОРОСТИ ---
24
- print("System: Прогрев двигателя...")
25
  llm = Llama(
26
- model_path=model_path,
27
- n_ctx=2048, # Уменьшили память до 2048 для скорости (этого хватит для страницы текста)
28
- n_batch=512, # Обрабатываем большими кусками
29
- n_threads=6, # Просим сервер использовать больше ядер (если дадут)
30
  verbose=False
31
  )
32
- print("System: Apex Turbo готов.")
33
 
34
- app = FastAPI()
 
 
 
 
 
 
 
 
 
 
35
 
36
  app.add_middleware(
37
  CORSMiddleware,
@@ -41,42 +57,75 @@ app.add_middleware(
41
  allow_headers=["*"],
42
  )
43
 
 
 
 
 
44
  class AnalysisRequest(BaseModel):
45
  context: str
46
  query: str
47
 
 
 
 
 
48
  @app.get("/")
49
- def home():
50
- return {"status": "Apex Turbo (1.5B)", "speed": "Maximum"}
 
 
 
 
 
51
 
52
  @app.post("/analyze")
53
  def analyze(req: AnalysisRequest):
54
- print(f"Fast Request: {req.query[:30]}...")
55
-
56
- # Очень четкий промпт, чтобы она не лила воду (это тоже ускоряет)
57
- prompt = f"""<|im_start|>system
58
- Ты — Apex. Анализируй контекст. Отвечай кратко, четко и по делу на русском языке.
 
 
 
 
 
 
 
 
 
59
  <|im_end|>
 
60
  <|im_start|>user
61
- Контекст:
62
  {req.context}
63
 
64
- Вопрос:
65
  {req.query}
66
  <|im_end|>
 
67
  <|im_start|>assistant
68
  """
69
- try:
70
  output = llm(
71
- prompt,
72
- max_tokens=300, # Ограничиваем длину ответа, чтобы отдал результат мгновенно
73
- temperature=0.2, # Минимум фантазии, максимум фактов
 
74
  stop=["<|im_end|>"],
75
  echo=False
76
  )
77
-
78
- return {"result": output["choices"][0]["text"].strip()}
79
-
 
 
 
 
 
 
80
  except Exception as e:
81
- print(f"Error: {e}")
82
- raise HTTPException(status_code=500, detail="Ошибка генерации")
 
 
 
1
  from fastapi import FastAPI, HTTPException
2
  from pydantic import BaseModel
3
+ from fastapi.middleware.cors import CORSMiddleware
4
  from llama_cpp import Llama
5
  from huggingface_hub import hf_hub_download
 
6
  import os
7
+ import multiprocessing
8
+
9
+ # =========================================================
10
+ # MODEL CONFIG (WORLD-LEVEL BALANCE)
11
+ # =========================================================
12
 
13
+ REPO_ID = "bartowski/Qwen2.5-3B-Instruct-GGUF"
14
+ FILENAME = "Qwen2.5-3B-Instruct-Q4_K_M.gguf"
 
 
 
15
 
16
+ print(f"[SYSTEM] Downloading model: {FILENAME}")
17
 
18
  try:
19
+ MODEL_PATH = hf_hub_download(
20
+ repo_id=REPO_ID,
21
+ filename=FILENAME
22
+ )
23
  except Exception as e:
24
+ raise RuntimeError(f"Model download failed: {e}")
25
+
26
+ # =========================================================
27
+ # LLM INITIALIZATION
28
+ # =========================================================
29
+
30
+ print("[SYSTEM] Initializing Apex Engine...")
31
 
 
 
32
  llm = Llama(
33
+ model_path=MODEL_PATH,
34
+ n_ctx=2048,
35
+ n_batch=512,
36
+ n_threads=multiprocessing.cpu_count(),
37
  verbose=False
38
  )
 
39
 
40
+ print("[SYSTEM] Apex Engine READY")
41
+
42
+ # =========================================================
43
+ # FASTAPI APP
44
+ # =========================================================
45
+
46
+ app = FastAPI(
47
+ title="Apex Engine",
48
+ version="1.0",
49
+ description="High-performance reasoning backend"
50
+ )
51
 
52
  app.add_middleware(
53
  CORSMiddleware,
 
57
  allow_headers=["*"],
58
  )
59
 
60
+ # =========================================================
61
+ # DATA MODELS
62
+ # =========================================================
63
+
64
  class AnalysisRequest(BaseModel):
65
  context: str
66
  query: str
67
 
68
+ # =========================================================
69
+ # ROUTES
70
+ # =========================================================
71
+
72
  @app.get("/")
73
+ def health():
74
+ return {
75
+ "status": "online",
76
+ "engine": "Apex",
77
+ "model": "Qwen2.5-3B",
78
+ "mode": "high-reasoning"
79
+ }
80
 
81
  @app.post("/analyze")
82
  def analyze(req: AnalysisRequest):
83
+ try:
84
+ prompt = f"""
85
+ <|im_start|>system
86
+ Ты Apex, аналитический ИИ мирового уровня.
87
+
88
+ СТРОГИЕ ПРАВИЛА:
89
+ - Используй ТОЛЬКО данный контекст
90
+ - НЕ додумывай факты
91
+ - Если данных недостаточно — скажи об этом
92
+ - Отвечай чётко, логично и по делу
93
+ - После ответа выполни краткую самопроверку логики
94
+
95
+ Язык ответа: русский
96
+ Формат: структурированный текст
97
  <|im_end|>
98
+
99
  <|im_start|>user
100
+ КОНТЕКСТ:
101
  {req.context}
102
 
103
+ ВОПРОС:
104
  {req.query}
105
  <|im_end|>
106
+
107
  <|im_start|>assistant
108
  """
109
+
110
  output = llm(
111
+ prompt,
112
+ max_tokens=400,
113
+ temperature=0.15,
114
+ top_p=0.9,
115
  stop=["<|im_end|>"],
116
  echo=False
117
  )
118
+
119
+ answer = output["choices"][0]["text"].strip()
120
+
121
+ return {
122
+ "result": answer,
123
+ "model": "Qwen2.5-3B",
124
+ "engine": "Apex"
125
+ }
126
+
127
  except Exception as e:
128
+ raise HTTPException(
129
+ status_code=500,
130
+ detail=f"Inference error: {str(e)}"
131
+ )