sunholo 0.103.2__py3-none-any.whl → 0.104.0__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.
@@ -19,6 +19,7 @@ import aiohttp
19
19
  from .langserve import prepare_request_data
20
20
  import traceback
21
21
  from .route import route_endpoint
22
+ import os
22
23
 
23
24
  try:
24
25
  from langfuse import Langfuse
@@ -86,7 +87,8 @@ def prep_request_payload(user_input, chat_history, vector_name, stream, **kwargs
86
87
  if 'vector_name' not in qna_data:
87
88
  qna_data['vector_name'] = vector_name
88
89
 
89
- qna_data['trace_id'] = add_langfuse_trace(qna_endpoint)
90
+ if not kwargs.get('trace_id'):
91
+ qna_data['trace_id'] = add_langfuse_trace(qna_endpoint)
90
92
 
91
93
  return qna_endpoint, qna_data
92
94
 
@@ -94,9 +96,9 @@ def add_langfuse_trace(qna_endpoint):
94
96
  if not langfuse:
95
97
  return None
96
98
 
97
- trace = langfuse.trace(name = f'auto/{qna_endpoint}')
99
+ trace = langfuse.trace(name = f'dispatch/{os.path.basename(qna_endpoint)}')
98
100
 
99
- log.info('Adding langfuse trace {trace.id}')
101
+ log.info(f'Adding langfuse trace {trace.id}')
100
102
 
101
103
  return trace.id
102
104
 
@@ -13,8 +13,20 @@
13
13
  # limitations under the License.
14
14
  def create_app(name):
15
15
  from flask import Flask
16
- # Initialize Flask app
16
+ from flask_cors import CORS
17
+
17
18
  app = Flask(name)
19
+
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
+
18
30
  app.config['TRAP_HTTP_EXCEPTIONS'] = True
19
31
  app.config['PROPAGATE_EXCEPTIONS'] = True
20
32
 
@@ -357,7 +357,7 @@ if __name__ == "__main__":
357
357
 
358
358
  try:
359
359
  if span:
360
- generation = span.generation(
360
+ gen = span.generation(
361
361
  name="vac_interpreter",
362
362
  metadata=vac_config.configs_by_kind,
363
363
  input = all_input,
@@ -371,7 +371,7 @@ if __name__ == "__main__":
371
371
  **all_input["kwargs"]
372
372
  )
373
373
  if span:
374
- generation.end(output=bot_output)
374
+ gen.end(output=bot_output)
375
375
  # {"answer": "The answer", "source_documents": [{"page_content": "The page content", "metadata": "The metadata"}]}
376
376
  bot_output = parse_output(bot_output)
377
377
  if trace:
@@ -383,7 +383,9 @@ if __name__ == "__main__":
383
383
 
384
384
  except Exception as err:
385
385
  bot_output = {'answer': f'QNA_ERROR: An error occurred while processing /vac/{vector_name}: {str(err)} traceback: {traceback.format_exc()}'}
386
-
386
+ if span:
387
+ gen.end(output=bot_output)
388
+
387
389
  if trace:
388
390
  span.end(output=jsonify(bot_output))
389
391
  trace.update(output=jsonify(bot_output))
@@ -266,7 +266,9 @@ class GenAIFunctionProcessor:
266
266
  params_obj = {key: val for key, val in fn.args.items()}
267
267
 
268
268
  params = ', '.join(f'{key}={val}' for key, val in params_obj.items())
269
- log.info(f"Executing {function_name} with params {params}")
269
+ log.info(f"Executing {function_name} with params {params} (Total Characters: {len(params)})")
270
+ if len(params)>8000:
271
+ log.warning(f"Total parameters are over 8000 characters - it may not work properly: {params[:10000]}....[{len(params)}]")
270
272
 
271
273
  # Check if the function is in our dictionary of available functions
272
274
  if function_name in self.funcs:
@@ -16,7 +16,7 @@ def load_prompt_from_yaml(key, prefix="sunholo", load_from_file=False, f_string=
16
16
  kind: promptConfig
17
17
  apiVersion: v1
18
18
  prompts:
19
- sunholo:
19
+ sunholo:
20
20
  hello: |
21
21
  Say hello to {name}
22
22
  ```
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.103.2
3
+ Version: 0.104.0
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.103.2.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.104.0.tar.gz
7
7
  Author: Holosun ApS
8
8
  Author-email: multivac@sunholo.com
9
9
  License: Apache License, Version 2.0
@@ -30,6 +30,7 @@ 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'
33
34
  Requires-Dist: google-auth ; extra == 'all'
34
35
  Requires-Dist: google-auth-httplib2 ; extra == 'all'
35
36
  Requires-Dist: google-auth-oauthlib ; extra == 'all'
@@ -119,6 +120,7 @@ Requires-Dist: pillow ; extra == 'gcp'
119
120
  Provides-Extra: http
120
121
  Requires-Dist: fastapi ; extra == 'http'
121
122
  Requires-Dist: flask ; extra == 'http'
123
+ Requires-Dist: flask-cors ; extra == 'http'
122
124
  Requires-Dist: gunicorn ; extra == 'http'
123
125
  Requires-Dist: httpcore ; extra == 'http'
124
126
  Requires-Dist: httpx ; extra == 'http'
@@ -2,7 +2,7 @@ sunholo/__init__.py,sha256=lLuVyilzmDbTaiAptR8SZzpbUNsgwHFsp4Ejbr5EApI,1136
2
2
  sunholo/custom_logging.py,sha256=YfIN1oP3dOEkkYkyRBU8BGS3uJFGwUDsFCl8mIVbwvE,12225
3
3
  sunholo/agents/__init__.py,sha256=X2I3pPkGeKWjc3d0QgSpkTyqD8J8JtrEWqwrumf1MMc,391
4
4
  sunholo/agents/chat_history.py,sha256=Gph_CdlP2otYnNdR1q1Umyyyvcad2F6K3LxU5yBQ9l0,5387
5
- sunholo/agents/dispatch_to_qa.py,sha256=i9HeKy-ovH54ZM51jbv1Q89GnXdBf6nvNAwsiNhJQsQ,8807
5
+ sunholo/agents/dispatch_to_qa.py,sha256=AwLS41oK6iS8xre-HuWjS4jj9dvU-evWI58EYfG65fg,8879
6
6
  sunholo/agents/langserve.py,sha256=C46ph2mnygr6bdHijYWYyfQDI9ylAF0_9Kx2PfcCJpU,4414
7
7
  sunholo/agents/pubsub.py,sha256=TscZN_6am6DfaQkC-Yl18ZIBOoLE-0nDSiil6GpQEh4,1344
8
8
  sunholo/agents/route.py,sha256=mV8tGABbSqcg3PQL02MgQOs41gKEHLMyIJJJcTuFdbE,2988
@@ -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=FgSaCODyoTtlstJtsqlLPScdgRUtv9_plxftdzHdVFo,809
15
+ sunholo/agents/flask/base.py,sha256=Pb3czM-OtQaNPxqxTZTj3JvnvT2oMV1X37S7L-W8A0w,1487
16
16
  sunholo/agents/flask/qna_routes.py,sha256=uwUD1yrzOPH27m2AXpiQrPk_2VfJOQOM6dAynOWQtoQ,22532
17
- sunholo/agents/flask/vac_routes.py,sha256=6DzeqPzZV3U_djm1SNaWZbNaGelRtrZjMtrOF4T7MJs,27119
17
+ sunholo/agents/flask/vac_routes.py,sha256=sFjVXxudKP3SMO2hpcSbPZRZFBfrJr0tDQmlHTzn5E0,27181
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
@@ -88,7 +88,7 @@ sunholo/gcs/metadata.py,sha256=oQLcXi4brsZ74aegWyC1JZmhlaEV270HS5_UWtAYYWE,898
88
88
  sunholo/genai/__init__.py,sha256=dBl6IA3-Fx6-Vx81r0XqxHlUq6WeW1iDX188dpChu8s,115
89
89
  sunholo/genai/images.py,sha256=EyjsDqt6XQw99pZUQamomCpMOoIah9bp3XY94WPU7Ms,1678
90
90
  sunholo/genai/init.py,sha256=yG8E67TduFCTQPELo83OJuWfjwTnGZsyACospahyEaY,687
91
- sunholo/genai/process_funcs_cls.py,sha256=wiOIMeGLFEParAkdwHbfySzsPuUgi0rimEYOMbWEZKU,29317
91
+ sunholo/genai/process_funcs_cls.py,sha256=6NZiYd9VWEzRN_-25PvOpBnQcfuJfWMuqi2hgAYm9ls,29530
92
92
  sunholo/genai/safety.py,sha256=mkFDO_BeEgiKjQd9o2I4UxB6XI7a9U-oOFjZ8LGRUC4,1238
93
93
  sunholo/invoke/__init__.py,sha256=o1RhwBGOtVK0MIdD55fAIMCkJsxTksi8GD5uoqVKI-8,184
94
94
  sunholo/invoke/async_class.py,sha256=G8vD2H94fpBc37mSJSQODEKJ67P2mPQEHabtDaLOvxE,8033
@@ -97,7 +97,7 @@ sunholo/invoke/invoke_vac_utils.py,sha256=sJc1edHTHMzMGXjji1N67c3iUaP7BmAL5nj82Q
97
97
  sunholo/langfuse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
98
  sunholo/langfuse/callback.py,sha256=jl0SZsFS53uMW9DGeM9SOL_EsRZsba0wwFGLqKzu9_U,1684
99
99
  sunholo/langfuse/evals.py,sha256=fQBaC0dBTYfgCzyfv9QBRvUfc9f42lbwQAeZmynaHO8,3841
100
- sunholo/langfuse/prompts.py,sha256=9TkmT2A-P4YRlk7sWz_EYk6yASxPKU8jhM7jAg9ND_Q,2330
100
+ sunholo/langfuse/prompts.py,sha256=J-oePqMyd2xPoTDb5G4fM-LNsC9jEa-udZ4dpbQle-w,2332
101
101
  sunholo/llamaindex/__init__.py,sha256=DlY_cHWCsVEV1C5WBgDdHRgOMlJc8pDoCRukUJ8PT9w,88
102
102
  sunholo/llamaindex/get_files.py,sha256=6rhXCDqQ_lrIapISQ_OYQDjiSATXvS_9m3qq53-oIl0,781
103
103
  sunholo/llamaindex/import_files.py,sha256=Bnic5wz8c61af9Kwq8KSrNBbc4imYnzMtBCb2jzSImI,6224
@@ -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.103.2.dist-info/LICENSE.txt,sha256=SdE3QjnD3GEmqqg9EX3TM9f7WmtOzqS1KJve8rhbYmU,11345
151
- sunholo-0.103.2.dist-info/METADATA,sha256=gO_dkImH2qxEHORPAYlGhbsivFIaVGtYkQCc-rA0oI0,8312
152
- sunholo-0.103.2.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
153
- sunholo-0.103.2.dist-info/entry_points.txt,sha256=bZuN5AIHingMPt4Ro1b_T-FnQvZ3teBes-3OyO0asl4,49
154
- sunholo-0.103.2.dist-info/top_level.txt,sha256=wt5tadn5--5JrZsjJz2LceoUvcrIvxjHJe-RxuudxAk,8
155
- sunholo-0.103.2.dist-info/RECORD,,
150
+ sunholo-0.104.0.dist-info/LICENSE.txt,sha256=SdE3QjnD3GEmqqg9EX3TM9f7WmtOzqS1KJve8rhbYmU,11345
151
+ sunholo-0.104.0.dist-info/METADATA,sha256=4JeZEj5xrF9rKUjrJVKwIEJzFkdSpYEbRqBnbbpHprA,8399
152
+ sunholo-0.104.0.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
153
+ sunholo-0.104.0.dist-info/entry_points.txt,sha256=bZuN5AIHingMPt4Ro1b_T-FnQvZ3teBes-3OyO0asl4,49
154
+ sunholo-0.104.0.dist-info/top_level.txt,sha256=wt5tadn5--5JrZsjJz2LceoUvcrIvxjHJe-RxuudxAk,8
155
+ sunholo-0.104.0.dist-info/RECORD,,