Blueberryaman commited on
Commit
c002fa3
·
verified ·
1 Parent(s): da794da

Upload folder using huggingface_hub

Browse files
Files changed (3) hide show
  1. README.md +6 -7
  2. app.py +42 -0
  3. requirements.txt +2 -0
README.md CHANGED
@@ -1,13 +1,12 @@
1
  ---
2
- title: Stsb Tiny Embedding Api
3
- emoji: 📚
4
- colorFrom: indigo
5
  colorTo: purple
6
  sdk: gradio
7
- sdk_version: 6.28.0
8
- python_version: '3.12'
9
  app_file: app.py
10
- pinned: false
11
  ---
12
 
13
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
1
  ---
2
+ title: Stsb Bert Tiny Embedding Api
3
+ emoji: 🧠
4
+ colorFrom: blue
5
  colorTo: purple
6
  sdk: gradio
7
+ sdk_version: 4.44.0
 
8
  app_file: app.py
 
9
  ---
10
 
11
+ Embedding API wrapping sentence-transformers-testing/stsb-bert-tiny-safetensors.
12
+ Runs on CPU only inside a ZeroGPU-slot Space (never calls the GPU decorator).
app.py ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Embedding API for a Hugging Face Space (Gradio SDK, ZeroGPU hardware slot,
3
+ but runs on CPU only — we never call the GPU decorator, so it consumes
4
+ zero ZeroGPU quota. This is how a free personal account can run a real
5
+ Python backend now that CPU Basic requires PRO.
6
+ """
7
+
8
+ import json
9
+ import gradio as gr
10
+ from sentence_transformers import SentenceTransformer
11
+
12
+ MODEL_NAME = "sentence-transformers-testing/stsb-bert-tiny-safetensors"
13
+ API_KEY = "hellonumbers77@" # change this to a strong random token
14
+
15
+ print(f"Loading model: {MODEL_NAME} ...")
16
+ model = SentenceTransformer(MODEL_NAME)
17
+ print("Model loaded. Embedding dim:", model.get_sentence_embedding_dimension())
18
+
19
+
20
+ def embed(texts_json: str, api_key: str) -> str:
21
+ if api_key != API_KEY:
22
+ return json.dumps({"error": "unauthorized"})
23
+ try:
24
+ texts = json.loads(texts_json)
25
+ except json.JSONDecodeError:
26
+ return json.dumps({"error": "texts_json must be a JSON array of strings"})
27
+ vectors = model.encode(texts).tolist()
28
+ return json.dumps({"embeddings": vectors})
29
+
30
+
31
+ demo = gr.Interface(
32
+ fn=embed,
33
+ inputs=[
34
+ gr.Textbox(label="texts (JSON array)", value='["hello world"]'),
35
+ gr.Textbox(label="api_key", type="password"),
36
+ ],
37
+ outputs=gr.Textbox(label="result (JSON)"),
38
+ api_name="embed",
39
+ )
40
+
41
+ if __name__ == "__main__":
42
+ demo.launch()
requirements.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ gradio
2
+ sentence-transformers