Garush65 commited on
Commit
d463102
·
verified ·
1 Parent(s): 868dc46

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -38
app.py CHANGED
@@ -1,40 +1,34 @@
1
- from fastapi import FastAPI
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
- # --- КОНФИГУРАЦИЯ МОДЕЛИ (ИСПРАВЛЕНО) ---
9
- # Используем репозиторий bartowski - это самый надежный источник GGUF
10
  REPO_ID = "bartowski/Qwen2.5-7B-Instruct-GGUF"
11
- # Точное имя файла (обрати внимание на большие буквы, это важно!)
12
  FILENAME = "Qwen2.5-7B-Instruct-Q4_K_M.gguf"
13
 
14
- print(f"System: Начинаю загрузку модели {FILENAME} из {REPO_ID}...")
15
 
16
  try:
17
- model_path = hf_hub_download(
18
- repo_id=REPO_ID,
19
- filename=FILENAME
20
- )
21
- print(f"System: Модель успешно скачана: {model_path}")
22
  except Exception as e:
23
- print(f"CRITICAL ERROR: Ошибка загрузки. Проверь интернет или имя файла. {e}")
24
  raise e
25
 
26
- # --- ИНИЦИАЛИЗАЦИЯ LLM ---
27
- print("System: Запуск нейросети в память...")
28
- # n_ctx=4096 - безопасное значение для HF Spaces (чтобы не вылетело по памяти)
29
  llm = Llama(
30
  model_path=model_path,
31
- n_ctx=4096,
32
- n_threads=4,
33
- verbose=False
 
34
  )
35
- print("System: Apex Engine готов к работе.")
36
 
37
- # --- API ---
38
  app = FastAPI()
39
 
40
  app.add_middleware(
@@ -51,32 +45,36 @@ class AnalysisRequest(BaseModel):
51
 
52
  @app.get("/")
53
  def home():
54
- return {"status": "Apex Engine (7B Model) is Online", "space": "HuggingFace"}
55
 
56
  @app.post("/analyze")
57
  def analyze(req: AnalysisRequest):
 
 
58
  prompt = f"""<|im_start|>system
59
- Ты — Apex, передовой аналитический ИИ.
60
- Твоя задача: проанализировать контекст и дать подробный, логичный и обоснованный ответ на русском языке.
61
- Используй академический стиль, но говори понятно.
62
  <|im_end|>
63
  <|im_start|>user
64
- Контекст:
65
- {req.context}
66
 
67
- Вопрос:
68
- {req.query}
69
  <|im_end|>
70
  <|im_start|>assistant
71
  """
72
-
73
- output = llm(
74
- prompt,
75
- max_tokens=1024,
76
- temperature=0.3,
77
- top_p=0.9,
78
- stop=["<|im_end|>"],
79
- echo=False
80
- )
81
-
82
- return {"result": output["choices"][0]["text"].strip()}
 
 
 
 
 
 
 
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
+ # --- КОНФИГУРАЦИЯ ---
 
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
 
34
  app.add_middleware(
 
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))