rrg92 commited on
Commit
50f1720
·
1 Parent(s): 4cca681
Files changed (3) hide show
  1. README.md +1 -1
  2. app.py +63 -38
  3. requirements.txt +2 -1
README.md CHANGED
@@ -4,7 +4,7 @@ emoji: 📉
4
  colorFrom: gray
5
  colorTo: indigo
6
  sdk: gradio
7
- sdk_version: 5.16.1
8
  pinned: false
9
  app_port: 8080
10
  ---
 
4
  colorFrom: gray
5
  colorTo: indigo
6
  sdk: gradio
7
+ sdk_version: 5.32.1
8
  pinned: false
9
  app_port: 8080
10
  ---
app.py CHANGED
@@ -4,31 +4,48 @@ import uvicorn
4
  from sentence_transformers import SentenceTransformer
5
  from sentence_transformers.util import cos_sim
6
  from sentence_transformers.quantization import quantize_embeddings
7
-
8
-
9
  import spaces
10
-
 
 
11
 
12
 
13
  app = FastAPI()
14
 
15
 
16
- @spaces.GPU
17
- def embed(text):
18
- return [0,1]
19
- #query_embedding = Embedder.encode(text)
20
- #return query_embedding.tolist();
21
-
22
-
23
 
24
  @app.post("/v1/embeddings")
25
  async def openai_embeddings(request: Request):
26
  body = await request.json();
 
 
 
27
  print(body);
28
 
29
- model = body['model']
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  text = body['input'];
31
- embeddings = embed(text)
 
 
 
 
 
 
 
32
  return {
33
  'object': "list"
34
  ,'data': [{
@@ -36,45 +53,53 @@ async def openai_embeddings(request: Request):
36
  ,'embedding': embeddings
37
  ,'index':0
38
  }]
39
- ,'model':model
40
  ,'usage':{
41
  'prompt_tokens': 0
42
  ,'total_tokens': 0
43
  }
44
  }
 
 
45
 
46
- def fn(text):
47
- return embed(text);
48
-
49
- with gr.Blocks(fill_height=True) as demo:
50
- text = gr.Textbox();
51
- embeddings = gr.Textbox()
52
 
53
- text.submit(fn, [text], [embeddings]);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
 
 
 
 
 
55
 
56
- print("Loading embedding model");
57
- Embedder = None #SentenceTransformer("mixedbread-ai/mxbai-embed-large-v1")
58
-
59
- # demo.run_startup_events()
60
-
61
-
62
- #demo.launch(
63
- # share=False,
64
- # debug=False,
65
- # server_port=7860,
66
- # server_name="0.0.0.0",
67
- # allowed_paths=[]
68
- #)
69
 
70
- print("Demo run...");
71
- (app2,url,other) = demo.launch(prevent_thread_lock=True, server_name=None, server_port=8000);
 
 
 
72
 
73
  print("Mounting app...");
74
- GradioApp = gr.mount_gradio_app(app, demo, path="/", ssr_mode=False);
75
-
76
 
77
- demo.close();
78
 
79
  if __name__ == '__main__':
80
  print("Running uviconr...");
 
4
  from sentence_transformers import SentenceTransformer
5
  from sentence_transformers.util import cos_sim
6
  from sentence_transformers.quantization import quantize_embeddings
 
 
7
  import spaces
8
+ from gradio_client import Client
9
+ import json
10
+ import os
11
 
12
 
13
  app = FastAPI()
14
 
15
 
 
 
 
 
 
 
 
16
 
17
  @app.post("/v1/embeddings")
18
  async def openai_embeddings(request: Request):
19
  body = await request.json();
20
+ token = request.headers.get("authorization");
21
+ apiName = body.get("ApiName");
22
+
23
  print(body);
24
 
25
+ BearerToken = None;
26
+ if not token is None:
27
+ parts = token.split(' ');
28
+ BearerToken = parts[1];
29
+ print("Using token...");
30
+
31
+ SpacePath = body['model']
32
+
33
+ print("Creating client...");
34
+ SpaceClient = Client(SpacePath, hf_token = BearerToken)
35
+
36
+
37
+ if not apiName:
38
+ apiName = "/embed"
39
+
40
  text = body['input'];
41
+
42
+ result = SpaceClient.predict(
43
+ text=text,
44
+ api_name=apiName
45
+ )
46
+ embeddings = json.loads(result);
47
+
48
+
49
  return {
50
  'object': "list"
51
  ,'data': [{
 
53
  ,'embedding': embeddings
54
  ,'index':0
55
  }]
56
+ ,'model': SpacePath
57
  ,'usage':{
58
  'prompt_tokens': 0
59
  ,'total_tokens': 0
60
  }
61
  }
62
+
63
+ SpaceHost = os.environ.get("SPACE_HOST");
64
 
65
+ if not SpaceHost:
66
+ SpaceHost = "localhost"
 
 
 
 
67
 
68
+ with gr.Blocks() as demo:
69
+ gr.Markdown(f"""
70
+ This space allow you connect SQL Server 2025 with Hugging Face to generate embeddings!
71
+ First, create a ZeroGPU Space that export an endpoint called embed.
72
+ That endpoint must accept a parameter called text.
73
+ Then, create the external model using T-SQL:
74
+
75
+ ```sql
76
+ CREATE EXTERNAL MODEL HuggingFace
77
+ WITH (
78
+ LOCATION = 'https://{SpaceHost}/v1/embeddings',
79
+ API_FORMAT = 'OpenAI',
80
+ MODEL_TYPE = EMBEDDINGS,
81
+ MODEL = 'user/space'
82
+ );
83
+ ```
84
+
85
+ If you prefer, just type the space name into field bellow and we generate the right T-SQL command for you!
86
+
87
 
88
+ """)
89
+
90
+ SpaceName = gr.Textbox(label="Space")
91
+ EndpointName = gr.Textbox(value="/embed", label = "EndpointName");
92
 
 
 
 
 
 
 
 
 
 
 
 
 
 
93
 
94
+
95
+ ## hack para funcionar com ZeroGPU nesse mesmo space
96
+ #print("Demo run...");
97
+ #(app2,url,other) = demo.launch(prevent_thread_lock=True, server_name=None, server_port=8000);
98
+ # demo.close
99
 
100
  print("Mounting app...");
101
+ GradioApp = gr.mount_gradio_app(app, demo, path="", ssr_mode=False);
 
102
 
 
103
 
104
  if __name__ == '__main__':
105
  print("Running uviconr...");
requirements.txt CHANGED
@@ -1,3 +1,4 @@
1
  fastapi
2
  uvicorn
3
- sentence_transformers
 
 
1
  fastapi
2
  uvicorn
3
+ sentence_transformers
4
+ gradio-client