sunholo 0.71.16__py3-none-any.whl → 0.71.18__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/cli/chat_vac.py CHANGED
@@ -5,9 +5,11 @@ from ..utils.config import load_config_key
5
5
  from ..utils.api_key import has_multivac_api_key
6
6
  from ..logging import log
7
7
  from ..qna.parsers import parse_output
8
+ from ..gcs.add_file import add_file_to_gcs
8
9
  from .run_proxy import clean_proxy_list, start_proxy, stop_proxy
9
10
 
10
11
  import uuid
12
+ import os
11
13
  import sys
12
14
  import subprocess
13
15
  import json
@@ -44,6 +46,17 @@ def get_service_url(vac_name, project, region, no_config=False):
44
46
 
45
47
  return url
46
48
 
49
+ def handle_file_upload(file, vector_name):
50
+ if not Path(file).is_file():
51
+ return None
52
+
53
+ file_url = add_file_to_gcs(file,
54
+ vector_name=vector_name,
55
+ metadata={"type": "cli"},
56
+ bucket_filepath=f"{vector_name}/uploads/{os.path.basename(file)}")
57
+
58
+ return file_url
59
+
47
60
  def stream_chat_session(service_url, service_name, stream=True):
48
61
 
49
62
  user_id = generate_user_id()
@@ -62,7 +75,31 @@ def stream_chat_session(service_url, service_name, stream=True):
62
75
 
63
76
  if special_reply:
64
77
  console.print(f"[bold yellow]{service_name}:[/bold yellow] {special_reply}", end='\n')
65
- continue
78
+ continue
79
+
80
+ if user_input.lower().startswith("upload"):
81
+ file_path = user_input.split(" ", 1)[1] if " " in user_input else None
82
+ if not file_path:
83
+ console.print("[bold red]Please provide a valid file path.[/bold red]")
84
+ continue
85
+
86
+ try:
87
+ file_reply = handle_file_upload(file_path, vector_name=service_name)
88
+ if not file_reply:
89
+ console.print("[bold red]Invalid file upload[/bold red]")
90
+ continue
91
+
92
+ console.print(f"[bold yellow]{service_name}:[/bold yellow] Uploaded {file_path} to {file_reply} - image will be sent each reply until you issue 'clear_upload' ", end='\n')
93
+
94
+ except FileNotFoundError:
95
+ console.print("[bold red]File not found. Please check the path and try again.[/bold red]")
96
+
97
+ # file_reply stays for each message from now on
98
+ continue
99
+
100
+ if user_input.lower().startswith("clear_upload"):
101
+ console.print("[bold yellow]File upload path cleared.[/bold yellow]")
102
+ file_path = None
66
103
 
67
104
  if not stream:
68
105
  vac_response = send_to_qa(user_input,
@@ -70,7 +107,7 @@ def stream_chat_session(service_url, service_name, stream=True):
70
107
  chat_history=chat_history,
71
108
  message_author=user_id,
72
109
  #TODO: populate these
73
- image_url=None,
110
+ image_url=file_reply,
74
111
  source_filters=None,
75
112
  search_kwargs=None,
76
113
  private_docs=None,
sunholo/gcs/add_file.py CHANGED
@@ -72,10 +72,10 @@ def resolve_bucket(vector_name):
72
72
  if bucket_config:
73
73
  if bucket_config.get("buckets"):
74
74
  bucket_name = bucket_config.get("buckets").get("all")
75
-
76
- bucket_name = bucket_name if bucket_name else os.getenv('GCS_BUCKET', None)
77
- if bucket_name is None:
78
- raise ValueError("No bucket found to upload to: GCS_BUCKET returned None")
75
+ else:
76
+ bucket_name = os.getenv('GCS_BUCKET')
77
+ if not bucket_name:
78
+ raise ValueError("No bucket found to upload to: GCS_BUCKET returned None")
79
79
 
80
80
  if bucket_name.startswith("gs://"):
81
81
  bucket_name = bucket_name.removeprefix("gs://")
@@ -93,7 +93,7 @@ def add_file_to_gcs(filename: str, vector_name:str, bucket_name: str=None, metad
93
93
  log.error(f"Error creating storage client: {str(err)}")
94
94
  return None
95
95
 
96
- if bucket_name is None:
96
+ if not bucket_name:
97
97
  bucket_name = resolve_bucket(vector_name)
98
98
 
99
99
  bucket = storage_client.get_bucket(bucket_name)
@@ -160,6 +160,9 @@ class VertexAIExtensions:
160
160
  "fileOutputGcsBucket": f"{bucket_name}/extensions/output/",
161
161
  }
162
162
  }
163
+ else:
164
+ runtime_config = {}
165
+
163
166
  extension_code_interpreter = extensions.Extension.from_hub("code_interpreter", runtime_config=runtime_config)
164
167
 
165
168
  # This field is only applicable when `file_output_gcs_bucket` is specified in `Extension.CodeInterpreterRuntimeConfig`.
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.71.16
3
+ Version: 0.71.18
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.71.16.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.71.18.tar.gz
7
7
  Author: Holosun ApS
8
8
  Author-email: multivac@sunholo.com
9
9
  License: Apache License, Version 2.0
@@ -33,7 +33,7 @@ sunholo/chunker/pdfs.py,sha256=daCZ1xjn1YvxlifIyxskWNpLJLe-Q9D_Jq12MWx3tZo,2473
33
33
  sunholo/chunker/publish.py,sha256=tiO615A2uo_ZjzdFDzNH1PL_1kJeLMUQwLJ4w67rNIc,2932
34
34
  sunholo/chunker/splitter.py,sha256=jtGfi_ZdhVdyFhfw0e4ynEpmwIyrxQtV63OituYWy6o,6729
35
35
  sunholo/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
- sunholo/cli/chat_vac.py,sha256=NcXQcz0HHE0epfUPmDat5Fk8XaDrTFGs3MINQlBu1vo,18785
36
+ sunholo/cli/chat_vac.py,sha256=BQVHzbXUTS1r6IwMqTMK8Gwxcydo-XNxg2nqV1JeZS4,20360
37
37
  sunholo/cli/cli.py,sha256=8e00HBN6eYIUJ8cnvKteBJNn7aZPRMk4b82jwcGg9D4,3741
38
38
  sunholo/cli/cli_init.py,sha256=JMZ9AX2cPDZ-_mv3adiv2ToFVNyRPtjk9Biszl1kiR0,2358
39
39
  sunholo/cli/configs.py,sha256=QUM9DvKOdZmEQRM5uI3Nh887T0YDiSMr7O240zTLqws,4546
@@ -67,7 +67,7 @@ sunholo/discovery_engine/discovery_engine_client.py,sha256=YYsFeaW41l8jmWCruQnYx
67
67
  sunholo/embedder/__init__.py,sha256=sI4N_CqgEVcrMDxXgxKp1FsfsB4FpjoXgPGkl4N_u4I,44
68
68
  sunholo/embedder/embed_chunk.py,sha256=d_dIzeNF630Q0Ar-u1hxos60s0tLIImJccAvuo_LTIw,6814
69
69
  sunholo/gcs/__init__.py,sha256=DtVw_AZwQn-IguR5BJuIi2XJeF_FQXizhJikzRNrXiE,50
70
- sunholo/gcs/add_file.py,sha256=K4lvNy22qtFFSJUh6xM7nmJ8_CT-0BIGSNxNXWIt3-U,6643
70
+ sunholo/gcs/add_file.py,sha256=W23NI_UhcgeqhuVLNyCjAnSluhM0xhGDZoMAP7yRNwI,6618
71
71
  sunholo/gcs/download_url.py,sha256=8XSEf8byfubqs5CMQeF_tn9wxqwUTq3n9mo5mLNIUTA,4801
72
72
  sunholo/gcs/metadata.py,sha256=C9sMPsHsq1ETetdQCqB3EBs3Kws8b8QHS9L7ei_v5aw,891
73
73
  sunholo/langfuse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -111,13 +111,13 @@ sunholo/utils/user_ids.py,sha256=SQd5_H7FE7vcTZp9AQuQDWBXd4FEEd7TeVMQe1H4Ny8,292
111
111
  sunholo/utils/version.py,sha256=P1QAJQdZfT2cMqdTSmXmcxrD2PssMPEGM-WI6083Fck,237
112
112
  sunholo/vertex/__init__.py,sha256=XH7FUKxdIgN9H2iDcWxL3sRnVHC3297G24RqEn4Ob0Y,240
113
113
  sunholo/vertex/extensions.py,sha256=d-Ikt9gHFf-jUMPmyU-xHwYe22QtEyr90Ua1LDKgTws,11026
114
- sunholo/vertex/extensions_class.py,sha256=flvWNxzY_0z_nDuoaXq96mmLCON1At793NpEeaJ6T0E,11893
114
+ sunholo/vertex/extensions_class.py,sha256=jYWaOF7zNwcdZgI8CNolRvNa7BA2McgjBcpwZspKCWk,11964
115
115
  sunholo/vertex/init.py,sha256=-w7b9GKsyJnAJpYHYz6_zBUtmeJeLXlEkgOfwoe4DEI,2715
116
116
  sunholo/vertex/memory_tools.py,sha256=FLTbNX_YbpxxUxZHAsXEihlUgLELfLOfxsdEkwDm_GI,6546
117
117
  sunholo/vertex/safety.py,sha256=S9PgQT1O_BQAkcqauWncRJaydiP8Q_Jzmu9gxYfy1VA,2482
118
- sunholo-0.71.16.dist-info/LICENSE.txt,sha256=SdE3QjnD3GEmqqg9EX3TM9f7WmtOzqS1KJve8rhbYmU,11345
119
- sunholo-0.71.16.dist-info/METADATA,sha256=xw0dl33vOvPMlNI-Fd_848gY3STZpA7TQZghXh7f0MQ,6767
120
- sunholo-0.71.16.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
121
- sunholo-0.71.16.dist-info/entry_points.txt,sha256=bZuN5AIHingMPt4Ro1b_T-FnQvZ3teBes-3OyO0asl4,49
122
- sunholo-0.71.16.dist-info/top_level.txt,sha256=wt5tadn5--5JrZsjJz2LceoUvcrIvxjHJe-RxuudxAk,8
123
- sunholo-0.71.16.dist-info/RECORD,,
118
+ sunholo-0.71.18.dist-info/LICENSE.txt,sha256=SdE3QjnD3GEmqqg9EX3TM9f7WmtOzqS1KJve8rhbYmU,11345
119
+ sunholo-0.71.18.dist-info/METADATA,sha256=CYDtVR9VCV2red4S6_lxGLN8NKbIZy2si1OzlxcY1Ls,6767
120
+ sunholo-0.71.18.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
121
+ sunholo-0.71.18.dist-info/entry_points.txt,sha256=bZuN5AIHingMPt4Ro1b_T-FnQvZ3teBes-3OyO0asl4,49
122
+ sunholo-0.71.18.dist-info/top_level.txt,sha256=wt5tadn5--5JrZsjJz2LceoUvcrIvxjHJe-RxuudxAk,8
123
+ sunholo-0.71.18.dist-info/RECORD,,