unique_toolkit 1.11.0__tar.gz → 1.11.2__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.
Files changed (155) hide show
  1. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/CHANGELOG.md +6 -0
  2. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/PKG-INFO +7 -1
  3. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/pyproject.toml +1 -1
  4. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +1 -1
  5. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/reference_manager/reference_manager.py +1 -1
  6. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/content/functions.py +20 -7
  7. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/content/schemas.py +16 -3
  8. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/knowledge_base.py +81 -2
  9. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/LICENSE +0 -0
  10. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/README.md +0 -0
  11. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/__init__.py +0 -0
  12. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/_base_service.py +0 -0
  13. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/_time_utils.py +0 -0
  14. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  15. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  16. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  17. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  18. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  19. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  20. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  21. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/default_language_model.py +0 -0
  22. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/endpoint_builder.py +0 -0
  23. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  24. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/exception.py +0 -0
  25. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  26. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  27. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  28. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/string_utilities.py +0 -0
  29. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  30. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/token/token_counting.py +0 -0
  31. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/utils/__init__.py +0 -0
  32. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/utils/files.py +0 -0
  33. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  34. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  35. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  36. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/validate_required_values.py +0 -0
  37. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/_common/validators.py +0 -0
  38. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/__init__.py +0 -0
  39. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  40. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/evaluation/config.py +0 -0
  41. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/evaluation/context_relevancy/prompts.py +0 -0
  42. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  43. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  44. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  45. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  46. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  47. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/evaluation/hallucination/prompts.py +0 -0
  48. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  49. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  50. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  51. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  52. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  53. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  54. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  55. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  56. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  57. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  58. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  59. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  60. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  61. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/__init__.py +0 -0
  62. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  63. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  64. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  65. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  66. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  67. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  68. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  69. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  70. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  71. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/a2a/postprocessing/_display.py +0 -0
  72. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/a2a/postprocessing/_utils.py +0 -0
  73. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  74. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/a2a/postprocessing/postprocessor.py +0 -0
  75. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_consolidate_references.py +0 -0
  76. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  77. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_postprocessor_reference_functions.py +0 -0
  78. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  79. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  80. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  81. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  82. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  83. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  84. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  85. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/config.py +0 -0
  86. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/factory.py +0 -0
  87. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  88. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  89. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  90. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  91. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/schemas.py +0 -0
  92. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  93. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  94. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/tool.py +0 -0
  95. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  96. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  97. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  98. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/utils/execution/__init__.py +0 -0
  99. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/utils/execution/execution.py +0 -0
  100. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  101. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  102. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  103. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  104. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/app/__init__.py +0 -0
  105. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/app/dev_util.py +0 -0
  106. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/app/init_logging.py +0 -0
  107. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/app/init_sdk.py +0 -0
  108. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/app/performance/async_tasks.py +0 -0
  109. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  110. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/app/schemas.py +0 -0
  111. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/app/unique_settings.py +0 -0
  112. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/app/verification.py +0 -0
  113. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/chat/__init__.py +0 -0
  114. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/chat/constants.py +0 -0
  115. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/chat/deprecated/service.py +0 -0
  116. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/chat/functions.py +0 -0
  117. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/chat/schemas.py +0 -0
  118. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/chat/service.py +0 -0
  119. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/chat/state.py +0 -0
  120. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/chat/utils.py +0 -0
  121. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/content/__init__.py +0 -0
  122. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/content/constants.py +0 -0
  123. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/content/service.py +0 -0
  124. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/content/utils.py +0 -0
  125. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/embedding/__init__.py +0 -0
  126. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/embedding/constants.py +0 -0
  127. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/embedding/functions.py +0 -0
  128. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/embedding/schemas.py +0 -0
  129. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/embedding/service.py +0 -0
  130. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/embedding/utils.py +0 -0
  131. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/framework_utilities/__init__.py +0 -0
  132. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  133. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  134. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  135. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  136. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  137. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/framework_utilities/utils.py +0 -0
  138. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/language_model/__init__.py +0 -0
  139. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/language_model/builder.py +0 -0
  140. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/language_model/constants.py +0 -0
  141. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/language_model/functions.py +0 -0
  142. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/language_model/infos.py +0 -0
  143. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/language_model/prompt.py +0 -0
  144. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/language_model/reference.py +0 -0
  145. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/language_model/schemas.py +0 -0
  146. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/language_model/service.py +0 -0
  147. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/language_model/utils.py +0 -0
  148. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/protocols/support.py +0 -0
  149. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/short_term_memory/__init__.py +0 -0
  150. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/short_term_memory/constants.py +0 -0
  151. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/short_term_memory/functions.py +0 -0
  152. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/short_term_memory/schemas.py +0 -0
  153. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/short_term_memory/service.py +0 -0
  154. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/smart_rules/__init__.py +0 -0
  155. {unique_toolkit-1.11.0 → unique_toolkit-1.11.2}/unique_toolkit/smart_rules/compile.py +0 -0
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.11.2] - 2025-10-07
9
+ - Fix for empty metadata filter at info retrieval
10
+
11
+ ## [1.11.1] - 2025-10-07
12
+ - Fix bug where hallucination check was taking all of the chunks as input instead of only the referenced ones.
13
+
8
14
  ## [1.11.0] - 2025-10-07
9
15
  - Add sub-agent response referencing.
10
16
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_toolkit
3
- Version: 1.11.0
3
+ Version: 1.11.2
4
4
  Summary:
5
5
  License: Proprietary
6
6
  Author: Cedric Klinkert
@@ -118,6 +118,12 @@ 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.11.2] - 2025-10-07
122
+ - Fix for empty metadata filter at info retrieval
123
+
124
+ ## [1.11.1] - 2025-10-07
125
+ - Fix bug where hallucination check was taking all of the chunks as input instead of only the referenced ones.
126
+
121
127
  ## [1.11.0] - 2025-10-07
122
128
  - Add sub-agent response referencing.
123
129
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "unique_toolkit"
3
- version = "1.11.0"
3
+ version = "1.11.2"
4
4
  description = ""
5
5
  authors = [
6
6
  "Cedric Klinkert <cedric.klinkert@unique.ch>",
@@ -40,7 +40,7 @@ class HallucinationEvaluation(Evaluation):
40
40
  async def run(
41
41
  self, loop_response: LanguageModelStreamResponse
42
42
  ) -> EvaluationMetricResult: # type: ignore
43
- chunks = self._reference_manager.get_chunks()
43
+ chunks = self._reference_manager.get_latest_referenced_chunks()
44
44
 
45
45
  evaluation_result: EvaluationMetricResult = await check_hallucination(
46
46
  company_id=self._company_id,
@@ -98,6 +98,6 @@ class ReferenceManager:
98
98
  referenced_chunks: list[ContentChunk] = []
99
99
  for ref in references:
100
100
  for chunk in self._chunks:
101
- if ref.source_id == f"{chunk.id}-{chunk.chunk_id}":
101
+ if ref.source_id == f"{chunk.id}_{chunk.chunk_id}":
102
102
  referenced_chunks.append(chunk)
103
103
  return referenced_chunks
@@ -16,7 +16,8 @@ from unique_toolkit.content.schemas import (
16
16
  ContentInfo,
17
17
  ContentRerankerConfig,
18
18
  ContentSearchType,
19
- PaginatedContentInfo,
19
+ FolderInfo,
20
+ PaginatedContentInfos,
20
21
  )
21
22
  from unique_toolkit.content.utils import map_contents, map_to_content_chunks
22
23
 
@@ -590,21 +591,33 @@ def get_content_info(
590
591
  file_path: str | None = None,
591
592
  ):
592
593
  """Gets the info of a content."""
594
+
593
595
  get_info_params = unique_sdk.Content.ContentInfoParams(
594
- metadataFilter=metadata_filter,
595
- skip=skip,
596
- take=take,
597
- filePath=file_path,
596
+ metadataFilter=metadata_filter or None, # Dict cannot be empty
598
597
  )
598
+ if skip:
599
+ get_info_params["skip"] = skip
600
+ if take:
601
+ get_info_params["take"] = take
602
+ if file_path:
603
+ get_info_params["filePath"] = file_path
599
604
 
600
- content_info = unique_sdk.Content.get_info(
605
+ content_info = unique_sdk.Content.get_infos(
601
606
  user_id=user_id, company_id=company_id, **get_info_params
602
607
  )
603
- return PaginatedContentInfo.model_validate(
608
+ return PaginatedContentInfos.model_validate(
604
609
  content_info, by_alias=True, by_name=True
605
610
  )
606
611
 
607
612
 
613
+ def get_folder_info(user_id: str, company_id: str, scope_id: str) -> FolderInfo:
614
+ info = unique_sdk.Folder.get_info(
615
+ user_id=user_id, company_id=company_id, scopeId=scope_id
616
+ )
617
+
618
+ return FolderInfo.model_validate(info, by_alias=True, by_name=True)
619
+
620
+
608
621
  def update_content(
609
622
  user_id: str,
610
623
  company_id: str,
@@ -154,12 +154,13 @@ class ContentRerankerConfig(BaseModel):
154
154
  class ContentInfo(BaseModel):
155
155
  model_config = model_config
156
156
  id: str
157
+ object: str
157
158
  key: str
158
159
  url: str | None = None
159
160
  title: str | None = None
160
161
  metadata: dict[str, Any] | None = None
161
- mime_type: str
162
162
  byte_size: int
163
+ mime_type: str
163
164
  owner_id: str
164
165
  created_at: datetime
165
166
  updated_at: datetime
@@ -168,7 +169,19 @@ class ContentInfo(BaseModel):
168
169
  expired_at: datetime | None = None
169
170
 
170
171
 
171
- class PaginatedContentInfo(BaseModel):
172
+ class PaginatedContentInfos(BaseModel):
172
173
  model_config = model_config
173
- content_info: list[ContentInfo]
174
+ object: str
175
+ content_infos: list[ContentInfo]
174
176
  total_count: int
177
+
178
+
179
+ class FolderInfo(BaseModel):
180
+ model_config = model_config
181
+ id: str
182
+ name: str
183
+ ingestion_config: dict[str, Any]
184
+ createdAt: str | None
185
+ updatedAt: str | None
186
+ parentId: str | None
187
+ externalId: str | None
@@ -14,6 +14,7 @@ from unique_toolkit.content.functions import (
14
14
  download_content_to_bytes,
15
15
  download_content_to_file_by_id,
16
16
  get_content_info,
17
+ get_folder_info,
17
18
  search_content_chunks,
18
19
  search_content_chunks_async,
19
20
  search_contents,
@@ -28,7 +29,8 @@ from unique_toolkit.content.schemas import (
28
29
  ContentInfo,
29
30
  ContentRerankerConfig,
30
31
  ContentSearchType,
31
- PaginatedContentInfo,
32
+ FolderInfo,
33
+ PaginatedContentInfos,
32
34
  )
33
35
 
34
36
  _LOGGER = logging.getLogger(f"toolkit.knowledge_base.{__name__}")
@@ -483,7 +485,7 @@ class KnowledgeBaseService:
483
485
  skip: int | None = None,
484
486
  take: int | None = None,
485
487
  file_path: str | None = None,
486
- ) -> PaginatedContentInfo:
488
+ ) -> PaginatedContentInfos:
487
489
  return get_content_info(
488
490
  user_id=self._user_id,
489
491
  company_id=self._company_id,
@@ -493,6 +495,17 @@ class KnowledgeBaseService:
493
495
  file_path=file_path,
494
496
  )
495
497
 
498
+ def get_folder_info(
499
+ self,
500
+ *,
501
+ scope_id: str,
502
+ ) -> FolderInfo:
503
+ return get_folder_info(
504
+ user_id=self._user_id,
505
+ company_id=self._company_id,
506
+ scope_id=scope_id,
507
+ )
508
+
496
509
  def replace_content_metadata(
497
510
  self,
498
511
  *,
@@ -506,6 +519,72 @@ class KnowledgeBaseService:
506
519
  metadata=metadata,
507
520
  )
508
521
 
522
+ def _resolve_visible_file_tree(self, content_infos: list[ContentInfo]) -> list[str]:
523
+ # collect all scope ids
524
+ folder_id_paths: set[str] = set()
525
+ known_folder_paths: set[str] = set()
526
+ for content_info in content_infos:
527
+ if (
528
+ content_info.metadata
529
+ and content_info.metadata.get(r"{FullPath}") is not None
530
+ ):
531
+ known_folder_paths.add(str(content_info.metadata.get(r"{FullPath}")))
532
+ continue
533
+
534
+ if (
535
+ content_info.metadata
536
+ and content_info.metadata.get("folderIdPath") is not None
537
+ ):
538
+ folder_id_paths.add(str(content_info.metadata.get("folderIdPath")))
539
+
540
+ scope_ids: set[str] = set()
541
+ for fp in folder_id_paths:
542
+ scope_ids_list = set(fp.replace("uniquepathid://", "").split("/"))
543
+ scope_ids.update(scope_ids_list)
544
+
545
+ scope_id_to_folder_name: dict[str, str] = {}
546
+ for scope_id in scope_ids:
547
+ folder_info = self.get_folder_info(
548
+ scope_id=scope_id,
549
+ )
550
+ scope_id_to_folder_name[scope_id] = folder_info.name
551
+
552
+ folder_paths: set[str] = set()
553
+ for folder_id_path in folder_id_paths:
554
+ scope_ids_list = folder_id_path.replace("uniquepathid://", "").split("/")
555
+
556
+ if all(scope_id in scope_id_to_folder_name for scope_id in scope_ids_list):
557
+ folder_path = [
558
+ scope_id_to_folder_name[scope_id] for scope_id in scope_ids_list
559
+ ]
560
+ folder_paths.add("/".join(folder_path))
561
+
562
+ return [
563
+ p if p.startswith("/") else f"/{p}"
564
+ for p in folder_paths.union(known_folder_paths)
565
+ ]
566
+
567
+ def resolve_visible_file_tree(
568
+ self, *, metadata_filter: dict[str, Any] | None = None
569
+ ) -> list[str]:
570
+ """
571
+ Resolves the visible file tree for the knowledge base for the current user.
572
+
573
+ Args:
574
+ metadata_filter (dict[str, Any] | None): The metadata filter to use. Defaults to None.
575
+
576
+ Returns:
577
+ list[str]: The visible file tree.
578
+
579
+
580
+
581
+ """
582
+ info = self.get_paginated_content_infos(
583
+ metadata_filter=metadata_filter,
584
+ )
585
+
586
+ return self._resolve_visible_file_tree(content_infos=info.content_infos)
587
+
509
588
 
510
589
  if __name__ == "__main__":
511
590
  kb_service = KnowledgeBaseService.from_settings()
File without changes