sunholo 0.64.3__tar.gz → 0.64.5__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.3 → sunholo-0.64.5}/PKG-INFO +2 -2
  2. {sunholo-0.64.3 → sunholo-0.64.5}/setup.py +1 -1
  3. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/flask/qna_routes.py +25 -15
  4. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo.egg-info/PKG-INFO +2 -2
  5. {sunholo-0.64.3 → sunholo-0.64.5}/LICENSE.txt +0 -0
  6. {sunholo-0.64.3 → sunholo-0.64.5}/MANIFEST.in +0 -0
  7. {sunholo-0.64.3 → sunholo-0.64.5}/README.md +0 -0
  8. {sunholo-0.64.3 → sunholo-0.64.5}/setup.cfg +0 -0
  9. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/__init__.py +0 -0
  10. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/__init__.py +0 -0
  11. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/chat_history.py +0 -0
  12. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/dispatch_to_qa.py +0 -0
  13. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/fastapi/__init__.py +0 -0
  14. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/fastapi/base.py +0 -0
  15. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/fastapi/qna_routes.py +0 -0
  16. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/flask/__init__.py +0 -0
  17. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/flask/base.py +0 -0
  18. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/langserve.py +0 -0
  19. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/pubsub.py +0 -0
  20. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/route.py +0 -0
  21. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/special_commands.py +0 -0
  22. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/archive/__init__.py +0 -0
  23. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/archive/archive.py +0 -0
  24. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/auth/__init__.py +0 -0
  25. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/auth/run.py +0 -0
  26. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/bots/__init__.py +0 -0
  27. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/bots/discord.py +0 -0
  28. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/bots/github_webhook.py +0 -0
  29. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/bots/webapp.py +0 -0
  30. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/chunker/__init__.py +0 -0
  31. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/chunker/data_to_embed_pubsub.py +0 -0
  32. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/chunker/doc_handling.py +0 -0
  33. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/chunker/images.py +0 -0
  34. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/chunker/loaders.py +0 -0
  35. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/chunker/message_data.py +0 -0
  36. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/chunker/pdfs.py +0 -0
  37. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/chunker/publish.py +0 -0
  38. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/chunker/splitter.py +0 -0
  39. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/cli/__init__.py +0 -0
  40. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/cli/chat_vac.py +0 -0
  41. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/cli/cli.py +0 -0
  42. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/cli/cli_init.py +0 -0
  43. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/cli/configs.py +0 -0
  44. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/cli/deploy.py +0 -0
  45. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/cli/embedder.py +0 -0
  46. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/cli/merge_texts.py +0 -0
  47. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/cli/run_proxy.py +0 -0
  48. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/cli/sun_rich.py +0 -0
  49. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/components/__init__.py +0 -0
  50. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/components/llm.py +0 -0
  51. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/components/retriever.py +0 -0
  52. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/components/vectorstore.py +0 -0
  53. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/__init__.py +0 -0
  54. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/alloydb.py +0 -0
  55. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/database.py +0 -0
  56. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/lancedb.py +0 -0
  57. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/sql/sb/create_function.sql +0 -0
  58. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/sql/sb/create_function_time.sql +0 -0
  59. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/sql/sb/create_table.sql +0 -0
  60. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
  61. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/sql/sb/return_sources.sql +0 -0
  62. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/sql/sb/setup.sql +0 -0
  63. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/static_dbs.py +0 -0
  64. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/uuid.py +0 -0
  65. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/embedder/__init__.py +0 -0
  66. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/embedder/embed_chunk.py +0 -0
  67. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/gcs/__init__.py +0 -0
  68. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/gcs/add_file.py +0 -0
  69. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/gcs/download_url.py +0 -0
  70. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/gcs/metadata.py +0 -0
  71. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/langfuse/__init__.py +0 -0
  72. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/langfuse/callback.py +0 -0
  73. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/langfuse/prompts.py +0 -0
  74. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/llamaindex/__init__.py +0 -0
  75. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/llamaindex/generate.py +0 -0
  76. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/llamaindex/get_files.py +0 -0
  77. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/llamaindex/import_files.py +0 -0
  78. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/logging.py +0 -0
  79. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/lookup/__init__.py +0 -0
  80. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/lookup/model_lookup.yaml +0 -0
  81. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/patches/__init__.py +0 -0
  82. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/patches/langchain/__init__.py +0 -0
  83. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/patches/langchain/lancedb.py +0 -0
  84. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/patches/langchain/vertexai.py +0 -0
  85. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/pubsub/__init__.py +0 -0
  86. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/pubsub/process_pubsub.py +0 -0
  87. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/pubsub/pubsub_manager.py +0 -0
  88. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/qna/__init__.py +0 -0
  89. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/qna/parsers.py +0 -0
  90. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/qna/retry.py +0 -0
  91. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/streaming/__init__.py +0 -0
  92. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/streaming/content_buffer.py +0 -0
  93. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/streaming/langserve.py +0 -0
  94. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/streaming/stream_lookup.py +0 -0
  95. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/streaming/streaming.py +0 -0
  96. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/summarise/__init__.py +0 -0
  97. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/summarise/summarise.py +0 -0
  98. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/utils/__init__.py +0 -0
  99. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/utils/big_context.py +0 -0
  100. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/utils/config.py +0 -0
  101. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/utils/config_schema.py +0 -0
  102. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/utils/gcp.py +0 -0
  103. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/utils/gcp_project.py +0 -0
  104. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/utils/parsers.py +0 -0
  105. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/utils/timedelta.py +0 -0
  106. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/utils/user_ids.py +0 -0
  107. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/utils/version.py +0 -0
  108. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/vertex/__init__.py +0 -0
  109. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/vertex/init.py +0 -0
  110. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/vertex/memory_tools.py +0 -0
  111. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/vertex/safety.py +0 -0
  112. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo.egg-info/SOURCES.txt +0 -0
  113. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo.egg-info/dependency_links.txt +0 -0
  114. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo.egg-info/entry_points.txt +0 -0
  115. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo.egg-info/requires.txt +0 -0
  116. {sunholo-0.64.3 → sunholo-0.64.5}/sunholo.egg-info/top_level.txt +0 -0
  117. {sunholo-0.64.3 → sunholo-0.64.5}/tests/test_chat_history.py +0 -0
  118. {sunholo-0.64.3 → sunholo-0.64.5}/tests/test_chunker.py +0 -0
  119. {sunholo-0.64.3 → sunholo-0.64.5}/tests/test_config.py +0 -0
  120. {sunholo-0.64.3 → sunholo-0.64.5}/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.3
3
+ Version: 0.64.5
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.3.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.64.5.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.3'
4
+ version = '0.64.5'
5
5
 
6
6
  setup(
7
7
  name='sunholo',
@@ -165,9 +165,12 @@ def register_qna_routes(app, stream_interpreter, vac_interpreter):
165
165
  return jsonify(bot_output)
166
166
 
167
167
  @app.route('/openai/v1/chat/completions', methods=['POST'])
168
- def openai_compatible_endpoint():
168
+ @app.route('/openai/v1/chat/completions/<vector_name>', methods=['POST'])
169
+ def openai_compatible_endpoint(vector_name=None):
169
170
  data = request.get_json()
170
- model = data.pop('model', None)
171
+ log.info(f'openai_compatible_endpoint got data: {data} for vector: {vector_name}')
172
+
173
+ vector_name = vector_name or data.pop('model', None)
171
174
  messages = data.pop('messages', None)
172
175
  chat_history = data.pop('chat_history', None)
173
176
  stream = data.pop('stream', False)
@@ -175,7 +178,7 @@ def register_qna_routes(app, stream_interpreter, vac_interpreter):
175
178
  if not messages:
176
179
  return jsonify({"error": "No messages provided"}), 400
177
180
 
178
- user_message = next((msg['content'] for msg in messages if msg['role'] == 'user'), None)
181
+ user_message = next((msg['content'] for msg in reversed(messages) if msg['role'] == 'user'), None)
179
182
  if not user_message:
180
183
  return jsonify({"error": "No user message provided"}), 400
181
184
 
@@ -187,39 +190,40 @@ def register_qna_routes(app, stream_interpreter, vac_interpreter):
187
190
 
188
191
  observed_stream_interpreter = observe()(stream_interpreter)
189
192
 
190
-
191
193
  response_id = str(uuid.uuid4())
192
194
 
193
195
  def generate_response_content():
194
196
  for chunk in start_streaming_chat(question=user_message,
195
- vector_name=model,
197
+ vector_name=vector_name,
196
198
  qna_func=observed_stream_interpreter,
197
199
  chat_history=all_input["chat_history"],
198
200
  wait_time=all_input.get("stream_wait_time", 1),
199
201
  timeout=all_input.get("stream_timeout", 60),
200
202
  **all_input["kwargs"]
201
203
  ):
202
- if isinstance(chunk, dict) and 'content' in chunk:
204
+ if isinstance(chunk, dict) and 'answer' in chunk:
203
205
  openai_chunk = {
204
206
  "id": response_id,
205
207
  "object": "chat.completion.chunk",
206
- "created": int(datetime.time()),
207
- "model": model,
208
+ "created": str(datetime.time()),
209
+ "model": vector_name,
208
210
  "system_fingerprint": sunholo_version(),
209
211
  "choices": [{
210
212
  "index": 0,
211
- "delta": {"content": chunk['content']},
213
+ "delta": {"content": chunk['answer']},
212
214
  "logprobs": None,
213
215
  "finish_reason": None
214
216
  }]
215
217
  }
216
218
  yield json.dumps(openai_chunk) + "\n"
219
+ else:
220
+ log.info(f"Unknown chunk: {chunk}")
217
221
 
218
222
  final_chunk = {
219
223
  "id": response_id,
220
224
  "object": "chat.completion.chunk",
221
- "created": int(datetime.time()),
222
- "model": model,
225
+ "created": str(datetime.time()),
226
+ "model": vector_name,
223
227
  "system_fingerprint": sunholo_version(),
224
228
  "choices": [{
225
229
  "index": 0,
@@ -231,22 +235,26 @@ def register_qna_routes(app, stream_interpreter, vac_interpreter):
231
235
  yield json.dumps(final_chunk) + "\n"
232
236
 
233
237
  if stream:
238
+ log.info("Streaming openai chunks")
234
239
  return Response(generate_response_content(), content_type='text/plain; charset=utf-8')
235
240
 
236
241
  try:
237
- bot_output = observed_stream_interpreter(
242
+ observed_vac_interpreter = observe()(vac_interpreter)
243
+ bot_output = observed_vac_interpreter(
238
244
  question=user_message,
239
- vector_name=model,
245
+ vector_name=vector_name,
240
246
  chat_history=all_input["chat_history"],
241
247
  **all_input["kwargs"]
242
248
  )
243
249
  bot_output = parse_output(bot_output)
244
250
 
251
+ log.info(f"Bot output: {bot_output}")
252
+
245
253
  openai_response = {
246
254
  "id": response_id,
247
255
  "object": "chat.completion",
248
- "created": int(datetime.time()),
249
- "model": model,
256
+ "created": str(datetime.time()),
257
+ "model": vector_name,
250
258
  "system_fingerprint": sunholo_version(),
251
259
  "choices": [{
252
260
  "index": 0,
@@ -264,9 +272,11 @@ def register_qna_routes(app, stream_interpreter, vac_interpreter):
264
272
  }
265
273
  }
266
274
 
275
+ log.info(f"OpenAI response: {openai_response}")
267
276
  return jsonify(openai_response)
268
277
 
269
278
  except Exception as err:
279
+ log.error(f"OpenAI response error: {err}")
270
280
  return jsonify({'error': f'QNA_ERROR: An error occurred: {str(err)} traceback: {traceback.format_exc()}'}), 500
271
281
 
272
282
 
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.64.3
3
+ Version: 0.64.5
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.3.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.64.5.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