YemenEdu commited on
Commit
cf8f928
·
verified ·
1 Parent(s): 8693f58

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +48 -0
app.py ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ from fastapi import FastAPI, Request, HTTPException
3
+ from llama_cpp import Llama
4
+ import logging
5
+
6
+ logging.basicConfig(level=logging.INFO)
7
+ logger = logging.getLogger(__name__)
8
+
9
+ app = FastAPI()
10
+
11
+ try:
12
+ logger.info("⏳ جاري تحميل النماذج...")
13
+ allam_model = Llama(model_path="./allam.gguf", n_ctx=4096, n_threads=4)
14
+ math_model = Llama(model_path="./qwen_math.gguf", n_ctx=4096, n_threads=4)
15
+ logger.info("✅ النماذج جاهزة!")
16
+ except Exception as e:
17
+ logger.error(f"❌ النماذج غير جاهزة بعد: {e}")
18
+
19
+ @app.post("/ask")
20
+ async def ask_assistant(request: Request):
21
+ try:
22
+ data = await request.json()
23
+ prompt = data.get("prompt")
24
+ is_math = data.get("is_math", False)
25
+
26
+ if not prompt:
27
+ raise HTTPException(status_code=400, detail="البرومبت فارغ!")
28
+
29
+ model = math_model if is_math else allam_model
30
+
31
+ formatted_prompt = f"<s>[INST] {prompt} [/INST]" if not is_math else f"<|im_start|>user\n{prompt}<|im_end|>\n<|im_start|>assistant\n"
32
+
33
+ output = model(
34
+ formatted_prompt,
35
+ max_tokens=1024,
36
+ stop=["</s>", "<|im_end|>"],
37
+ echo=False
38
+ )
39
+
40
+ return {"response": output["choices"][0]["text"].strip()}
41
+
42
+ except Exception as e:
43
+ logger.error(f"⚠️ خطأ: {e}")
44
+ return {"error": "النماذج لم تحمل بعد. انتظر حتى يكتمل التحميل."}
45
+
46
+ @app.get("/")
47
+ def home():
48
+ return {"status": "online", "message": "الدماغ اليمني ينبض بالحياة!"}