sunholo 0.69.8__tar.gz → 0.69.10__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 (130) hide show
  1. {sunholo-0.69.8 → sunholo-0.69.10}/PKG-INFO +2 -2
  2. {sunholo-0.69.8 → sunholo-0.69.10}/setup.py +1 -1
  3. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/discovery_engine/chunker_handler.py +2 -7
  4. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/discovery_engine/create_new.py +2 -3
  5. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/discovery_engine/discovery_engine_client.py +55 -0
  6. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/llamaindex/import_files.py +0 -1
  7. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo.egg-info/PKG-INFO +2 -2
  8. {sunholo-0.69.8 → sunholo-0.69.10}/LICENSE.txt +0 -0
  9. {sunholo-0.69.8 → sunholo-0.69.10}/MANIFEST.in +0 -0
  10. {sunholo-0.69.8 → sunholo-0.69.10}/README.md +0 -0
  11. {sunholo-0.69.8 → sunholo-0.69.10}/setup.cfg +0 -0
  12. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/__init__.py +0 -0
  13. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/agents/__init__.py +0 -0
  14. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/agents/chat_history.py +0 -0
  15. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/agents/dispatch_to_qa.py +0 -0
  16. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/agents/fastapi/__init__.py +0 -0
  17. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/agents/fastapi/base.py +0 -0
  18. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/agents/fastapi/qna_routes.py +0 -0
  19. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/agents/flask/__init__.py +0 -0
  20. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/agents/flask/base.py +0 -0
  21. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/agents/flask/qna_routes.py +0 -0
  22. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/agents/flask/vac_routes.py +0 -0
  23. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/agents/langserve.py +0 -0
  24. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/agents/pubsub.py +0 -0
  25. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/agents/route.py +0 -0
  26. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/agents/special_commands.py +0 -0
  27. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/agents/swagger.py +0 -0
  28. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/archive/__init__.py +0 -0
  29. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/archive/archive.py +0 -0
  30. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/auth/__init__.py +0 -0
  31. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/auth/run.py +0 -0
  32. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/bots/__init__.py +0 -0
  33. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/bots/discord.py +0 -0
  34. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/bots/github_webhook.py +0 -0
  35. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/bots/webapp.py +0 -0
  36. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/chunker/__init__.py +0 -0
  37. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/chunker/data_to_embed_pubsub.py +0 -0
  38. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/chunker/doc_handling.py +0 -0
  39. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/chunker/images.py +0 -0
  40. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/chunker/loaders.py +0 -0
  41. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/chunker/message_data.py +0 -0
  42. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/chunker/pdfs.py +0 -0
  43. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/chunker/publish.py +0 -0
  44. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/chunker/splitter.py +0 -0
  45. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/cli/__init__.py +0 -0
  46. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/cli/chat_vac.py +0 -0
  47. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/cli/cli.py +0 -0
  48. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/cli/cli_init.py +0 -0
  49. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/cli/configs.py +0 -0
  50. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/cli/deploy.py +0 -0
  51. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/cli/embedder.py +0 -0
  52. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/cli/merge_texts.py +0 -0
  53. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/cli/run_proxy.py +0 -0
  54. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/cli/sun_rich.py +0 -0
  55. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/cli/swagger.py +0 -0
  56. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/components/__init__.py +0 -0
  57. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/components/llm.py +0 -0
  58. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/components/retriever.py +0 -0
  59. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/components/vectorstore.py +0 -0
  60. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/database/__init__.py +0 -0
  61. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/database/alloydb.py +0 -0
  62. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/database/alloydb_client.py +0 -0
  63. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/database/database.py +0 -0
  64. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/database/lancedb.py +0 -0
  65. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/database/sql/sb/create_function.sql +0 -0
  66. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/database/sql/sb/create_function_time.sql +0 -0
  67. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/database/sql/sb/create_table.sql +0 -0
  68. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
  69. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/database/sql/sb/return_sources.sql +0 -0
  70. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/database/sql/sb/setup.sql +0 -0
  71. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/database/static_dbs.py +0 -0
  72. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/database/uuid.py +0 -0
  73. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/discovery_engine/__init__.py +0 -0
  74. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/embedder/__init__.py +0 -0
  75. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/embedder/embed_chunk.py +0 -0
  76. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/gcs/__init__.py +0 -0
  77. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/gcs/add_file.py +0 -0
  78. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/gcs/download_url.py +0 -0
  79. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/gcs/metadata.py +0 -0
  80. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/langfuse/__init__.py +0 -0
  81. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/langfuse/callback.py +0 -0
  82. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/langfuse/prompts.py +0 -0
  83. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/llamaindex/__init__.py +0 -0
  84. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/llamaindex/generate.py +0 -0
  85. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/llamaindex/get_files.py +0 -0
  86. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/logging.py +0 -0
  87. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/lookup/__init__.py +0 -0
  88. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/lookup/model_lookup.yaml +0 -0
  89. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/patches/__init__.py +0 -0
  90. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/patches/langchain/__init__.py +0 -0
  91. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/patches/langchain/lancedb.py +0 -0
  92. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/patches/langchain/vertexai.py +0 -0
  93. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/pubsub/__init__.py +0 -0
  94. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/pubsub/process_pubsub.py +0 -0
  95. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/pubsub/pubsub_manager.py +0 -0
  96. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/qna/__init__.py +0 -0
  97. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/qna/parsers.py +0 -0
  98. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/qna/retry.py +0 -0
  99. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/streaming/__init__.py +0 -0
  100. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/streaming/content_buffer.py +0 -0
  101. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/streaming/langserve.py +0 -0
  102. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/streaming/stream_lookup.py +0 -0
  103. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/streaming/streaming.py +0 -0
  104. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/summarise/__init__.py +0 -0
  105. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/summarise/summarise.py +0 -0
  106. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/utils/__init__.py +0 -0
  107. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/utils/api_key.py +0 -0
  108. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/utils/big_context.py +0 -0
  109. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/utils/config.py +0 -0
  110. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/utils/config_schema.py +0 -0
  111. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/utils/gcp.py +0 -0
  112. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/utils/gcp_project.py +0 -0
  113. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/utils/parsers.py +0 -0
  114. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/utils/timedelta.py +0 -0
  115. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/utils/user_ids.py +0 -0
  116. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/utils/version.py +0 -0
  117. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/vertex/__init__.py +0 -0
  118. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/vertex/init.py +0 -0
  119. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/vertex/memory_tools.py +0 -0
  120. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo/vertex/safety.py +0 -0
  121. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo.egg-info/SOURCES.txt +0 -0
  122. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo.egg-info/dependency_links.txt +0 -0
  123. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo.egg-info/entry_points.txt +0 -0
  124. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo.egg-info/requires.txt +0 -0
  125. {sunholo-0.69.8 → sunholo-0.69.10}/sunholo.egg-info/top_level.txt +0 -0
  126. {sunholo-0.69.8 → sunholo-0.69.10}/tests/test_chat_history.py +0 -0
  127. {sunholo-0.69.8 → sunholo-0.69.10}/tests/test_chunker.py +0 -0
  128. {sunholo-0.69.8 → sunholo-0.69.10}/tests/test_config.py +0 -0
  129. {sunholo-0.69.8 → sunholo-0.69.10}/tests/test_dispatch_to_qa.py +0 -0
  130. {sunholo-0.69.8 → sunholo-0.69.10}/tests/test_swagger.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.69.8
3
+ Version: 0.69.10
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.69.8.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.69.10.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.69.8'
4
+ version = '0.69.10'
5
5
 
6
6
  setup(
7
7
  name='sunholo',
@@ -1,5 +1,6 @@
1
1
  from ..logging import log
2
2
  from ..utils.config import load_config_key
3
+ from ..utils.gcp_project import get_gcp_project
3
4
  from ..components import load_memories
4
5
 
5
6
  from .discovery_engine_client import DiscoveryEngineClient
@@ -20,11 +21,6 @@ def do_discovery_engine(message_data, metadata, vector_name):
20
21
  ```
21
22
  """
22
23
 
23
- global_gcp_config = load_config_key("gcp_config", vector_name="global", kind="vacConfig")
24
- gcp_config = load_config_key("gcp_config", vector_name=vector_name, kind="vacConfig")
25
- if not gcp_config and not global_gcp_config:
26
- raise ValueError(f"Need config.{vector_name}.gcp_config to configure discovery engine")
27
-
28
24
  memories = load_memories(vector_name)
29
25
  tools = []
30
26
 
@@ -38,11 +34,10 @@ def do_discovery_engine(message_data, metadata, vector_name):
38
34
  vectorstore = value.get('vectorstore')
39
35
  if vectorstore == "discovery_engine" or vectorstore == "vertex_ai_search":
40
36
  log.info(f"Found vectorstore {vectorstore}")
41
- project_id = gcp_config.get('project_id') or global_gcp_config['project_id']
42
37
  #location = gcp_config.get('location')
43
38
  corpus = DiscoveryEngineClient(
44
39
  data_store_id=vector_name,
45
- project_id=project_id,
40
+ project_id=get_gcp_project(),
46
41
  # location needs to be 'eu' or 'us' which doesn't work with other configurations
47
42
  #location=location or global_location
48
43
  )
@@ -1,9 +1,8 @@
1
1
  from .discovery_engine_client import DiscoveryEngineClient
2
2
  from ..utils.config import load_config_key
3
+ from ..utils.gcp_project import get_gcp_project
3
4
 
4
5
  def create_new_discovery_engine(vector_name):
5
- global_config = load_config_key("gcp_config", "global", kind="vacConfig")
6
- gcp_config = load_config_key("gcp_config", vector_name=vector_name, kind="vacConfig")
7
6
 
8
7
  chunker_config = load_config_key("chunker", vector_name=vector_name, kind="vacConfig")
9
8
 
@@ -12,7 +11,7 @@ def create_new_discovery_engine(vector_name):
12
11
  if "chunk_size" in chunker_config:
13
12
  chunk_size = chunker_config["chunk_size"]
14
13
 
15
- project_id = gcp_config.get('project_id') or global_config.get('project_id')
14
+ project_id = get_gcp_project()
16
15
  if not project_id:
17
16
  raise ValueError("Could not find project_id in gcp_config")
18
17
 
@@ -155,6 +155,7 @@ class DiscoveryEngineClient:
155
155
  num_previous_chunks: int = 3,
156
156
  num_next_chunks: int = 3,
157
157
  page_size: int = 10,
158
+ parse_chunks_to_string: bool = True,
158
159
  doc_or_chunks: str = "CHUNKS", # or DOCUMENTS
159
160
  serving_config: str = "default_serving_config",
160
161
  ):
@@ -166,6 +167,7 @@ class DiscoveryEngineClient:
166
167
  num_previous_chunks (int, optional): Number of previous chunks to return for context (default is 3).
167
168
  num_next_chunks (int, optional): Number of next chunks to return for context (default is 3).
168
169
  page_size (int, optional): The maximum number of results to return per page (default is 10).
170
+ parse_chunks_to_string: If True will put chunks in one big string, False will return object
169
171
 
170
172
  Returns:
171
173
  discoveryengine.SearchResponse: The search response object containing the search results.
@@ -201,8 +203,61 @@ class DiscoveryEngineClient:
201
203
 
202
204
  search_response = self.search_client.search(search_request)
203
205
 
206
+ if parse_chunks_to_string:
207
+
208
+ return self.process_chunks(search_response)
209
+
204
210
  return search_response
205
211
 
212
+ def process_chunks(self, response):
213
+ all_chunks = []
214
+
215
+ if 'results' not in response:
216
+ raise ValueError('No results found in response')
217
+
218
+ for result in response['results']:
219
+ chunk = result['chunk']
220
+ chunk_metadata = chunk['chunkMetadata']
221
+
222
+ if 'previousChunks' in chunk_metadata:
223
+ # Process previous chunks
224
+ for prev_chunk in chunk['chunkMetadata']['previousChunks']:
225
+ prev_chunk_string = (
226
+ f"# {prev_chunk['id']}\n"
227
+ f"{prev_chunk['content']}\n"
228
+ f"## metadata\n"
229
+ f"Document URI: {prev_chunk['documentMetadata']['uri']}\n"
230
+ f"Document Title: {prev_chunk['documentMetadata']['title']}\n"
231
+ )
232
+ all_chunks.append(prev_chunk_string)
233
+
234
+ # Process fetched chunk
235
+ fetched_chunk_string = (
236
+ f"# {chunk['id']}\n"
237
+ f"{chunk['content']}\n"
238
+ f"## metadata\n"
239
+ f"Document URI: {chunk['documentMetadata']['uri']}\n"
240
+ f"Document Title: {chunk['documentMetadata']['title']}\n"
241
+ )
242
+ all_chunks.append(fetched_chunk_string)
243
+
244
+ # Process next chunks
245
+ if 'nextChunks' in chunk_metadata:
246
+ for next_chunk in chunk_metadata['nextChunks']:
247
+ next_chunk_string = (
248
+ f"# {next_chunk['id']}\n"
249
+ f"{next_chunk['content']}\n"
250
+ f"## metadata\n"
251
+ f"Document URI: {next_chunk['documentMetadata']['uri']}\n"
252
+ f"Document Title: {next_chunk['documentMetadata']['title']}\n"
253
+ )
254
+ all_chunks.append(next_chunk_string)
255
+
256
+ # Combine all chunks into one long string
257
+ result_string = "\n".join(all_chunks)
258
+
259
+ return result_string
260
+
206
261
  def import_documents(self,
207
262
  gcs_uri: Optional[str] = None,
208
263
  data_schema="content",
@@ -61,7 +61,6 @@ def do_llamaindex(message_data, metadata, vector_name):
61
61
  corpuses = []
62
62
  for memory in memories:
63
63
  for key, value in memory.items(): # Now iterate over the dictionary
64
- log.info(f"Found memory {key}")
65
64
  vectorstore = value.get('vectorstore')
66
65
  if vectorstore == "llamaindex":
67
66
  log.info(f"Found vectorstore {vectorstore}")
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.69.8
3
+ Version: 0.69.10
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.69.8.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.69.10.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