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.
- {sunholo-0.64.3 → sunholo-0.64.5}/PKG-INFO +2 -2
- {sunholo-0.64.3 → sunholo-0.64.5}/setup.py +1 -1
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/flask/qna_routes.py +25 -15
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo.egg-info/PKG-INFO +2 -2
- {sunholo-0.64.3 → sunholo-0.64.5}/LICENSE.txt +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/MANIFEST.in +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/README.md +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/setup.cfg +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/chat_history.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/dispatch_to_qa.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/fastapi/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/fastapi/base.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/fastapi/qna_routes.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/flask/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/flask/base.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/langserve.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/pubsub.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/route.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/agents/special_commands.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/archive/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/archive/archive.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/auth/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/auth/run.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/bots/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/bots/discord.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/bots/github_webhook.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/bots/webapp.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/chunker/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/chunker/data_to_embed_pubsub.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/chunker/doc_handling.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/chunker/images.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/chunker/loaders.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/chunker/message_data.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/chunker/pdfs.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/chunker/publish.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/chunker/splitter.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/cli/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/cli/chat_vac.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/cli/cli.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/cli/cli_init.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/cli/configs.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/cli/deploy.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/cli/embedder.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/cli/merge_texts.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/cli/run_proxy.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/cli/sun_rich.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/components/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/components/llm.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/components/retriever.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/components/vectorstore.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/alloydb.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/database.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/lancedb.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/sql/sb/create_function.sql +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/sql/sb/create_function_time.sql +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/sql/sb/create_table.sql +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/sql/sb/return_sources.sql +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/sql/sb/setup.sql +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/static_dbs.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/database/uuid.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/embedder/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/embedder/embed_chunk.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/gcs/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/gcs/add_file.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/gcs/download_url.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/gcs/metadata.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/langfuse/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/langfuse/callback.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/langfuse/prompts.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/llamaindex/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/llamaindex/generate.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/llamaindex/get_files.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/llamaindex/import_files.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/logging.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/lookup/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/lookup/model_lookup.yaml +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/patches/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/patches/langchain/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/patches/langchain/lancedb.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/patches/langchain/vertexai.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/pubsub/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/pubsub/process_pubsub.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/pubsub/pubsub_manager.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/qna/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/qna/parsers.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/qna/retry.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/streaming/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/streaming/content_buffer.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/streaming/langserve.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/streaming/stream_lookup.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/streaming/streaming.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/summarise/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/summarise/summarise.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/utils/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/utils/big_context.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/utils/config.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/utils/config_schema.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/utils/gcp.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/utils/gcp_project.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/utils/parsers.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/utils/timedelta.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/utils/user_ids.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/utils/version.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/vertex/__init__.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/vertex/init.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/vertex/memory_tools.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo/vertex/safety.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo.egg-info/SOURCES.txt +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo.egg-info/dependency_links.txt +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo.egg-info/entry_points.txt +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo.egg-info/requires.txt +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/sunholo.egg-info/top_level.txt +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/tests/test_chat_history.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/tests/test_chunker.py +0 -0
- {sunholo-0.64.3 → sunholo-0.64.5}/tests/test_config.py +0 -0
- {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
|
+
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.
|
|
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
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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=
|
|
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 '
|
|
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":
|
|
207
|
-
"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['
|
|
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":
|
|
222
|
-
"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
|
-
|
|
242
|
+
observed_vac_interpreter = observe()(vac_interpreter)
|
|
243
|
+
bot_output = observed_vac_interpreter(
|
|
238
244
|
question=user_message,
|
|
239
|
-
vector_name=
|
|
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":
|
|
249
|
-
"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
|
+
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|