Mazenbs commited on
Commit
6ca4fa7
·
verified ·
1 Parent(s): 3198251

update app.py

Browse files
Files changed (1) hide show
  1. app.py +63 -9
app.py CHANGED
@@ -1,12 +1,17 @@
 
1
  import gradio as gr
2
- from fastapi import FastAPI, HTTPException
3
  from pydantic import BaseModel
4
  from fastapi.middleware.cors import CORSMiddleware
5
- from embeddingonnx import text_to_embedding
 
6
 
7
- # -------- FastAPI --------
8
- app = FastAPI(title="Arabic Embedding API")
 
 
9
 
 
10
  app.add_middleware(
11
  CORSMiddleware,
12
  allow_origins=["*"],
@@ -15,12 +20,22 @@ app.add_middleware(
15
  allow_headers=["*"],
16
  )
17
 
 
 
 
18
  class TextRequest(BaseModel):
19
  text: str
20
 
 
 
 
21
  @app.get("/")
22
  def root():
23
- return {"message": "Arabic Embedding API is running "}
 
 
 
 
24
 
25
  @app.post("/embed")
26
  def embed_post(req: TextRequest):
@@ -30,14 +45,53 @@ def embed_post(req: TextRequest):
30
  vec = text_to_embedding(text, normalize=True)
31
  return {"embedding": vec.tolist()}
32
 
33
- # -------- Gradio UI --------
34
- def gr_ui(text):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  if not text.strip():
36
  return "❌ النص فارغ"
37
  vec = text_to_embedding(text, normalize=True)
38
  return str(vec.tolist())
39
 
40
- demo = gr.Interface(fn=gr_ui, inputs="text", outputs="text", title="Arabic Embedding API")
 
 
 
 
 
 
41
 
42
- # ربط Gradio مع FastAPI
43
  gr.mount_gradio_app(app, demo, path="/gradio")
 
 
 
 
 
 
 
 
1
+ # app.py
2
  import gradio as gr
3
+ from fastapi import FastAPI, HTTPException, Query
4
  from pydantic import BaseModel
5
  from fastapi.middleware.cors import CORSMiddleware
6
+ from embeddingonnx import text_to_embedding, query_to_embedding
7
+ import numpy as np
8
 
9
+ # ==============================
10
+ # إنشاء تطبيق FastAPI
11
+ # ==============================
12
+ app = FastAPI(title="Arabic Text Embedding API")
13
 
14
+ # ------------- CORS -------------
15
  app.add_middleware(
16
  CORSMiddleware,
17
  allow_origins=["*"],
 
20
  allow_headers=["*"],
21
  )
22
 
23
+ # ==============================
24
+ # نموذج البيانات الوارد
25
+ # ==============================
26
  class TextRequest(BaseModel):
27
  text: str
28
 
29
+ # ==============================
30
+ # نقاط النهاية REST API
31
+ # ==============================
32
  @app.get("/")
33
  def root():
34
+ return {"message": "Arabic Text Embedding API is running on HF Spaces"}
35
+
36
+ @app.get("/health")
37
+ def health():
38
+ return {"status": "ok"}
39
 
40
  @app.post("/embed")
41
  def embed_post(req: TextRequest):
 
45
  vec = text_to_embedding(text, normalize=True)
46
  return {"embedding": vec.tolist()}
47
 
48
+ @app.post("/query")
49
+ def query_post(req: TextRequest):
50
+ text = req.text.strip()
51
+ if not text:
52
+ raise HTTPException(400, "النص فارغ")
53
+ vec = query_to_embedding(text, normalize=True)
54
+ return {"query_embedding": vec.tolist()}
55
+
56
+ @app.get("/embed")
57
+ def embed_get(text: str = Query(..., description="النص المراد تحويله إلى embedding")):
58
+ text = text.strip()
59
+ if not text:
60
+ raise HTTPException(400, "النص فارغ")
61
+ vec = text_to_embedding(text, normalize=True)
62
+ return {"embedding": vec.tolist()}
63
+
64
+ @app.get("/query")
65
+ def query_get(text: str = Query(..., description="النص المراد تحويله إلى query embedding")):
66
+ text = text.strip()
67
+ if not text:
68
+ raise HTTPException(400, "النص فارغ")
69
+ vec = query_to_embedding(text, normalize=True)
70
+ return {"query_embedding": vec.tolist()}
71
+
72
+ # ==============================
73
+ # واجهة Gradio
74
+ # ==============================
75
+ def gradio_embed(text):
76
  if not text.strip():
77
  return "❌ النص فارغ"
78
  vec = text_to_embedding(text, normalize=True)
79
  return str(vec.tolist())
80
 
81
+ demo = gr.Interface(
82
+ fn=gradio_embed,
83
+ inputs="text",
84
+ outputs="text",
85
+ title="Arabic Text Embedding",
86
+ description="قم بإدخال نص عربي للحصول على متجه embedding الخاص به."
87
+ )
88
 
89
+ # ربط Gradio مع FastAPI على المسار /gradio
90
  gr.mount_gradio_app(app, demo, path="/gradio")
91
+
92
+ # ==============================
93
+ # تشغيل السيرفر محلياً (اختياري)
94
+ # ==============================
95
+ if __name__ == "__main__":
96
+ import uvicorn
97
+ uvicorn.run(app, host="0.0.0.0", port=8000)