unique_toolkit 1.37.0__tar.gz → 1.38.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.
Files changed (219) hide show
  1. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/CHANGELOG.md +6 -0
  2. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/PKG-INFO +8 -2
  3. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/pyproject.toml +2 -2
  4. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/validators.py +1 -10
  5. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/language_model/infos.py +84 -9
  6. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/LICENSE +0 -0
  7. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/README.md +0 -0
  8. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/__init__.py +0 -0
  9. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/_base_service.py +0 -0
  10. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/_time_utils.py +0 -0
  11. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  12. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  13. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  14. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  15. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  16. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  17. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  18. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/default_language_model.py +0 -0
  19. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  20. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/docx_generator/config.py +0 -0
  21. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  22. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/docx_generator/service.py +0 -0
  23. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  24. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/endpoint_builder.py +0 -0
  25. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  26. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/exception.py +0 -0
  27. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  28. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  29. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  30. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  31. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  32. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/referencing.py +0 -0
  33. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/string_utilities.py +0 -0
  34. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  35. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  36. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  37. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/token/token_counting.py +0 -0
  38. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/utils/__init__.py +0 -0
  39. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/utils/files.py +0 -0
  40. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/utils/image/encode.py +0 -0
  41. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  42. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  43. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  44. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  45. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  46. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  47. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  48. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/_common/validate_required_values.py +0 -0
  49. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/__init__.py +0 -0
  50. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  51. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  52. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/evaluation/config.py +0 -0
  53. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts.py +0 -0
  54. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  55. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  56. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  57. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  58. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  59. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  60. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/evaluation/hallucination/prompts.py +0 -0
  61. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  62. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  63. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  64. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  65. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  66. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  67. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  68. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  69. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  70. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  71. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  72. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  73. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  74. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  75. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  76. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  77. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  78. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/loop_runner/middleware/qwen_forced_tool_call/__init__.py +0 -0
  79. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/loop_runner/middleware/qwen_forced_tool_call/helpers.py +0 -0
  80. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/loop_runner/middleware/qwen_forced_tool_call/qwen_forced_tool_call.py +0 -0
  81. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  82. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  83. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  84. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  85. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  86. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  87. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  88. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  89. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  90. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  91. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  92. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  93. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/__init__.py +0 -0
  94. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  95. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  96. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  97. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  98. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  99. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  100. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  101. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  102. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  103. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  104. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  105. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  106. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  107. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  108. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  109. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  110. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  111. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  112. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  113. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  114. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  115. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  116. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  117. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  118. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  119. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  120. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  121. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/config.py +0 -0
  122. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/factory.py +0 -0
  123. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  124. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  125. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  126. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  127. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  128. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  129. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  130. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  131. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
  132. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  133. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/schemas.py +0 -0
  134. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  135. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  136. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/tool.py +0 -0
  137. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  138. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  139. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  140. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/utils/execution/__init__.py +0 -0
  141. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/utils/execution/execution.py +0 -0
  142. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  143. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  144. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  145. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  146. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/app/__init__.py +0 -0
  147. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/app/dev_util.py +0 -0
  148. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/app/fast_api_factory.py +0 -0
  149. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/app/init_logging.py +0 -0
  150. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/app/init_sdk.py +0 -0
  151. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/app/performance/async_tasks.py +0 -0
  152. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  153. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/app/schemas.py +0 -0
  154. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/app/unique_settings.py +0 -0
  155. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/app/verification.py +0 -0
  156. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/app/webhook.py +0 -0
  157. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/chat/__init__.py +0 -0
  158. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/chat/constants.py +0 -0
  159. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/chat/deprecated/service.py +0 -0
  160. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/chat/functions.py +0 -0
  161. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/chat/rendering.py +0 -0
  162. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/chat/responses_api.py +0 -0
  163. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/chat/schemas.py +0 -0
  164. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/chat/service.py +0 -0
  165. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/chat/state.py +0 -0
  166. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/chat/utils.py +0 -0
  167. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/content/__init__.py +0 -0
  168. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/content/constants.py +0 -0
  169. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/content/functions.py +0 -0
  170. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/content/schemas.py +0 -0
  171. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/content/service.py +0 -0
  172. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/content/smart_rules.py +0 -0
  173. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/content/utils.py +0 -0
  174. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/data_extraction/README.md +0 -0
  175. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/data_extraction/__init__.py +0 -0
  176. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  177. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  178. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/data_extraction/base.py +0 -0
  179. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  180. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/data_extraction/basic/config.py +0 -0
  181. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  182. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/data_extraction/basic/service.py +0 -0
  183. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/embedding/__init__.py +0 -0
  184. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/embedding/constants.py +0 -0
  185. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/embedding/functions.py +0 -0
  186. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/embedding/schemas.py +0 -0
  187. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/embedding/service.py +0 -0
  188. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/embedding/utils.py +0 -0
  189. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/framework_utilities/__init__.py +0 -0
  190. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  191. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  192. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  193. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  194. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  195. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  196. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/framework_utilities/utils.py +0 -0
  197. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/language_model/__init__.py +0 -0
  198. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  199. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/language_model/builder.py +0 -0
  200. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/language_model/constants.py +0 -0
  201. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/language_model/default_language_model.py +0 -0
  202. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/language_model/functions.py +0 -0
  203. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/language_model/prompt.py +0 -0
  204. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/language_model/reference.py +0 -0
  205. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/language_model/schemas.py +0 -0
  206. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/language_model/service.py +0 -0
  207. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/language_model/utils.py +0 -0
  208. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/protocols/support.py +0 -0
  209. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/services/__init__.py +0 -0
  210. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/services/chat_service.py +0 -0
  211. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/services/knowledge_base.py +0 -0
  212. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/short_term_memory/__init__.py +0 -0
  213. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/short_term_memory/constants.py +0 -0
  214. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/short_term_memory/functions.py +0 -0
  215. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/short_term_memory/schemas.py +0 -0
  216. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/short_term_memory/service.py +0 -0
  217. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/smart_rules/__init__.py +0 -0
  218. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/smart_rules/compile.py +0 -0
  219. {unique_toolkit-1.37.0 → unique_toolkit-1.38.1}/unique_toolkit/test_utilities/events.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.38.1] - 2025-12-16
9
+ - chore(deps): Bump urllib3 from 2.5.0 to 2.6.2 and unique_sdk from 0.10.48 to 0.10.58 to ensure urllib3 transitively
10
+
11
+ ## [1.38.0] - 2025-12-15
12
+ - Including capability to load LanguageModelInfos in env variable
13
+
8
14
  ## [1.37.0] - 2025-12-15
9
15
  - Adding a prompt appendix to enforce forced tool calls when using Qwen models
10
16
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_toolkit
3
- Version: 1.37.0
3
+ Version: 1.38.1
4
4
  Summary:
5
5
  License: Proprietary
6
6
  Author: Cedric Klinkert
@@ -27,7 +27,7 @@ Requires-Dist: regex (>=2024.5.15,<2025.0.0)
27
27
  Requires-Dist: sseclient (>=0.0.27,<0.0.28)
28
28
  Requires-Dist: tiktoken (>=0.12.0,<0.13.0)
29
29
  Requires-Dist: typing-extensions (>=4.9.0,<5.0.0)
30
- Requires-Dist: unique-sdk (>=0.10.48,<0.11.0)
30
+ Requires-Dist: unique-sdk (>=0.10.58,<0.11.0)
31
31
  Description-Content-Type: text/markdown
32
32
 
33
33
  # Unique Toolkit
@@ -121,6 +121,12 @@ All notable changes to this project will be documented in this file.
121
121
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
122
122
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
123
123
 
124
+ ## [1.38.1] - 2025-12-16
125
+ - chore(deps): Bump urllib3 from 2.5.0 to 2.6.2 and unique_sdk from 0.10.48 to 0.10.58 to ensure urllib3 transitively
126
+
127
+ ## [1.38.0] - 2025-12-15
128
+ - Including capability to load LanguageModelInfos in env variable
129
+
124
130
  ## [1.37.0] - 2025-12-15
125
131
  - Adding a prompt appendix to enforce forced tool calls when using Qwen models
126
132
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "unique_toolkit"
3
- version = "1.37.0"
3
+ version = "1.38.1"
4
4
  description = ""
5
5
  authors = [
6
6
  "Cedric Klinkert <cedric.klinkert@unique.ch>",
@@ -29,7 +29,7 @@ sseclient = "^0.0.27"
29
29
  openai = "^1.99.9"
30
30
  platformdirs = "^4.0.0"
31
31
  pillow = "^10.4.0"
32
- unique-sdk = "^0.10.48"
32
+ unique-sdk = "^0.10.58"
33
33
  jambo = "^0.1.2"
34
34
  jinja2 = "^3.1.6"
35
35
  mkdocs-multirepo-plugin = "^0.8.3"
@@ -61,17 +61,8 @@ def validate_and_init_language_model_info(
61
61
  LanguageModelInfo: The validated and initialized LanguageModelInfo object.
62
62
 
63
63
  """
64
- if isinstance(v, LanguageModelName):
64
+ if isinstance(v, LanguageModelName | str):
65
65
  return LanguageModelInfo.from_name(v)
66
- if isinstance(v, str):
67
- if v in [name.value for name in LanguageModelName]:
68
- return LanguageModelInfo.from_name(LanguageModelName(v))
69
-
70
- return LanguageModelInfo(
71
- name=v,
72
- version="custom",
73
- provider=LanguageModelProvider.CUSTOM,
74
- )
75
66
 
76
67
  return v
77
68
 
@@ -1,5 +1,9 @@
1
+ import json
2
+ import logging
3
+ import os
1
4
  from datetime import date
2
5
  from enum import StrEnum
6
+ from functools import lru_cache
3
7
  from typing import Annotated, Any, ClassVar, Optional, Self
4
8
 
5
9
  from pydantic import BaseModel, Field
@@ -9,6 +13,8 @@ from typing_extensions import deprecated
9
13
  from unique_toolkit._common.pydantic_helpers import get_configuration_dict
10
14
  from unique_toolkit.language_model.schemas import LanguageModelTokenLimits
11
15
 
16
+ _LOGGER = logging.getLogger(__name__)
17
+
12
18
 
13
19
  class LanguageModelName(StrEnum):
14
20
  AZURE_GPT_35_TURBO_0125 = "AZURE_GPT_35_TURBO_0125"
@@ -202,8 +208,84 @@ class LanguageModelInfo(BaseModel):
202
208
 
203
209
  default_options: dict[str, Any] = {}
204
210
 
211
+ _ENV_VAR: ClassVar[str] = "LANGUAGE_MODEL_INFOS"
212
+ """Environment variable name for custom language model infos."""
213
+
214
+ @classmethod
215
+ @lru_cache(maxsize=1)
216
+ def _load_from_env(cls) -> dict[str, dict]:
217
+ """
218
+ Load custom language model infos from environment variable.
219
+
220
+ The environment variable should contain a JSON string with a dict of
221
+ LanguageModelInfo-compatible dictionaries. The key is used for model lookup.
222
+
223
+ Example:
224
+ LANGUAGE_MODEL_INFOS='{"AZURE_GPT_4o_CUSTOM": {"name": "AZURE_GPT_4o_2024_1120",
225
+ "provider": "AZURE", "version": "custom", "capabilities": ["function_calling",
226
+ "streaming", "vision"], "token_limits": {"token_limit_input": 3000,
227
+ "token_limit_output": 150}}}'
228
+
229
+ Returns:
230
+ A dictionary mapping model keys to their info dictionaries.
231
+ """
232
+ env_value = os.getenv(cls._ENV_VAR)
233
+ if not env_value:
234
+ return {}
235
+
236
+ try:
237
+ model_infos_dict = json.loads(env_value)
238
+ if not isinstance(model_infos_dict, dict):
239
+ _LOGGER.error(
240
+ f"{cls._ENV_VAR} must be a JSON dict of model info objects. "
241
+ f"Got {type(model_infos_dict).__name__} instead."
242
+ )
243
+ return {}
244
+
245
+ # Validate each entry in the dictionary
246
+ valid_model_infos: dict[str, dict] = {}
247
+ for model_key, model_info in model_infos_dict.items():
248
+ if not isinstance(model_info, dict):
249
+ _LOGGER.warning(
250
+ f"Skipping invalid model info entry '{model_key}' in {cls._ENV_VAR}: "
251
+ f"expected dict, got {type(model_info).__name__}"
252
+ )
253
+ continue
254
+
255
+ valid_model_infos[model_key] = model_info
256
+
257
+ _LOGGER.debug(
258
+ f"Loaded {len(valid_model_infos)} custom language model infos from {cls._ENV_VAR}"
259
+ )
260
+ return valid_model_infos
261
+
262
+ except json.JSONDecodeError:
263
+ _LOGGER.error(
264
+ f"Failed to parse {cls._ENV_VAR} as JSON. "
265
+ "The environment variable should contain a valid JSON dict of model info objects.",
266
+ exc_info=True,
267
+ )
268
+ return {}
269
+
205
270
  @classmethod
206
- def from_name(cls, model_name: LanguageModelName) -> Self:
271
+ def from_name(cls, model_name: LanguageModelName | str) -> Self:
272
+ # Check environment variable first - env definitions take precedence
273
+ env_model_infos = cls._load_from_env()
274
+ model_name_str = (
275
+ model_name.value
276
+ if isinstance(model_name, LanguageModelName)
277
+ else model_name
278
+ )
279
+ if model_name_str in env_model_infos.keys():
280
+ try:
281
+ return cls.model_validate(env_model_infos[model_name_str])
282
+ except Exception:
283
+ _LOGGER.warning(
284
+ f"Failed to parse model info for '{model_name_str}' from "
285
+ f"{cls._ENV_VAR}. Falling back to default definition.",
286
+ exc_info=True,
287
+ )
288
+
207
289
  match model_name:
208
290
  case LanguageModelName.AZURE_GPT_35_TURBO_0125:
209
291
  return cls(
@@ -1723,14 +1805,7 @@ class LanguageModel:
1723
1805
 
1724
1806
  @classmethod
1725
1807
  def get_model_info(cls, model_name: LanguageModelName | str) -> LanguageModelInfo:
1726
- if isinstance(model_name, LanguageModelName):
1727
- return LanguageModelInfo.from_name(model_name)
1728
-
1729
- return LanguageModelInfo(
1730
- name=model_name,
1731
- version="custom",
1732
- provider=LanguageModelProvider.CUSTOM,
1733
- )
1808
+ return LanguageModelInfo.from_name(model_name)
1734
1809
 
1735
1810
  @classmethod
1736
1811
  def list_models(cls) -> list[LanguageModelInfo]:
File without changes