sunholo 0.95.2__tar.gz → 0.95.4__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 (160) hide show
  1. {sunholo-0.95.2 → sunholo-0.95.4}/PKG-INFO +2 -2
  2. {sunholo-0.95.2 → sunholo-0.95.4}/setup.py +1 -1
  3. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/agents/route.py +2 -2
  4. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/genai/process_funcs_cls.py +6 -6
  5. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/invoke/async_class.py +7 -19
  6. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/streaming/streaming.py +10 -0
  7. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/vertex/memory_tools.py +3 -5
  8. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo.egg-info/PKG-INFO +2 -2
  9. {sunholo-0.95.2 → sunholo-0.95.4}/LICENSE.txt +0 -0
  10. {sunholo-0.95.2 → sunholo-0.95.4}/MANIFEST.in +0 -0
  11. {sunholo-0.95.2 → sunholo-0.95.4}/README.md +0 -0
  12. {sunholo-0.95.2 → sunholo-0.95.4}/setup.cfg +0 -0
  13. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/__init__.py +0 -0
  14. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/agents/__init__.py +0 -0
  15. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/agents/chat_history.py +0 -0
  16. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/agents/dispatch_to_qa.py +0 -0
  17. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/agents/fastapi/__init__.py +0 -0
  18. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/agents/fastapi/base.py +0 -0
  19. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/agents/fastapi/qna_routes.py +0 -0
  20. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/agents/flask/__init__.py +0 -0
  21. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/agents/flask/base.py +0 -0
  22. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/agents/flask/qna_routes.py +0 -0
  23. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/agents/flask/vac_routes.py +0 -0
  24. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/agents/langserve.py +0 -0
  25. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/agents/pubsub.py +0 -0
  26. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/agents/special_commands.py +0 -0
  27. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/agents/swagger.py +0 -0
  28. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/archive/__init__.py +0 -0
  29. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/archive/archive.py +0 -0
  30. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/auth/__init__.py +0 -0
  31. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/auth/gcloud.py +0 -0
  32. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/auth/refresh.py +0 -0
  33. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/auth/run.py +0 -0
  34. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/azure/__init__.py +0 -0
  35. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/azure/auth.py +0 -0
  36. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/azure/blobs.py +0 -0
  37. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/azure/event_grid.py +0 -0
  38. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/bots/__init__.py +0 -0
  39. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/bots/discord.py +0 -0
  40. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/bots/github_webhook.py +0 -0
  41. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/bots/webapp.py +0 -0
  42. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/chunker/__init__.py +0 -0
  43. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/chunker/azure.py +0 -0
  44. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/chunker/doc_handling.py +0 -0
  45. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/chunker/encode_metadata.py +0 -0
  46. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/chunker/images.py +0 -0
  47. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/chunker/loaders.py +0 -0
  48. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/chunker/message_data.py +0 -0
  49. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/chunker/pdfs.py +0 -0
  50. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/chunker/process_chunker_data.py +0 -0
  51. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/chunker/publish.py +0 -0
  52. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/chunker/pubsub.py +0 -0
  53. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/chunker/splitter.py +0 -0
  54. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/cli/__init__.py +0 -0
  55. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/cli/chat_vac.py +0 -0
  56. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/cli/cli.py +0 -0
  57. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/cli/cli_init.py +0 -0
  58. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/cli/configs.py +0 -0
  59. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/cli/deploy.py +0 -0
  60. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/cli/embedder.py +0 -0
  61. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/cli/merge_texts.py +0 -0
  62. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/cli/run_proxy.py +0 -0
  63. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/cli/sun_rich.py +0 -0
  64. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/cli/swagger.py +0 -0
  65. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/cli/vertex.py +0 -0
  66. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/components/__init__.py +0 -0
  67. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/components/llm.py +0 -0
  68. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/components/retriever.py +0 -0
  69. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/components/vectorstore.py +0 -0
  70. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/custom_logging.py +0 -0
  71. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/database/__init__.py +0 -0
  72. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/database/alloydb.py +0 -0
  73. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/database/alloydb_client.py +0 -0
  74. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/database/database.py +0 -0
  75. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/database/lancedb.py +0 -0
  76. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/database/sql/sb/create_function.sql +0 -0
  77. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/database/sql/sb/create_function_time.sql +0 -0
  78. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/database/sql/sb/create_table.sql +0 -0
  79. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
  80. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/database/sql/sb/return_sources.sql +0 -0
  81. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/database/sql/sb/setup.sql +0 -0
  82. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/database/static_dbs.py +0 -0
  83. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/database/uuid.py +0 -0
  84. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/discovery_engine/__init__.py +0 -0
  85. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/discovery_engine/chunker_handler.py +0 -0
  86. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/discovery_engine/create_new.py +0 -0
  87. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/discovery_engine/discovery_engine_client.py +0 -0
  88. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/discovery_engine/get_ai_search_chunks.py +0 -0
  89. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/embedder/__init__.py +0 -0
  90. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/embedder/embed_chunk.py +0 -0
  91. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/excel/__init__.py +0 -0
  92. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/excel/plugin.py +0 -0
  93. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/gcs/__init__.py +0 -0
  94. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/gcs/add_file.py +0 -0
  95. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/gcs/download_folder.py +0 -0
  96. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/gcs/download_url.py +0 -0
  97. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/gcs/metadata.py +0 -0
  98. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/genai/__init__.py +0 -0
  99. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/genai/init.py +0 -0
  100. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/genai/safety.py +0 -0
  101. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/invoke/__init__.py +0 -0
  102. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/invoke/direct_vac_func.py +0 -0
  103. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/invoke/invoke_vac_utils.py +0 -0
  104. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/langfuse/__init__.py +0 -0
  105. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/langfuse/callback.py +0 -0
  106. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/langfuse/evals.py +0 -0
  107. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/langfuse/prompts.py +0 -0
  108. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/llamaindex/__init__.py +0 -0
  109. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/llamaindex/get_files.py +0 -0
  110. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/llamaindex/import_files.py +0 -0
  111. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/llamaindex/llamaindex_class.py +0 -0
  112. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/llamaindex/user_history.py +0 -0
  113. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/lookup/__init__.py +0 -0
  114. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/lookup/model_lookup.yaml +0 -0
  115. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/patches/__init__.py +0 -0
  116. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/patches/langchain/__init__.py +0 -0
  117. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/patches/langchain/lancedb.py +0 -0
  118. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/patches/langchain/vertexai.py +0 -0
  119. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/pubsub/__init__.py +0 -0
  120. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/pubsub/process_pubsub.py +0 -0
  121. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/pubsub/pubsub_manager.py +0 -0
  122. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/qna/__init__.py +0 -0
  123. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/qna/parsers.py +0 -0
  124. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/qna/retry.py +0 -0
  125. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/streaming/__init__.py +0 -0
  126. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/streaming/content_buffer.py +0 -0
  127. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/streaming/langserve.py +0 -0
  128. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/streaming/stream_lookup.py +0 -0
  129. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/summarise/__init__.py +0 -0
  130. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/summarise/summarise.py +0 -0
  131. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/terraform/__init__.py +0 -0
  132. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/terraform/tfvars_editor.py +0 -0
  133. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/tools/__init__.py +0 -0
  134. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/tools/web_browser.py +0 -0
  135. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/utils/__init__.py +0 -0
  136. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/utils/api_key.py +0 -0
  137. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/utils/big_context.py +0 -0
  138. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/utils/config.py +0 -0
  139. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/utils/config_class.py +0 -0
  140. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/utils/config_schema.py +0 -0
  141. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/utils/gcp.py +0 -0
  142. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/utils/gcp_project.py +0 -0
  143. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/utils/parsers.py +0 -0
  144. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/utils/timedelta.py +0 -0
  145. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/utils/user_ids.py +0 -0
  146. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/utils/version.py +0 -0
  147. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/vertex/__init__.py +0 -0
  148. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/vertex/extensions_call.py +0 -0
  149. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/vertex/extensions_class.py +0 -0
  150. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/vertex/genai_functions.py +0 -0
  151. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/vertex/init.py +0 -0
  152. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/vertex/safety.py +0 -0
  153. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo/vertex/type_dict_to_json.py +0 -0
  154. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo.egg-info/SOURCES.txt +0 -0
  155. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo.egg-info/dependency_links.txt +0 -0
  156. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo.egg-info/entry_points.txt +0 -0
  157. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo.egg-info/requires.txt +0 -0
  158. {sunholo-0.95.2 → sunholo-0.95.4}/sunholo.egg-info/top_level.txt +0 -0
  159. {sunholo-0.95.2 → sunholo-0.95.4}/tests/test_chat_history.py +0 -0
  160. {sunholo-0.95.2 → sunholo-0.95.4}/tests/test_config.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.95.2
3
+ Version: 0.95.4
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.95.2.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.95.4.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.95.2'
3
+ version = '0.95.4'
4
4
 
5
5
  setup(
6
6
  name='sunholo',
@@ -65,14 +65,14 @@ def route_endpoint(vector_name=None, method = 'post', override_endpoint=None, co
65
65
 
66
66
  agents_config = config.agentConfig(agent_type)
67
67
 
68
- log.info(f"agents_config: {agents_config}")
68
+ log.debug(f"agents_config: {agents_config}")
69
69
  if method not in agents_config:
70
70
  raise ValueError(f"Invalid method '{method}' for agent configuration.")
71
71
 
72
72
  # 'post' or 'get'
73
73
  endpoints_config = agents_config[method]
74
74
 
75
- log.info(f"endpoints_config: {endpoints_config}")
75
+ log.debug(f"endpoints_config: {endpoints_config}")
76
76
  # Replace placeholders in the config
77
77
  endpoints = {}
78
78
  for key, value in endpoints_config.items():
@@ -351,7 +351,7 @@ class GenAIFunctionProcessor:
351
351
  log.error(f"Error initializing model: {str(err)}")
352
352
  return None
353
353
 
354
- def run_agent_loop(self, chat, content, callback, guardrail_max=10):
354
+ def run_agent_loop(self, chat, content, callback, guardrail_max=10, loop_return=3):
355
355
  """
356
356
  Runs the agent loop, sending messages to the orchestrator, processing responses, and executing functions.
357
357
 
@@ -360,12 +360,13 @@ class GenAIFunctionProcessor:
360
360
  content: The initial content to send to the agent.
361
361
  callback: The callback object for handling intermediate responses.
362
362
  guardrail_max (int): The maximum number of iterations for the loop.
363
+ loop_return (int): The number of last loop iterations to return. Default 3 will return last 3 iterations. If loop_return > guardrail_max then all iterations are returned.
363
364
 
364
365
  Returns:
365
366
  tuple: (big_text, usage_metadata) from the loop execution.
366
367
  """
367
368
  guardrail = 0
368
- big_text = ""
369
+ big_result = []
369
370
  usage_metadata = {
370
371
  "prompt_token_count": 0,
371
372
  "candidates_token_count": 0,
@@ -422,7 +423,6 @@ class GenAIFunctionProcessor:
422
423
  if hasattr(chunk, 'text') and isinstance(chunk.text, str):
423
424
  token = chunk.text
424
425
  token_queue.append(token)
425
- big_text += token
426
426
  this_text += token
427
427
  else:
428
428
  log.info("skipping chunk with no text")
@@ -486,18 +486,17 @@ class GenAIFunctionProcessor:
486
486
  else:
487
487
  token += f"{fn_result}\n--- end ---\n"
488
488
 
489
- big_text += token
490
489
  this_text += token
491
490
  token_queue.append(token)
492
491
  else:
493
492
  token = "\nNo function executions were found\n"
494
493
  token_queue.append(token)
495
- big_text += token
496
494
  this_text += token
497
495
 
498
496
  if this_text:
499
497
  content.append(f"Agent: {this_text}")
500
498
  log.info(f"[{guardrail}] Updated content:\n{this_text}")
499
+ big_result.append(this_text)
501
500
  else:
502
501
  log.warning(f"[{guardrail}] No content created this loop")
503
502
  content.append(f"Agent: No response was found for loop [{guardrail}]")
@@ -523,7 +522,8 @@ class GenAIFunctionProcessor:
523
522
  callback.on_llm_new_token(token=token)
524
523
 
525
524
  usage_metadata["functions_called"] = functions_called
526
- #usage_metadata["function_results"] = function_results
525
+
526
+ big_text = "\n".join(big_result[loop_return:])
527
527
 
528
528
  return big_text, usage_metadata
529
529
 
@@ -39,17 +39,13 @@ class AsyncTaskRunner:
39
39
  async def _task_wrapper(self, name: str, func: Callable[..., Any], args: Any) -> Any:
40
40
  """Wraps the task function to process its output and handle retries."""
41
41
  async def run_func():
42
- gen = func(*args)
43
- if hasattr(gen, '__aiter__'):
44
- # If it's an async generator, consume it completely
45
- output = ''
46
- async for chunk in gen:
47
- output += chunk
48
- return output
42
+ if asyncio.iscoroutinefunction(func):
43
+ # If the function is async, await it
44
+ return await func(*args)
49
45
  else:
50
- # If it's a coroutine, await the result
51
- return await gen
52
-
46
+ # If the function is sync, run it in a thread to prevent blocking
47
+ return await asyncio.to_thread(func, *args)
48
+
53
49
  if self.retry_enabled:
54
50
  retry_kwargs = {
55
51
  'wait': wait_random_exponential(multiplier=1, max=60),
@@ -65,12 +61,4 @@ class AsyncTaskRunner:
65
61
  return await run_func()
66
62
  except Exception as e:
67
63
  log.error(f"Error in task {name}: {e}\n{traceback.format_exc()}")
68
- raise
69
-
70
- def _log_results(self, results: List[Any]):
71
- """Logs the results of the task executions."""
72
- for result in results:
73
- if isinstance(result, Exception):
74
- log.error(f"Task resulted in an error: {result}")
75
- else:
76
- log.info(f"Task completed successfully: {result}")
64
+ raise
@@ -175,6 +175,16 @@ async def start_streaming_chat_async(question, vector_name, qna_func_async, chat
175
175
  # Run start_chat asynchronously
176
176
  chat_task = asyncio.create_task(start_chat())
177
177
 
178
+ # Allow the event loop to process the scheduled tasks
179
+ await asyncio.sleep(0)
180
+
181
+ # Read and yield any initial content from the content buffer
182
+ content_to_send = content_buffer.read()
183
+ if content_to_send:
184
+ log.info(f"Initial content: {content_to_send}")
185
+ yield content_to_send
186
+ content_buffer.clear()
187
+
178
188
  start = time.time()
179
189
 
180
190
  while not chat_callback_handler.stream_finished.is_set() and not stop_event.is_set():
@@ -174,15 +174,11 @@ def print_grounding_response(response):
174
174
  markdown_text += (
175
175
  f"\n**Web Search Queries:** {grounding_metadata.web_search_queries}\n"
176
176
  )
177
- if grounding_metadata.search_entry_point:
178
- markdown_text += f"\n**Search Entry Point:**\n {grounding_metadata.search_entry_point.rendered_content}\n"
179
177
  elif grounding_metadata.retrieval_queries:
180
178
  markdown_text += (
181
179
  f"\n**Retrieval Queries:** {grounding_metadata.retrieval_queries}\n"
182
180
  )
183
181
 
184
- markdown_text += "### Grounding Chunks\n"
185
-
186
182
  for index, grounding_chunk in enumerate(
187
183
  grounding_metadata.grounding_chunks, start=1
188
184
  ):
@@ -190,7 +186,9 @@ def print_grounding_response(response):
190
186
  if not context:
191
187
  print(f"Skipping Grounding Chunk {grounding_chunk}")
192
188
  continue
189
+ markdown_text += "### Grounding Chunks\n"
193
190
 
194
191
  markdown_text += f"{index}. [{context.title}]({context.uri})\n"
195
192
 
196
- return markdown_text
193
+ return {"markdown_text": markdown_text,
194
+ "search_entry_point": grounding_metadata.search_entry_point.rendered_content if grounding_metadata.search_entry_point else ""}
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.95.2
3
+ Version: 0.95.4
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.95.2.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.95.4.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