sunholo 0.104.5__tar.gz → 0.105.0__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 (164) hide show
  1. {sunholo-0.104.5 → sunholo-0.105.0}/PKG-INFO +2 -2
  2. {sunholo-0.104.5 → sunholo-0.105.0}/setup.py +1 -1
  3. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/agents/flask/vac_routes.py +7 -2
  4. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/genai/process_funcs_cls.py +17 -16
  5. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/streaming/streaming.py +11 -5
  6. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo.egg-info/PKG-INFO +2 -2
  7. {sunholo-0.104.5 → sunholo-0.105.0}/LICENSE.txt +0 -0
  8. {sunholo-0.104.5 → sunholo-0.105.0}/MANIFEST.in +0 -0
  9. {sunholo-0.104.5 → sunholo-0.105.0}/README.md +0 -0
  10. {sunholo-0.104.5 → sunholo-0.105.0}/setup.cfg +0 -0
  11. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/__init__.py +0 -0
  12. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/agents/__init__.py +0 -0
  13. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/agents/chat_history.py +0 -0
  14. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/agents/dispatch_to_qa.py +0 -0
  15. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/agents/fastapi/__init__.py +0 -0
  16. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/agents/fastapi/base.py +0 -0
  17. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/agents/fastapi/qna_routes.py +0 -0
  18. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/agents/flask/__init__.py +0 -0
  19. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/agents/flask/base.py +0 -0
  20. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/agents/flask/qna_routes.py +0 -0
  21. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/agents/langserve.py +0 -0
  22. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/agents/pubsub.py +0 -0
  23. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/agents/route.py +0 -0
  24. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/agents/special_commands.py +0 -0
  25. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/agents/swagger.py +0 -0
  26. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/archive/__init__.py +0 -0
  27. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/archive/archive.py +0 -0
  28. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/auth/__init__.py +0 -0
  29. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/auth/gcloud.py +0 -0
  30. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/auth/refresh.py +0 -0
  31. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/auth/run.py +0 -0
  32. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/azure/__init__.py +0 -0
  33. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/azure/auth.py +0 -0
  34. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/azure/blobs.py +0 -0
  35. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/azure/event_grid.py +0 -0
  36. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/bots/__init__.py +0 -0
  37. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/bots/discord.py +0 -0
  38. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/bots/github_webhook.py +0 -0
  39. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/bots/webapp.py +0 -0
  40. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/chunker/__init__.py +0 -0
  41. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/chunker/azure.py +0 -0
  42. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/chunker/doc_handling.py +0 -0
  43. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/chunker/encode_metadata.py +0 -0
  44. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/chunker/images.py +0 -0
  45. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/chunker/loaders.py +0 -0
  46. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/chunker/message_data.py +0 -0
  47. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/chunker/pdfs.py +0 -0
  48. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/chunker/process_chunker_data.py +0 -0
  49. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/chunker/publish.py +0 -0
  50. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/chunker/pubsub.py +0 -0
  51. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/chunker/splitter.py +0 -0
  52. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/cli/__init__.py +0 -0
  53. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/cli/chat_vac.py +0 -0
  54. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/cli/cli.py +0 -0
  55. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/cli/cli_init.py +0 -0
  56. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/cli/configs.py +0 -0
  57. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/cli/deploy.py +0 -0
  58. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/cli/embedder.py +0 -0
  59. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/cli/merge_texts.py +0 -0
  60. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/cli/run_proxy.py +0 -0
  61. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/cli/sun_rich.py +0 -0
  62. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/cli/swagger.py +0 -0
  63. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/cli/vertex.py +0 -0
  64. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/components/__init__.py +0 -0
  65. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/components/llm.py +0 -0
  66. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/components/retriever.py +0 -0
  67. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/components/vectorstore.py +0 -0
  68. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/custom_logging.py +0 -0
  69. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/database/__init__.py +0 -0
  70. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/database/alloydb.py +0 -0
  71. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/database/alloydb_client.py +0 -0
  72. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/database/database.py +0 -0
  73. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/database/lancedb.py +0 -0
  74. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/database/sql/sb/create_function.sql +0 -0
  75. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/database/sql/sb/create_function_time.sql +0 -0
  76. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/database/sql/sb/create_table.sql +0 -0
  77. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
  78. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/database/sql/sb/return_sources.sql +0 -0
  79. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/database/sql/sb/setup.sql +0 -0
  80. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/database/static_dbs.py +0 -0
  81. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/database/uuid.py +0 -0
  82. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/discovery_engine/__init__.py +0 -0
  83. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/discovery_engine/chunker_handler.py +0 -0
  84. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/discovery_engine/create_new.py +0 -0
  85. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/discovery_engine/discovery_engine_client.py +0 -0
  86. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/discovery_engine/get_ai_search_chunks.py +0 -0
  87. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/embedder/__init__.py +0 -0
  88. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/embedder/embed_chunk.py +0 -0
  89. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/excel/__init__.py +0 -0
  90. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/excel/plugin.py +0 -0
  91. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/gcs/__init__.py +0 -0
  92. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/gcs/add_file.py +0 -0
  93. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/gcs/download_folder.py +0 -0
  94. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/gcs/download_url.py +0 -0
  95. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/gcs/extract_and_sign.py +0 -0
  96. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/gcs/metadata.py +0 -0
  97. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/genai/__init__.py +0 -0
  98. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/genai/images.py +0 -0
  99. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/genai/init.py +0 -0
  100. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/genai/safety.py +0 -0
  101. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/invoke/__init__.py +0 -0
  102. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/invoke/async_class.py +0 -0
  103. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/invoke/direct_vac_func.py +0 -0
  104. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/invoke/invoke_vac_utils.py +0 -0
  105. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/langfuse/__init__.py +0 -0
  106. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/langfuse/callback.py +0 -0
  107. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/langfuse/evals.py +0 -0
  108. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/langfuse/prompts.py +0 -0
  109. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/llamaindex/__init__.py +0 -0
  110. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/llamaindex/get_files.py +0 -0
  111. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/llamaindex/import_files.py +0 -0
  112. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/llamaindex/llamaindex_class.py +0 -0
  113. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/llamaindex/user_history.py +0 -0
  114. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/lookup/__init__.py +0 -0
  115. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/lookup/model_lookup.yaml +0 -0
  116. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/patches/__init__.py +0 -0
  117. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/patches/langchain/__init__.py +0 -0
  118. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/patches/langchain/lancedb.py +0 -0
  119. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/patches/langchain/vertexai.py +0 -0
  120. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/pubsub/__init__.py +0 -0
  121. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/pubsub/process_pubsub.py +0 -0
  122. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/pubsub/pubsub_manager.py +0 -0
  123. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/qna/__init__.py +0 -0
  124. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/qna/parsers.py +0 -0
  125. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/qna/retry.py +0 -0
  126. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/streaming/__init__.py +0 -0
  127. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/streaming/content_buffer.py +0 -0
  128. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/streaming/langserve.py +0 -0
  129. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/streaming/stream_lookup.py +0 -0
  130. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/summarise/__init__.py +0 -0
  131. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/summarise/summarise.py +0 -0
  132. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/terraform/__init__.py +0 -0
  133. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/terraform/tfvars_editor.py +0 -0
  134. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/tools/__init__.py +0 -0
  135. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/tools/web_browser.py +0 -0
  136. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/utils/__init__.py +0 -0
  137. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/utils/api_key.py +0 -0
  138. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/utils/big_context.py +0 -0
  139. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/utils/config.py +0 -0
  140. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/utils/config_class.py +0 -0
  141. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/utils/config_schema.py +0 -0
  142. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/utils/gcp.py +0 -0
  143. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/utils/gcp_project.py +0 -0
  144. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/utils/mime.py +0 -0
  145. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/utils/parsers.py +0 -0
  146. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/utils/timedelta.py +0 -0
  147. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/utils/user_ids.py +0 -0
  148. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/utils/version.py +0 -0
  149. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/vertex/__init__.py +0 -0
  150. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/vertex/extensions_call.py +0 -0
  151. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/vertex/extensions_class.py +0 -0
  152. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/vertex/genai_functions.py +0 -0
  153. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/vertex/init.py +0 -0
  154. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/vertex/memory_tools.py +0 -0
  155. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/vertex/safety.py +0 -0
  156. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo/vertex/type_dict_to_json.py +0 -0
  157. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo.egg-info/SOURCES.txt +0 -0
  158. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo.egg-info/dependency_links.txt +0 -0
  159. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo.egg-info/entry_points.txt +0 -0
  160. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo.egg-info/requires.txt +0 -0
  161. {sunholo-0.104.5 → sunholo-0.105.0}/sunholo.egg-info/top_level.txt +0 -0
  162. {sunholo-0.104.5 → sunholo-0.105.0}/tests/test_async.py +0 -0
  163. {sunholo-0.104.5 → sunholo-0.105.0}/tests/test_chat_history.py +0 -0
  164. {sunholo-0.104.5 → sunholo-0.105.0}/tests/test_config.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.104.5
3
+ Version: 0.105.0
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.104.5.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.105.0.tar.gz
7
7
  Author: Holosun ApS
8
8
  Author-email: multivac@sunholo.com
9
9
  License: Apache License, Version 2.0
@@ -1,6 +1,6 @@
1
1
  from setuptools import setup, find_packages
2
2
 
3
- version = '0.104.5'
3
+ version = '0.105.0'
4
4
 
5
5
  setup(
6
6
  name='sunholo',
@@ -618,7 +618,7 @@ if __name__ == "__main__":
618
618
  user_id = user_id,
619
619
  session_id = session_id,
620
620
  tags = tags,
621
- release = f"sunholo-v{package_version}"
621
+ release = package_version
622
622
  )
623
623
 
624
624
  def prep_vac(self, request, vector_name):
@@ -660,7 +660,12 @@ if __name__ == "__main__":
660
660
  raise ValueError(f"Unable to find vac_config for {vector_name} - {str(e)}")
661
661
 
662
662
  if trace:
663
- trace.update(input=data, metadata=vac_config.configs_by_kind)
663
+ this_vac_config = vac_config.configs_by_kind.get("vacConfig")
664
+ metadata_config=None
665
+ if this_vac_config:
666
+ metadata_config = this_vac_config.get(vector_name)
667
+
668
+ trace.update(input=data, metadata=metadata_config)
664
669
 
665
670
  user_input = data.pop('user_input').strip()
666
671
  stream_wait_time = data.pop('stream_wait_time', 7)
@@ -12,7 +12,7 @@ from collections import deque
12
12
  try:
13
13
  import google.generativeai as genai
14
14
  import proto
15
- from google.generativeai.types import RequestOptions
15
+ from google.generativeai.types import RequestOptions, GenerateContentResponse
16
16
  from google.api_core import retry
17
17
  from google.generativeai import ChatSession
18
18
  from google.api_core.exceptions import RetryError
@@ -441,11 +441,11 @@ class GenAIFunctionProcessor:
441
441
 
442
442
  log.info(f"== Start input content for loop [{guardrail}]\n ## Content: {content_parse}")
443
443
  this_text = "" # reset for this loop
444
- response = []
444
+ response = None
445
445
 
446
446
  try:
447
447
  token_queue.append("\n= Calling Agent =\n")
448
- response = chat.send_message(content, stream=True, request_options=RequestOptions(
448
+ response:GenerateContentResponse = chat.send_message(content, stream=True, request_options=RequestOptions(
449
449
  retry=retry.Retry(
450
450
  initial=10,
451
451
  multiplier=2,
@@ -465,19 +465,20 @@ class GenAIFunctionProcessor:
465
465
  token_queue.append(msg)
466
466
  break
467
467
 
468
- loop_metadata = response.usage_metadata
469
- if loop_metadata:
470
- usage_metadata = {
471
- "prompt_token_count": usage_metadata["prompt_token_count"] + (loop_metadata.prompt_token_count or 0),
472
- "candidates_token_count": usage_metadata["candidates_token_count"] + (loop_metadata.candidates_token_count or 0),
473
- "total_token_count": usage_metadata["total_token_count"] + (loop_metadata.total_token_count or 0),
474
- }
475
- token_queue.append((
476
- "\n-- Agent response -- "
477
- f"Loop tokens: [{loop_metadata.prompt_token_count}]/[{usage_metadata['prompt_token_count']}] "
478
- f"Session tokens: [{loop_metadata.total_token_count}]/[{usage_metadata['total_token_count']}] \n"
479
- ))
480
- loop_metadata = None
468
+ if response:
469
+ loop_metadata = response.usage_metadata
470
+ if loop_metadata:
471
+ usage_metadata = {
472
+ "prompt_token_count": usage_metadata["prompt_token_count"] + (loop_metadata.prompt_token_count or 0),
473
+ "candidates_token_count": usage_metadata["candidates_token_count"] + (loop_metadata.candidates_token_count or 0),
474
+ "total_token_count": usage_metadata["total_token_count"] + (loop_metadata.total_token_count or 0),
475
+ }
476
+ token_queue.append((
477
+ "\n-- Agent response -- "
478
+ f"Loop tokens: [{loop_metadata.prompt_token_count}]/[{usage_metadata['prompt_token_count']}] "
479
+ f"Session tokens: [{loop_metadata.total_token_count}]/[{usage_metadata['total_token_count']}] \n"
480
+ ))
481
+ loop_metadata = None
481
482
 
482
483
  for chunk in response:
483
484
  if not chunk:
@@ -87,25 +87,31 @@ def start_streaming_chat(question,
87
87
  break
88
88
  else:
89
89
  log.info(f"Stream has ended after {round(time.time() - first_start, 2)} seconds")
90
- log.info("Sending final full message plus sources...")
90
+
91
91
 
92
92
 
93
93
  # if you need it to stop it elsewhere use
94
94
  # stop_event.set()
95
95
  content_to_send = content_buffer.read()
96
96
  if content_to_send:
97
- log.info(f"==\n{content_to_send}")
97
+ log.info(f"==Flush==\n{content_to_send}")
98
98
  yield content_to_send
99
99
  content_buffer.clear()
100
100
 
101
101
  # Stop the stream thread
102
102
  chat_thread.join()
103
103
 
104
- # the json object with full response in 'answer' and the 'sources' array
105
- final_result = result_queue.get()
104
+ if kwargs.get("stream_only"):
105
+ log.info("stream_only so finishing now")
106
+ final_yield = ""
107
+ else:
108
+ log.info("Sending final full message plus sources...")
109
+ # the json object with full response in 'answer' and the 'sources' array
110
+ final_result = result_queue.get()
111
+ final_yield = parse_output(final_result)
106
112
 
107
113
  # parses out source_documents if not present etc.
108
- yield parse_output(final_result)
114
+ yield final_yield
109
115
 
110
116
  async def start_streaming_chat_async(question, vector_name, qna_func_async, chat_history=[], wait_time=2, timeout=120, **kwargs):
111
117
  """
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.104.5
3
+ Version: 0.105.0
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.104.5.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.105.0.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