sunholo 0.64.5__tar.gz → 0.64.6__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 (120) hide show
  1. {sunholo-0.64.5 → sunholo-0.64.6}/PKG-INFO +2 -2
  2. {sunholo-0.64.5 → sunholo-0.64.6}/setup.py +1 -1
  3. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/agents/flask/qna_routes.py +22 -2
  4. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/gcs/add_file.py +18 -0
  5. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo.egg-info/PKG-INFO +2 -2
  6. {sunholo-0.64.5 → sunholo-0.64.6}/LICENSE.txt +0 -0
  7. {sunholo-0.64.5 → sunholo-0.64.6}/MANIFEST.in +0 -0
  8. {sunholo-0.64.5 → sunholo-0.64.6}/README.md +0 -0
  9. {sunholo-0.64.5 → sunholo-0.64.6}/setup.cfg +0 -0
  10. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/__init__.py +0 -0
  11. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/agents/__init__.py +0 -0
  12. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/agents/chat_history.py +0 -0
  13. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/agents/dispatch_to_qa.py +0 -0
  14. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/agents/fastapi/__init__.py +0 -0
  15. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/agents/fastapi/base.py +0 -0
  16. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/agents/fastapi/qna_routes.py +0 -0
  17. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/agents/flask/__init__.py +0 -0
  18. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/agents/flask/base.py +0 -0
  19. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/agents/langserve.py +0 -0
  20. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/agents/pubsub.py +0 -0
  21. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/agents/route.py +0 -0
  22. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/agents/special_commands.py +0 -0
  23. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/archive/__init__.py +0 -0
  24. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/archive/archive.py +0 -0
  25. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/auth/__init__.py +0 -0
  26. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/auth/run.py +0 -0
  27. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/bots/__init__.py +0 -0
  28. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/bots/discord.py +0 -0
  29. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/bots/github_webhook.py +0 -0
  30. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/bots/webapp.py +0 -0
  31. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/chunker/__init__.py +0 -0
  32. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/chunker/data_to_embed_pubsub.py +0 -0
  33. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/chunker/doc_handling.py +0 -0
  34. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/chunker/images.py +0 -0
  35. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/chunker/loaders.py +0 -0
  36. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/chunker/message_data.py +0 -0
  37. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/chunker/pdfs.py +0 -0
  38. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/chunker/publish.py +0 -0
  39. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/chunker/splitter.py +0 -0
  40. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/cli/__init__.py +0 -0
  41. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/cli/chat_vac.py +0 -0
  42. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/cli/cli.py +0 -0
  43. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/cli/cli_init.py +0 -0
  44. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/cli/configs.py +0 -0
  45. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/cli/deploy.py +0 -0
  46. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/cli/embedder.py +0 -0
  47. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/cli/merge_texts.py +0 -0
  48. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/cli/run_proxy.py +0 -0
  49. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/cli/sun_rich.py +0 -0
  50. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/components/__init__.py +0 -0
  51. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/components/llm.py +0 -0
  52. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/components/retriever.py +0 -0
  53. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/components/vectorstore.py +0 -0
  54. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/database/__init__.py +0 -0
  55. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/database/alloydb.py +0 -0
  56. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/database/database.py +0 -0
  57. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/database/lancedb.py +0 -0
  58. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/database/sql/sb/create_function.sql +0 -0
  59. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/database/sql/sb/create_function_time.sql +0 -0
  60. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/database/sql/sb/create_table.sql +0 -0
  61. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
  62. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/database/sql/sb/return_sources.sql +0 -0
  63. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/database/sql/sb/setup.sql +0 -0
  64. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/database/static_dbs.py +0 -0
  65. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/database/uuid.py +0 -0
  66. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/embedder/__init__.py +0 -0
  67. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/embedder/embed_chunk.py +0 -0
  68. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/gcs/__init__.py +0 -0
  69. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/gcs/download_url.py +0 -0
  70. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/gcs/metadata.py +0 -0
  71. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/langfuse/__init__.py +0 -0
  72. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/langfuse/callback.py +0 -0
  73. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/langfuse/prompts.py +0 -0
  74. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/llamaindex/__init__.py +0 -0
  75. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/llamaindex/generate.py +0 -0
  76. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/llamaindex/get_files.py +0 -0
  77. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/llamaindex/import_files.py +0 -0
  78. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/logging.py +0 -0
  79. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/lookup/__init__.py +0 -0
  80. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/lookup/model_lookup.yaml +0 -0
  81. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/patches/__init__.py +0 -0
  82. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/patches/langchain/__init__.py +0 -0
  83. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/patches/langchain/lancedb.py +0 -0
  84. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/patches/langchain/vertexai.py +0 -0
  85. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/pubsub/__init__.py +0 -0
  86. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/pubsub/process_pubsub.py +0 -0
  87. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/pubsub/pubsub_manager.py +0 -0
  88. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/qna/__init__.py +0 -0
  89. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/qna/parsers.py +0 -0
  90. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/qna/retry.py +0 -0
  91. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/streaming/__init__.py +0 -0
  92. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/streaming/content_buffer.py +0 -0
  93. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/streaming/langserve.py +0 -0
  94. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/streaming/stream_lookup.py +0 -0
  95. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/streaming/streaming.py +0 -0
  96. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/summarise/__init__.py +0 -0
  97. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/summarise/summarise.py +0 -0
  98. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/utils/__init__.py +0 -0
  99. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/utils/big_context.py +0 -0
  100. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/utils/config.py +0 -0
  101. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/utils/config_schema.py +0 -0
  102. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/utils/gcp.py +0 -0
  103. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/utils/gcp_project.py +0 -0
  104. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/utils/parsers.py +0 -0
  105. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/utils/timedelta.py +0 -0
  106. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/utils/user_ids.py +0 -0
  107. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/utils/version.py +0 -0
  108. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/vertex/__init__.py +0 -0
  109. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/vertex/init.py +0 -0
  110. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/vertex/memory_tools.py +0 -0
  111. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo/vertex/safety.py +0 -0
  112. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo.egg-info/SOURCES.txt +0 -0
  113. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo.egg-info/dependency_links.txt +0 -0
  114. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo.egg-info/entry_points.txt +0 -0
  115. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo.egg-info/requires.txt +0 -0
  116. {sunholo-0.64.5 → sunholo-0.64.6}/sunholo.egg-info/top_level.txt +0 -0
  117. {sunholo-0.64.5 → sunholo-0.64.6}/tests/test_chat_history.py +0 -0
  118. {sunholo-0.64.5 → sunholo-0.64.6}/tests/test_chunker.py +0 -0
  119. {sunholo-0.64.5 → sunholo-0.64.6}/tests/test_config.py +0 -0
  120. {sunholo-0.64.5 → sunholo-0.64.6}/tests/test_dispatch_to_qa.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.64.5
3
+ Version: 0.64.6
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.64.5.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.64.6.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.64.5'
4
+ version = '0.64.6'
5
5
 
6
6
  setup(
7
7
  name='sunholo',
@@ -26,7 +26,7 @@ from ...logging import log
26
26
  from ...utils.config import load_config
27
27
  from ...utils.version import sunholo_version
28
28
  import os
29
- from ...gcs.add_file import add_file_to_gcs
29
+ from ...gcs.add_file import add_file_to_gcs, handle_base64_image
30
30
 
31
31
 
32
32
  try:
@@ -178,9 +178,29 @@ def register_qna_routes(app, stream_interpreter, vac_interpreter):
178
178
  if not messages:
179
179
  return jsonify({"error": "No messages provided"}), 400
180
180
 
181
- user_message = next((msg['content'] for msg in reversed(messages) if msg['role'] == 'user'), None)
181
+ user_message = None
182
+ image_uri = None
183
+ mime_type = None
184
+
185
+ for msg in reversed(messages):
186
+ if msg['role'] == 'user':
187
+ if isinstance(msg['content'], list):
188
+ for content_item in msg['content']:
189
+ if content_item['type'] == 'text':
190
+ user_message = content_item['text']
191
+ elif content_item['type'] == 'image_url':
192
+ base64_data = content_item['image_url']['url']
193
+ image_uri, mime_type = handle_base64_image(base64_data, vector_name)
194
+ else:
195
+ user_message = msg['content']
196
+ break
197
+
182
198
  if not user_message:
183
199
  return jsonify({"error": "No user message provided"}), 400
200
+
201
+ if image_uri:
202
+ data["image_uri"] = image_uri
203
+ data["mime"] = mime_type
184
204
 
185
205
  all_input = {
186
206
  "user_input": user_message,
@@ -13,6 +13,8 @@
13
13
  # limitations under the License.
14
14
  import datetime
15
15
  import os
16
+ import base64
17
+ import uuid
16
18
 
17
19
  try:
18
20
  from google.cloud import storage
@@ -22,6 +24,22 @@ except ImportError:
22
24
  from ..logging import log
23
25
  from ..utils.config import load_config_key
24
26
 
27
+
28
+ def handle_base64_image(base64_data, vector_name):
29
+ try:
30
+ header, encoded = base64_data.split(",", 1)
31
+ data = base64.b64decode(encoded)
32
+
33
+ filename = f"{uuid.uuid4()}.jpg"
34
+ with open(filename, "wb") as f:
35
+ f.write(data)
36
+
37
+ image_uri = add_file_to_gcs(filename, vector_name)
38
+ os.remove(filename) # Clean up the saved file
39
+ return image_uri, "image/jpeg"
40
+ except Exception as e:
41
+ raise Exception(f'Base64 image upload failed: {str(e)}')
42
+
25
43
  def add_file_to_gcs(filename: str, vector_name:str, bucket_name: str=None, metadata:dict=None, bucket_filepath:str=None):
26
44
 
27
45
  if not storage:
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.64.5
3
+ Version: 0.64.6
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.64.5.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.64.6.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