sunholo 0.140.8__tar.gz → 0.140.9__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.140.8/src/sunholo.egg-info → sunholo-0.140.9}/PKG-INFO +1 -1
- {sunholo-0.140.8 → sunholo-0.140.9}/pyproject.toml +1 -1
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/agents/flask/vac_routes.py +9 -71
- {sunholo-0.140.8 → sunholo-0.140.9/src/sunholo.egg-info}/PKG-INFO +1 -1
- {sunholo-0.140.8 → sunholo-0.140.9}/LICENSE.txt +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/MANIFEST.in +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/README.md +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/setup.cfg +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/agents/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/agents/chat_history.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/agents/dispatch_to_qa.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/agents/fastapi/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/agents/fastapi/base.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/agents/fastapi/qna_routes.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/agents/flask/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/agents/flask/base.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/agents/langserve.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/agents/pubsub.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/agents/route.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/agents/special_commands.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/agents/swagger.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/archive/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/archive/archive.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/auth/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/auth/gcloud.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/auth/refresh.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/auth/run.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/azure/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/azure/auth.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/azure/blobs.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/azure/event_grid.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/bots/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/bots/discord.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/bots/github_webhook.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/bots/webapp.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/chunker/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/chunker/azure.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/chunker/doc_handling.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/chunker/encode_metadata.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/chunker/images.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/chunker/loaders.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/chunker/message_data.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/chunker/pdfs.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/chunker/process_chunker_data.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/chunker/publish.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/chunker/pubsub.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/chunker/splitter.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/cli/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/cli/chat_vac.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/cli/cli.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/cli/cli_init.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/cli/configs.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/cli/deploy.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/cli/embedder.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/cli/merge_texts.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/cli/run_proxy.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/cli/sun_rich.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/cli/swagger.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/cli/vertex.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/components/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/components/llm.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/components/retriever.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/components/vectorstore.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/custom_logging.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/database/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/database/alloydb.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/database/alloydb_client.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/database/database.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/database/lancedb.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/database/sql/sb/create_function.sql +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/database/sql/sb/create_function_time.sql +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/database/sql/sb/create_table.sql +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/database/sql/sb/delete_source_row.sql +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/database/sql/sb/return_sources.sql +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/database/sql/sb/setup.sql +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/database/static_dbs.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/database/uuid.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/discovery_engine/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/discovery_engine/chunker_handler.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/discovery_engine/cli.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/discovery_engine/create_new.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/discovery_engine/discovery_engine_client.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/discovery_engine/get_ai_search_chunks.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/embedder/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/embedder/embed_chunk.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/embedder/embed_metadata.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/excel/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/excel/plugin.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/gcs/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/gcs/add_file.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/gcs/download_folder.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/gcs/download_gcs_text.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/gcs/download_url.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/gcs/extract_and_sign.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/gcs/metadata.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/genai/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/genai/file_handling.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/genai/genaiv2.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/genai/images.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/genai/init.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/genai/process_funcs_cls.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/genai/safety.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/invoke/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/invoke/async_class.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/invoke/direct_vac_func.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/invoke/invoke_vac_utils.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/langchain_types.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/langfuse/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/langfuse/callback.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/langfuse/evals.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/langfuse/prompts.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/llamaindex/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/llamaindex/get_files.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/llamaindex/import_files.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/llamaindex/llamaindex_class.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/llamaindex/user_history.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/lookup/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/lookup/model_lookup.yaml +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/mcp/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/mcp/cli.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/ollama/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/ollama/ollama_images.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/pubsub/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/pubsub/process_pubsub.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/pubsub/pubsub_manager.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/qna/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/qna/parsers.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/qna/retry.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/senses/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/senses/stream_voice.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/streaming/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/streaming/content_buffer.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/streaming/langserve.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/streaming/stream_lookup.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/streaming/streaming.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/summarise/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/summarise/summarise.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/templates/agent/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/templates/agent/agent_service.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/templates/agent/app.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/templates/agent/my_log.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/templates/agent/tools/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/templates/agent/tools/your_agent.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/templates/agent/vac_service.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/templates/project/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/templates/project/app.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/templates/project/my_log.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/templates/project/vac_service.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/templates/system_services/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/templates/system_services/app.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/templates/system_services/my_log.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/terraform/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/terraform/tfvars_editor.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/tools/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/tools/web_browser.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/utils/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/utils/api_key.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/utils/big_context.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/utils/config.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/utils/config_class.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/utils/config_schema.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/utils/gcp.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/utils/gcp_project.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/utils/mime.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/utils/parsers.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/utils/timedelta.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/utils/user_ids.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/utils/version.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/vertex/__init__.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/vertex/extensions_call.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/vertex/extensions_class.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/vertex/genai_functions.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/vertex/init.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/vertex/memory_tools.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/vertex/safety.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo/vertex/type_dict_to_json.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo.egg-info/SOURCES.txt +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo.egg-info/dependency_links.txt +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo.egg-info/entry_points.txt +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo.egg-info/requires.txt +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/src/sunholo.egg-info/top_level.txt +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/tests/test_async.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/tests/test_async_genai2.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/tests/test_chat_history.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/tests/test_config.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/tests/test_genai2.py +0 -0
- {sunholo-0.140.8 → sunholo-0.140.9}/tests/test_unstructured.py +0 -0
@@ -780,14 +780,6 @@ if __name__ == "__main__":
|
|
780
780
|
except Exception as e:
|
781
781
|
raise ValueError(f"Unable to find vac_config for {vector_name} - {str(e)}")
|
782
782
|
|
783
|
-
# Initialize trace variables
|
784
|
-
trace = None
|
785
|
-
span = None
|
786
|
-
if self.add_langfuse_eval:
|
787
|
-
trace_id = data.get('trace_id')
|
788
|
-
# Create trace in background - don't block
|
789
|
-
trace_future = _thread_pool.submit(self._create_langfuse_trace_background, request, vector_name, trace_id)
|
790
|
-
|
791
783
|
# Extract data (keep original logic)
|
792
784
|
user_input = data.pop('user_input').strip()
|
793
785
|
stream_wait_time = data.pop('stream_wait_time', 7)
|
@@ -811,7 +803,7 @@ if __name__ == "__main__":
|
|
811
803
|
finally:
|
812
804
|
data.pop("_upload_future", None)
|
813
805
|
|
814
|
-
#
|
806
|
+
# BUILD all_input BEFORE trace creation (this was moved inside try/catch by mistake)
|
815
807
|
all_input = {
|
816
808
|
'user_input': user_input,
|
817
809
|
'vector_name': vector_name_param,
|
@@ -822,8 +814,15 @@ if __name__ == "__main__":
|
|
822
814
|
'kwargs': data
|
823
815
|
}
|
824
816
|
|
825
|
-
#
|
817
|
+
# Initialize trace variables
|
818
|
+
trace = None
|
819
|
+
span = None
|
826
820
|
if self.add_langfuse_eval:
|
821
|
+
trace_id = data.get('trace_id')
|
822
|
+
# Create trace in background - don't block
|
823
|
+
trace_future = _thread_pool.submit(self._create_langfuse_trace_background, request, vector_name, trace_id)
|
824
|
+
|
825
|
+
# Try to get trace result if available (don't block long)
|
827
826
|
try:
|
828
827
|
trace = trace_future.result(timeout=0.1) # Very short timeout
|
829
828
|
if trace:
|
@@ -853,67 +852,6 @@ if __name__ == "__main__":
|
|
853
852
|
"vac_config": vac_config
|
854
853
|
}
|
855
854
|
|
856
|
-
async def prep_vac_async(self, request, vector_name):
|
857
|
-
"""Async version of prep_vac."""
|
858
|
-
# Parse request data
|
859
|
-
if request.content_type.startswith('application/json'):
|
860
|
-
data = request.get_json()
|
861
|
-
elif request.content_type.startswith('multipart/form-data'):
|
862
|
-
data = request.form.to_dict()
|
863
|
-
if 'file' in request.files:
|
864
|
-
file = request.files['file']
|
865
|
-
if file.filename != '':
|
866
|
-
log.info(f"Found file: {file.filename} to upload to GCS")
|
867
|
-
try:
|
868
|
-
# Make file upload async if possible
|
869
|
-
image_uri, mime_type = await self.handle_file_upload_async(file, vector_name)
|
870
|
-
data["image_uri"] = image_uri
|
871
|
-
data["mime"] = mime_type
|
872
|
-
except Exception as e:
|
873
|
-
log.error(traceback.format_exc())
|
874
|
-
return jsonify({'error': str(e), 'traceback': traceback.format_exc()}), 500
|
875
|
-
else:
|
876
|
-
log.error("No file selected")
|
877
|
-
return jsonify({"error": "No file selected"}), 400
|
878
|
-
else:
|
879
|
-
return jsonify({"error": "Unsupported content type"}), 400
|
880
|
-
|
881
|
-
log.info(f"vac/{vector_name} got data: {data}")
|
882
|
-
|
883
|
-
# Run these operations concurrently
|
884
|
-
tasks = []
|
885
|
-
|
886
|
-
# Extract other data while configs load
|
887
|
-
user_input = data.pop('user_input').strip()
|
888
|
-
stream_wait_time = data.pop('stream_wait_time', 7)
|
889
|
-
stream_timeout = data.pop('stream_timeout', 120)
|
890
|
-
chat_history = data.pop('chat_history', None)
|
891
|
-
vector_name_param = data.pop('vector_name', vector_name)
|
892
|
-
data.pop('trace_id', None) # to ensure not in kwargs
|
893
|
-
|
894
|
-
# Task 3: Process chat history
|
895
|
-
chat_history_task = asyncio.create_task(extract_chat_history_async_cached(chat_history))
|
896
|
-
tasks.append(chat_history_task)
|
897
|
-
|
898
|
-
# Await all tasks concurrently
|
899
|
-
results = await asyncio.gather(*tasks, return_exceptions=True)
|
900
|
-
|
901
|
-
paired_messages = results[0] if not isinstance(results[0], Exception) else []
|
902
|
-
|
903
|
-
# Only create span after we have trace
|
904
|
-
all_input = {
|
905
|
-
'user_input': user_input,
|
906
|
-
'vector_name': vector_name_param,
|
907
|
-
'chat_history': paired_messages,
|
908
|
-
'stream_wait_time': stream_wait_time,
|
909
|
-
'stream_timeout': stream_timeout,
|
910
|
-
'kwargs': data
|
911
|
-
}
|
912
|
-
|
913
|
-
return {
|
914
|
-
"all_input": all_input
|
915
|
-
}
|
916
|
-
|
917
855
|
def handle_file_upload(self, file, vector_name):
|
918
856
|
try:
|
919
857
|
file.save(file.filename)
|
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
|
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
|