apex-engine / app.py
Garush65's picture
Update app.py
222076e verified
raw
history blame
2.83 kB
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from llama_cpp import Llama
from huggingface_hub import hf_hub_download
from fastapi.middleware.cors import CORSMiddleware
import os
# --- РЕЖИМ "ТУРБО" (1.5B) ---
# Это модель весом всего 1 ГБ. Она очень быстрая.
# При этом Qwen 2.5 даже в размере 1.5B умнее старых моделей на 7B.
REPO_ID = "bartowski/Qwen2.5-1.5B-Instruct-GGUF"
FILENAME = "Qwen2.5-1.5B-Instruct-Q4_K_M.gguf"
print(f"System: Включаю турбо-режим. Качаю {FILENAME}...")
try:
model_path = hf_hub_download(repo_id=REPO_ID, filename=FILENAME)
print(f"System: Модель загружена: {model_path}")
except Exception as e:
print(f"CRITICAL: Ошибка: {e}")
raise e
# --- НАСТРОЙКА СКОРОСТИ ---
print("System: Прогрев двигателя...")
llm = Llama(
model_path=model_path,
n_ctx=2048, # Уменьшили память до 2048 для скорости (этого хватит для страницы текста)
n_batch=512, # Обрабатываем большими кусками
n_threads=6, # Просим сервер использовать больше ядер (если дадут)
verbose=False
)
print("System: Apex Turbo готов.")
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
class AnalysisRequest(BaseModel):
context: str
query: str
@app.get("/")
def home():
return {"status": "Apex Turbo (1.5B)", "speed": "Maximum"}
@app.post("/analyze")
def analyze(req: AnalysisRequest):
print(f"Fast Request: {req.query[:30]}...")
# Очень четкий промпт, чтобы она не лила воду (это тоже ускоряет)
prompt = f"""<|im_start|>system
Ты — Apex. Анализируй контекст. Отвечай кратко, четко и по делу на русском языке.
<|im_end|>
<|im_start|>user
Контекст:
{req.context}
Вопрос:
{req.query}
<|im_end|>
<|im_start|>assistant
"""
try:
output = llm(
prompt,
max_tokens=300, # Ограничиваем длину ответа, чтобы отдал результат мгновенно
temperature=0.2, # Минимум фантазии, максимум фактов
stop=["<|im_end|>"],
echo=False
)
return {"result": output["choices"][0]["text"].strip()}
except Exception as e:
print(f"Error: {e}")
raise HTTPException(status_code=500, detail="Ошибка генерации")