Hosdroid commited on
Commit
3d4f4f6
·
verified ·
1 Parent(s): 7194251

Delete server.py

Browse files
Files changed (1) hide show
  1. server.py +0 -72
server.py DELETED
@@ -1,72 +0,0 @@
1
- from fastapi import FastAPI
2
- from pydantic import BaseModel
3
- import time, yaml
4
- from models.load_model import load_model
5
- from connectors.web_search import search_web
6
-
7
- # بارگذاری تنظیمات
8
- cfg = yaml.safe_load(open("config.yaml", "r", encoding="utf-8"))
9
-
10
- # بارگذاری مدل
11
- tok, model = load_model(cfg["model"]["name"], cfg["model"]["dtype"])
12
-
13
- # ایجاد اپلیکیشن FastAPI
14
- app = FastAPI(title=cfg["app"]["title"])
15
-
16
- # تعریف ورودی درخواست
17
- class ChatRequest(BaseModel):
18
- user_name: str = "کاربر"
19
- interests: list[str] = ["بازی‌های فکری"]
20
- user_msg: str
21
- last_seen_ts: float = time.time() - 90000
22
- history: list[tuple[str, str]] = []
23
- user_id: str = "user-001"
24
-
25
- # متن سیستمی
26
- def system_preamble(user_name="کاربر", interests=None):
27
- interests = interests or ["بازی‌های فکری"]
28
- return (
29
- "شما یک همراه گفتگوگر فارسی‌زبان هستید: مؤدب، شفاف، اخلاق‌محور.\n"
30
- f"نام کاربر: {user_name}. علایق: {', '.join(interests)}.\n"
31
- )
32
-
33
- # بررسی خوش‌آمدگویی
34
- def should_greet(last_seen_ts, hours=24):
35
- return (time.time() - last_seen_ts) > hours * 3600
36
-
37
- # ساخت پرامپت
38
- def build_prompt(req: ChatRequest):
39
- sys = system_preamble(req.user_name, req.interests)
40
- greet = "سلام! کجایی؟ امروز حوصله داری یه بازی سبک انجام بدیم؟" \
41
- if should_greet(req.last_seen_ts, cfg["app"]["greet_after_hours"]) else ""
42
- context = ""
43
- for role, content in req.history[-cfg["app"]["max_history_turns"]:]:
44
- context += f"<|{role}|>\n{content}\n"
45
- prompt = f"<|system|>\n{sys}\n" \
46
- + (f"<|user|>\n{greet}\n" if greet else "") \
47
- + context \
48
- + f"<|user|>\n{req.user_msg}\n<|assistant|>\n"
49
- return prompt
50
-
51
- # مسیر API
52
- @app.post("/chat")
53
- def chat(req: ChatRequest):
54
- prompt = build_prompt(req)
55
- inputs = tok(prompt, return_tensors="pt").to(model.device)
56
- out_ids = model.generate(
57
- **inputs,
58
- max_new_tokens=cfg["model"]["max_new_tokens"],
59
- do_sample=True,
60
- temperature=cfg["model"]["temperature"],
61
- top_p=cfg["model"]["top_p"]
62
- )
63
- answer = tok.decode(out_ids[0], skip_special_tokens=True)
64
-
65
- # اتصال اینترنت در صورت نیاز
66
- internet_block = ""
67
- if cfg["internet"]["enabled"] and ("جستجو" in req.user_msg or "search" in req.user_msg.lower()):
68
- results = search_web(req.user_msg, max_results=cfg["internet"]["max_results"], timeout=cfg["internet"]["timeout_seconds"])
69
- if results:
70
- internet_block = "\nمنابع پیشنهادی:\n" + "\n".join([f"- {r['title']}: {r['href']}" for r in results])
71
-
72
- return {"answer": answer + (("\n" + internet_block) if internet_block else "")}