unique_toolkit 1.51.0__tar.gz → 1.52.0__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.51.0 → unique_toolkit-1.52.0}/PKG-INFO +1 -1
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/pyproject.toml +1 -1
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/loop_runner/__init__.py +3 -3
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +11 -4
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +2 -2
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/loop_runner/runners/__init__.py +4 -2
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/loop_runner/runners/basic.py +22 -4
- unique_toolkit-1.52.0/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +7 -0
- unique_toolkit-1.52.0/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +30 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -4
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -12
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +18 -40
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/README.md +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/_base_service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/_time_utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/config_checker/README.md +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/config_checker/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/config_checker/__main__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/config_checker/cli.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/config_checker/differ.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/config_checker/exporter.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/config_checker/models.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/config_checker/registry.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/config_checker/validator.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/default_language_model.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/docx_generator/config.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/docx_generator/service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/endpoint_builder.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/endpoint_requestor.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/event_bus.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/exception.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/execution.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/feature_flags/schema.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/pydantic_helpers.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/referencing.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/string_utilities.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/tests/test_referencing.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/token/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/token/image_token_counting.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/token/token_counting.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/utils/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/utils/files.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/utils/image/encode.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/utils/jinja/render.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/utils/write_configuration.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/validate_required_values.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/validators.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/config.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/exception.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/history_manager/utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/loop_runner/base.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/config.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/factory.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/schemas.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/tool.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic_table/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic_table/schemas.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic_table/service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/app/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/app/dev_util.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/app/fast_api_factory.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/app/init_logging.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/app/init_sdk.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/app/performance/async_tasks.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/app/performance/async_wrapper.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/app/schemas.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/app/unique_settings.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/app/verification.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/app/webhook.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/chat/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/chat/cancellation.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/chat/constants.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/chat/deprecated/service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/chat/functions.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/chat/rendering.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/chat/responses_api.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/chat/schemas.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/chat/service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/chat/state.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/chat/utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/content/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/content/constants.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/content/functions.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/content/schemas.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/content/service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/content/smart_rules.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/content/utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/data_extraction/README.md +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/data_extraction/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/data_extraction/augmented/service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/data_extraction/base.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/data_extraction/basic/config.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/data_extraction/basic/service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/elicitation/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/elicitation/constants.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/elicitation/exceptions.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/elicitation/functions.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/elicitation/schemas.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/elicitation/service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/embedding/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/embedding/constants.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/embedding/functions.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/embedding/schemas.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/embedding/service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/embedding/utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/framework_utilities/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/framework_utilities/openai/client.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/framework_utilities/utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/language_model/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/language_model/builder.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/language_model/constants.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/language_model/default_language_model.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/language_model/functions.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/language_model/infos.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/language_model/prompt.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/language_model/reference.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/language_model/schemas.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/language_model/service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/language_model/stream_transform.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/language_model/utils.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/protocols/support.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/services/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/services/chat_service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/services/knowledge_base.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/short_term_memory/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/short_term_memory/constants.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/short_term_memory/functions.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/short_term_memory/schemas.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/short_term_memory/service.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/smart_rules/__init__.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/smart_rules/compile.py +0 -0
- {unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/test_utilities/events.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: unique-toolkit
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.52.0
|
|
4
4
|
Summary:
|
|
5
5
|
Author: Cedric Klinkert, Martin Fadler, Sadique Sheik, Fabian Schläpfer, Pascal Hauri, Ejiroghene Oki-Peter, Rami Azouz, Ricardo Visini, Sanzio Monti
|
|
6
6
|
Author-email: Cedric Klinkert <cedric.klinkert@unique.ch>, Martin Fadler <martin.fadler@unique.ch>, Sadique Sheik <sadique@unique.ch>, Fabian Schläpfer <fabian@unique.ch>, Pascal Hauri <pascal@unique.ch>, Ejiroghene Oki-Peter <oki-peter.ejiroghene@unique.ai>, Rami Azouz <rami.ext@unique.ch>, Ricardo Visini <ricardo.visini@unique.ch>, Sanzio Monti <sanzio.monti@unique.ai>
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/loop_runner/__init__.py
RENAMED
|
@@ -18,9 +18,9 @@ from unique_toolkit.agentic.loop_runner.runners import (
|
|
|
18
18
|
QWEN_MAX_LOOP_ITERATIONS,
|
|
19
19
|
BasicLoopIterationRunner,
|
|
20
20
|
BasicLoopIterationRunnerConfig,
|
|
21
|
+
MistralLoopIterationRunner,
|
|
21
22
|
QwenLoopIterationRunner,
|
|
22
23
|
ResponsesBasicLoopIterationRunner,
|
|
23
|
-
is_qwen_model,
|
|
24
24
|
)
|
|
25
25
|
|
|
26
26
|
__all__ = [
|
|
@@ -28,10 +28,10 @@ __all__ = [
|
|
|
28
28
|
"PlanningConfig",
|
|
29
29
|
"PlanningMiddleware",
|
|
30
30
|
"PlanningSchemaConfig",
|
|
31
|
-
"QwenLoopIterationRunner",
|
|
32
|
-
"is_qwen_model",
|
|
33
31
|
"BasicLoopIterationRunnerConfig",
|
|
34
32
|
"BasicLoopIterationRunner",
|
|
33
|
+
"MistralLoopIterationRunner",
|
|
34
|
+
"QwenLoopIterationRunner",
|
|
35
35
|
"handle_forced_tools_iteration",
|
|
36
36
|
"handle_last_iteration",
|
|
37
37
|
"handle_normal_iteration",
|
|
@@ -47,13 +47,17 @@ async def run_forced_tools_iteration(
|
|
|
47
47
|
*,
|
|
48
48
|
loop_runner_kwargs: _LoopIterationRunnerKwargs,
|
|
49
49
|
prepare_loop_runner_kwargs: PrepareForcedToolIterationKwargs | None = None,
|
|
50
|
+
tool_choice_override: str | None = None,
|
|
50
51
|
) -> LanguageModelStreamResponse:
|
|
51
52
|
"""
|
|
52
53
|
Execute a "forced tools" iteration by running one stream_response per tool choice,
|
|
53
54
|
then merging tool calls and references into a single response.
|
|
54
55
|
|
|
55
|
-
|
|
56
|
-
|
|
56
|
+
Args:
|
|
57
|
+
prepare_loop_runner_kwargs: Optional callback to transform kwargs per tool choice
|
|
58
|
+
(e.g. Qwen rewrites messages with tool-specific instructions).
|
|
59
|
+
tool_choice_override: If set, replaces the per-tool named dict with this value
|
|
60
|
+
(e.g. Mistral needs "any" instead of the named format).
|
|
57
61
|
"""
|
|
58
62
|
assert "tool_choices" in loop_runner_kwargs
|
|
59
63
|
|
|
@@ -74,13 +78,16 @@ async def run_forced_tools_iteration(
|
|
|
74
78
|
if prepare_loop_runner_kwargs:
|
|
75
79
|
per_choice_kwargs = prepare_loop_runner_kwargs(func_name, per_choice_kwargs)
|
|
76
80
|
|
|
81
|
+
effective_tool_choice = tool_choice_override or opt
|
|
77
82
|
limited_tool = available_tools.get(func_name) if func_name else None
|
|
78
|
-
stream_kwargs = {
|
|
83
|
+
stream_kwargs = {
|
|
84
|
+
"loop_runner_kwargs": per_choice_kwargs,
|
|
85
|
+
"tool_choice": effective_tool_choice,
|
|
86
|
+
}
|
|
79
87
|
if limited_tool:
|
|
80
88
|
stream_kwargs["tools"] = [limited_tool]
|
|
81
89
|
responses.append(await stream_response(**stream_kwargs))
|
|
82
90
|
|
|
83
|
-
# Merge responses and refs:
|
|
84
91
|
tool_calls = []
|
|
85
92
|
references = []
|
|
86
93
|
for r in responses:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from typing import Any, Required
|
|
2
2
|
|
|
3
|
-
from openai.types.chat import
|
|
3
|
+
from openai.types.chat import ChatCompletionToolChoiceOptionParam
|
|
4
4
|
from typing_extensions import TypedDict
|
|
5
5
|
|
|
6
6
|
from unique_toolkit import LanguageModelToolDescription
|
|
@@ -18,7 +18,7 @@ class _StreamingHandlerKwargs(TypedDict, total=False):
|
|
|
18
18
|
start_text: str
|
|
19
19
|
debug_info: dict[str, Any]
|
|
20
20
|
temperature: float
|
|
21
|
-
tool_choice:
|
|
21
|
+
tool_choice: ChatCompletionToolChoiceOptionParam
|
|
22
22
|
other_options: dict[str, Any]
|
|
23
23
|
|
|
24
24
|
|
|
@@ -3,21 +3,23 @@ from unique_toolkit.agentic.loop_runner.runners.basic import (
|
|
|
3
3
|
BasicLoopIterationRunnerConfig,
|
|
4
4
|
ResponsesBasicLoopIterationRunner,
|
|
5
5
|
)
|
|
6
|
+
from unique_toolkit.agentic.loop_runner.runners.mistral import (
|
|
7
|
+
MistralLoopIterationRunner,
|
|
8
|
+
)
|
|
6
9
|
from unique_toolkit.agentic.loop_runner.runners.qwen import (
|
|
7
10
|
QWEN_FORCED_TOOL_CALL_INSTRUCTION,
|
|
8
11
|
QWEN_LAST_ITERATION_INSTRUCTION,
|
|
9
12
|
QWEN_MAX_LOOP_ITERATIONS,
|
|
10
13
|
QwenLoopIterationRunner,
|
|
11
|
-
is_qwen_model,
|
|
12
14
|
)
|
|
13
15
|
|
|
14
16
|
__all__ = [
|
|
15
17
|
"BasicLoopIterationRunnerConfig",
|
|
16
18
|
"BasicLoopIterationRunner",
|
|
17
19
|
"ResponsesBasicLoopIterationRunner",
|
|
20
|
+
"MistralLoopIterationRunner",
|
|
18
21
|
"QwenLoopIterationRunner",
|
|
19
22
|
"QWEN_FORCED_TOOL_CALL_INSTRUCTION",
|
|
20
23
|
"QWEN_LAST_ITERATION_INSTRUCTION",
|
|
21
24
|
"QWEN_MAX_LOOP_ITERATIONS",
|
|
22
|
-
"is_qwen_model",
|
|
23
25
|
]
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/loop_runner/runners/basic.py
RENAMED
|
@@ -5,9 +5,9 @@ from pydantic import BaseModel
|
|
|
5
5
|
|
|
6
6
|
from unique_toolkit._common.pydantic_helpers import get_configuration_dict
|
|
7
7
|
from unique_toolkit.agentic.loop_runner._iteration_handler_utils import (
|
|
8
|
-
handle_forced_tools_iteration,
|
|
9
8
|
handle_last_iteration,
|
|
10
9
|
handle_normal_iteration,
|
|
10
|
+
run_forced_tools_iteration,
|
|
11
11
|
)
|
|
12
12
|
from unique_toolkit.agentic.loop_runner._responses_iteration_handler_utils import (
|
|
13
13
|
handle_responses_forced_tools_iteration,
|
|
@@ -44,11 +44,29 @@ class BasicLoopIterationRunner(LoopIterationRunner):
|
|
|
44
44
|
iteration_index = kwargs["iteration_index"]
|
|
45
45
|
|
|
46
46
|
if len(tool_choices) > 0 and iteration_index == 0:
|
|
47
|
-
return await
|
|
47
|
+
return await self._handle_forced_tools(**kwargs)
|
|
48
48
|
elif iteration_index == self._config.max_loop_iterations - 1:
|
|
49
|
-
return await
|
|
49
|
+
return await self._handle_last_iteration(**kwargs)
|
|
50
50
|
else:
|
|
51
|
-
return await
|
|
51
|
+
return await self._handle_normal_iteration(**kwargs)
|
|
52
|
+
|
|
53
|
+
async def _handle_forced_tools(
|
|
54
|
+
self,
|
|
55
|
+
**kwargs: Unpack[_LoopIterationRunnerKwargs],
|
|
56
|
+
) -> LanguageModelStreamResponse:
|
|
57
|
+
return await run_forced_tools_iteration(loop_runner_kwargs=kwargs)
|
|
58
|
+
|
|
59
|
+
async def _handle_last_iteration(
|
|
60
|
+
self,
|
|
61
|
+
**kwargs: Unpack[_LoopIterationRunnerKwargs],
|
|
62
|
+
) -> LanguageModelStreamResponse:
|
|
63
|
+
return await handle_last_iteration(**kwargs)
|
|
64
|
+
|
|
65
|
+
async def _handle_normal_iteration(
|
|
66
|
+
self,
|
|
67
|
+
**kwargs: Unpack[_LoopIterationRunnerKwargs],
|
|
68
|
+
) -> LanguageModelStreamResponse:
|
|
69
|
+
return await handle_normal_iteration(**kwargs)
|
|
52
70
|
|
|
53
71
|
|
|
54
72
|
class ResponsesBasicLoopIterationRunner(ResponsesLoopIterationRunner):
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
from typing import Unpack
|
|
2
|
+
|
|
3
|
+
from unique_toolkit.agentic.loop_runner._iteration_handler_utils import (
|
|
4
|
+
run_forced_tools_iteration,
|
|
5
|
+
)
|
|
6
|
+
from unique_toolkit.agentic.loop_runner.base import _LoopIterationRunnerKwargs
|
|
7
|
+
from unique_toolkit.agentic.loop_runner.runners.basic import (
|
|
8
|
+
BasicLoopIterationRunner,
|
|
9
|
+
)
|
|
10
|
+
from unique_toolkit.chat.functions import LanguageModelStreamResponse
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class MistralLoopIterationRunner(BasicLoopIterationRunner):
|
|
14
|
+
"""Runner for Mistral models.
|
|
15
|
+
|
|
16
|
+
Mistral doesn't support named tool_choice (``{"type": "function", ...}``).
|
|
17
|
+
This runner overrides forced-tool handling to send ``"any"`` instead,
|
|
18
|
+
which forces the model to call a tool. Since each forced iteration already
|
|
19
|
+
restricts the tools list to a single tool, ``"any"`` effectively forces
|
|
20
|
+
the correct one.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
async def _handle_forced_tools(
|
|
24
|
+
self,
|
|
25
|
+
**kwargs: Unpack[_LoopIterationRunnerKwargs],
|
|
26
|
+
) -> LanguageModelStreamResponse:
|
|
27
|
+
return await run_forced_tools_iteration(
|
|
28
|
+
loop_runner_kwargs=kwargs,
|
|
29
|
+
tool_choice_override="any",
|
|
30
|
+
)
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
from unique_toolkit.agentic.loop_runner.runners.qwen.helpers import (
|
|
2
|
-
is_qwen_model,
|
|
3
|
-
)
|
|
4
1
|
from unique_toolkit.agentic.loop_runner.runners.qwen.qwen_runner import (
|
|
5
2
|
QWEN_FORCED_TOOL_CALL_INSTRUCTION,
|
|
6
3
|
QWEN_LAST_ITERATION_INSTRUCTION,
|
|
@@ -10,7 +7,6 @@ from unique_toolkit.agentic.loop_runner.runners.qwen.qwen_runner import (
|
|
|
10
7
|
|
|
11
8
|
__all__ = [
|
|
12
9
|
"QwenLoopIterationRunner",
|
|
13
|
-
"is_qwen_model",
|
|
14
10
|
"QWEN_FORCED_TOOL_CALL_INSTRUCTION",
|
|
15
11
|
"QWEN_LAST_ITERATION_INSTRUCTION",
|
|
16
12
|
"QWEN_MAX_LOOP_ITERATIONS",
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
from unique_toolkit.language_model.infos import LanguageModelInfo
|
|
2
1
|
from unique_toolkit.language_model.schemas import (
|
|
3
2
|
LanguageModelAssistantMessage,
|
|
4
3
|
LanguageModelMessageRole,
|
|
@@ -6,17 +5,6 @@ from unique_toolkit.language_model.schemas import (
|
|
|
6
5
|
)
|
|
7
6
|
|
|
8
7
|
|
|
9
|
-
def is_qwen_model(*, model: str | LanguageModelInfo | None) -> bool:
|
|
10
|
-
"""Check if the model is a Qwen model."""
|
|
11
|
-
if isinstance(model, LanguageModelInfo):
|
|
12
|
-
name = model.name
|
|
13
|
-
# name is an Enum with a .value attribute
|
|
14
|
-
return "qwen" in str(getattr(name, "value", name)).lower()
|
|
15
|
-
elif isinstance(model, str):
|
|
16
|
-
return "qwen" in model.lower()
|
|
17
|
-
return False
|
|
18
|
-
|
|
19
|
-
|
|
20
8
|
def append_qwen_forced_tool_call_instruction(
|
|
21
9
|
*,
|
|
22
10
|
messages: LanguageModelMessages,
|
|
@@ -2,13 +2,12 @@ import logging
|
|
|
2
2
|
from typing import Unpack
|
|
3
3
|
|
|
4
4
|
from unique_toolkit.agentic.loop_runner._iteration_handler_utils import (
|
|
5
|
-
handle_last_iteration,
|
|
6
|
-
handle_normal_iteration,
|
|
7
5
|
run_forced_tools_iteration,
|
|
8
6
|
)
|
|
9
|
-
from unique_toolkit.agentic.loop_runner.base import
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
from unique_toolkit.agentic.loop_runner.base import _LoopIterationRunnerKwargs
|
|
8
|
+
from unique_toolkit.agentic.loop_runner.runners.basic import (
|
|
9
|
+
BasicLoopIterationRunner,
|
|
10
|
+
BasicLoopIterationRunnerConfig,
|
|
12
11
|
)
|
|
13
12
|
from unique_toolkit.agentic.loop_runner.runners.qwen.helpers import (
|
|
14
13
|
append_qwen_forced_tool_call_instruction,
|
|
@@ -30,45 +29,30 @@ QWEN_LAST_ITERATION_INSTRUCTION = """The maximum number of loop iteration have b
|
|
|
30
29
|
Based on the found information, an answer should be generated"""
|
|
31
30
|
|
|
32
31
|
|
|
33
|
-
class QwenLoopIterationRunner(
|
|
32
|
+
class QwenLoopIterationRunner(BasicLoopIterationRunner):
|
|
34
33
|
def __init__(
|
|
35
34
|
self,
|
|
36
35
|
*,
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
config: BasicLoopIterationRunnerConfig,
|
|
37
|
+
forced_tool_call_instruction: str,
|
|
38
|
+
last_iteration_instruction: str,
|
|
40
39
|
chat_service: ChatService,
|
|
41
40
|
) -> None:
|
|
42
|
-
|
|
43
|
-
self.
|
|
44
|
-
self.
|
|
41
|
+
super().__init__(config)
|
|
42
|
+
self._forced_tool_call_instruction = forced_tool_call_instruction
|
|
43
|
+
self._last_iteration_instruction = last_iteration_instruction
|
|
45
44
|
self._chat_service = chat_service
|
|
46
45
|
|
|
47
|
-
async def
|
|
46
|
+
async def _handle_forced_tools(
|
|
48
47
|
self, **kwargs: Unpack[_LoopIterationRunnerKwargs]
|
|
49
48
|
) -> LanguageModelStreamResponse:
|
|
50
|
-
tool_choices = kwargs.get("tool_choices") or []
|
|
51
|
-
iteration_index = kwargs["iteration_index"]
|
|
52
|
-
|
|
53
|
-
if len(tool_choices) > 0 and iteration_index == 0:
|
|
54
|
-
return await self._qwen_handle_forced_tools_iteration(**kwargs)
|
|
55
|
-
elif iteration_index == self._max_loop_iterations - 1:
|
|
56
|
-
return await self._qwen_handle_last_iteration(**kwargs)
|
|
57
|
-
else:
|
|
58
|
-
return await self._qwen_handle_normal_iteration(**kwargs)
|
|
59
|
-
|
|
60
|
-
async def _qwen_handle_forced_tools_iteration(
|
|
61
|
-
self, **kwargs: Unpack[_LoopIterationRunnerKwargs]
|
|
62
|
-
) -> LanguageModelStreamResponse:
|
|
63
|
-
# For Qwen models, append tool call instruction to the last user message. These models ignore the parameter tool_choice.
|
|
64
|
-
# As the message has to be modified for each tool call instruction, the function from the basic runner cant be used.
|
|
65
49
|
original_messages = kwargs["messages"].model_copy(deep=True)
|
|
66
50
|
|
|
67
51
|
def _prepare(
|
|
68
52
|
func_name: str | None,
|
|
69
53
|
per_choice_kwargs: _LoopIterationRunnerKwargs,
|
|
70
54
|
) -> _LoopIterationRunnerKwargs:
|
|
71
|
-
prompt_instruction = self.
|
|
55
|
+
prompt_instruction = self._forced_tool_call_instruction.format(
|
|
72
56
|
TOOL_NAME=func_name or ""
|
|
73
57
|
)
|
|
74
58
|
per_choice_kwargs["messages"] = append_qwen_forced_tool_call_instruction(
|
|
@@ -83,34 +67,28 @@ class QwenLoopIterationRunner(LoopIterationRunner):
|
|
|
83
67
|
)
|
|
84
68
|
return self._process_response(response)
|
|
85
69
|
|
|
86
|
-
async def
|
|
70
|
+
async def _handle_last_iteration(
|
|
87
71
|
self, **kwargs: Unpack[_LoopIterationRunnerKwargs]
|
|
88
72
|
) -> LanguageModelStreamResponse:
|
|
89
|
-
# For Qwen models, append an assistant message with instructions to not call any tool in this iteration.
|
|
90
73
|
_LOGGER.info(
|
|
91
74
|
"Reached last iteration, removing tools. Appending assistant message with instructions to not call any tool in this iteration."
|
|
92
75
|
)
|
|
93
76
|
kwargs["messages"] = append_qwen_last_iteration_assistant_message(
|
|
94
77
|
messages=kwargs["messages"],
|
|
95
|
-
last_iteration_instruction=self.
|
|
78
|
+
last_iteration_instruction=self._last_iteration_instruction,
|
|
96
79
|
)
|
|
97
|
-
|
|
98
|
-
response = await handle_last_iteration(
|
|
99
|
-
**kwargs,
|
|
100
|
-
)
|
|
101
|
-
|
|
80
|
+
response = await super()._handle_last_iteration(**kwargs)
|
|
102
81
|
return self._process_response(response)
|
|
103
82
|
|
|
104
|
-
async def
|
|
83
|
+
async def _handle_normal_iteration(
|
|
105
84
|
self, **kwargs: Unpack[_LoopIterationRunnerKwargs]
|
|
106
85
|
) -> LanguageModelStreamResponse:
|
|
107
|
-
response = await
|
|
86
|
+
response = await super()._handle_normal_iteration(**kwargs)
|
|
108
87
|
return self._process_response(response)
|
|
109
88
|
|
|
110
89
|
def _process_response(
|
|
111
90
|
self, response: LanguageModelStreamResponse
|
|
112
91
|
) -> LanguageModelStreamResponse:
|
|
113
|
-
# Check if content of response is </tool_call>
|
|
114
92
|
if "</tool_call>" == response.message.text.strip():
|
|
115
93
|
_LOGGER.warning(
|
|
116
94
|
"Response contains only <tool_call>. This is not allowed. Returning empty response."
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/base_model_type_attribute.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/config_checker/README.md
RENAMED
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/config_checker/__init__.py
RENAMED
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/config_checker/__main__.py
RENAMED
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/config_checker/cli.py
RENAMED
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/config_checker/differ.py
RENAMED
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/config_checker/exporter.py
RENAMED
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/config_checker/models.py
RENAMED
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/config_checker/registry.py
RENAMED
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/config_checker/validator.py
RENAMED
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/default_language_model.py
RENAMED
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/docx_generator/__init__.py
RENAMED
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/docx_generator/config.py
RENAMED
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/docx_generator/schemas.py
RENAMED
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/docx_generator/service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/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.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/feature_flags/schema.py
RENAMED
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/pydantic/rjsf_tags.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/tests/test_referencing.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/token/image_token_counting.py
RENAMED
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/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.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/utils/image/encode.py
RENAMED
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/utils/jinja/helpers.py
RENAMED
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/utils/jinja/render.py
RENAMED
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/utils/jinja/schema.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/utils/write_configuration.py
RENAMED
|
File without changes
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/_common/validate_required_values.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
|
{unique_toolkit-1.51.0 → unique_toolkit-1.52.0}/unique_toolkit/agentic/evaluation/exception.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|