sunholo 0.104.0__py3-none-any.whl → 0.104.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- sunholo/agents/flask/base.py +1 -12
- sunholo/agents/flask/vac_routes.py +15 -4
- {sunholo-0.104.0.dist-info → sunholo-0.104.1.dist-info}/METADATA +2 -4
- {sunholo-0.104.0.dist-info → sunholo-0.104.1.dist-info}/RECORD +8 -8
- {sunholo-0.104.0.dist-info → sunholo-0.104.1.dist-info}/LICENSE.txt +0 -0
- {sunholo-0.104.0.dist-info → sunholo-0.104.1.dist-info}/WHEEL +0 -0
- {sunholo-0.104.0.dist-info → sunholo-0.104.1.dist-info}/entry_points.txt +0 -0
- {sunholo-0.104.0.dist-info → sunholo-0.104.1.dist-info}/top_level.txt +0 -0
sunholo/agents/flask/base.py
CHANGED
|
@@ -13,20 +13,9 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
def create_app(name):
|
|
15
15
|
from flask import Flask
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
|
|
18
17
|
app = Flask(name)
|
|
19
18
|
|
|
20
|
-
CORS(app,
|
|
21
|
-
origins=["https://*.sunholo.com", "http://*.sunholo.com"], # Allow all subdomains of sunholo.com
|
|
22
|
-
methods=["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"], # Allow all necessary HTTP methods
|
|
23
|
-
allow_headers=["DNT", "User-Agent", "X-Requested-With", "If-Modified-Since",
|
|
24
|
-
"Cache-Control", "Content-Type", "Range", "Authorization", "x-api-key"], # Add custom headers
|
|
25
|
-
expose_headers=["Content-Length", "Content-Range"], # Optional: headers that are exposed to clients
|
|
26
|
-
supports_credentials=True,
|
|
27
|
-
max_age=1728000 # Set max age of preflight request caching (in seconds)
|
|
28
|
-
)
|
|
29
|
-
|
|
30
19
|
app.config['TRAP_HTTP_EXCEPTIONS'] = True
|
|
31
20
|
app.config['PROPAGATE_EXCEPTIONS'] = True
|
|
32
21
|
|
|
@@ -63,7 +63,8 @@ if __name__ == "__main__":
|
|
|
63
63
|
self.vac_interpreter = vac_interpreter or partial(self.vac_interpreter_default)
|
|
64
64
|
self.additional_routes = additional_routes if additional_routes is not None else []
|
|
65
65
|
self.register_routes()
|
|
66
|
-
|
|
66
|
+
self.register_additional_routes()
|
|
67
|
+
self.register_after_request()
|
|
67
68
|
|
|
68
69
|
def vac_interpreter_default(self, question: str, vector_name: str, chat_history=[], **kwargs):
|
|
69
70
|
# Create a callback that does nothing for streaming if you don't want intermediate outputs
|
|
@@ -110,8 +111,7 @@ if __name__ == "__main__":
|
|
|
110
111
|
# OpenAI compatible endpoint
|
|
111
112
|
self.app.route('/openai/v1/chat/completions', methods=['POST'])(self.handle_openai_compatible_endpoint)
|
|
112
113
|
self.app.route('/openai/v1/chat/completions/<vector_name>', methods=['POST'])(self.handle_openai_compatible_endpoint)
|
|
113
|
-
|
|
114
|
-
self.register_additional_routes()
|
|
114
|
+
|
|
115
115
|
|
|
116
116
|
def register_additional_routes(self):
|
|
117
117
|
"""
|
|
@@ -152,6 +152,17 @@ if __name__ == "__main__":
|
|
|
152
152
|
for route in self.additional_routes:
|
|
153
153
|
self.app.route(route["rule"], methods=route["methods"])(route["handler"])
|
|
154
154
|
|
|
155
|
+
def register_after_request(self):
|
|
156
|
+
"""
|
|
157
|
+
Register after_request to add CORS headers.
|
|
158
|
+
"""
|
|
159
|
+
@self.app.after_request
|
|
160
|
+
def add_cors_headers(response):
|
|
161
|
+
response.headers.add('Access-Control-Allow-Origin', '*')
|
|
162
|
+
response.headers.add('Access-Control-Allow-Headers', 'Content-Type, Authorization, x-api-key')
|
|
163
|
+
response.headers.add('Access-Control-Allow-Methods', 'GET, PUT, POST, DELETE, OPTIONS')
|
|
164
|
+
return response
|
|
165
|
+
|
|
155
166
|
def home(self):
|
|
156
167
|
return jsonify("OK")
|
|
157
168
|
|
|
@@ -385,7 +396,7 @@ if __name__ == "__main__":
|
|
|
385
396
|
bot_output = {'answer': f'QNA_ERROR: An error occurred while processing /vac/{vector_name}: {str(err)} traceback: {traceback.format_exc()}'}
|
|
386
397
|
if span:
|
|
387
398
|
gen.end(output=bot_output)
|
|
388
|
-
|
|
399
|
+
|
|
389
400
|
if trace:
|
|
390
401
|
span.end(output=jsonify(bot_output))
|
|
391
402
|
trace.update(output=jsonify(bot_output))
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sunholo
|
|
3
|
-
Version: 0.104.
|
|
3
|
+
Version: 0.104.1
|
|
4
4
|
Summary: Large Language Model DevOps - a package to help deploy LLMs to the Cloud.
|
|
5
5
|
Home-page: https://github.com/sunholo-data/sunholo-py
|
|
6
|
-
Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.104.
|
|
6
|
+
Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.104.1.tar.gz
|
|
7
7
|
Author: Holosun ApS
|
|
8
8
|
Author-email: multivac@sunholo.com
|
|
9
9
|
License: Apache License, Version 2.0
|
|
@@ -30,7 +30,6 @@ Requires-Dist: azure-identity ; extra == 'all'
|
|
|
30
30
|
Requires-Dist: azure-storage-blob ; extra == 'all'
|
|
31
31
|
Requires-Dist: fastapi ; extra == 'all'
|
|
32
32
|
Requires-Dist: flask ; extra == 'all'
|
|
33
|
-
Requires-Dist: flask-cors ; extra == 'all'
|
|
34
33
|
Requires-Dist: google-auth ; extra == 'all'
|
|
35
34
|
Requires-Dist: google-auth-httplib2 ; extra == 'all'
|
|
36
35
|
Requires-Dist: google-auth-oauthlib ; extra == 'all'
|
|
@@ -120,7 +119,6 @@ Requires-Dist: pillow ; extra == 'gcp'
|
|
|
120
119
|
Provides-Extra: http
|
|
121
120
|
Requires-Dist: fastapi ; extra == 'http'
|
|
122
121
|
Requires-Dist: flask ; extra == 'http'
|
|
123
|
-
Requires-Dist: flask-cors ; extra == 'http'
|
|
124
122
|
Requires-Dist: gunicorn ; extra == 'http'
|
|
125
123
|
Requires-Dist: httpcore ; extra == 'http'
|
|
126
124
|
Requires-Dist: httpx ; extra == 'http'
|
|
@@ -12,9 +12,9 @@ sunholo/agents/fastapi/__init__.py,sha256=S_pj4_bTUmDGoq_exaREHlOKThi0zTuGT0VZY0
|
|
|
12
12
|
sunholo/agents/fastapi/base.py,sha256=W-cyF8ZDUH40rc-c-Apw3-_8IIi2e4Y9qRtnoVnsc1Q,2521
|
|
13
13
|
sunholo/agents/fastapi/qna_routes.py,sha256=lKHkXPmwltu9EH3RMwmD153-J6pE7kWQ4BhBlV3to-s,3864
|
|
14
14
|
sunholo/agents/flask/__init__.py,sha256=poJDKMr2qj8qMb99JqCvCPSiEt1tj2tLQ3hKW3f2aVw,107
|
|
15
|
-
sunholo/agents/flask/base.py,sha256=
|
|
15
|
+
sunholo/agents/flask/base.py,sha256=HLz3Z5efWaewTwSFEM6JH48NA9otoJBoVFJlARGk9L8,788
|
|
16
16
|
sunholo/agents/flask/qna_routes.py,sha256=uwUD1yrzOPH27m2AXpiQrPk_2VfJOQOM6dAynOWQtoQ,22532
|
|
17
|
-
sunholo/agents/flask/vac_routes.py,sha256=
|
|
17
|
+
sunholo/agents/flask/vac_routes.py,sha256=L4B6fUj6u0mVhCdG4Ac31DaGO2kw1VcWqSI_fUse9dA,27665
|
|
18
18
|
sunholo/archive/__init__.py,sha256=qNHWm5rGPVOlxZBZCpA1wTYPbalizRT7f8X4rs2t290,31
|
|
19
19
|
sunholo/archive/archive.py,sha256=PxVfDtO2_2ZEEbnhXSCbXLdeoHoQVImo4y3Jr2XkCFY,1204
|
|
20
20
|
sunholo/auth/__init__.py,sha256=TeP-OY0XGxYV_8AQcVGoh35bvyWhNUcMRfhuD5l44Sk,91
|
|
@@ -147,9 +147,9 @@ sunholo/vertex/init.py,sha256=1OQwcPBKZYBTDPdyU7IM4X4OmiXLdsNV30C-fee2scQ,2875
|
|
|
147
147
|
sunholo/vertex/memory_tools.py,sha256=tBZxqVZ4InTmdBvLlOYwoSEWu4-kGquc-gxDwZCC4FA,7667
|
|
148
148
|
sunholo/vertex/safety.py,sha256=S9PgQT1O_BQAkcqauWncRJaydiP8Q_Jzmu9gxYfy1VA,2482
|
|
149
149
|
sunholo/vertex/type_dict_to_json.py,sha256=uTzL4o9tJRao4u-gJOFcACgWGkBOtqACmb6ihvCErL8,4694
|
|
150
|
-
sunholo-0.104.
|
|
151
|
-
sunholo-0.104.
|
|
152
|
-
sunholo-0.104.
|
|
153
|
-
sunholo-0.104.
|
|
154
|
-
sunholo-0.104.
|
|
155
|
-
sunholo-0.104.
|
|
150
|
+
sunholo-0.104.1.dist-info/LICENSE.txt,sha256=SdE3QjnD3GEmqqg9EX3TM9f7WmtOzqS1KJve8rhbYmU,11345
|
|
151
|
+
sunholo-0.104.1.dist-info/METADATA,sha256=4yY3xcuYhQmUySBJjwyQkjKtQZ0iRmu8NKI6mnjsH-Y,8312
|
|
152
|
+
sunholo-0.104.1.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
|
153
|
+
sunholo-0.104.1.dist-info/entry_points.txt,sha256=bZuN5AIHingMPt4Ro1b_T-FnQvZ3teBes-3OyO0asl4,49
|
|
154
|
+
sunholo-0.104.1.dist-info/top_level.txt,sha256=wt5tadn5--5JrZsjJz2LceoUvcrIvxjHJe-RxuudxAk,8
|
|
155
|
+
sunholo-0.104.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|