Spaces:
Runtime error
Runtime error
| 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 | |
| def home(): | |
| return {"status": "Apex Turbo (1.5B)", "speed": "Maximum"} | |
| 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="Ошибка генерации") |