unique_toolkit 1.11.4__tar.gz → 1.12.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.
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/CHANGELOG.md +8 -2
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/PKG-INFO +9 -3
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/pyproject.toml +1 -1
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/evaluation/evaluation_manager.py +9 -5
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +9 -1
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/framework_utilities/openai/message_builder.py +85 -1
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/LICENSE +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/README.md +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/__init__.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/_base_service.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/_time_utils.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/default_language_model.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/endpoint_builder.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/endpoint_requestor.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/exception.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/feature_flags/schema.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/pydantic_helpers.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/string_utilities.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/token/image_token_counting.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/token/token_counting.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/utils/__init__.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/utils/files.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/utils/write_configuration.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/validate_required_values.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/validators.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/__init__.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/evaluation/config.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/evaluation/exception.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/evaluation/hallucination/prompts.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/history_manager/utils.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/__init__.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/postprocessing/_display.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/postprocessing/_utils.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/postprocessing/postprocessor.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_consolidate_references.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_postprocessor_reference_functions.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/config.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/factory.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/schemas.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/tool.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/utils/execution/__init__.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/utils/execution/execution.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/app/__init__.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/app/dev_util.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/app/init_logging.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/app/init_sdk.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/app/performance/async_tasks.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/app/performance/async_wrapper.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/app/schemas.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/app/unique_settings.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/app/verification.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/chat/__init__.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/chat/constants.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/chat/deprecated/service.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/chat/functions.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/chat/schemas.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/chat/service.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/chat/state.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/chat/utils.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/content/__init__.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/content/constants.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/content/functions.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/content/schemas.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/content/service.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/content/smart_rules.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/content/utils.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/embedding/__init__.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/embedding/constants.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/embedding/functions.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/embedding/schemas.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/embedding/service.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/embedding/utils.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/framework_utilities/__init__.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/framework_utilities/openai/client.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/framework_utilities/utils.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/knowledge_base.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/language_model/__init__.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/language_model/builder.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/language_model/constants.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/language_model/functions.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/language_model/infos.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/language_model/prompt.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/language_model/reference.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/language_model/schemas.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/language_model/service.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/language_model/utils.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/protocols/support.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/short_term_memory/__init__.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/short_term_memory/constants.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/short_term_memory/functions.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/short_term_memory/schemas.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/short_term_memory/service.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/smart_rules/__init__.py +0 -0
- {unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/smart_rules/compile.py +0 -0
@@ -5,11 +5,17 @@ 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.12.1] - 2025-10-07
|
9
|
+
- Fix bug where failed evaluations did not show an error to the user.
|
8
10
|
|
9
|
-
## [1.
|
11
|
+
## [1.12.0] - 2026-10-07
|
12
|
+
- Add the `OpenAIUserMessageBuilder` for complex user messages with images
|
13
|
+
- More examples with documents/images on the chat
|
14
|
+
|
15
|
+
## [1.11.4] - 2026-10-07
|
10
16
|
- Make newer `MessageExecution` and `MessageLog` method keyword only
|
11
17
|
|
12
|
-
## [1.11.3] - 2026-10-
|
18
|
+
## [1.11.3] - 2026-10-07
|
13
19
|
- Move smart rules to content
|
14
20
|
- Add to documentation
|
15
21
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: unique_toolkit
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.12.1
|
4
4
|
Summary:
|
5
5
|
License: Proprietary
|
6
6
|
Author: Cedric Klinkert
|
@@ -118,11 +118,17 @@ 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.12.1] - 2025-10-07
|
122
|
+
- Fix bug where failed evaluations did not show an error to the user.
|
121
123
|
|
122
|
-
## [1.
|
124
|
+
## [1.12.0] - 2026-10-07
|
125
|
+
- Add the `OpenAIUserMessageBuilder` for complex user messages with images
|
126
|
+
- More examples with documents/images on the chat
|
127
|
+
|
128
|
+
## [1.11.4] - 2026-10-07
|
123
129
|
- Make newer `MessageExecution` and `MessageLog` method keyword only
|
124
130
|
|
125
|
-
## [1.11.3] - 2026-10-
|
131
|
+
## [1.11.3] - 2026-10-07
|
126
132
|
- Move smart rules to content
|
127
133
|
- Add to documentation
|
128
134
|
|
@@ -123,6 +123,15 @@ class EvaluationManager:
|
|
123
123
|
self._evaluation_passed = False
|
124
124
|
evaluation_results_unpacked.append(unpacked_evaluation_result)
|
125
125
|
|
126
|
+
for evaluation_name, evaluation_result in zip(
|
127
|
+
selected_evaluation_names, evaluation_results_unpacked
|
128
|
+
):
|
129
|
+
evaluation_instance = self.get_evaluation_by_name(evaluation_name)
|
130
|
+
if evaluation_instance:
|
131
|
+
await self._show_message_assessment(
|
132
|
+
evaluation_instance, evaluation_result, assistant_message_id
|
133
|
+
)
|
134
|
+
|
126
135
|
return evaluation_results_unpacked
|
127
136
|
|
128
137
|
async def execute_evaluation_call(
|
@@ -143,11 +152,6 @@ class EvaluationManager:
|
|
143
152
|
evaluation_metric_result: EvaluationMetricResult = (
|
144
153
|
await evaluation_instance.run(loop_response)
|
145
154
|
)
|
146
|
-
# show results to the user
|
147
|
-
await self._show_message_assessment(
|
148
|
-
evaluation_instance, evaluation_metric_result, assistant_message_id
|
149
|
-
)
|
150
|
-
|
151
155
|
return evaluation_metric_result
|
152
156
|
|
153
157
|
return EvaluationMetricResult(
|
@@ -78,11 +78,19 @@ class HallucinationEvaluation(Evaluation):
|
|
78
78
|
if not evaluation_result.error
|
79
79
|
else ChatMessageAssessmentStatus.ERROR
|
80
80
|
)
|
81
|
+
explanation = evaluation_result.reason
|
82
|
+
|
83
|
+
if status == ChatMessageAssessmentStatus.ERROR:
|
84
|
+
title = "Hallucination Check Error"
|
85
|
+
label = ChatMessageAssessmentLabel.RED
|
86
|
+
explanation = (
|
87
|
+
"An unrecoverable error occurred while evaluating the response."
|
88
|
+
)
|
81
89
|
|
82
90
|
return EvaluationAssessmentMessage(
|
83
91
|
status=status,
|
84
92
|
title=title,
|
85
|
-
explanation=
|
93
|
+
explanation=explanation,
|
86
94
|
label=label,
|
87
95
|
type=self.get_assessment_type(),
|
88
96
|
)
|
@@ -1,5 +1,8 @@
|
|
1
|
+
import base64
|
2
|
+
import mimetypes
|
1
3
|
from collections.abc import Iterable
|
2
|
-
from
|
4
|
+
from pathlib import Path
|
5
|
+
from typing import Self, overload
|
3
6
|
|
4
7
|
from openai.types.chat.chat_completion_assistant_message_param import (
|
5
8
|
Audio,
|
@@ -7,6 +10,10 @@ from openai.types.chat.chat_completion_assistant_message_param import (
|
|
7
10
|
ContentArrayOfContentPart,
|
8
11
|
FunctionCall,
|
9
12
|
)
|
13
|
+
from openai.types.chat.chat_completion_content_part_image_param import (
|
14
|
+
ChatCompletionContentPartImageParam,
|
15
|
+
ImageURL,
|
16
|
+
)
|
10
17
|
from openai.types.chat.chat_completion_content_part_param import (
|
11
18
|
ChatCompletionContentPartParam,
|
12
19
|
)
|
@@ -32,6 +39,83 @@ from openai.types.chat.chat_completion_tool_message_param import (
|
|
32
39
|
from openai.types.chat.chat_completion_user_message_param import (
|
33
40
|
ChatCompletionUserMessageParam,
|
34
41
|
)
|
42
|
+
from typing_extensions import Literal
|
43
|
+
|
44
|
+
|
45
|
+
class OpenAIUserMessageBuilder:
|
46
|
+
def __init__(
|
47
|
+
self,
|
48
|
+
) -> None:
|
49
|
+
self._messages: list[ChatCompletionContentPartParam] = []
|
50
|
+
|
51
|
+
def append_text(self, content: str) -> Self:
|
52
|
+
part = ChatCompletionContentPartTextParam(
|
53
|
+
type="text",
|
54
|
+
text=content,
|
55
|
+
)
|
56
|
+
self._messages.append(part)
|
57
|
+
return self
|
58
|
+
|
59
|
+
@overload
|
60
|
+
def append_image(
|
61
|
+
self, *, url: str, detail: Literal["auto", "low", "high"] = "auto"
|
62
|
+
) -> Self: ...
|
63
|
+
|
64
|
+
@overload
|
65
|
+
def append_image(
|
66
|
+
self, *, path: Path, detail: Literal["auto", "low", "high"] = "auto"
|
67
|
+
) -> Self: ...
|
68
|
+
|
69
|
+
@overload
|
70
|
+
def append_image(
|
71
|
+
self,
|
72
|
+
*,
|
73
|
+
content: bytes,
|
74
|
+
mime_type: str,
|
75
|
+
detail: Literal["auto", "low", "high"] = "auto",
|
76
|
+
) -> Self: ...
|
77
|
+
|
78
|
+
def append_image(
|
79
|
+
self,
|
80
|
+
*,
|
81
|
+
url: str | None = None,
|
82
|
+
path: Path | None = None,
|
83
|
+
content: bytes | None = None,
|
84
|
+
mime_type: str | None = None,
|
85
|
+
detail: Literal["auto", "low", "high"] = "auto",
|
86
|
+
) -> Self:
|
87
|
+
if url is None and path is None and (content is None or mime_type is None):
|
88
|
+
raise ValueError("Either url or path must be provided")
|
89
|
+
|
90
|
+
if path is not None:
|
91
|
+
# Read image file and encode as base64 data URI
|
92
|
+
image_data = path.read_bytes()
|
93
|
+
base64_image = base64.b64encode(image_data).decode("utf-8")
|
94
|
+
mime_type = mimetypes.guess_type(str(path))[0] or "image/jpeg"
|
95
|
+
url = f"data:{mime_type};base64,{base64_image}"
|
96
|
+
|
97
|
+
if content is not None and mime_type is not None:
|
98
|
+
base64_image = base64.b64encode(content).decode("utf-8")
|
99
|
+
url = f"data:{mime_type};base64,{base64_image}"
|
100
|
+
|
101
|
+
image_url = ImageURL(url=url or "", detail=detail)
|
102
|
+
part = ChatCompletionContentPartImageParam(
|
103
|
+
type="image_url",
|
104
|
+
image_url=image_url,
|
105
|
+
)
|
106
|
+
self._messages.append(part)
|
107
|
+
return self
|
108
|
+
|
109
|
+
@property
|
110
|
+
def user_message(self) -> ChatCompletionUserMessageParam:
|
111
|
+
return ChatCompletionUserMessageParam(
|
112
|
+
content=self._messages,
|
113
|
+
role="user",
|
114
|
+
)
|
115
|
+
|
116
|
+
@property
|
117
|
+
def iterable_content(self) -> Iterable[ChatCompletionContentPartParam]:
|
118
|
+
return self._messages
|
35
119
|
|
36
120
|
|
37
121
|
class OpenAIMessageBuilder:
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/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.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/default_language_model.py
RENAMED
File without changes
|
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/endpoint_requestor.py
RENAMED
File without changes
|
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/feature_flags/schema.py
RENAMED
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/pydantic/rjsf_tags.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/token/image_token_counting.py
RENAMED
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/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.11.4 → unique_toolkit-1.12.1}/unique_toolkit/_common/utils/write_configuration.py
RENAMED
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/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
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/evaluation/exception.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/evaluation/output_parser.py
RENAMED
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/evaluation/schemas.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/history_manager/utils.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/__init__.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
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/tool/__init__.py
RENAMED
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/tool/_memory.py
RENAMED
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/tool/_schema.py
RENAMED
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/tool/config.py
RENAMED
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/a2a/tool/service.py
RENAMED
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/mcp/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/tool_manager.py
RENAMED
File without changes
|
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/agentic/tools/utils/__init__.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
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/app/performance/async_tasks.py
RENAMED
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/app/performance/async_wrapper.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
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/framework_utilities/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/framework_utilities/openai/client.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
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/short_term_memory/__init__.py
RENAMED
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/short_term_memory/constants.py
RENAMED
File without changes
|
{unique_toolkit-1.11.4 → unique_toolkit-1.12.1}/unique_toolkit/short_term_memory/functions.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|