apex-engine / app.py
Garush65's picture
Upload 3 files
7e3b33d verified
raw
history blame
2.5 kB
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
@app.get("/")
def home():
return {"status": "Apex Brain is Running"}
@app.post("/analyze")
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"]}