unique_toolkit 1.16.5__tar.gz → 1.17.1__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.
Potentially problematic release.
This version of unique_toolkit might be problematic. Click here for more details.
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/CHANGELOG.md +5 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/PKG-INFO +6 -1
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/pyproject.toml +1 -1
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +11 -2
- unique_toolkit-1.17.1/unique_toolkit/agentic/tools/a2a/postprocessing/_display.py +174 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +9 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/postprocessing/postprocessor.py +7 -1
- unique_toolkit-1.17.1/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +1279 -0
- unique_toolkit-1.16.5/unique_toolkit/agentic/tools/a2a/postprocessing/_display.py +0 -122
- unique_toolkit-1.16.5/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -391
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/LICENSE +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/README.md +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/_base_service.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/_time_utils.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/default_language_model.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/endpoint_builder.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/endpoint_requestor.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/exception.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/feature_flags/schema.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/pydantic_helpers.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/string_utilities.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/token/image_token_counting.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/token/token_counting.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/utils/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/utils/files.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/utils/write_configuration.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/validate_required_values.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/_common/validators.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/config.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/exception.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/hallucination/prompts.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/history_manager/utils.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/postprocessing/_utils.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_consolidate_references.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_postprocessor_reference_functions.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/config.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/factory.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/schemas.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/tool.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/utils/execution/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/utils/execution/execution.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/app/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/app/dev_util.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/app/init_logging.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/app/init_sdk.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/app/performance/async_tasks.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/app/performance/async_wrapper.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/app/schemas.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/app/unique_settings.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/app/verification.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/chat/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/chat/constants.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/chat/deprecated/service.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/chat/functions.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/chat/responses_api.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/chat/schemas.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/chat/service.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/chat/state.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/chat/utils.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/content/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/content/constants.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/content/functions.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/content/schemas.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/content/service.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/content/smart_rules.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/content/utils.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/embedding/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/embedding/constants.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/embedding/functions.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/embedding/schemas.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/embedding/service.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/embedding/utils.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/framework_utilities/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/framework_utilities/openai/client.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/framework_utilities/utils.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/language_model/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/language_model/builder.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/language_model/constants.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/language_model/default_language_model.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/language_model/functions.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/language_model/infos.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/language_model/prompt.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/language_model/reference.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/language_model/schemas.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/language_model/service.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/language_model/utils.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/protocols/support.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/services/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/services/chat_service.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/services/knowledge_base.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/short_term_memory/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/short_term_memory/constants.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/short_term_memory/functions.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/short_term_memory/schemas.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/short_term_memory/service.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/smart_rules/__init__.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/smart_rules/compile.py +0 -0
- {unique_toolkit-1.16.5 → unique_toolkit-1.17.1}/unique_toolkit/test_utilities/events.py +0 -0
|
@@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.17.1] - 2025-10-23
|
|
9
|
+
- Fix hallucination check input with all cited reference chunks.
|
|
10
|
+
## [1.17.0] - 2025-10-22
|
|
11
|
+
- Add more options to display sub agent answers in the chat.
|
|
12
|
+
|
|
8
13
|
## [1.16.5] - 2025-10-16
|
|
9
14
|
- Adding litellm models `litellm:anthropic-claude-haiku-4-5`
|
|
10
15
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: unique_toolkit
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.17.1
|
|
4
4
|
Summary:
|
|
5
5
|
License: Proprietary
|
|
6
6
|
Author: Cedric Klinkert
|
|
@@ -118,6 +118,11 @@ All notable changes to this project will be documented in this file.
|
|
|
118
118
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
119
119
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
120
120
|
|
|
121
|
+
## [1.17.1] - 2025-10-23
|
|
122
|
+
- Fix hallucination check input with all cited reference chunks.
|
|
123
|
+
## [1.17.0] - 2025-10-22
|
|
124
|
+
- Add more options to display sub agent answers in the chat.
|
|
125
|
+
|
|
121
126
|
## [1.16.5] - 2025-10-16
|
|
122
127
|
- Adding litellm models `litellm:anthropic-claude-haiku-4-5`
|
|
123
128
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import regex as re
|
|
2
|
+
|
|
1
3
|
from unique_toolkit.agentic.evaluation.evaluation_manager import Evaluation
|
|
2
4
|
from unique_toolkit.agentic.evaluation.hallucination.constants import (
|
|
3
5
|
HallucinationConfig,
|
|
@@ -40,13 +42,20 @@ class HallucinationEvaluation(Evaluation):
|
|
|
40
42
|
async def run(
|
|
41
43
|
self, loop_response: LanguageModelStreamResponse
|
|
42
44
|
) -> EvaluationMetricResult: # type: ignore
|
|
43
|
-
|
|
45
|
+
all_chunks = self._reference_manager.get_chunks()
|
|
46
|
+
# source numbers from original text
|
|
47
|
+
ref_pattern = r"\[source(\d+)\]"
|
|
48
|
+
original_text = loop_response.message.original_text
|
|
49
|
+
source_number_matches = re.findall(ref_pattern, original_text)
|
|
50
|
+
source_numbers = {int(num) for num in source_number_matches}
|
|
51
|
+
|
|
52
|
+
referenced_chunks = [all_chunks[idx] for idx in source_numbers]
|
|
44
53
|
|
|
45
54
|
evaluation_result: EvaluationMetricResult = await check_hallucination(
|
|
46
55
|
company_id=self._company_id,
|
|
47
56
|
input=EvaluationMetricInput(
|
|
48
57
|
input_text=self._user_message,
|
|
49
|
-
context_texts=[context.text for context in
|
|
58
|
+
context_texts=[context.text for context in referenced_chunks],
|
|
50
59
|
history_messages=[], # TODO include loop_history messages
|
|
51
60
|
output_text=loop_response.message.text,
|
|
52
61
|
),
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import re
|
|
2
|
+
from typing import Literal
|
|
3
|
+
|
|
4
|
+
from unique_toolkit.agentic.tools.a2a.postprocessing.config import (
|
|
5
|
+
SubAgentResponseDisplayMode,
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def _wrap_text(text: str, start_text: str, end_text: str) -> str:
|
|
10
|
+
text = text.strip()
|
|
11
|
+
start_text = start_text.strip()
|
|
12
|
+
end_text = end_text.strip()
|
|
13
|
+
|
|
14
|
+
if start_text != "":
|
|
15
|
+
start_text = f"{start_text}\n"
|
|
16
|
+
|
|
17
|
+
if end_text != "":
|
|
18
|
+
end_text = f"\n{end_text}"
|
|
19
|
+
|
|
20
|
+
return f"{start_text}{text}{end_text}"
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _join_text_blocks(*blocks: str, sep: str = "\n") -> str:
|
|
24
|
+
return sep.join(block.strip() for block in blocks)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _wrap_with_details_tag(
|
|
28
|
+
text, mode: Literal["open", "closed"], summary_name: str | None = None
|
|
29
|
+
) -> str:
|
|
30
|
+
if summary_name is not None:
|
|
31
|
+
summary_tag = _wrap_text(summary_name, "<summary>", "</summary>")
|
|
32
|
+
text = _join_text_blocks(summary_tag, text)
|
|
33
|
+
|
|
34
|
+
if mode == "open":
|
|
35
|
+
text = _wrap_text(text, "<details open>", "</details>")
|
|
36
|
+
else:
|
|
37
|
+
text = _wrap_text(text, "<details>", "</details>")
|
|
38
|
+
|
|
39
|
+
return text
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
_BLOCK_BORDER_STYLE = (
|
|
43
|
+
"overflow-y: auto; border: 1px solid #ccc; padding: 8px; margin-top: 8px;"
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _wrap_with_block_border(text: str) -> str:
|
|
48
|
+
return _wrap_text(text, f"<div style='{_BLOCK_BORDER_STYLE}'>", "</div>")
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
_QUOTE_BORDER_STYLE = (
|
|
52
|
+
"margin-left: 20px; border-left: 2px solid #ccc; padding-left: 10px;"
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def _wrap_with_quote_border(text: str) -> str:
|
|
57
|
+
return _wrap_text(text, f"<div style='{_QUOTE_BORDER_STYLE}'>", "</div>")
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def _wrap_strong(text: str) -> str:
|
|
61
|
+
return _wrap_text(text, "<strong>", "</strong>")
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def _wrap_hidden_div(text: str) -> str:
|
|
65
|
+
return _wrap_text(text, '<div style="display: none;">', "</div>")
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def _add_line_break(text: str, before: bool = True, after: bool = True) -> str:
|
|
69
|
+
start_tag = ""
|
|
70
|
+
if before:
|
|
71
|
+
start_tag = "<br>"
|
|
72
|
+
|
|
73
|
+
end_tag = ""
|
|
74
|
+
if after:
|
|
75
|
+
end_tag = "<br>"
|
|
76
|
+
|
|
77
|
+
return _wrap_text(text, start_tag, end_tag)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def _get_display_template(
|
|
81
|
+
mode: SubAgentResponseDisplayMode,
|
|
82
|
+
add_quote_border: bool,
|
|
83
|
+
add_block_border: bool,
|
|
84
|
+
answer_placeholder: str = "answer",
|
|
85
|
+
assistant_id_placeholder: str = "assistant_id",
|
|
86
|
+
display_name_placeholder: str = "display_name",
|
|
87
|
+
) -> str:
|
|
88
|
+
if mode == SubAgentResponseDisplayMode.HIDDEN:
|
|
89
|
+
return ""
|
|
90
|
+
|
|
91
|
+
assistant_id_placeholder = _wrap_hidden_div("{%s}" % assistant_id_placeholder)
|
|
92
|
+
display_name_placeholder = _wrap_strong("{%s}" % display_name_placeholder)
|
|
93
|
+
template = _join_text_blocks(
|
|
94
|
+
assistant_id_placeholder, "{%s}" % answer_placeholder, sep="\n\n"
|
|
95
|
+
) # Double line break is needed for markdown formatting
|
|
96
|
+
|
|
97
|
+
if add_quote_border:
|
|
98
|
+
template = _wrap_with_quote_border(template)
|
|
99
|
+
|
|
100
|
+
match mode:
|
|
101
|
+
case SubAgentResponseDisplayMode.DETAILS_OPEN:
|
|
102
|
+
template = _wrap_with_details_tag(
|
|
103
|
+
template, "open", display_name_placeholder
|
|
104
|
+
)
|
|
105
|
+
case SubAgentResponseDisplayMode.DETAILS_CLOSED:
|
|
106
|
+
template = _wrap_with_details_tag(
|
|
107
|
+
template, "closed", display_name_placeholder
|
|
108
|
+
)
|
|
109
|
+
case SubAgentResponseDisplayMode.PLAIN:
|
|
110
|
+
display_name_placeholder = _add_line_break(
|
|
111
|
+
display_name_placeholder, before=False, after=True
|
|
112
|
+
)
|
|
113
|
+
template = _join_text_blocks(display_name_placeholder, template)
|
|
114
|
+
# Add a hidden block border to seperate sub agent answers from the rest of the text.
|
|
115
|
+
hidden_block_border = _wrap_hidden_div("sub_agent_answer_block")
|
|
116
|
+
template = _join_text_blocks(template, hidden_block_border)
|
|
117
|
+
|
|
118
|
+
if add_block_border:
|
|
119
|
+
template = _wrap_with_block_border(template)
|
|
120
|
+
|
|
121
|
+
return template
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
def _get_display_removal_re(
|
|
125
|
+
assistant_id: str,
|
|
126
|
+
mode: SubAgentResponseDisplayMode,
|
|
127
|
+
add_quote_border: bool,
|
|
128
|
+
add_block_border: bool,
|
|
129
|
+
) -> re.Pattern[str]:
|
|
130
|
+
template = _get_display_template(
|
|
131
|
+
mode=mode,
|
|
132
|
+
add_quote_border=add_quote_border,
|
|
133
|
+
add_block_border=add_block_border,
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
pattern = template.format(
|
|
137
|
+
assistant_id=re.escape(assistant_id), answer=r"(.*?)", display_name=r"(.*?)"
|
|
138
|
+
)
|
|
139
|
+
|
|
140
|
+
return re.compile(pattern, flags=re.DOTALL)
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def _build_sub_agent_answer_display(
|
|
144
|
+
display_name: str,
|
|
145
|
+
display_mode: SubAgentResponseDisplayMode,
|
|
146
|
+
add_quote_border: bool,
|
|
147
|
+
add_block_border: bool,
|
|
148
|
+
answer: str,
|
|
149
|
+
assistant_id: str,
|
|
150
|
+
) -> str:
|
|
151
|
+
template = _get_display_template(
|
|
152
|
+
mode=display_mode,
|
|
153
|
+
add_quote_border=add_quote_border,
|
|
154
|
+
add_block_border=add_block_border,
|
|
155
|
+
)
|
|
156
|
+
return template.format(
|
|
157
|
+
display_name=display_name, answer=answer, assistant_id=assistant_id
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
def _remove_sub_agent_answer_from_text(
|
|
162
|
+
display_mode: SubAgentResponseDisplayMode,
|
|
163
|
+
add_quote_border: bool,
|
|
164
|
+
add_block_border: bool,
|
|
165
|
+
text: str,
|
|
166
|
+
assistant_id: str,
|
|
167
|
+
) -> str:
|
|
168
|
+
pattern = _get_display_removal_re(
|
|
169
|
+
assistant_id=assistant_id,
|
|
170
|
+
mode=display_mode,
|
|
171
|
+
add_quote_border=add_quote_border,
|
|
172
|
+
add_block_border=add_block_border,
|
|
173
|
+
)
|
|
174
|
+
return re.sub(pattern, "", text)
|
|
@@ -9,6 +9,7 @@ class SubAgentResponseDisplayMode(StrEnum):
|
|
|
9
9
|
HIDDEN = "hidden"
|
|
10
10
|
DETAILS_OPEN = "details_open"
|
|
11
11
|
DETAILS_CLOSED = "details_closed"
|
|
12
|
+
PLAIN = "plain"
|
|
12
13
|
|
|
13
14
|
|
|
14
15
|
class SubAgentDisplayConfig(BaseModel):
|
|
@@ -22,3 +23,11 @@ class SubAgentDisplayConfig(BaseModel):
|
|
|
22
23
|
default=True,
|
|
23
24
|
description="If set, sub agent responses will be removed from the history on subsequent calls to the assistant.",
|
|
24
25
|
)
|
|
26
|
+
add_quote_border: bool = Field(
|
|
27
|
+
default=True,
|
|
28
|
+
description="If set, a quote border is added to the left of the sub agent response.",
|
|
29
|
+
)
|
|
30
|
+
add_block_border: bool = Field(
|
|
31
|
+
default=False,
|
|
32
|
+
description="If set, a block border is added around the sub agent response.",
|
|
33
|
+
)
|
|
@@ -107,6 +107,8 @@ class SubAgentResponsesPostprocessor(Postprocessor):
|
|
|
107
107
|
assistant_id=assistant_id,
|
|
108
108
|
display_mode=display_mode,
|
|
109
109
|
answer=message["text"],
|
|
110
|
+
add_quote_border=tool_info["display_config"].add_quote_border,
|
|
111
|
+
add_block_border=tool_info["display_config"].add_block_border,
|
|
110
112
|
)
|
|
111
113
|
)
|
|
112
114
|
|
|
@@ -122,7 +124,9 @@ class SubAgentResponsesPostprocessor(Postprocessor):
|
|
|
122
124
|
for ref in message["references"]
|
|
123
125
|
)
|
|
124
126
|
|
|
125
|
-
loop_response.message.text =
|
|
127
|
+
loop_response.message.text = (
|
|
128
|
+
"\n\n".join(answers) + "<br>\n\n" + loop_response.message.text.strip()
|
|
129
|
+
)
|
|
126
130
|
|
|
127
131
|
return True
|
|
128
132
|
|
|
@@ -135,6 +139,8 @@ class SubAgentResponsesPostprocessor(Postprocessor):
|
|
|
135
139
|
display_mode=display_config.mode,
|
|
136
140
|
text=text,
|
|
137
141
|
assistant_id=assistant_id,
|
|
142
|
+
add_quote_border=display_config.add_quote_border,
|
|
143
|
+
add_block_border=display_config.add_block_border,
|
|
138
144
|
)
|
|
139
145
|
return text
|
|
140
146
|
|