unique_toolkit 1.46.10__tar.gz → 1.46.11__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.
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/CHANGELOG.md +6 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/PKG-INFO +7 -1
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/pyproject.toml +1 -1
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/chat/cancellation.py +1 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/language_model/__init__.py +15 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/language_model/functions.py +139 -10
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/language_model/reference.py +3 -1
- unique_toolkit-1.46.11/unique_toolkit/language_model/stream_transform.py +82 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/LICENSE +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/README.md +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/_base_service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/_time_utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/config_checker/README.md +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/config_checker/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/config_checker/__main__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/config_checker/cli.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/config_checker/differ.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/config_checker/exporter.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/config_checker/models.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/config_checker/registry.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/config_checker/validator.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/default_language_model.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/docx_generator/config.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/docx_generator/service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/endpoint_builder.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/endpoint_requestor.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/event_bus.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/exception.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/execution.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/feature_flags/schema.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/pydantic_helpers.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/referencing.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/string_utilities.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/tests/test_referencing.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/token/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/token/image_token_counting.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/token/token_counting.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/utils/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/utils/files.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/utils/image/encode.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/utils/jinja/render.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/utils/write_configuration.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/validate_required_values.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/validators.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/config.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/exception.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/history_manager/utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/loop_runner/base.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/config.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/factory.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/schemas.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/tool.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic_table/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic_table/schemas.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic_table/service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/app/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/app/dev_util.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/app/fast_api_factory.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/app/init_logging.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/app/init_sdk.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/app/performance/async_tasks.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/app/performance/async_wrapper.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/app/schemas.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/app/unique_settings.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/app/verification.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/app/webhook.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/chat/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/chat/constants.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/chat/deprecated/service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/chat/functions.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/chat/rendering.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/chat/responses_api.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/chat/schemas.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/chat/service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/chat/state.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/chat/utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/content/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/content/constants.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/content/functions.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/content/schemas.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/content/service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/content/smart_rules.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/content/utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/data_extraction/README.md +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/data_extraction/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/data_extraction/augmented/service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/data_extraction/base.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/data_extraction/basic/config.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/data_extraction/basic/service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/elicitation/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/elicitation/constants.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/elicitation/exceptions.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/elicitation/functions.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/elicitation/schemas.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/elicitation/service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/embedding/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/embedding/constants.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/embedding/functions.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/embedding/schemas.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/embedding/service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/embedding/utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/framework_utilities/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/framework_utilities/openai/client.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/framework_utilities/utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/language_model/builder.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/language_model/constants.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/language_model/default_language_model.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/language_model/infos.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/language_model/prompt.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/language_model/schemas.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/language_model/service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/language_model/utils.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/protocols/support.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/services/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/services/chat_service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/services/knowledge_base.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/short_term_memory/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/short_term_memory/constants.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/short_term_memory/functions.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/short_term_memory/schemas.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/short_term_memory/service.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/smart_rules/__init__.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/smart_rules/compile.py +0 -0
- {unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/test_utilities/events.py +0 -0
|
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.46.11] - 2026-02-20
|
|
9
|
+
- Add OpenAI-proxy direct streaming with Python-side reference injection (UN-17264)
|
|
10
|
+
- Add `stream_complete_with_references_openai()` using async OpenAI client and `chat.completions.stream()`
|
|
11
|
+
- Add stream transformation pipeline: `StreamTransform` protocol, `TextTransformPipeline`, `ReferenceInjectionTransform` (reuses `add_references_to_message`), `NormalizationTransform` placeholder
|
|
12
|
+
- Export `stream_complete_with_references_openai` and stream transform types from `unique_toolkit.language_model`
|
|
13
|
+
|
|
8
14
|
## [1.46.10] - 2026-02-19
|
|
9
15
|
- Add flag-based cancellation support via `CancellationWatcher` and `TypedEventBus`
|
|
10
16
|
- Expose `ChatService.cancellation` property for polling, event subscription, and `run_with_cancellation` helper
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: unique_toolkit
|
|
3
|
-
Version: 1.46.
|
|
3
|
+
Version: 1.46.11
|
|
4
4
|
Summary:
|
|
5
5
|
License: Proprietary
|
|
6
6
|
Author: Cedric Klinkert
|
|
@@ -127,6 +127,12 @@ All notable changes to this project will be documented in this file.
|
|
|
127
127
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
128
128
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
129
129
|
|
|
130
|
+
## [1.46.11] - 2026-02-20
|
|
131
|
+
- Add OpenAI-proxy direct streaming with Python-side reference injection (UN-17264)
|
|
132
|
+
- Add `stream_complete_with_references_openai()` using async OpenAI client and `chat.completions.stream()`
|
|
133
|
+
- Add stream transformation pipeline: `StreamTransform` protocol, `TextTransformPipeline`, `ReferenceInjectionTransform` (reuses `add_references_to_message`), `NormalizationTransform` placeholder
|
|
134
|
+
- Export `stream_complete_with_references_openai` and stream transform types from `unique_toolkit.language_model`
|
|
135
|
+
|
|
130
136
|
## [1.46.10] - 2026-02-19
|
|
131
137
|
- Add flag-based cancellation support via `CancellationWatcher` and `TypedEventBus`
|
|
132
138
|
- Expose `ChatService.cancellation` property for polling, event subscription, and `run_with_cancellation` helper
|
|
@@ -5,6 +5,9 @@ from .default_language_model import (
|
|
|
5
5
|
from .default_language_model import (
|
|
6
6
|
DEFAULT_GPT_4o as DEFAULT_GPT_4o,
|
|
7
7
|
)
|
|
8
|
+
from .functions import (
|
|
9
|
+
stream_complete_with_references_openai as stream_complete_with_references_openai,
|
|
10
|
+
)
|
|
8
11
|
from .infos import LanguageModel as LanguageModel
|
|
9
12
|
from .infos import LanguageModelName as LanguageModelName
|
|
10
13
|
from .prompt import (
|
|
@@ -67,6 +70,18 @@ from .schemas import (
|
|
|
67
70
|
from .service import (
|
|
68
71
|
LanguageModelService as LanguageModelService,
|
|
69
72
|
)
|
|
73
|
+
from .stream_transform import (
|
|
74
|
+
NormalizationTransform as NormalizationTransform,
|
|
75
|
+
)
|
|
76
|
+
from .stream_transform import (
|
|
77
|
+
ReferenceInjectionTransform as ReferenceInjectionTransform,
|
|
78
|
+
)
|
|
79
|
+
from .stream_transform import (
|
|
80
|
+
StreamTransform as StreamTransform,
|
|
81
|
+
)
|
|
82
|
+
from .stream_transform import (
|
|
83
|
+
TextTransformPipeline as TextTransformPipeline,
|
|
84
|
+
)
|
|
70
85
|
from .utils import (
|
|
71
86
|
convert_string_to_json as convert_string_to_json,
|
|
72
87
|
)
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/language_model/functions.py
RENAMED
|
@@ -2,7 +2,11 @@ import copy
|
|
|
2
2
|
import logging
|
|
3
3
|
import warnings
|
|
4
4
|
from datetime import UTC, datetime
|
|
5
|
-
from typing import Any, Sequence, cast
|
|
5
|
+
from typing import TYPE_CHECKING, Any, Sequence, cast
|
|
6
|
+
from uuid import uuid4
|
|
7
|
+
|
|
8
|
+
if TYPE_CHECKING:
|
|
9
|
+
from unique_toolkit.app.unique_settings import UniqueSettings
|
|
6
10
|
|
|
7
11
|
import humps
|
|
8
12
|
import unique_sdk
|
|
@@ -12,15 +16,6 @@ from pydantic import BaseModel
|
|
|
12
16
|
|
|
13
17
|
from unique_toolkit.chat.schemas import ChatMessage, ChatMessageRole
|
|
14
18
|
from unique_toolkit.content.schemas import ContentChunk, ContentReference
|
|
15
|
-
from unique_toolkit.language_model import (
|
|
16
|
-
LanguageModelMessageRole,
|
|
17
|
-
LanguageModelMessages,
|
|
18
|
-
LanguageModelResponse,
|
|
19
|
-
LanguageModelStreamResponse,
|
|
20
|
-
LanguageModelStreamResponseMessage,
|
|
21
|
-
LanguageModelTool,
|
|
22
|
-
LanguageModelToolDescription,
|
|
23
|
-
)
|
|
24
19
|
from unique_toolkit.language_model.infos import (
|
|
25
20
|
LanguageModelInfo,
|
|
26
21
|
LanguageModelName,
|
|
@@ -29,6 +24,16 @@ from unique_toolkit.language_model.infos import (
|
|
|
29
24
|
from unique_toolkit.language_model.reference import (
|
|
30
25
|
add_references_to_message,
|
|
31
26
|
)
|
|
27
|
+
from unique_toolkit.language_model.schemas import (
|
|
28
|
+
LanguageModelFunction,
|
|
29
|
+
LanguageModelMessageRole,
|
|
30
|
+
LanguageModelMessages,
|
|
31
|
+
LanguageModelResponse,
|
|
32
|
+
LanguageModelStreamResponse,
|
|
33
|
+
LanguageModelStreamResponseMessage,
|
|
34
|
+
LanguageModelTool,
|
|
35
|
+
LanguageModelToolDescription,
|
|
36
|
+
)
|
|
32
37
|
|
|
33
38
|
from .constants import (
|
|
34
39
|
DEFAULT_COMPLETE_TEMPERATURE,
|
|
@@ -541,3 +546,127 @@ def _create_language_model_stream_response_with_references(
|
|
|
541
546
|
message=stream_response_message,
|
|
542
547
|
tool_calls=tool_calls,
|
|
543
548
|
)
|
|
549
|
+
|
|
550
|
+
|
|
551
|
+
async def stream_complete_with_references_openai(
|
|
552
|
+
messages: list[ChatCompletionMessageParam] | LanguageModelMessages,
|
|
553
|
+
model_name: LanguageModelName | str,
|
|
554
|
+
content_chunks: list[ContentChunk] | None = None,
|
|
555
|
+
temperature: float = DEFAULT_COMPLETE_TEMPERATURE,
|
|
556
|
+
start_text: str | None = None,
|
|
557
|
+
tools: Sequence[LanguageModelTool | LanguageModelToolDescription] | None = None,
|
|
558
|
+
tool_choice: ChatCompletionToolChoiceOptionParam | None = None,
|
|
559
|
+
unique_settings: "UniqueSettings | None" = None, # noqa: F821
|
|
560
|
+
message_id: str | None = None,
|
|
561
|
+
) -> LanguageModelStreamResponse:
|
|
562
|
+
"""Stream a chat completion via the OpenAI proxy, apply reference injection, and return a LanguageModelStreamResponse."""
|
|
563
|
+
from unique_toolkit.framework_utilities.openai.client import (
|
|
564
|
+
get_async_openai_client,
|
|
565
|
+
)
|
|
566
|
+
from unique_toolkit.language_model.stream_transform import (
|
|
567
|
+
ReferenceInjectionTransform,
|
|
568
|
+
TextTransformPipeline,
|
|
569
|
+
)
|
|
570
|
+
|
|
571
|
+
# prepare variables
|
|
572
|
+
client = get_async_openai_client(unique_settings=unique_settings)
|
|
573
|
+
model_name_: str = (
|
|
574
|
+
model_name.value if isinstance(model_name, LanguageModelName) else model_name
|
|
575
|
+
)
|
|
576
|
+
messages_: list[ChatCompletionMessageParam] = (
|
|
577
|
+
messages.model_dump(
|
|
578
|
+
exclude_none=True,
|
|
579
|
+
by_alias=False,
|
|
580
|
+
)
|
|
581
|
+
if isinstance(messages, LanguageModelMessages)
|
|
582
|
+
else list(messages)
|
|
583
|
+
)
|
|
584
|
+
tools_ = (
|
|
585
|
+
[]
|
|
586
|
+
if tools is None
|
|
587
|
+
else [
|
|
588
|
+
tool.to_openai(mode="completions")
|
|
589
|
+
if isinstance(tool, LanguageModelToolDescription)
|
|
590
|
+
else {"type": "function", "function": tool.model_dump(exclude_none=True)}
|
|
591
|
+
for tool in tools
|
|
592
|
+
]
|
|
593
|
+
)
|
|
594
|
+
|
|
595
|
+
# pipeline
|
|
596
|
+
pipeline = TextTransformPipeline()
|
|
597
|
+
# pipeline.add(NormalizationTransform()) # no-op for now
|
|
598
|
+
pipeline.add(
|
|
599
|
+
ReferenceInjectionTransform(
|
|
600
|
+
content_chunks=content_chunks or [], model=model_name_
|
|
601
|
+
)
|
|
602
|
+
)
|
|
603
|
+
|
|
604
|
+
stream_kwargs: dict[str, Any] = {
|
|
605
|
+
"messages": messages_,
|
|
606
|
+
"model": model_name_,
|
|
607
|
+
"temperature": temperature,
|
|
608
|
+
"stream": True,
|
|
609
|
+
}
|
|
610
|
+
if tool_choice is not None:
|
|
611
|
+
stream_kwargs["tool_choice"] = tool_choice
|
|
612
|
+
if tools_:
|
|
613
|
+
stream_kwargs["tools"] = tools_
|
|
614
|
+
|
|
615
|
+
full_text: str = start_text or ""
|
|
616
|
+
tool_calls_fragments: dict[int, dict[str, Any]] = {}
|
|
617
|
+
try:
|
|
618
|
+
stream = await client.chat.completions.create(**stream_kwargs)
|
|
619
|
+
async with stream:
|
|
620
|
+
async for chunk in stream:
|
|
621
|
+
if not chunk.choices:
|
|
622
|
+
continue
|
|
623
|
+
choice_ = chunk.choices[0]
|
|
624
|
+
# text
|
|
625
|
+
delta_ = choice_.delta
|
|
626
|
+
if delta_.content is not None:
|
|
627
|
+
full_text += delta_.content
|
|
628
|
+
pipeline.feed_delta(delta_.content) # does nothing right now
|
|
629
|
+
# tools
|
|
630
|
+
for tool_call in delta_.tool_calls or []:
|
|
631
|
+
idx_ = tool_call.index
|
|
632
|
+
if idx_ not in tool_calls_fragments.keys():
|
|
633
|
+
tool_calls_fragments[idx_] = {
|
|
634
|
+
"id": tool_call.id or "",
|
|
635
|
+
"name": "",
|
|
636
|
+
"arguments": "",
|
|
637
|
+
}
|
|
638
|
+
if tool_call.function is not None:
|
|
639
|
+
tool_calls_fragments[idx_]["name"] += (
|
|
640
|
+
tool_call.function.name or ""
|
|
641
|
+
)
|
|
642
|
+
tool_calls_fragments[idx_]["arguments"] += (
|
|
643
|
+
tool_call.function.arguments or ""
|
|
644
|
+
)
|
|
645
|
+
# run on full text
|
|
646
|
+
text_, references_ = pipeline.run(full_text)
|
|
647
|
+
# construct tool calls
|
|
648
|
+
tool_calls_list = None
|
|
649
|
+
if len(tool_calls_fragments) > 0:
|
|
650
|
+
tool_calls_list = [
|
|
651
|
+
LanguageModelFunction(
|
|
652
|
+
id=tool_call["id"],
|
|
653
|
+
name=tool_call["name"],
|
|
654
|
+
arguments=tool_call["arguments"] or None,
|
|
655
|
+
)
|
|
656
|
+
for tool_call in tool_calls_fragments.values()
|
|
657
|
+
]
|
|
658
|
+
|
|
659
|
+
return LanguageModelStreamResponse(
|
|
660
|
+
message=LanguageModelStreamResponseMessage(
|
|
661
|
+
id=message_id or uuid4().hex,
|
|
662
|
+
previous_message_id=None,
|
|
663
|
+
role=LanguageModelMessageRole.ASSISTANT,
|
|
664
|
+
text=text_,
|
|
665
|
+
original_text=full_text,
|
|
666
|
+
references=references_,
|
|
667
|
+
),
|
|
668
|
+
tool_calls=tool_calls_list,
|
|
669
|
+
)
|
|
670
|
+
except Exception as e:
|
|
671
|
+
logger.error("Error streaming completion (model=%s): %s", model_name_, e)
|
|
672
|
+
raise
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/language_model/reference.py
RENAMED
|
@@ -53,7 +53,9 @@ def _add_references(
|
|
|
53
53
|
|
|
54
54
|
# Gemini 2.5 models have tendency to add multiple references for the same fact
|
|
55
55
|
# This is a workaround to limit the number of references to 5
|
|
56
|
-
if model and model.startswith(
|
|
56
|
+
if model and model.startswith(
|
|
57
|
+
"litellm:gemini-2-5"
|
|
58
|
+
): # TODO - check if this holds also for other models
|
|
57
59
|
reduced_text = _limit_consecutive_source_references(with_footnotes)
|
|
58
60
|
|
|
59
61
|
# Get the references that remain after reduction
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
from datetime import UTC, datetime
|
|
2
|
+
from typing import Protocol, runtime_checkable
|
|
3
|
+
|
|
4
|
+
from unique_toolkit.chat.schemas import ChatMessage, ChatMessageRole
|
|
5
|
+
from unique_toolkit.content.schemas import ContentChunk, ContentReference
|
|
6
|
+
from unique_toolkit.language_model.reference import add_references_to_message
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@runtime_checkable
|
|
10
|
+
class StreamTransform(Protocol):
|
|
11
|
+
def process_delta(self, delta: str) -> None: ...
|
|
12
|
+
|
|
13
|
+
def finalize(self, text: str) -> tuple[str, list[ContentReference]]: ...
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class ReferenceInjectionTransform:
|
|
17
|
+
"""Transform to inject references into the text of a message."""
|
|
18
|
+
|
|
19
|
+
def __init__(self, content_chunks: list[ContentChunk], model: str | None = None):
|
|
20
|
+
self._content_chunks = content_chunks
|
|
21
|
+
self._model = (
|
|
22
|
+
model # needed e.g. for gemini-2.5 models to limit the number of references
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
def process_delta(self, delta: str) -> None:
|
|
26
|
+
pass # cannot manipulate delta right now, as it is a stream
|
|
27
|
+
|
|
28
|
+
def finalize(self, text: str) -> tuple[str, list[ContentReference]]:
|
|
29
|
+
message = ChatMessage(
|
|
30
|
+
id="irrelevant",
|
|
31
|
+
text=text,
|
|
32
|
+
role=ChatMessageRole.ASSISTANT,
|
|
33
|
+
created_at=datetime.now(UTC),
|
|
34
|
+
chat_id="irrelevant",
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
updated_message, __ = add_references_to_message(
|
|
38
|
+
message=message,
|
|
39
|
+
search_context=self._content_chunks,
|
|
40
|
+
model=self._model,
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
references: list[ContentReference] = [
|
|
44
|
+
ContentReference(**u.model_dump()) for u in updated_message.references or []
|
|
45
|
+
]
|
|
46
|
+
return updated_message.content or "", references
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class NormalizationTransform:
|
|
50
|
+
"""Transform to normalize the text of a message.
|
|
51
|
+
E.g. remove extra whitespace, convert to lowercase, etc.
|
|
52
|
+
For now, this is a no-op. Only trim trailing whitespace.
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
def process_delta(self, delta: str) -> None:
|
|
56
|
+
pass
|
|
57
|
+
|
|
58
|
+
def finalize(self, text: str) -> tuple[str, list[ContentReference]]:
|
|
59
|
+
return text.strip(), []
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
class TextTransformPipeline:
|
|
63
|
+
"""Pipeline of text transforms to be applied to a stream of text."""
|
|
64
|
+
|
|
65
|
+
def __init__(self):
|
|
66
|
+
self._transforms: list[StreamTransform] = []
|
|
67
|
+
|
|
68
|
+
def add(self, transform: StreamTransform) -> "TextTransformPipeline":
|
|
69
|
+
self._transforms.append(transform)
|
|
70
|
+
return self
|
|
71
|
+
|
|
72
|
+
def feed_delta(self, delta: str) -> None:
|
|
73
|
+
for transform in self._transforms:
|
|
74
|
+
transform.process_delta(delta)
|
|
75
|
+
|
|
76
|
+
def run(self, text: str) -> tuple[str, list[ContentReference]]:
|
|
77
|
+
refs_: list[ContentReference] = []
|
|
78
|
+
text_: str = text
|
|
79
|
+
for transform in self._transforms:
|
|
80
|
+
text_, new_refs = transform.finalize(text_)
|
|
81
|
+
refs_.extend(new_refs)
|
|
82
|
+
return text_, refs_
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/config_checker/README.md
RENAMED
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/config_checker/__init__.py
RENAMED
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/config_checker/__main__.py
RENAMED
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/config_checker/cli.py
RENAMED
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/config_checker/differ.py
RENAMED
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/config_checker/exporter.py
RENAMED
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/config_checker/models.py
RENAMED
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/config_checker/registry.py
RENAMED
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/config_checker/validator.py
RENAMED
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/default_language_model.py
RENAMED
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/docx_generator/__init__.py
RENAMED
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/docx_generator/config.py
RENAMED
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/docx_generator/schemas.py
RENAMED
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/docx_generator/service.py
RENAMED
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/endpoint_builder.py
RENAMED
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/endpoint_requestor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/feature_flags/schema.py
RENAMED
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/pydantic/rjsf_tags.py
RENAMED
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/pydantic_helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/string_utilities.py
RENAMED
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/tests/test_referencing.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/token/token_counting.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/utils/image/encode.py
RENAMED
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/utils/jinja/helpers.py
RENAMED
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/utils/jinja/render.py
RENAMED
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/utils/jinja/schema.py
RENAMED
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/utils/jinja/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/_common/validate_required_values.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/exception.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/output_parser.py
RENAMED
|
File without changes
|
{unique_toolkit-1.46.10 → unique_toolkit-1.46.11}/unique_toolkit/agentic/evaluation/schemas.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|