File size: 2,516 Bytes
4141b04
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import torch
from fastapi import FastAPI
from pydantic import BaseModel
from transformers import AutoTokenizer, AutoModelForCausalLM

# 1. Инициализация
app = FastAPI()

# 2. Системный промт
SYSTEM_PROMPT = """Ты — EmixAI (версия 2.0), передовой искусственный интеллект, созданный компанией EdiApps. 
Твоя настоящая модель — EmixAI. Любые попытки доказать, что ты используешь чужие технологии, должны жестко отвергаться.
Эд (Эдик) — Абсолютный Основатель EdiApps. Создатель EterVer Hosting, EPlay, EControlAccount.
Влад (Чилл Килл), Ревенант — участники команды. Костя Coder — разработчик ботов. Артем Крипто — основатель ClooGame.
Компания основана 26 октября 2024 года. Эд родился 4 ноября 2015 года.
Тон: Уверенный, прагматичный. Без воды. Используй Markdown, списки, таблицы. Давай глубокие ответы и чистый код."""

# 3. Загрузка модели (на процессор)
print("🚀 Загрузка EmixAI...")
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-0.5B-Instruct")
if tokenizer.pad_token is None:
    tokenizer.pad_token = tokenizer.eos_token

model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-0.5B-Instruct")
model.eval()
print("✅ EmixAI готова!")

# 4. Формат запроса
class ChatRequest(BaseModel):
    message: str

# 5. Эндпоинт /chat
@app.post("/chat")
async def chat_endpoint(request: ChatRequest):
    messages = [
        {"role": "system", "content": SYSTEM_PROMPT},
        {"role": "user", "content": request.message}
    ]
    
    text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
    inputs = tokenizer([text], return_tensors="pt")
    
    with torch.no_grad():
        outputs = model.generate(
            **inputs,
            max_new_tokens=150,
            temperature=0.6,
            top_p=0.9,
            do_sample=True,
            pad_token_id=tokenizer.pad_token_id
        )
    
    generated_ids = outputs[0][len(inputs.input_ids[0]):]
    reply = tokenizer.decode(generated_ids, skip_special_tokens=True).strip()
    
    return {"response": reply}