sunholo 0.67.6__tar.gz → 0.67.8__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.
Files changed (124) hide show
  1. {sunholo-0.67.6 → sunholo-0.67.8}/PKG-INFO +2 -2
  2. {sunholo-0.67.6 → sunholo-0.67.8}/setup.py +1 -1
  3. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/agents/route.py +6 -1
  4. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/components/retriever.py +60 -8
  5. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/components/vectorstore.py +1 -1
  6. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo.egg-info/PKG-INFO +2 -2
  7. {sunholo-0.67.6 → sunholo-0.67.8}/LICENSE.txt +0 -0
  8. {sunholo-0.67.6 → sunholo-0.67.8}/MANIFEST.in +0 -0
  9. {sunholo-0.67.6 → sunholo-0.67.8}/README.md +0 -0
  10. {sunholo-0.67.6 → sunholo-0.67.8}/setup.cfg +0 -0
  11. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/__init__.py +0 -0
  12. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/agents/__init__.py +0 -0
  13. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/agents/chat_history.py +0 -0
  14. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/agents/dispatch_to_qa.py +0 -0
  15. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/agents/fastapi/__init__.py +0 -0
  16. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/agents/fastapi/base.py +0 -0
  17. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/agents/fastapi/qna_routes.py +0 -0
  18. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/agents/flask/__init__.py +0 -0
  19. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/agents/flask/base.py +0 -0
  20. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/agents/flask/qna_routes.py +0 -0
  21. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/agents/langserve.py +0 -0
  22. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/agents/pubsub.py +0 -0
  23. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/agents/special_commands.py +0 -0
  24. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/agents/swagger.py +0 -0
  25. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/archive/__init__.py +0 -0
  26. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/archive/archive.py +0 -0
  27. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/auth/__init__.py +0 -0
  28. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/auth/run.py +0 -0
  29. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/bots/__init__.py +0 -0
  30. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/bots/discord.py +0 -0
  31. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/bots/github_webhook.py +0 -0
  32. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/bots/webapp.py +0 -0
  33. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/chunker/__init__.py +0 -0
  34. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/chunker/data_to_embed_pubsub.py +0 -0
  35. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/chunker/doc_handling.py +0 -0
  36. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/chunker/images.py +0 -0
  37. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/chunker/loaders.py +0 -0
  38. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/chunker/message_data.py +0 -0
  39. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/chunker/pdfs.py +0 -0
  40. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/chunker/publish.py +0 -0
  41. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/chunker/splitter.py +0 -0
  42. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/cli/__init__.py +0 -0
  43. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/cli/chat_vac.py +0 -0
  44. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/cli/cli.py +0 -0
  45. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/cli/cli_init.py +0 -0
  46. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/cli/configs.py +0 -0
  47. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/cli/deploy.py +0 -0
  48. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/cli/embedder.py +0 -0
  49. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/cli/merge_texts.py +0 -0
  50. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/cli/run_proxy.py +0 -0
  51. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/cli/sun_rich.py +0 -0
  52. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/cli/swagger.py +0 -0
  53. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/components/__init__.py +0 -0
  54. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/components/llm.py +0 -0
  55. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/database/__init__.py +0 -0
  56. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/database/alloydb.py +0 -0
  57. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/database/database.py +0 -0
  58. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/database/lancedb.py +0 -0
  59. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/database/sql/sb/create_function.sql +0 -0
  60. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/database/sql/sb/create_function_time.sql +0 -0
  61. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/database/sql/sb/create_table.sql +0 -0
  62. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
  63. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/database/sql/sb/return_sources.sql +0 -0
  64. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/database/sql/sb/setup.sql +0 -0
  65. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/database/static_dbs.py +0 -0
  66. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/database/uuid.py +0 -0
  67. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/embedder/__init__.py +0 -0
  68. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/embedder/embed_chunk.py +0 -0
  69. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/gcs/__init__.py +0 -0
  70. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/gcs/add_file.py +0 -0
  71. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/gcs/download_url.py +0 -0
  72. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/gcs/metadata.py +0 -0
  73. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/langfuse/__init__.py +0 -0
  74. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/langfuse/callback.py +0 -0
  75. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/langfuse/prompts.py +0 -0
  76. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/llamaindex/__init__.py +0 -0
  77. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/llamaindex/generate.py +0 -0
  78. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/llamaindex/get_files.py +0 -0
  79. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/llamaindex/import_files.py +0 -0
  80. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/logging.py +0 -0
  81. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/lookup/__init__.py +0 -0
  82. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/lookup/model_lookup.yaml +0 -0
  83. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/patches/__init__.py +0 -0
  84. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/patches/langchain/__init__.py +0 -0
  85. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/patches/langchain/lancedb.py +0 -0
  86. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/patches/langchain/vertexai.py +0 -0
  87. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/pubsub/__init__.py +0 -0
  88. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/pubsub/process_pubsub.py +0 -0
  89. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/pubsub/pubsub_manager.py +0 -0
  90. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/qna/__init__.py +0 -0
  91. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/qna/parsers.py +0 -0
  92. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/qna/retry.py +0 -0
  93. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/streaming/__init__.py +0 -0
  94. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/streaming/content_buffer.py +0 -0
  95. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/streaming/langserve.py +0 -0
  96. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/streaming/stream_lookup.py +0 -0
  97. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/streaming/streaming.py +0 -0
  98. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/summarise/__init__.py +0 -0
  99. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/summarise/summarise.py +0 -0
  100. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/utils/__init__.py +0 -0
  101. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/utils/api_key.py +0 -0
  102. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/utils/big_context.py +0 -0
  103. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/utils/config.py +0 -0
  104. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/utils/config_schema.py +0 -0
  105. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/utils/gcp.py +0 -0
  106. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/utils/gcp_project.py +0 -0
  107. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/utils/parsers.py +0 -0
  108. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/utils/timedelta.py +0 -0
  109. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/utils/user_ids.py +0 -0
  110. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/utils/version.py +0 -0
  111. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/vertex/__init__.py +0 -0
  112. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/vertex/init.py +0 -0
  113. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/vertex/memory_tools.py +0 -0
  114. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo/vertex/safety.py +0 -0
  115. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo.egg-info/SOURCES.txt +0 -0
  116. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo.egg-info/dependency_links.txt +0 -0
  117. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo.egg-info/entry_points.txt +0 -0
  118. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo.egg-info/requires.txt +0 -0
  119. {sunholo-0.67.6 → sunholo-0.67.8}/sunholo.egg-info/top_level.txt +0 -0
  120. {sunholo-0.67.6 → sunholo-0.67.8}/tests/test_chat_history.py +0 -0
  121. {sunholo-0.67.6 → sunholo-0.67.8}/tests/test_chunker.py +0 -0
  122. {sunholo-0.67.6 → sunholo-0.67.8}/tests/test_config.py +0 -0
  123. {sunholo-0.67.6 → sunholo-0.67.8}/tests/test_dispatch_to_qa.py +0 -0
  124. {sunholo-0.67.6 → sunholo-0.67.8}/tests/test_swagger.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.67.6
3
+ Version: 0.67.8
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.67.6.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.67.8.tar.gz
7
7
  Author: Holosun ApS
8
8
  Author-email: multivac@sunholo.com
9
9
  License: Apache License, Version 2.0
@@ -1,7 +1,7 @@
1
1
  from setuptools import setup, find_packages
2
2
 
3
3
  # Define your base version
4
- version = '0.67.6'
4
+ version = '0.67.8'
5
5
 
6
6
  setup(
7
7
  name='sunholo',
@@ -47,19 +47,24 @@ def route_endpoint(vector_name, method = 'post', override_endpoint=None):
47
47
 
48
48
  agents_config = load_config_key(agent_type, vector_name, kind="agentConfig")
49
49
 
50
- log.info(f"endpoints_config: {agents_config}")
50
+ log.info(f"agents_config: {agents_config}")
51
51
  if method not in agents_config:
52
52
  raise ValueError(f"Invalid method '{method}' for agent configuration.")
53
53
 
54
54
  # 'post' or 'get'
55
55
  endpoints_config = agents_config[method]
56
56
 
57
+ log.info(f"endpoints_config: {endpoints_config}")
57
58
  # Replace placeholders in the config
58
59
  endpoints = {}
59
60
  for key, value in endpoints_config.items():
60
61
  format_args = {'stem': stem}
61
62
  if '{vector_name}' in value and vector_name is not None:
62
63
  format_args['vector_name'] = vector_name
64
+
65
+ if not isinstance(value, str):
66
+ log.warning('endpoint value not string? format_args: {format_args} - value: {value} - key: {key}')
67
+
63
68
  endpoints[key] = value.format(**format_args)
64
69
 
65
70
  return endpoints
@@ -46,10 +46,18 @@ def pick_retriever(vector_name, embeddings=None):
46
46
  vectorstore = value.get('vectorstore')
47
47
  if vectorstore:
48
48
  log.info(f"Found vectorstore {vectorstore}")
49
- if embeddings is None:
50
- embeddings = get_embeddings(vector_name)
49
+ from_metadata_id = value.get('from_metadata_id')
50
+ if from_metadata_id:
51
+ # this entry needs to be fetched via metadata key
52
+ log.info(f"Skipped from_metadata_id for {vectorstore}")
53
+ continue
54
+
55
+ embeddings = embeddings or get_embeddings(vector_name)
51
56
  read_only = value.get('readonly')
52
- vectorstore = pick_vectorstore(vectorstore, vector_name=vector_name, embeddings=embeddings, read_only=read_only)
57
+ vectorstore = pick_vectorstore(vectorstore,
58
+ vector_name=vector_name,
59
+ embeddings=embeddings,
60
+ read_only=read_only)
53
61
  k_override = value.get('k', 3)
54
62
  vs_retriever = vectorstore.as_retriever(search_kwargs=dict(k=k_override))
55
63
  retriever_list.append(vs_retriever)
@@ -71,10 +79,54 @@ def pick_retriever(vector_name, embeddings=None):
71
79
  log.info(f"No retrievers were created for {memories}")
72
80
  return None
73
81
 
82
+ retriever = process_retrieval(retriever_list, vector_name)
83
+
84
+ return retriever
85
+
86
+ def metadata_retriever(metadata: dict, key: str, vector_name:str, embeddings=None):
87
+ """
88
+ Decides which vector_name to retrieve from metadata passed
89
+ """
90
+ memories = load_memories(vector_name)
91
+
92
+ retriever_list = []
93
+ for memory in memories: # Iterate over the list
94
+ for key, value in memory.items(): # Now iterate over the dictionary
95
+ log.info(f"Found memory {key}")
96
+ vectorstore = value.get('vectorstore')
97
+ if vectorstore:
98
+ log.info(f"Found vectorstore {vectorstore}")
99
+ from_metadata_id = value.get('from_metadata_id')
100
+ if from_metadata_id:
101
+ # this entry needs to be fetched via metadata key
102
+ log.info(f"Finding id from_metadata_id for {vectorstore}")
103
+ if key not in metadata:
104
+ raise ValueError(f"Missing {key} in {metadata}")
105
+ the_id = metadata[key]
106
+ read_only = value.get('readonly')
107
+ embeddings = embeddings or get_embeddings(vector_name)
108
+ vectorstore = pick_vectorstore(vectorstore,
109
+ vector_name=the_id,
110
+ embeddings=embeddings,
111
+ read_only=read_only)
112
+ k_override = value.get('k', 3)
113
+ id_retriever = vectorstore.as_retriever(search_kwargs=dict(k=k_override))
114
+ retriever_list.append(id_retriever)
115
+ else:
116
+ continue
117
+
118
+ if not retriever_list or len(retriever_list) == 0:
119
+ log.info(f"No retrievers were created for {memories}")
120
+ return None
121
+
122
+ retriever = process_retrieval(retriever_list, vector_name)
123
+
124
+ return retriever
125
+
126
+
127
+
128
+ def process_retrieval(retriever_list: list, vector_name: str):
74
129
  k_override = load_config_key("memory_k", vector_name, kind="vacConfig")
75
- if not k_override:
76
- k_override = 3
77
-
78
130
  lotr = MergerRetriever(retrievers=retriever_list)
79
131
 
80
132
  filter_embeddings = get_embeddings(vector_name)
@@ -83,5 +135,5 @@ def pick_retriever(vector_name, embeddings=None):
83
135
  retriever = ContextualCompressionRetriever(
84
136
  base_compressor=pipeline, base_retriever=lotr,
85
137
  k=k_override)
86
-
87
- return retriever
138
+
139
+ return retriever
@@ -14,7 +14,7 @@
14
14
  import os
15
15
  from ..logging import log
16
16
 
17
- def pick_vectorstore(vs_str, vector_name, embeddings, read_only=None):
17
+ def pick_vectorstore(vs_str: str, vector_name: str, embeddings, read_only=None):
18
18
  log.debug('Picking vectorstore')
19
19
 
20
20
  if vs_str == 'supabase':
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.67.6
3
+ Version: 0.67.8
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.67.6.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.67.8.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