sunholo 0.82.2__tar.gz → 0.83.1__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.82.2 → sunholo-0.83.1}/PKG-INFO +2 -2
- {sunholo-0.82.2 → sunholo-0.83.1}/setup.py +1 -1
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/agents/flask/qna_routes.py +10 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/cli/chat_vac.py +4 -3
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/cli/cli.py +7 -1
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/database/alloydb_client.py +45 -31
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/streaming/streaming.py +8 -6
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/vertex/memory_tools.py +2 -2
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo.egg-info/PKG-INFO +2 -2
- {sunholo-0.82.2 → sunholo-0.83.1}/LICENSE.txt +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/MANIFEST.in +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/README.md +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/setup.cfg +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/agents/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/agents/chat_history.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/agents/dispatch_to_qa.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/agents/fastapi/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/agents/fastapi/base.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/agents/fastapi/qna_routes.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/agents/flask/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/agents/flask/base.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/agents/flask/vac_routes.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/agents/langserve.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/agents/pubsub.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/agents/route.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/agents/special_commands.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/agents/swagger.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/archive/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/archive/archive.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/auth/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/auth/gcloud.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/auth/refresh.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/auth/run.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/azure/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/azure/auth.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/azure/blobs.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/azure/event_grid.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/bots/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/bots/discord.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/bots/github_webhook.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/bots/webapp.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/chunker/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/chunker/azure.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/chunker/doc_handling.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/chunker/encode_metadata.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/chunker/images.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/chunker/loaders.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/chunker/message_data.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/chunker/pdfs.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/chunker/process_chunker_data.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/chunker/publish.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/chunker/pubsub.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/chunker/splitter.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/cli/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/cli/cli_init.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/cli/configs.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/cli/deploy.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/cli/embedder.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/cli/merge_texts.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/cli/run_proxy.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/cli/sun_rich.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/cli/swagger.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/cli/vertex.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/components/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/components/llm.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/components/retriever.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/components/vectorstore.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/custom_logging.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/database/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/database/alloydb.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/database/database.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/database/lancedb.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/database/sql/sb/create_function.sql +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/database/sql/sb/create_function_time.sql +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/database/sql/sb/create_table.sql +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/database/sql/sb/return_sources.sql +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/database/sql/sb/setup.sql +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/database/static_dbs.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/database/uuid.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/discovery_engine/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/discovery_engine/chunker_handler.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/discovery_engine/create_new.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/discovery_engine/discovery_engine_client.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/discovery_engine/get_ai_search_chunks.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/embedder/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/embedder/embed_chunk.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/gcs/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/gcs/add_file.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/gcs/download_folder.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/gcs/download_url.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/gcs/metadata.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/invoke/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/invoke/direct_vac_func.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/invoke/invoke_vac_utils.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/langfuse/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/langfuse/callback.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/langfuse/prompts.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/llamaindex/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/llamaindex/get_files.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/llamaindex/import_files.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/llamaindex/llamaindex_class.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/llamaindex/user_history.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/lookup/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/lookup/model_lookup.yaml +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/patches/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/patches/langchain/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/patches/langchain/lancedb.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/patches/langchain/vertexai.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/pubsub/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/pubsub/process_pubsub.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/pubsub/pubsub_manager.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/qna/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/qna/parsers.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/qna/retry.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/streaming/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/streaming/content_buffer.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/streaming/langserve.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/streaming/stream_lookup.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/summarise/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/summarise/summarise.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/tools/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/tools/web_browser.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/utils/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/utils/api_key.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/utils/big_context.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/utils/config.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/utils/config_class.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/utils/config_schema.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/utils/gcp.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/utils/gcp_project.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/utils/parsers.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/utils/timedelta.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/utils/user_ids.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/utils/version.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/vertex/__init__.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/vertex/extensions_call.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/vertex/extensions_class.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/vertex/genai_functions.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/vertex/init.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/vertex/safety.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo/vertex/type_dict_to_json.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo.egg-info/SOURCES.txt +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo.egg-info/dependency_links.txt +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo.egg-info/entry_points.txt +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo.egg-info/requires.txt +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/sunholo.egg-info/top_level.txt +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/tests/test_chat_history.py +0 -0
- {sunholo-0.82.2 → sunholo-0.83.1}/tests/test_config.py +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sunholo
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.83.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.
|
|
6
|
+
Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.83.1.tar.gz
|
|
7
7
|
Author: Holosun ApS
|
|
8
8
|
Author-email: multivac@sunholo.com
|
|
9
9
|
License: Apache License, Version 2.0
|
|
@@ -23,6 +23,7 @@ from ...streaming import start_streaming_chat
|
|
|
23
23
|
from ...archive import archive_qa
|
|
24
24
|
from ...custom_logging import log
|
|
25
25
|
from ...utils.config import load_config
|
|
26
|
+
from ...utils import ConfigManager
|
|
26
27
|
from ...utils.version import sunholo_version
|
|
27
28
|
import os
|
|
28
29
|
from ...gcs.add_file import add_file_to_gcs, handle_base64_image
|
|
@@ -183,6 +184,15 @@ def register_qna_routes(app, stream_interpreter, vac_interpreter):
|
|
|
183
184
|
generation.end(output=response)
|
|
184
185
|
span.end(output=response)
|
|
185
186
|
trace.update(output=response)
|
|
187
|
+
|
|
188
|
+
#if 'user_id' in all_input["kwargs"]:
|
|
189
|
+
# kwargs = all_input["kwargs"]
|
|
190
|
+
# config = ConfigManager(vector_name)
|
|
191
|
+
# add_user_history_rag(kwargs.pop('user_id'),
|
|
192
|
+
# config,
|
|
193
|
+
# question=all_input.pop("user_input"),
|
|
194
|
+
# answer=response.get('answer'),
|
|
195
|
+
# metadata=all_input)
|
|
186
196
|
|
|
187
197
|
return response
|
|
188
198
|
|
|
@@ -411,7 +411,7 @@ def resolve_service_url(args, no_config=False):
|
|
|
411
411
|
|
|
412
412
|
def vac_command(args):
|
|
413
413
|
|
|
414
|
-
|
|
414
|
+
|
|
415
415
|
|
|
416
416
|
if args.action == 'list':
|
|
417
417
|
|
|
@@ -426,6 +426,7 @@ def vac_command(args):
|
|
|
426
426
|
return
|
|
427
427
|
|
|
428
428
|
elif args.action == 'chat':
|
|
429
|
+
config = ConfigManager(args.vac_name)
|
|
429
430
|
service_url = resolve_service_url(args)
|
|
430
431
|
agent_name = config.vacConfig("agent")
|
|
431
432
|
|
|
@@ -466,7 +467,6 @@ def vac_command(args):
|
|
|
466
467
|
|
|
467
468
|
invoke_vac(service_url, args.data, is_file=args.is_file)
|
|
468
469
|
|
|
469
|
-
|
|
470
470
|
def list_cloud_run_services(project, region):
|
|
471
471
|
"""
|
|
472
472
|
Lists all Cloud Run services the user has access to in a specific project and region.
|
|
@@ -583,4 +583,5 @@ def setup_vac_subparser(subparsers):
|
|
|
583
583
|
invoke_parser.add_argument('data', help='Data to send to the VAC service (as JSON string).')
|
|
584
584
|
invoke_parser.add_argument('--is-file', action='store_true', help='Indicate if the data argument is a file path')
|
|
585
585
|
|
|
586
|
-
|
|
586
|
+
# If no subcommand is provided, print the help message
|
|
587
|
+
vac_parser.set_defaults(func=lambda args: vac_parser.print_help() if args.action is None else vac_command(args))
|
|
@@ -13,6 +13,7 @@ from .vertex import setup_vertex_subparser
|
|
|
13
13
|
from ..llamaindex import setup_llamaindex_subparser
|
|
14
14
|
|
|
15
15
|
from ..utils import ConfigManager
|
|
16
|
+
from ..utils.version import sunholo_version
|
|
16
17
|
|
|
17
18
|
from ..custom_logging import log
|
|
18
19
|
|
|
@@ -63,7 +64,8 @@ def main(args=None):
|
|
|
63
64
|
parser.add_argument('--debug', action='store_true', help='Enable debug output')
|
|
64
65
|
parser.add_argument('--project', default=default_project, help='GCP project to list Cloud Run services from.')
|
|
65
66
|
parser.add_argument('--region', default=default_region, help='Region to list Cloud Run services from.')
|
|
66
|
-
|
|
67
|
+
parser.add_argument('--version', action='store_true', help='Show the version and exit')
|
|
68
|
+
|
|
67
69
|
subparsers = parser.add_subparsers(title='commands',
|
|
68
70
|
description='Valid commands',
|
|
69
71
|
help='Commands',
|
|
@@ -102,6 +104,10 @@ def main(args=None):
|
|
|
102
104
|
log.setLevel(logging.WARNING)
|
|
103
105
|
logging.getLogger().setLevel(logging.WARNING)
|
|
104
106
|
|
|
107
|
+
if args.version:
|
|
108
|
+
sunholo_version()
|
|
109
|
+
return
|
|
110
|
+
|
|
105
111
|
if hasattr(args, 'func'):
|
|
106
112
|
args.func(args)
|
|
107
113
|
else:
|
|
@@ -3,7 +3,7 @@ try:
|
|
|
3
3
|
import pg8000
|
|
4
4
|
import sqlalchemy
|
|
5
5
|
from sqlalchemy.exc import DatabaseError, ProgrammingError
|
|
6
|
-
from
|
|
6
|
+
from langchain_google_alloydb_pg import AlloyDBEngine
|
|
7
7
|
except ImportError:
|
|
8
8
|
AlloyDBEngine = None
|
|
9
9
|
pass
|
|
@@ -42,16 +42,14 @@ class AlloyDBClient:
|
|
|
42
42
|
region: str=None,
|
|
43
43
|
cluster_name:str=None,
|
|
44
44
|
instance_name:str=None,
|
|
45
|
-
user:str=None,
|
|
46
|
-
password=None,
|
|
45
|
+
user:str=None,
|
|
47
46
|
db="postgres"):
|
|
48
47
|
"""Initializes the AlloyDB client.
|
|
49
48
|
- project_id (str): GCP project ID where the AlloyDB instance resides.
|
|
50
49
|
- region (str): The region where the AlloyDB instance is located.
|
|
51
50
|
- cluster_name (str): The name of the AlloyDB cluster.
|
|
52
51
|
- instance_name (str): The name of the AlloyDB instance.
|
|
53
|
-
- user (str):
|
|
54
|
-
- password (str): The database user's password.
|
|
52
|
+
- user (str): If user is None will use the default service email
|
|
55
53
|
- db_name (str): The name of the database.
|
|
56
54
|
"""
|
|
57
55
|
if config is None:
|
|
@@ -61,6 +59,7 @@ class AlloyDBClient:
|
|
|
61
59
|
alloydb_config = config.vacConfig("alloydb_config")
|
|
62
60
|
if not alloydb_config:
|
|
63
61
|
raise ValueError("Must specify vac.alloydb_config")
|
|
62
|
+
self.config = alloydb_config
|
|
64
63
|
project_id = alloydb_config["project_id"]
|
|
65
64
|
region = alloydb_config["region"]
|
|
66
65
|
cluster_name = alloydb_config["cluster"]
|
|
@@ -70,33 +69,34 @@ class AlloyDBClient:
|
|
|
70
69
|
if ALLOYDB_DB is None and alloydb_config.get("database") is None:
|
|
71
70
|
log.warning("Could not locate ALLOYDB_DB environment variable or 'alloydb_config.database'")
|
|
72
71
|
|
|
73
|
-
self.database = alloydb_config.get("database") or ALLOYDB_DB
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
def _create_engine(self
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
72
|
+
self.database = alloydb_config.get("database") or ALLOYDB_DB
|
|
73
|
+
|
|
74
|
+
if user and not user.endswith(".iam"):
|
|
75
|
+
raise ValueError("If you supply an IAM user it must end with .iam e.g. 'sa-cloudbuild@multivac-deploy.iam'")
|
|
76
|
+
|
|
77
|
+
self.user = user
|
|
78
|
+
self.engine = self._create_engine()
|
|
79
|
+
|
|
80
|
+
def _create_engine(self):
|
|
81
|
+
if not AlloyDBEngine:
|
|
82
|
+
log.error("Can't create AlloyDBEngine - install via `pip install sunholo[gcp,database]`")
|
|
83
|
+
raise ValueError("Can't import AlloyDBEngine")
|
|
84
|
+
|
|
85
|
+
log.info("Inititaing AlloyDB Langchain engine for database: {self.database}")
|
|
86
|
+
|
|
87
|
+
from google.cloud.alloydb.connector import IPTypes
|
|
88
|
+
engine = AlloyDBEngine.from_instance(
|
|
89
|
+
project_id=self.config["project_id"],
|
|
90
|
+
region=self.config["region"],
|
|
91
|
+
cluster=self.config["cluster"],
|
|
92
|
+
instance=self.config["instance"],
|
|
93
|
+
user=self.user,
|
|
94
|
+
database=self.database,
|
|
95
|
+
ip_type=self.config.get("ip_type") or IPTypes.PRIVATE
|
|
97
96
|
)
|
|
98
|
-
|
|
99
|
-
log.info(f"Created AlloyDB engine for {
|
|
97
|
+
|
|
98
|
+
log.info(f"Created AlloyDB engine for {engine}")
|
|
99
|
+
|
|
100
100
|
return engine
|
|
101
101
|
|
|
102
102
|
def execute_sql(self, sql_statement):
|
|
@@ -152,6 +152,20 @@ class AlloyDBClient:
|
|
|
152
152
|
documents = await self.execute_sql_async(query)
|
|
153
153
|
return documents
|
|
154
154
|
|
|
155
|
+
def get_sources_from_docstore(self, sources, vector_name, search_type="OR", just_source_name=False):
|
|
156
|
+
"""Fetches sources from the docstore."""
|
|
157
|
+
if just_source_name:
|
|
158
|
+
query = self._list_sources_from_docstore(sources, vector_name=vector_name, search_type=search_type)
|
|
159
|
+
else:
|
|
160
|
+
query = self._get_sources_from_docstore(sources, vector_name=vector_name, search_type=search_type)
|
|
161
|
+
|
|
162
|
+
if not query:
|
|
163
|
+
return []
|
|
164
|
+
|
|
165
|
+
documents = self.execute_sql(query)
|
|
166
|
+
|
|
167
|
+
return documents
|
|
168
|
+
|
|
155
169
|
def _get_sources_from_docstore(self, sources, vector_name, search_type="OR"):
|
|
156
170
|
"""Helper function to build the SQL query for fetching sources."""
|
|
157
171
|
if not sources:
|
|
@@ -22,7 +22,7 @@ from .content_buffer import ContentBuffer, BufferStreamingStdOutCallbackHandler
|
|
|
22
22
|
from ..qna.parsers import parse_output
|
|
23
23
|
|
|
24
24
|
from ..custom_logging import log
|
|
25
|
-
from ..utils import load_config_key
|
|
25
|
+
from ..utils import load_config_key, ConfigManager
|
|
26
26
|
from ..utils.parsers import check_kwargs_support
|
|
27
27
|
|
|
28
28
|
from .langserve import parse_langserve_token, parse_langserve_token_async
|
|
@@ -248,8 +248,9 @@ def generate_proxy_stream(stream_to_f, user_input, vector_name, chat_history, ge
|
|
|
248
248
|
):
|
|
249
249
|
print(output) # Process each streaming output chunk
|
|
250
250
|
"""
|
|
251
|
-
|
|
252
|
-
|
|
251
|
+
config = ConfigManager(vector_name)
|
|
252
|
+
agent = config.vacConfig("agent")
|
|
253
|
+
agent_type = config.vacConfig("agent_type")
|
|
253
254
|
|
|
254
255
|
def generate():
|
|
255
256
|
json_buffer = ""
|
|
@@ -306,9 +307,10 @@ async def generate_proxy_stream_async(stream_to_f, user_input, vector_name, chat
|
|
|
306
307
|
):
|
|
307
308
|
print(output) # Process each streaming output chunk
|
|
308
309
|
"""
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
310
|
+
config = ConfigManager(vector_name)
|
|
311
|
+
agent = config.vacConfig("agent")
|
|
312
|
+
agent_type = config.vacConfig("agent_type")
|
|
313
|
+
|
|
312
314
|
async def generate():
|
|
313
315
|
json_buffer = ""
|
|
314
316
|
inside_json = False
|
|
@@ -133,8 +133,8 @@ def get_google_search_grounding(vector_name:str=None, config:ConfigManager=None)
|
|
|
133
133
|
config = ConfigManager(vector_name)
|
|
134
134
|
|
|
135
135
|
# can't have this and llamaindex memories?
|
|
136
|
-
|
|
137
|
-
if
|
|
136
|
+
tools = config.vacConfig("tools")
|
|
137
|
+
if tools and tools.get("google_search"):
|
|
138
138
|
gs_tool = Tool.from_google_search_retrieval(grounding.GoogleSearchRetrieval())
|
|
139
139
|
log.info(f"Got Search Tool: {gs_tool}")
|
|
140
140
|
return gs_tool
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sunholo
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.83.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.
|
|
6
|
+
Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.83.1.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
|
|
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
|