sunholo 0.70.1__tar.gz → 0.70.3__tar.gz
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-0.70.1 → sunholo-0.70.3}/PKG-INFO +2 -2
- {sunholo-0.70.1 → sunholo-0.70.3}/setup.py +1 -1
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/components/vectorstore.py +1 -1
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/embedder/embed_chunk.py +5 -2
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/utils/parsers.py +32 -0
- sunholo-0.70.3/sunholo/vertex/extensions.py +138 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo.egg-info/PKG-INFO +2 -2
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo.egg-info/SOURCES.txt +1 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/LICENSE.txt +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/MANIFEST.in +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/README.md +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/setup.cfg +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/agents/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/agents/chat_history.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/agents/dispatch_to_qa.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/agents/fastapi/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/agents/fastapi/base.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/agents/fastapi/qna_routes.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/agents/flask/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/agents/flask/base.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/agents/flask/qna_routes.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/agents/flask/vac_routes.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/agents/langserve.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/agents/pubsub.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/agents/route.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/agents/special_commands.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/agents/swagger.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/archive/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/archive/archive.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/auth/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/auth/run.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/bots/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/bots/discord.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/bots/github_webhook.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/bots/webapp.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/chunker/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/chunker/data_to_embed_pubsub.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/chunker/doc_handling.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/chunker/images.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/chunker/loaders.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/chunker/message_data.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/chunker/pdfs.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/chunker/publish.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/chunker/splitter.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/cli/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/cli/chat_vac.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/cli/cli.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/cli/cli_init.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/cli/configs.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/cli/deploy.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/cli/embedder.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/cli/merge_texts.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/cli/run_proxy.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/cli/sun_rich.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/cli/swagger.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/components/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/components/llm.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/components/retriever.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/database/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/database/alloydb.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/database/alloydb_client.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/database/database.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/database/lancedb.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/database/sql/sb/create_function.sql +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/database/sql/sb/create_function_time.sql +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/database/sql/sb/create_table.sql +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/database/sql/sb/return_sources.sql +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/database/sql/sb/setup.sql +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/database/static_dbs.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/database/uuid.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/discovery_engine/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/discovery_engine/chunker_handler.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/discovery_engine/create_new.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/discovery_engine/discovery_engine_client.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/embedder/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/gcs/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/gcs/add_file.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/gcs/download_url.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/gcs/metadata.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/langfuse/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/langfuse/callback.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/langfuse/prompts.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/llamaindex/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/llamaindex/generate.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/llamaindex/get_files.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/llamaindex/import_files.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/logging.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/lookup/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/lookup/model_lookup.yaml +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/patches/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/patches/langchain/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/patches/langchain/lancedb.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/patches/langchain/vertexai.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/pubsub/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/pubsub/process_pubsub.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/pubsub/pubsub_manager.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/qna/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/qna/parsers.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/qna/retry.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/streaming/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/streaming/content_buffer.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/streaming/langserve.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/streaming/stream_lookup.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/streaming/streaming.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/summarise/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/summarise/summarise.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/utils/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/utils/api_key.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/utils/big_context.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/utils/config.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/utils/config_schema.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/utils/gcp.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/utils/gcp_project.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/utils/timedelta.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/utils/user_ids.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/utils/version.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/vertex/__init__.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/vertex/init.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/vertex/memory_tools.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo/vertex/safety.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo.egg-info/dependency_links.txt +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo.egg-info/entry_points.txt +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo.egg-info/requires.txt +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/sunholo.egg-info/top_level.txt +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/tests/test_chat_history.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/tests/test_chunker.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/tests/test_config.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/tests/test_dispatch_to_qa.py +0 -0
- {sunholo-0.70.1 → sunholo-0.70.3}/tests/test_swagger.py +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sunholo
|
|
3
|
-
Version: 0.70.
|
|
3
|
+
Version: 0.70.3
|
|
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.70.
|
|
6
|
+
Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.70.3.tar.gz
|
|
7
7
|
Author: Holosun ApS
|
|
8
8
|
Author-email: multivac@sunholo.com
|
|
9
9
|
License: Apache License, Version 2.0
|
|
@@ -142,8 +142,11 @@ def embed_pubsub_chunk(data: dict):
|
|
|
142
142
|
continue
|
|
143
143
|
|
|
144
144
|
vectorstore_obj = pick_vectorstore(vectorstore, vector_name=vector_name, embeddings=embeddings)
|
|
145
|
-
|
|
146
|
-
|
|
145
|
+
if vectorstore_obj:
|
|
146
|
+
vs_retriever = vectorstore_obj.as_retriever(search_kwargs=dict(k=3))
|
|
147
|
+
vectorstore_list.append(vs_retriever)
|
|
148
|
+
else:
|
|
149
|
+
log.warning(f"No vectorstore added for {vectorstore}")
|
|
147
150
|
|
|
148
151
|
# can have multiple vectorstores per embed
|
|
149
152
|
metadata_list = []
|
|
@@ -14,6 +14,38 @@
|
|
|
14
14
|
import re
|
|
15
15
|
import hashlib
|
|
16
16
|
|
|
17
|
+
def validate_extension_id(ext_id):
|
|
18
|
+
"""
|
|
19
|
+
Ensures the passed string fits the criteria for an extension ID.
|
|
20
|
+
If not, changes it so it will be.
|
|
21
|
+
|
|
22
|
+
Criteria:
|
|
23
|
+
- Length should be 4-63 characters.
|
|
24
|
+
- Valid characters are lowercase letters, numbers, and hyphens ("-").
|
|
25
|
+
- Should start with a number or a lowercase letter.
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
ext_id (str): The extension ID to validate and correct.
|
|
29
|
+
|
|
30
|
+
Returns:
|
|
31
|
+
str: The validated and corrected extension ID.
|
|
32
|
+
"""
|
|
33
|
+
# Replace invalid characters
|
|
34
|
+
ext_id = re.sub(r'[^a-z0-9-]', '-', ext_id.lower())
|
|
35
|
+
|
|
36
|
+
# Ensure it starts with a number or a lowercase letter
|
|
37
|
+
if not re.match(r'^[a-z0-9]', ext_id):
|
|
38
|
+
ext_id = 'a' + ext_id
|
|
39
|
+
|
|
40
|
+
# Trim to 63 characters
|
|
41
|
+
ext_id = ext_id[:63]
|
|
42
|
+
|
|
43
|
+
# Pad to at least 4 characters
|
|
44
|
+
while len(ext_id) < 4:
|
|
45
|
+
ext_id += 'a'
|
|
46
|
+
|
|
47
|
+
return ext_id
|
|
48
|
+
|
|
17
49
|
def contains_url(message_data):
|
|
18
50
|
"""
|
|
19
51
|
Check if the provided text contains a URL.
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# https://cloud.google.com/vertex-ai/generative-ai/docs/extensions/create-extension
|
|
2
|
+
# https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/extension#python
|
|
3
|
+
from vertexai.preview import extensions
|
|
4
|
+
from .init import init_vertex
|
|
5
|
+
from ..logging import log
|
|
6
|
+
from ..utils.gcp_project import get_gcp_project
|
|
7
|
+
from ..utils.parsers import validate_extension_id
|
|
8
|
+
|
|
9
|
+
def get_extension_import_config(
|
|
10
|
+
display_name: str,
|
|
11
|
+
description: str,
|
|
12
|
+
api_spec_gcs: dict,
|
|
13
|
+
service_account_name: dict,
|
|
14
|
+
tool_use_examples: list):
|
|
15
|
+
|
|
16
|
+
tool_use_examples = [
|
|
17
|
+
{
|
|
18
|
+
"extensionOperation": {
|
|
19
|
+
"operationId": "say_hello",
|
|
20
|
+
},
|
|
21
|
+
"displayName": "Say hello in the requested language",
|
|
22
|
+
"query": "Say hello in French",
|
|
23
|
+
"requestParams": {
|
|
24
|
+
"fields": [
|
|
25
|
+
{
|
|
26
|
+
"key": "apiServicePrompt",
|
|
27
|
+
"value": {
|
|
28
|
+
"string_value": "French",
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"responseParams": {
|
|
34
|
+
"fields": [
|
|
35
|
+
{
|
|
36
|
+
"key": "apiServiceOutput",
|
|
37
|
+
"value": {
|
|
38
|
+
"string_value": "bonjour",
|
|
39
|
+
},
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
"responseSummary": "Bonjour"
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
return {
|
|
49
|
+
"displayName": display_name,
|
|
50
|
+
"description": description,
|
|
51
|
+
"manifest": {
|
|
52
|
+
"name": "EXTENSION_NAME_LLM",
|
|
53
|
+
"description": "DESCRIPTION_LLM",
|
|
54
|
+
"apiSpec": {
|
|
55
|
+
"openApiGcsUri": api_spec_gcs,
|
|
56
|
+
},
|
|
57
|
+
"authConfig": {
|
|
58
|
+
"authType": "OAUTH",
|
|
59
|
+
"oauthConfig": {"service_account": service_account_name}
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"toolUseExamples": tool_use_examples,
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
# once an extension is available, call it in code here
|
|
66
|
+
def create_extension_instance(
|
|
67
|
+
display_name: str,
|
|
68
|
+
description: str,
|
|
69
|
+
open_api_gcs_uri: str,
|
|
70
|
+
llm_name: str=None,
|
|
71
|
+
llm_description: str=None,
|
|
72
|
+
runtime_config: dict=None,
|
|
73
|
+
service_account: str=None,
|
|
74
|
+
):
|
|
75
|
+
"""
|
|
76
|
+
Args:
|
|
77
|
+
- display_name: for the human. parsed to be used as extension_name
|
|
78
|
+
- description: for the human
|
|
79
|
+
- open_api_gcs_uri: location on GCS where open_ai yaml spec is
|
|
80
|
+
- llm_name: for the model. If None, uses display_name
|
|
81
|
+
- llm_description: for the model. If None, uses description
|
|
82
|
+
- service_account: If not specified, the Vertex AI Extension Service Agent is used to execute the extension.
|
|
83
|
+
|
|
84
|
+
"""
|
|
85
|
+
project_id = get_gcp_project()
|
|
86
|
+
extension_name = f"projects/{project_id}/locations/us-central1/extensions/{validate_extension_id(display_name)}"
|
|
87
|
+
|
|
88
|
+
extension = extensions.Extension.create(
|
|
89
|
+
extension_name=extension_name,
|
|
90
|
+
display_name=display_name,
|
|
91
|
+
description=description,
|
|
92
|
+
runtime_config=runtime_config or None,
|
|
93
|
+
manifest={
|
|
94
|
+
"name": llm_name or display_name,
|
|
95
|
+
"description": llm_description or description,
|
|
96
|
+
"api_spec": {
|
|
97
|
+
"open_api_gcs_uri": open_api_gcs_uri
|
|
98
|
+
},
|
|
99
|
+
"auth_config": {
|
|
100
|
+
"auth_type": "GOOGLE_SERVICE_ACCOUNT_AUTH",
|
|
101
|
+
"google_service_account_config": service_account or {},
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
)
|
|
105
|
+
log.info(f"Creating Vertex Extension: {extension=}")
|
|
106
|
+
|
|
107
|
+
return extension
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
def create_extension_code_interpreter(
|
|
112
|
+
code_artifacts_bucket=None
|
|
113
|
+
):
|
|
114
|
+
|
|
115
|
+
# only us-central for now
|
|
116
|
+
location = "us-central1"
|
|
117
|
+
init_vertex(location=location)
|
|
118
|
+
|
|
119
|
+
runtime_config=None
|
|
120
|
+
if code_artifacts_bucket:
|
|
121
|
+
runtime_config = {"codeInterpreterRuntimeConfig":
|
|
122
|
+
{
|
|
123
|
+
"fileInputGcsBucket": code_artifacts_bucket,
|
|
124
|
+
"fileOutputGcsBucket": code_artifacts_bucket
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
code_extension = create_extension_instance(
|
|
129
|
+
display_name="Code Interpreter",
|
|
130
|
+
description="This extension generates and executes code in the specified language",
|
|
131
|
+
open_api_gcs_uri="gs://vertex-extension-public/code_interpreter.yaml",
|
|
132
|
+
llm_name="code_interpreter_tool",
|
|
133
|
+
llm_description="Google Code Interpreter Extension",
|
|
134
|
+
runtime_config=runtime_config
|
|
135
|
+
)
|
|
136
|
+
log.info(f"Created code extension: {code_extension=}")
|
|
137
|
+
|
|
138
|
+
return code_extension
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sunholo
|
|
3
|
-
Version: 0.70.
|
|
3
|
+
Version: 0.70.3
|
|
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.70.
|
|
6
|
+
Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.70.3.tar.gz
|
|
7
7
|
Author: Holosun ApS
|
|
8
8
|
Author-email: multivac@sunholo.com
|
|
9
9
|
License: Apache License, Version 2.0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|