unique_toolkit 1.56.0__tar.gz → 1.57__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.56.0 → unique_toolkit-1.57}/PKG-INFO +1 -1
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/pyproject.toml +1 -1
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/evaluation_manager.py +1 -11
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +7 -13
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +3 -3
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -11
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/tool_manager.py +1 -8
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/chat/schemas.py +37 -53
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/content/schemas.py +1 -1
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/language_model/__init__.py +0 -2
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/language_model/functions.py +3 -4
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/language_model/schemas.py +30 -20
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/services/chat_service.py +0 -44
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/README.md +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/_base_service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/_time_utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/config_checker/README.md +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/config_checker/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/config_checker/__main__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/config_checker/cli.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/config_checker/differ.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/config_checker/exporter.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/config_checker/models.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/config_checker/registry.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/config_checker/validator.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/default_language_model.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/docx_generator/config.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/docx_generator/service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/endpoint_builder.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/endpoint_requestor.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/event_bus.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/exception.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/execution.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/feature_flags/schema.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/pydantic_helpers.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/referencing.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/string_utilities.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/tests/test_referencing.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/token/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/token/image_token_counting.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/token/token_counting.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/utils/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/utils/files.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/utils/image/encode.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/utils/jinja/render.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/utils/write_configuration.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/validate_required_values.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/validators.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/config.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/exception.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/evaluation/utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/history_manager/utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/loop_runner/base.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/config.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/factory.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/schemas.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/tool.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic_table/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic_table/schemas.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/agentic_table/service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/app/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/app/dev_util.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/app/fast_api_factory.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/app/init_logging.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/app/init_sdk.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/app/performance/async_tasks.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/app/performance/async_wrapper.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/app/schemas.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/app/unique_settings.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/app/verification.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/app/webhook.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/chat/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/chat/cancellation.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/chat/constants.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/chat/deprecated/service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/chat/functions.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/chat/rendering.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/chat/responses_api.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/chat/service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/chat/state.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/chat/utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/content/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/content/constants.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/content/functions.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/content/service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/content/smart_rules.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/content/utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/data_extraction/README.md +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/data_extraction/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/data_extraction/augmented/service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/data_extraction/base.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/data_extraction/basic/config.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/data_extraction/basic/service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/elicitation/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/elicitation/constants.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/elicitation/exceptions.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/elicitation/functions.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/elicitation/schemas.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/elicitation/service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/embedding/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/embedding/constants.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/embedding/functions.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/embedding/schemas.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/embedding/service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/embedding/utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/framework_utilities/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/framework_utilities/openai/client.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/framework_utilities/utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/language_model/builder.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/language_model/constants.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/language_model/default_language_model.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/language_model/infos.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/language_model/prompt.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/language_model/reference.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/language_model/service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/language_model/stream_transform.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/language_model/utils.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/protocols/support.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/services/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/services/knowledge_base.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/short_term_memory/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/short_term_memory/constants.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/short_term_memory/functions.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/short_term_memory/schemas.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/short_term_memory/service.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/smart_rules/__init__.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/smart_rules/compile.py +0 -0
- {unique_toolkit-1.56.0 → unique_toolkit-1.57}/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.57
|
|
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>
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
-
import time
|
|
3
2
|
from abc import ABC
|
|
4
3
|
from logging import Logger
|
|
5
4
|
|
|
@@ -87,7 +86,6 @@ class EvaluationManager:
|
|
|
87
86
|
self._chat_service = chat_service
|
|
88
87
|
self._evaluations: dict[EvaluationMetricName, Evaluation] = {}
|
|
89
88
|
self._evaluation_passed: bool = True
|
|
90
|
-
self._execution_times: dict[str, float] = {}
|
|
91
89
|
|
|
92
90
|
def add_evaluation(self, evaluation: Evaluation):
|
|
93
91
|
self._evaluations[evaluation.get_name()] = evaluation
|
|
@@ -101,8 +99,6 @@ class EvaluationManager:
|
|
|
101
99
|
loop_response: LanguageModelStreamResponse,
|
|
102
100
|
assistant_message_id: str,
|
|
103
101
|
) -> list[EvaluationMetricResult]:
|
|
104
|
-
self._execution_times = {}
|
|
105
|
-
|
|
106
102
|
task_executor = SafeTaskExecutor(
|
|
107
103
|
logger=self._logger,
|
|
108
104
|
)
|
|
@@ -138,9 +134,6 @@ class EvaluationManager:
|
|
|
138
134
|
|
|
139
135
|
return evaluation_results_unpacked
|
|
140
136
|
|
|
141
|
-
def get_execution_times(self) -> dict[str, float]:
|
|
142
|
-
return self._execution_times.copy()
|
|
143
|
-
|
|
144
137
|
async def execute_evaluation_call(
|
|
145
138
|
self,
|
|
146
139
|
evaluation_name: EvaluationMetricName,
|
|
@@ -152,16 +145,13 @@ class EvaluationManager:
|
|
|
152
145
|
evaluation_instance = self.get_evaluation_by_name(evaluation_name)
|
|
153
146
|
|
|
154
147
|
if evaluation_instance:
|
|
155
|
-
|
|
148
|
+
# Execute the evaluation
|
|
156
149
|
await self._create_assistant_message(
|
|
157
150
|
evaluation_instance, assistant_message_id
|
|
158
151
|
)
|
|
159
152
|
evaluation_metric_result: EvaluationMetricResult = (
|
|
160
153
|
await evaluation_instance.run(loop_response)
|
|
161
154
|
)
|
|
162
|
-
self._execution_times[str(evaluation_name)] = round(
|
|
163
|
-
time.perf_counter() - start, 3
|
|
164
|
-
)
|
|
165
155
|
return evaluation_metric_result
|
|
166
156
|
|
|
167
157
|
return EvaluationMetricResult(
|
|
@@ -17,13 +17,13 @@ from unique_toolkit.agentic.evaluation.hallucination.utils import (
|
|
|
17
17
|
context_text_from_stream_response,
|
|
18
18
|
)
|
|
19
19
|
from unique_toolkit.agentic.evaluation.schemas import EvaluationMetricInput
|
|
20
|
-
from unique_toolkit.chat.schemas import ChatMessage
|
|
21
20
|
from unique_toolkit.content import ContentReference
|
|
22
21
|
from unique_toolkit.content.schemas import ContentChunk
|
|
23
22
|
from unique_toolkit.language_model.schemas import (
|
|
24
23
|
LanguageModelMessageRole,
|
|
25
24
|
LanguageModelMessages,
|
|
26
25
|
LanguageModelStreamResponse,
|
|
26
|
+
LanguageModelStreamResponseMessage,
|
|
27
27
|
)
|
|
28
28
|
|
|
29
29
|
|
|
@@ -580,9 +580,8 @@ def test_context_text_from_stream_response__extracts_context__using_from_ids_mod
|
|
|
580
580
|
"""
|
|
581
581
|
# Arrange
|
|
582
582
|
response: LanguageModelStreamResponse = LanguageModelStreamResponse(
|
|
583
|
-
message=
|
|
583
|
+
message=LanguageModelStreamResponseMessage(
|
|
584
584
|
id="msg_1",
|
|
585
|
-
chat_id="",
|
|
586
585
|
previous_message_id=None,
|
|
587
586
|
role=LanguageModelMessageRole.ASSISTANT,
|
|
588
587
|
text="Test",
|
|
@@ -613,9 +612,8 @@ def test_context_text_from_stream_response__extracts_context__using_from_order_m
|
|
|
613
612
|
"""
|
|
614
613
|
# Arrange
|
|
615
614
|
response: LanguageModelStreamResponse = LanguageModelStreamResponse(
|
|
616
|
-
message=
|
|
615
|
+
message=LanguageModelStreamResponseMessage(
|
|
617
616
|
id="msg_1",
|
|
618
|
-
chat_id="",
|
|
619
617
|
previous_message_id=None,
|
|
620
618
|
role=LanguageModelMessageRole.ASSISTANT,
|
|
621
619
|
text="Test",
|
|
@@ -655,9 +653,8 @@ def test_context_text_from_stream_response__extracts_context__using_from_origina
|
|
|
655
653
|
)
|
|
656
654
|
]
|
|
657
655
|
response: LanguageModelStreamResponse = LanguageModelStreamResponse(
|
|
658
|
-
message=
|
|
656
|
+
message=LanguageModelStreamResponseMessage(
|
|
659
657
|
id="msg_1",
|
|
660
|
-
chat_id="",
|
|
661
658
|
previous_message_id=None,
|
|
662
659
|
role=LanguageModelMessageRole.ASSISTANT,
|
|
663
660
|
text="Test",
|
|
@@ -693,9 +690,8 @@ def test_context_text_from_stream_response__falls_back_to_default__with_invalid_
|
|
|
693
690
|
"""
|
|
694
691
|
# Arrange
|
|
695
692
|
response: LanguageModelStreamResponse = LanguageModelStreamResponse(
|
|
696
|
-
message=
|
|
693
|
+
message=LanguageModelStreamResponseMessage(
|
|
697
694
|
id="msg_1",
|
|
698
|
-
chat_id="",
|
|
699
695
|
previous_message_id=None,
|
|
700
696
|
role=LanguageModelMessageRole.ASSISTANT,
|
|
701
697
|
text="Test",
|
|
@@ -735,9 +731,8 @@ def test_context_text_from_stream_response__falls_back_to_default__on_extraction
|
|
|
735
731
|
)
|
|
736
732
|
]
|
|
737
733
|
response: LanguageModelStreamResponse = LanguageModelStreamResponse(
|
|
738
|
-
message=
|
|
734
|
+
message=LanguageModelStreamResponseMessage(
|
|
739
735
|
id="msg_1",
|
|
740
|
-
chat_id="",
|
|
741
736
|
previous_message_id=None,
|
|
742
737
|
role=LanguageModelMessageRole.ASSISTANT,
|
|
743
738
|
text="Test",
|
|
@@ -768,9 +763,8 @@ def test_context_text_from_stream_response__returns_text_strings__not_chunk_obje
|
|
|
768
763
|
"""
|
|
769
764
|
# Arrange
|
|
770
765
|
response: LanguageModelStreamResponse = LanguageModelStreamResponse(
|
|
771
|
-
message=
|
|
766
|
+
message=LanguageModelStreamResponseMessage(
|
|
772
767
|
id="msg_1",
|
|
773
|
-
chat_id="",
|
|
774
768
|
previous_message_id=None,
|
|
775
769
|
role=LanguageModelMessageRole.ASSISTANT,
|
|
776
770
|
text="Test",
|
|
@@ -173,12 +173,12 @@ def get_full_history_with_contents(
|
|
|
173
173
|
|
|
174
174
|
builder = LanguageModelMessages([]).builder()
|
|
175
175
|
for c in grouped_elements:
|
|
176
|
-
# LanguageModelUserMessage has not field
|
|
177
|
-
text = c.
|
|
176
|
+
# LanguageModelUserMessage has not field original content
|
|
177
|
+
text = c.original_content if c.original_content else c.content
|
|
178
178
|
if text is None:
|
|
179
179
|
if c.role == ChatRole.USER:
|
|
180
180
|
raise ValueError(
|
|
181
|
-
"Content or
|
|
181
|
+
"Content or original_content of LanguageModelMessages should exist.",
|
|
182
182
|
)
|
|
183
183
|
text = ""
|
|
184
184
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
-
import time
|
|
3
2
|
from abc import ABC
|
|
4
3
|
from logging import Logger
|
|
5
4
|
|
|
@@ -85,7 +84,6 @@ class PostprocessorManager:
|
|
|
85
84
|
self._logger = logger
|
|
86
85
|
self._chat_service = chat_service
|
|
87
86
|
self._postprocessors: list[Postprocessor | ResponsesApiPostprocessor] = []
|
|
88
|
-
self._execution_times: dict[str, float] = {}
|
|
89
87
|
|
|
90
88
|
# Allow to add postprocessors that should be run before or after the others.
|
|
91
89
|
self._first_postprocessor: Postprocessor | ResponsesApiPostprocessor | None = (
|
|
@@ -125,8 +123,6 @@ class PostprocessorManager:
|
|
|
125
123
|
self,
|
|
126
124
|
loop_response: LanguageModelStreamResponse,
|
|
127
125
|
) -> None:
|
|
128
|
-
self._execution_times = {}
|
|
129
|
-
|
|
130
126
|
task_executor = SafeTaskExecutor(
|
|
131
127
|
logger=self._logger,
|
|
132
128
|
)
|
|
@@ -162,19 +158,12 @@ class PostprocessorManager:
|
|
|
162
158
|
references=loop_response.message.references,
|
|
163
159
|
)
|
|
164
160
|
|
|
165
|
-
def get_execution_times(self) -> dict[str, float]:
|
|
166
|
-
return self._execution_times.copy()
|
|
167
|
-
|
|
168
161
|
async def execute_postprocessors(
|
|
169
162
|
self,
|
|
170
163
|
loop_response: LanguageModelStreamResponse,
|
|
171
164
|
postprocessor_instance: Postprocessor | ResponsesApiPostprocessor,
|
|
172
165
|
) -> None:
|
|
173
|
-
start = time.perf_counter()
|
|
174
166
|
await postprocessor_instance.run(loop_response) # type: ignore
|
|
175
|
-
self._execution_times[postprocessor_instance.name] = round(
|
|
176
|
-
time.perf_counter() - start, 3
|
|
177
|
-
)
|
|
178
167
|
|
|
179
168
|
async def remove_from_text(
|
|
180
169
|
self,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
-
import time
|
|
3
2
|
from logging import Logger, getLogger
|
|
4
3
|
from typing import Generic, Literal, TypeVar, overload
|
|
5
4
|
|
|
@@ -289,16 +288,10 @@ class _ToolManager(Generic[_ApiMode]):
|
|
|
289
288
|
raise ValueError(f"Tool {tool_call.name} cannot be run")
|
|
290
289
|
|
|
291
290
|
if tool_instance:
|
|
292
|
-
|
|
291
|
+
# Execute the tool
|
|
293
292
|
tool_response: ToolCallResponse = await tool_instance.run(
|
|
294
293
|
tool_call=tool_call
|
|
295
294
|
)
|
|
296
|
-
tool_execution_time = round(time.perf_counter() - tool_start, 3)
|
|
297
|
-
|
|
298
|
-
if tool_response.debug_info is None:
|
|
299
|
-
tool_response.debug_info = {}
|
|
300
|
-
tool_response.debug_info["execution_time_s"] = tool_execution_time
|
|
301
|
-
|
|
302
295
|
evaluation_checks = tool_instance.evaluation_check_list()
|
|
303
296
|
self._tool_evaluation_check_list.update(evaluation_checks)
|
|
304
297
|
|
|
@@ -66,67 +66,26 @@ class ToolCall(BaseModel):
|
|
|
66
66
|
)
|
|
67
67
|
|
|
68
68
|
|
|
69
|
-
class ChatMessageAssessmentStatus(StrEnum):
|
|
70
|
-
PENDING = "PENDING"
|
|
71
|
-
DONE = "DONE"
|
|
72
|
-
ERROR = "ERROR"
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
class ChatMessageAssessmentLabel(StrEnum):
|
|
76
|
-
RED = "RED"
|
|
77
|
-
YELLOW = "YELLOW"
|
|
78
|
-
GREEN = "GREEN"
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
class ChatMessageAssessmentType(StrEnum):
|
|
82
|
-
HALLUCINATION = "HALLUCINATION"
|
|
83
|
-
COMPLIANCE = "COMPLIANCE"
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
class ChatMessageAssessment(BaseModel):
|
|
87
|
-
model_config = model_config
|
|
88
|
-
|
|
89
|
-
id: str
|
|
90
|
-
object: str
|
|
91
|
-
message_id: str
|
|
92
|
-
status: ChatMessageAssessmentStatus
|
|
93
|
-
type: ChatMessageAssessmentType
|
|
94
|
-
title: str | None = None
|
|
95
|
-
explanation: str | None = None
|
|
96
|
-
label: ChatMessageAssessmentLabel | None = None
|
|
97
|
-
is_visible: bool
|
|
98
|
-
created_at: datetime | None = None
|
|
99
|
-
updated_at: datetime | None = None
|
|
100
|
-
|
|
101
|
-
|
|
102
69
|
class ChatMessage(BaseModel):
|
|
103
|
-
#
|
|
104
|
-
#
|
|
105
|
-
# Fields previous_message_id, tool_calls, tool_call_id are internal extensions not in the DTO.
|
|
70
|
+
# TODO: The below seems not to be True anymore @irina-unique. To be checked in separate PR
|
|
71
|
+
# This model should strictly meets https://github.com/Unique-AG/monorepo/blob/master/node/apps/node-chat/src/public-api/2023-12-06/dtos/message/public-message.dto.ts
|
|
106
72
|
model_config = model_config
|
|
107
73
|
|
|
108
74
|
id: str | None = None
|
|
109
75
|
chat_id: str
|
|
110
76
|
object: str | None = None
|
|
111
|
-
# alias="text" applies only to construction (model_validate / __init__).
|
|
112
|
-
# model_dump() uses the field name "content", not "text". Use model_dump(by_alias=True)
|
|
113
|
-
# to get "text" as the key, or access via the .text property.
|
|
114
77
|
content: str | None = Field(default=None, alias="text")
|
|
115
|
-
|
|
78
|
+
original_content: str | None = Field(default=None, alias="originalText")
|
|
116
79
|
role: ChatMessageRole
|
|
117
|
-
previous_message_id: str | None = None
|
|
118
80
|
gpt_request: list[dict] | None = None
|
|
119
81
|
tool_calls: list[ToolCall] | None = None
|
|
120
82
|
tool_call_id: str | None = None
|
|
121
83
|
debug_info: dict | None = {}
|
|
122
84
|
created_at: datetime | None = None
|
|
123
85
|
completed_at: datetime | None = None
|
|
124
|
-
started_streaming_at: datetime | None = None
|
|
125
|
-
stopped_streaming_at: datetime | None = None
|
|
126
86
|
user_aborted_at: datetime | None = None
|
|
127
87
|
updated_at: datetime | None = None
|
|
128
|
-
references: list[ContentReference] | None =
|
|
129
|
-
assessment: list[ChatMessageAssessment] | None = None
|
|
88
|
+
references: list[ContentReference] | None = None
|
|
130
89
|
|
|
131
90
|
# TODO make sdk return role consistently in lowercase
|
|
132
91
|
# Currently needed as sdk returns role in uppercase
|
|
@@ -134,14 +93,6 @@ class ChatMessage(BaseModel):
|
|
|
134
93
|
def set_role(cls, value: str):
|
|
135
94
|
return value.lower()
|
|
136
95
|
|
|
137
|
-
@property
|
|
138
|
-
def text(self) -> str | None:
|
|
139
|
-
return self.content
|
|
140
|
-
|
|
141
|
-
@text.setter
|
|
142
|
-
def text(self, value: str | None) -> None:
|
|
143
|
-
self.content = value
|
|
144
|
-
|
|
145
96
|
# Ensure tool_call_ids is required if role is 'tool'
|
|
146
97
|
@model_validator(mode="after")
|
|
147
98
|
def check_tool_call_ids_for_tool_role(self):
|
|
@@ -182,6 +133,39 @@ class ChatMessage(BaseModel):
|
|
|
182
133
|
raise NotImplementedError
|
|
183
134
|
|
|
184
135
|
|
|
136
|
+
class ChatMessageAssessmentStatus(StrEnum):
|
|
137
|
+
PENDING = "PENDING"
|
|
138
|
+
DONE = "DONE"
|
|
139
|
+
ERROR = "ERROR"
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
class ChatMessageAssessmentLabel(StrEnum):
|
|
143
|
+
RED = "RED"
|
|
144
|
+
YELLOW = "YELLOW"
|
|
145
|
+
GREEN = "GREEN"
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
class ChatMessageAssessmentType(StrEnum):
|
|
149
|
+
HALLUCINATION = "HALLUCINATION"
|
|
150
|
+
COMPLIANCE = "COMPLIANCE"
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
class ChatMessageAssessment(BaseModel):
|
|
154
|
+
model_config = model_config
|
|
155
|
+
|
|
156
|
+
id: str
|
|
157
|
+
object: str
|
|
158
|
+
message_id: str
|
|
159
|
+
status: ChatMessageAssessmentStatus
|
|
160
|
+
type: ChatMessageAssessmentType
|
|
161
|
+
title: str | None = None
|
|
162
|
+
explanation: str | None = None
|
|
163
|
+
label: ChatMessageAssessmentLabel | None = None
|
|
164
|
+
is_visible: bool
|
|
165
|
+
created_at: datetime | None = None
|
|
166
|
+
updated_at: datetime | None = None
|
|
167
|
+
|
|
168
|
+
|
|
185
169
|
class MessageLogStatus(StrEnum):
|
|
186
170
|
RUNNING = "RUNNING"
|
|
187
171
|
COMPLETED = "COMPLETED"
|
|
@@ -117,7 +117,7 @@ class ContentReference(BaseModel):
|
|
|
117
117
|
url: str
|
|
118
118
|
original_index: list[int] = Field(
|
|
119
119
|
default=[],
|
|
120
|
-
description="List of indices in the ChatMessage
|
|
120
|
+
description="List of indices in the ChatMessage original_content this reference refers to. This is usually the id in the functionCallResponse. List type due to implementation in node-chat",
|
|
121
121
|
)
|
|
122
122
|
|
|
123
123
|
@classmethod
|
|
@@ -20,7 +20,6 @@ from .schemas import (
|
|
|
20
20
|
LanguageModelStreamResponseMessage,
|
|
21
21
|
LanguageModelSystemMessage,
|
|
22
22
|
LanguageModelTokenLimits,
|
|
23
|
-
LanguageModelTokenUsage,
|
|
24
23
|
LanguageModelTool,
|
|
25
24
|
LanguageModelToolDescription,
|
|
26
25
|
LanguageModelToolMessage,
|
|
@@ -58,7 +57,6 @@ __all__ = [
|
|
|
58
57
|
"LanguageModelStreamResponseMessage",
|
|
59
58
|
"LanguageModelSystemMessage",
|
|
60
59
|
"LanguageModelTokenLimits",
|
|
61
|
-
"LanguageModelTokenUsage",
|
|
62
60
|
"LanguageModelTool",
|
|
63
61
|
"LanguageModelToolDescription",
|
|
64
62
|
"LanguageModelToolMessage",
|
|
@@ -30,6 +30,7 @@ from unique_toolkit.language_model.schemas import (
|
|
|
30
30
|
LanguageModelMessages,
|
|
31
31
|
LanguageModelResponse,
|
|
32
32
|
LanguageModelStreamResponse,
|
|
33
|
+
LanguageModelStreamResponseMessage,
|
|
33
34
|
LanguageModelTool,
|
|
34
35
|
LanguageModelToolDescription,
|
|
35
36
|
)
|
|
@@ -527,13 +528,12 @@ def _create_language_model_stream_response_with_references(
|
|
|
527
528
|
search_context=content_chunks,
|
|
528
529
|
)
|
|
529
530
|
|
|
530
|
-
stream_response_message =
|
|
531
|
+
stream_response_message = LanguageModelStreamResponseMessage(
|
|
531
532
|
id="stream_unknown",
|
|
532
533
|
previous_message_id=None,
|
|
533
534
|
role=LanguageModelMessageRole.ASSISTANT,
|
|
534
535
|
text=message.content or "",
|
|
535
536
|
original_text=content,
|
|
536
|
-
chat_id="stream_unknown",
|
|
537
537
|
references=[
|
|
538
538
|
ContentReference(**u.model_dump()) for u in message.references or []
|
|
539
539
|
],
|
|
@@ -657,9 +657,8 @@ async def stream_complete_with_references_openai(
|
|
|
657
657
|
]
|
|
658
658
|
|
|
659
659
|
return LanguageModelStreamResponse(
|
|
660
|
-
message=
|
|
660
|
+
message=LanguageModelStreamResponseMessage(
|
|
661
661
|
id=message_id or uuid4().hex,
|
|
662
|
-
chat_id="",
|
|
663
662
|
previous_message_id=None,
|
|
664
663
|
role=LanguageModelMessageRole.ASSISTANT,
|
|
665
664
|
text=text_,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import math
|
|
3
|
+
from enum import StrEnum
|
|
3
4
|
from typing import Any, Literal, Self, TypeVar
|
|
4
5
|
from uuid import uuid4
|
|
5
6
|
|
|
@@ -39,8 +40,7 @@ from pydantic import (
|
|
|
39
40
|
)
|
|
40
41
|
from typing_extensions import deprecated, overload
|
|
41
42
|
|
|
42
|
-
from unique_toolkit.
|
|
43
|
-
from unique_toolkit.chat.schemas import ChatMessageRole as LanguageModelMessageRole
|
|
43
|
+
from unique_toolkit.content.schemas import ContentReference
|
|
44
44
|
from unique_toolkit.language_model._responses_api_utils import (
|
|
45
45
|
convert_user_message_content_to_responses_api,
|
|
46
46
|
)
|
|
@@ -54,14 +54,33 @@ model_config = ConfigDict(
|
|
|
54
54
|
)
|
|
55
55
|
|
|
56
56
|
|
|
57
|
-
#
|
|
58
|
-
#
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
57
|
+
# Equivalent to
|
|
58
|
+
# from openai.types.chat.chat_completion_role import ChatCompletionRole
|
|
59
|
+
class LanguageModelMessageRole(StrEnum):
|
|
60
|
+
USER = "user"
|
|
61
|
+
SYSTEM = "system"
|
|
62
|
+
ASSISTANT = "assistant"
|
|
63
|
+
TOOL = "tool"
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
# This is tailored to the unique backend
|
|
67
|
+
class LanguageModelStreamResponseMessage(BaseModel):
|
|
68
|
+
model_config = model_config
|
|
69
|
+
|
|
70
|
+
id: str
|
|
71
|
+
previous_message_id: (
|
|
72
|
+
str | None
|
|
73
|
+
) # Stream response can return a null previous_message_id if an assisstant message is manually added
|
|
74
|
+
role: LanguageModelMessageRole
|
|
75
|
+
text: str
|
|
76
|
+
original_text: str | None = None
|
|
77
|
+
references: list[ContentReference] = []
|
|
78
|
+
|
|
79
|
+
# TODO make sdk return role in lowercase
|
|
80
|
+
# Currently needed as sdk returns role in uppercase
|
|
81
|
+
@field_validator("role", mode="before")
|
|
82
|
+
def set_role(cls, value: str):
|
|
83
|
+
return value.lower()
|
|
65
84
|
|
|
66
85
|
|
|
67
86
|
class LanguageModelFunction(BaseModel):
|
|
@@ -144,21 +163,12 @@ class LanguageModelFunction(BaseModel):
|
|
|
144
163
|
)
|
|
145
164
|
|
|
146
165
|
|
|
147
|
-
class LanguageModelTokenUsage(BaseModel):
|
|
148
|
-
model_config = model_config
|
|
149
|
-
|
|
150
|
-
completion_tokens: int | None = None
|
|
151
|
-
prompt_tokens: int | None = None
|
|
152
|
-
total_tokens: int | None = None
|
|
153
|
-
|
|
154
|
-
|
|
155
166
|
class LanguageModelStreamResponse(BaseModel):
|
|
156
167
|
model_config = model_config
|
|
157
168
|
|
|
158
|
-
message:
|
|
169
|
+
message: LanguageModelStreamResponseMessage
|
|
159
170
|
tool_calls: list[LanguageModelFunction] | None = None
|
|
160
171
|
stopped_by_user: bool = False
|
|
161
|
-
usage: LanguageModelTokenUsage | None = None
|
|
162
172
|
|
|
163
173
|
def is_empty(self) -> bool:
|
|
164
174
|
"""
|
|
@@ -140,50 +140,6 @@ class ChatService(ChatServiceDeprecated):
|
|
|
140
140
|
|
|
141
141
|
return self._elicitation_service
|
|
142
142
|
|
|
143
|
-
def get_debug_info(self) -> dict[str, Any]:
|
|
144
|
-
"""Retrieves the debug information from the current user message.
|
|
145
|
-
|
|
146
|
-
Returns:
|
|
147
|
-
dict[str, Any]: The debug information stored on the user message,
|
|
148
|
-
or an empty dict if retrieval fails or no debug info exists.
|
|
149
|
-
|
|
150
|
-
"""
|
|
151
|
-
try:
|
|
152
|
-
raw_msg = unique_sdk.Message.retrieve(
|
|
153
|
-
user_id=self._user_id,
|
|
154
|
-
company_id=self._company_id,
|
|
155
|
-
id=self._user_message_id,
|
|
156
|
-
chatId=self._chat_id,
|
|
157
|
-
)
|
|
158
|
-
return getattr(raw_msg, "debugInfo", {}) or {}
|
|
159
|
-
except Exception:
|
|
160
|
-
logging.getLogger(__name__).warning(
|
|
161
|
-
"Failed to retrieve debug info from user message", exc_info=True
|
|
162
|
-
)
|
|
163
|
-
return {}
|
|
164
|
-
|
|
165
|
-
async def get_debug_info_async(self) -> dict[str, Any]:
|
|
166
|
-
"""Retrieves the debug information from the current user message asynchronously.
|
|
167
|
-
|
|
168
|
-
Returns:
|
|
169
|
-
dict[str, Any]: The debug information stored on the user message,
|
|
170
|
-
or an empty dict if retrieval fails or no debug info exists.
|
|
171
|
-
|
|
172
|
-
"""
|
|
173
|
-
try:
|
|
174
|
-
raw_msg = await unique_sdk.Message.retrieve_async(
|
|
175
|
-
user_id=self._user_id,
|
|
176
|
-
company_id=self._company_id,
|
|
177
|
-
id=self._user_message_id,
|
|
178
|
-
chatId=self._chat_id,
|
|
179
|
-
)
|
|
180
|
-
return getattr(raw_msg, "debugInfo", {}) or {}
|
|
181
|
-
except Exception:
|
|
182
|
-
logging.getLogger(__name__).warning(
|
|
183
|
-
"Failed to retrieve debug info from user message", exc_info=True
|
|
184
|
-
)
|
|
185
|
-
return {}
|
|
186
|
-
|
|
187
143
|
async def update_debug_info_async(self, debug_info: dict):
|
|
188
144
|
"""Updates the debug information for the chat session.
|
|
189
145
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.56.0 → unique_toolkit-1.57}/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.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/config_checker/README.md
RENAMED
|
File without changes
|
{unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/config_checker/__init__.py
RENAMED
|
File without changes
|
{unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/config_checker/__main__.py
RENAMED
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/config_checker/differ.py
RENAMED
|
File without changes
|
{unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/config_checker/exporter.py
RENAMED
|
File without changes
|
{unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/config_checker/models.py
RENAMED
|
File without changes
|
{unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/config_checker/registry.py
RENAMED
|
File without changes
|
{unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/config_checker/validator.py
RENAMED
|
File without changes
|
{unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/default_language_model.py
RENAMED
|
File without changes
|
{unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/docx_generator/__init__.py
RENAMED
|
File without changes
|
{unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/docx_generator/config.py
RENAMED
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/docx_generator/schemas.py
RENAMED
|
File without changes
|
{unique_toolkit-1.56.0 → unique_toolkit-1.57}/unique_toolkit/_common/docx_generator/service.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
|