Garush65 commited on
Commit
4f9fa8f
·
verified ·
1 Parent(s): d463102

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -25
app.py CHANGED
@@ -5,29 +5,30 @@ from huggingface_hub import hf_hub_download
5
  from fastapi.middleware.cors import CORSMiddleware
6
  import os
7
 
8
- # --- КОНФИГУРАЦИЯ ---
9
- REPO_ID = "bartowski/Qwen2.5-7B-Instruct-GGUF"
10
- FILENAME = "Qwen2.5-7B-Instruct-Q4_K_M.gguf"
 
11
 
12
  print(f"System: Начинаю загрузку {FILENAME}...")
13
 
14
  try:
15
  model_path = hf_hub_download(repo_id=REPO_ID, filename=FILENAME)
16
- print(f"System: Модель загружена: {model_path}")
17
  except Exception as e:
18
- print(f"CRITICAL: Ошибка скачивания: {e}")
19
  raise e
20
 
21
- # --- ИНИЦИАЛИЗАЦИЯ (ОПТИМИЗИРОВАННАЯ) ---
22
- print("System: Загрузка в RAM...")
 
23
  llm = Llama(
24
  model_path=model_path,
25
- n_ctx=2048, # Брат, ставим 2048 чтобы экономить память
26
- n_threads=4, # Все ядра CPU
27
- n_batch=512, # Обработка пакетами
28
  verbose=False
29
  )
30
- print("System: Apex Engine готов.")
31
 
32
  app = FastAPI()
33
 
@@ -45,36 +46,39 @@ class AnalysisRequest(BaseModel):
45
 
46
  @app.get("/")
47
  def home():
48
- return {"status": "Apex Engine Online", "model": "7B-Optimized"}
49
 
50
  @app.post("/analyze")
51
  def analyze(req: AnalysisRequest):
52
- print(f"Запрос получен: {req.query[:50]}...") # Логируем приход запроса
53
 
 
54
  prompt = f"""<|im_start|>system
55
- Ты — Apex. Отвечай точно и кратко на русском языке.
 
 
56
  <|im_end|>
57
  <|im_start|>user
58
- Контекст: {req.context[:1000]}
 
59
 
60
- Вопрос: {req.query}
 
61
  <|im_end|>
62
  <|im_start|>assistant
63
  """
64
  try:
65
- # Генерация
66
  output = llm(
67
  prompt,
68
- max_tokens=512, # Ограничим длину, чтобы не было таймаута
69
- temperature=0.3,
70
  stop=["<|im_end|>"],
71
  echo=False
72
  )
73
- text_result = output["choices"][0]["text"].strip()
74
- print("Ответ сгенерирован успешно.")
75
- return {"result": text_result}
76
 
77
  except Exception as e:
78
- print(f"ОШИБКА ГЕНЕРАЦИИ: {e}")
79
- # Возвращаем ошибку клиенту, чтобы понимать что случилось
80
- raise HTTPException(status_code=500, detail=str(e))
 
5
  from fastapi.middleware.cors import CORSMiddleware
6
  import os
7
 
8
+ # --- НАСТРОЙКА "МАЛЕНЬКОГО МОНСТРА" ---
9
+ # Qwen 2.5 3B - Идеальный баланс. Легкая, но очень умная.
10
+ REPO_ID = "bartowski/Qwen2.5-3B-Instruct-GGUF"
11
+ FILENAME = "Qwen2.5-3B-Instruct-Q4_K_M.gguf"
12
 
13
  print(f"System: Начинаю загрузку {FILENAME}...")
14
 
15
  try:
16
  model_path = hf_hub_download(repo_id=REPO_ID, filename=FILENAME)
17
+ print(f"System: Модель готова: {model_path}")
18
  except Exception as e:
19
+ print(f"CRITICAL: Не удалось скачать модель: {e}")
20
  raise e
21
 
22
+ # --- ЗАПУСК МОЗГА ---
23
+ print("System: Загрузка в память...")
24
+ # Так как модель легкая (3B), мы можем дать ей БОЛЬШЕ памяти под контекст (4096)
25
  llm = Llama(
26
  model_path=model_path,
27
+ n_ctx=4096, # Большое окно памяти (влезет много текста)
28
+ n_threads=4, # Используем все ядра
 
29
  verbose=False
30
  )
31
+ print("System: Apex Engine (Fast Mode) готов.")
32
 
33
  app = FastAPI()
34
 
 
46
 
47
  @app.get("/")
48
  def home():
49
+ return {"status": "Apex Engine is Running", "model": "Qwen 2.5 3B (Fast & Smart)"}
50
 
51
  @app.post("/analyze")
52
  def analyze(req: AnalysisRequest):
53
+ print(f"Запрос: {req.query[:50]}...")
54
 
55
+ # Системный промпт - говорим ей быть умной
56
  prompt = f"""<|im_start|>system
57
+ Ты — Apex, умный аналитический помощник.
58
+ Твоя задача: внимательно прочитать контекст и дать точный ответ на вопрос пользователя на русском языке.
59
+ Не выдумывай факты, используй только предоставленный контекст и свои знания.
60
  <|im_end|>
61
  <|im_start|>user
62
+ Контекст:
63
+ {req.context}
64
 
65
+ Вопрос:
66
+ {req.query}
67
  <|im_end|>
68
  <|im_start|>assistant
69
  """
70
  try:
 
71
  output = llm(
72
  prompt,
73
+ max_tokens=700, # Длинный ответ разрешен
74
+ temperature=0.3, # Креативность в меру
75
  stop=["<|im_end|>"],
76
  echo=False
77
  )
78
+
79
+ result_text = output["choices"][0]["text"].strip()
80
+ return {"result": result_text}
81
 
82
  except Exception as e:
83
+ print(f"ERROR: {e}")
84
+ raise HTTPException(status_code=500, detail="Ошибка обработки запроса")