allbibek commited on
Commit
9abb457
·
verified ·
1 Parent(s): 34c590f

add 2 endpoint

Browse files
Files changed (1) hide show
  1. app.py +38 -12
app.py CHANGED
@@ -1,10 +1,20 @@
1
  import gradio as gr
2
  from sentence_transformers import SentenceTransformer
 
 
 
 
 
3
 
4
  # Load the model globally to ensure it's only loaded once
5
  # This is crucial for performance and resource management
6
  model = SentenceTransformer("sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2")
7
 
 
 
 
 
 
8
  def get_embedding(text: str):
9
  """
10
  Menghasilkan embedding vector dari teks menggunakan model SentenceTransformer.
@@ -17,22 +27,38 @@ def get_embedding(text: str):
17
  embedding = model.encode(text).tolist()
18
  return embedding
19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  # Gradio Interface
21
  # `fn` adalah fungsi yang akan dieksekusi
22
  # `inputs` adalah jenis input (dalam hal ini, sebuah teks)
23
  # `outputs` adalah jenis output (dalam hal ini, sebuah JSON)
24
  # `api_name` adalah nama endpoint API
25
- demo = gr.Interface(
26
- fn=get_embedding,
27
- inputs=gr.Textbox(label="Masukkan teks"),
28
- outputs=gr.JSON(label="Embedding Vector"),
29
- title="Multilingual Embedding API",
30
- description="Masukkan teks untuk mendapatkan vektor embedding menggunakan model paraphrase-multilingual-MiniLM-L12-v2.",
31
- examples=["Halo dunia!", "Apa kabar hari ini?", "Selamat pagi!"],
32
- allow_flagging="never",
33
- api_name="get_embedding"
34
- )
35
-
36
- # Launch the app
 
37
  if __name__ == "__main__":
38
  demo.queue().launch()
 
1
  import gradio as gr
2
  from sentence_transformers import SentenceTransformer
3
+ from supabase import create_client
4
+ import os
5
+ from dotenv import load_dotenv
6
+
7
+ load_dotenv()
8
 
9
  # Load the model globally to ensure it's only loaded once
10
  # This is crucial for performance and resource management
11
  model = SentenceTransformer("sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2")
12
 
13
+ # === Supabase ===
14
+ supabase_url = os.getenv("SUPABASE_URL")
15
+ supabase_key = os.getenv("SUPABASE_KEY")
16
+ supabase = create_client(supabase_url, supabase_key)
17
+
18
  def get_embedding(text: str):
19
  """
20
  Menghasilkan embedding vector dari teks menggunakan model SentenceTransformer.
 
27
  embedding = model.encode(text).tolist()
28
  return embedding
29
 
30
+ def search_kbli(text: str):
31
+ if not text:
32
+ return {"embedding": [], "results": []}
33
+
34
+ embedding = get_embedding(text) # <-- pakai fungsi lama
35
+
36
+ response = supabase.rpc(
37
+ "search_kbli",
38
+ {"query_embedding": embedding, "match_count": 5}
39
+ ).execute()
40
+
41
+ results = response.data if response.data else []
42
+
43
+ return {"embedding": embedding, "results": results}
44
+
45
  # Gradio Interface
46
  # `fn` adalah fungsi yang akan dieksekusi
47
  # `inputs` adalah jenis input (dalam hal ini, sebuah teks)
48
  # `outputs` adalah jenis output (dalam hal ini, sebuah JSON)
49
  # `api_name` adalah nama endpoint API
50
+ with gr.Blocks() as demo:
51
+ gr.Markdown("## Semantic KBLI Search")
52
+
53
+ with gr.Tab("Embedding Only"):
54
+ inp1 = gr.Textbox(label="Masukkan teks")
55
+ out1 = gr.JSON(label="Embedding Vector")
56
+ inp1.submit(get_embedding, inp1, out1, api_name="get_embedding")
57
+
58
+ with gr.Tab("Search KBLI"):
59
+ inp2 = gr.Textbox(label="Masukkan teks")
60
+ out2 = gr.JSON(label="Hasil KBLI (Embedding + Match)")
61
+ inp2.submit(search_kbli, inp2, out2, api_name="search_kbli")
62
+
63
  if __name__ == "__main__":
64
  demo.queue().launch()