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 +39 -2
- sunholo/gcs/add_file.py +5 -5
- sunholo/vertex/extensions_class.py +3 -0
- {sunholo-0.71.16.dist-info → sunholo-0.71.18.dist-info}/METADATA +2 -2
- {sunholo-0.71.16.dist-info → sunholo-0.71.18.dist-info}/RECORD +9 -9
- {sunholo-0.71.16.dist-info → sunholo-0.71.18.dist-info}/LICENSE.txt +0 -0
- {sunholo-0.71.16.dist-info → sunholo-0.71.18.dist-info}/WHEEL +0 -0
- {sunholo-0.71.16.dist-info → sunholo-0.71.18.dist-info}/entry_points.txt +0 -0
- {sunholo-0.71.16.dist-info → sunholo-0.71.18.dist-info}/top_level.txt +0 -0
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=
|
|
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
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
|
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.
|
|
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.
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
119
|
-
sunholo-0.71.
|
|
120
|
-
sunholo-0.71.
|
|
121
|
-
sunholo-0.71.
|
|
122
|
-
sunholo-0.71.
|
|
123
|
-
sunholo-0.71.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|