Spaces:
Runtime error
Runtime error
| from fastapi import FastAPI | |
| from pydantic import BaseModel | |
| from llama_cpp import Llama | |
| from huggingface_hub import hf_hub_download | |
| from fastapi.middleware.cors import CORSMiddleware | |
| # 1. Скачиваем модель прямо при запуске сервера | |
| # Qwen2.5-0.5B-Instruct (умная, понимает русский) | |
| model_name = "Qwen/Qwen2.5-0.5B-Instruct-GGUF" | |
| model_file = "qwen2.5-0.5b-instruct-q4_k_m.gguf" # Самая сбалансированная версия | |
| print(f"Загрузка модели {model_file}...") | |
| model_path = hf_hub_download(repo_id=model_name, filename=model_file) | |
| print("Модель скачана:", model_path) | |
| # 2. Инициализируем нейросеть | |
| llm = Llama( | |
| model_path=model_path, | |
| n_ctx=4096, # Память контекста (статьи википедии влезут) | |
| n_threads=2 # Количество ядер | |
| ) | |
| # 3. Настройка FastAPI | |
| app = FastAPI() | |
| # Разрешаем запросы с твоего сайта (CORS) | |
| 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 Brain is Running"} | |
| def analyze(req: AnalysisRequest): | |
| # Промпт для Qwen (формат ChatML) | |
| prompt = f"""<|im_start|>system | |
| Ты — Apex, эпистемический движок. Твоя цель — проанализировать контекст и ответить на вопрос пользователя. | |
| Отвечай кратко, емко, научно. Используй русский язык. | |
| Если в тексте есть противоречия или белые пятна — укажи на них. | |
| <|im_end|> | |
| <|im_start|>user | |
| Контекст: | |
| {req.context} | |
| Вопрос пользователя: | |
| {req.query} | |
| <|im_end|> | |
| <|im_start|>assistant | |
| """ | |
| # Генерация | |
| output = llm( | |
| prompt, | |
| max_tokens=500, # Длина ответа | |
| temperature=0.3, # Меньше галлюцинаций | |
| stop=["<|im_end|>"], | |
| echo=False | |
| ) | |
| return {"result": output["choices"][0]["text"]} |