unique_toolkit 1.43.11__tar.gz → 1.45.0__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 (252) hide show
  1. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/CHANGELOG.md +6 -0
  2. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/PKG-INFO +7 -1
  3. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/pyproject.toml +1 -1
  4. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/loop_runner/__init__.py +7 -1
  5. unique_toolkit-1.45.0/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +63 -0
  6. unique_toolkit-1.45.0/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +90 -0
  7. unique_toolkit-1.45.0/unique_toolkit/agentic/loop_runner/base.py +87 -0
  8. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/loop_runner/runners/__init__.py +2 -0
  9. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/loop_runner/runners/basic.py +29 -4
  10. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +2 -19
  11. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +2 -2
  12. unique_toolkit-1.43.11/unique_toolkit/agentic/loop_runner/base.py +0 -38
  13. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/LICENSE +0 -0
  14. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/README.md +0 -0
  15. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/__init__.py +0 -0
  16. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/_base_service.py +0 -0
  17. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/_time_utils.py +0 -0
  18. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  19. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  20. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  21. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  22. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  23. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  24. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  25. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/default_language_model.py +0 -0
  26. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  27. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/docx_generator/config.py +0 -0
  28. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  29. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/docx_generator/service.py +0 -0
  30. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  31. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/endpoint_builder.py +0 -0
  32. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  33. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/exception.py +0 -0
  34. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/execution.py +0 -0
  35. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  36. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  37. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  38. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  39. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  40. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  41. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  42. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  43. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  44. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  45. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  46. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  47. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  48. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  49. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  50. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  51. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  52. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  53. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  54. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  55. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  56. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  57. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  58. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  59. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  60. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  61. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  62. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  63. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  64. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  65. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/referencing.py +0 -0
  66. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/string_utilities.py +0 -0
  67. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  68. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  69. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  70. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/token/token_counting.py +0 -0
  71. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/utils/__init__.py +0 -0
  72. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/utils/files.py +0 -0
  73. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/utils/image/encode.py +0 -0
  74. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  75. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  76. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  77. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  78. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  79. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  80. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  81. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/validate_required_values.py +0 -0
  82. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/_common/validators.py +0 -0
  83. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/__init__.py +0 -0
  84. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  85. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  86. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/evaluation/config.py +0 -0
  87. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts.py +0 -0
  88. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  89. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  90. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  91. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  92. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  93. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  94. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/evaluation/hallucination/prompts.py +0 -0
  95. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  96. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  97. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  98. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  99. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  100. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  101. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  102. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
  103. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  104. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  105. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  106. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  107. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  108. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  109. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  110. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  111. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  112. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  113. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  114. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  115. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  116. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  117. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  118. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  119. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  120. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  121. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  122. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  123. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  124. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  125. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  126. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/__init__.py +0 -0
  127. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  128. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  129. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  130. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  131. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  132. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  133. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  134. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  135. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  136. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  137. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  138. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  139. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  140. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  141. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  142. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  143. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  144. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  145. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  146. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  147. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  148. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  149. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  150. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  151. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  152. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  153. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  154. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/config.py +0 -0
  155. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/factory.py +0 -0
  156. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  157. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  158. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  159. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  160. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  161. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  162. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  163. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  164. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/schemas.py +0 -0
  165. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  166. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  167. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/tool.py +0 -0
  168. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  169. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  170. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  171. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  172. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  173. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  174. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  175. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic_table/__init__.py +0 -0
  176. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic_table/schemas.py +0 -0
  177. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/agentic_table/service.py +0 -0
  178. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/app/__init__.py +0 -0
  179. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/app/dev_util.py +0 -0
  180. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/app/fast_api_factory.py +0 -0
  181. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/app/init_logging.py +0 -0
  182. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/app/init_sdk.py +0 -0
  183. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/app/performance/async_tasks.py +0 -0
  184. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  185. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/app/schemas.py +0 -0
  186. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/app/unique_settings.py +0 -0
  187. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/app/verification.py +0 -0
  188. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/app/webhook.py +0 -0
  189. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/chat/__init__.py +0 -0
  190. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/chat/constants.py +0 -0
  191. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/chat/deprecated/service.py +0 -0
  192. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/chat/functions.py +0 -0
  193. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/chat/rendering.py +0 -0
  194. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/chat/responses_api.py +0 -0
  195. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/chat/schemas.py +0 -0
  196. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/chat/service.py +0 -0
  197. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/chat/state.py +0 -0
  198. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/chat/utils.py +0 -0
  199. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/content/__init__.py +0 -0
  200. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/content/constants.py +0 -0
  201. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/content/functions.py +0 -0
  202. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/content/schemas.py +0 -0
  203. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/content/service.py +0 -0
  204. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/content/smart_rules.py +0 -0
  205. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/content/utils.py +0 -0
  206. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/data_extraction/README.md +0 -0
  207. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/data_extraction/__init__.py +0 -0
  208. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  209. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  210. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/data_extraction/base.py +0 -0
  211. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  212. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/data_extraction/basic/config.py +0 -0
  213. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  214. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/data_extraction/basic/service.py +0 -0
  215. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/embedding/__init__.py +0 -0
  216. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/embedding/constants.py +0 -0
  217. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/embedding/functions.py +0 -0
  218. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/embedding/schemas.py +0 -0
  219. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/embedding/service.py +0 -0
  220. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/embedding/utils.py +0 -0
  221. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/framework_utilities/__init__.py +0 -0
  222. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  223. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  224. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  225. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  226. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  227. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  228. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/framework_utilities/utils.py +0 -0
  229. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/language_model/__init__.py +0 -0
  230. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  231. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/language_model/builder.py +0 -0
  232. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/language_model/constants.py +0 -0
  233. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/language_model/default_language_model.py +0 -0
  234. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/language_model/functions.py +0 -0
  235. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/language_model/infos.py +0 -0
  236. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/language_model/prompt.py +0 -0
  237. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/language_model/reference.py +0 -0
  238. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/language_model/schemas.py +0 -0
  239. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/language_model/service.py +0 -0
  240. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/language_model/utils.py +0 -0
  241. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/protocols/support.py +0 -0
  242. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/services/__init__.py +0 -0
  243. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/services/chat_service.py +0 -0
  244. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/services/knowledge_base.py +0 -0
  245. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/short_term_memory/__init__.py +0 -0
  246. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/short_term_memory/constants.py +0 -0
  247. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/short_term_memory/functions.py +0 -0
  248. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/short_term_memory/schemas.py +0 -0
  249. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/short_term_memory/service.py +0 -0
  250. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/smart_rules/__init__.py +0 -0
  251. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/unique_toolkit/smart_rules/compile.py +0 -0
  252. {unique_toolkit-1.43.11 → unique_toolkit-1.45.0}/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.45.0] - 2026-01-23
9
+ - Remove unused code execution options from config
10
+
11
+ ## [1.44.0] - 2026-01-23
12
+ - Add LoopIterationRunner abstraction for the responses api
13
+
8
14
  ## [1.43.11] - 2026-01-23
9
15
  - Add `RESPONSES_API` Capablity to some models that were missing it
10
16
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_toolkit
3
- Version: 1.43.11
3
+ Version: 1.45.0
4
4
  Summary:
5
5
  License: Proprietary
6
6
  Author: Cedric Klinkert
@@ -125,6 +125,12 @@ All notable changes to this project will be documented in this file.
125
125
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
126
126
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
127
127
 
128
+ ## [1.45.0] - 2026-01-23
129
+ - Remove unused code execution options from config
130
+
131
+ ## [1.44.0] - 2026-01-23
132
+ - Add LoopIterationRunner abstraction for the responses api
133
+
128
134
  ## [1.43.11] - 2026-01-23
129
135
  - Add `RESPONSES_API` Capablity to some models that were missing it
130
136
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "unique_toolkit"
3
- version = "1.43.11"
3
+ version = "1.45.0"
4
4
  description = ""
5
5
  authors = [
6
6
  "Cedric Klinkert <cedric.klinkert@unique.ch>",
@@ -3,7 +3,10 @@ from unique_toolkit.agentic.loop_runner._iteration_handler_utils import (
3
3
  handle_last_iteration,
4
4
  handle_normal_iteration,
5
5
  )
6
- from unique_toolkit.agentic.loop_runner.base import LoopIterationRunner
6
+ from unique_toolkit.agentic.loop_runner.base import (
7
+ LoopIterationRunner,
8
+ ResponsesLoopIterationRunner,
9
+ )
7
10
  from unique_toolkit.agentic.loop_runner.middleware import (
8
11
  PlanningConfig,
9
12
  PlanningMiddleware,
@@ -16,6 +19,7 @@ from unique_toolkit.agentic.loop_runner.runners import (
16
19
  BasicLoopIterationRunner,
17
20
  BasicLoopIterationRunnerConfig,
18
21
  QwenLoopIterationRunner,
22
+ ResponsesBasicLoopIterationRunner,
19
23
  is_qwen_model,
20
24
  )
21
25
 
@@ -34,4 +38,6 @@ __all__ = [
34
38
  "QWEN_FORCED_TOOL_CALL_INSTRUCTION",
35
39
  "QWEN_LAST_ITERATION_INSTRUCTION",
36
40
  "QWEN_MAX_LOOP_ITERATIONS",
41
+ "ResponsesLoopIterationRunner",
42
+ "ResponsesBasicLoopIterationRunner",
37
43
  ]
@@ -0,0 +1,63 @@
1
+ import logging
2
+ from typing import Unpack
3
+
4
+ from unique_toolkit.agentic.loop_runner._responses_stream_handler_utils import (
5
+ responses_stream_response,
6
+ )
7
+ from unique_toolkit.agentic.loop_runner.base import (
8
+ _ResponsesLoopIterationRunnerKwargs,
9
+ )
10
+ from unique_toolkit.language_model.schemas import ResponsesLanguageModelStreamResponse
11
+
12
+ _LOGGER = logging.getLogger(__name__)
13
+
14
+
15
+ async def handle_responses_last_iteration(
16
+ **kwargs: Unpack[_ResponsesLoopIterationRunnerKwargs],
17
+ ) -> ResponsesLanguageModelStreamResponse:
18
+ _LOGGER.info("Reached last iteration, removing tools and producing final response")
19
+
20
+ return await responses_stream_response(
21
+ loop_runner_kwargs=kwargs,
22
+ tools=None,
23
+ )
24
+
25
+
26
+ async def handle_responses_normal_iteration(
27
+ **kwargs: Unpack[_ResponsesLoopIterationRunnerKwargs],
28
+ ) -> ResponsesLanguageModelStreamResponse:
29
+ _LOGGER.info("Running loop iteration %d", kwargs["iteration_index"])
30
+
31
+ return await responses_stream_response(loop_runner_kwargs=kwargs)
32
+
33
+
34
+ async def handle_responses_forced_tools_iteration(
35
+ **kwargs: Unpack[_ResponsesLoopIterationRunnerKwargs],
36
+ ) -> ResponsesLanguageModelStreamResponse:
37
+ assert "tool_choices" in kwargs
38
+
39
+ tool_choices = kwargs["tool_choices"]
40
+ assert len(tool_choices) > 0
41
+
42
+ _LOGGER.info("Forcing tools calls: %s", tool_choices)
43
+
44
+ responses: list[ResponsesLanguageModelStreamResponse] = []
45
+
46
+ for opt in tool_choices:
47
+ responses.append(
48
+ await responses_stream_response(loop_runner_kwargs=kwargs, tool_choice=opt)
49
+ )
50
+
51
+ # Merge responses and refs:
52
+ tool_calls = []
53
+ references = []
54
+ for r in responses:
55
+ if r.tool_calls:
56
+ tool_calls.extend(r.tool_calls)
57
+ references.extend(r.message.references)
58
+
59
+ response = responses[0]
60
+ response.tool_calls = tool_calls if len(tool_calls) > 0 else None
61
+ response.message.references = references
62
+
63
+ return response
@@ -0,0 +1,90 @@
1
+ from typing import Any, Required, Sequence
2
+
3
+ from openai.types.responses import (
4
+ ResponseIncludable,
5
+ ResponseInputItemParam,
6
+ ResponseOutputItem,
7
+ ResponseTextConfigParam,
8
+ ToolParam,
9
+ response_create_params,
10
+ )
11
+ from openai.types.shared_params import Metadata, Reasoning
12
+ from typing_extensions import TypedDict
13
+
14
+ from unique_toolkit import LanguageModelToolDescription
15
+ from unique_toolkit.agentic.loop_runner.base import _ResponsesLoopIterationRunnerKwargs
16
+ from unique_toolkit.chat.service import LanguageModelMessages
17
+ from unique_toolkit.content import ContentChunk
18
+ from unique_toolkit.language_model.schemas import (
19
+ LanguageModelMessageOptions,
20
+ ResponsesLanguageModelStreamResponse,
21
+ )
22
+
23
+
24
+ class _ResponsesStreamingHandlerKwargs(TypedDict, total=False):
25
+ messages: Required[
26
+ str
27
+ | LanguageModelMessages
28
+ | Sequence[
29
+ ResponseInputItemParam | LanguageModelMessageOptions | ResponseOutputItem
30
+ ]
31
+ ]
32
+ model_name: Required[str]
33
+ tools: Sequence[LanguageModelToolDescription | ToolParam]
34
+ content_chunks: list[ContentChunk]
35
+ start_text: str
36
+ debug_info: dict[str, Any]
37
+ temperature: float
38
+ include: list[ResponseIncludable]
39
+ instructions: str
40
+ max_output_tokens: int
41
+ metadata: Metadata
42
+ parallel_tool_calls: bool
43
+ text: ResponseTextConfigParam
44
+ tool_choice: response_create_params.ToolChoice
45
+ top_p: float
46
+ reasoning: Reasoning
47
+ other_options: dict[str, Any]
48
+
49
+
50
+ def _extract_responses_streaming_kwargs(
51
+ kwargs: _ResponsesLoopIterationRunnerKwargs,
52
+ ) -> _ResponsesStreamingHandlerKwargs:
53
+ res = _ResponsesStreamingHandlerKwargs(
54
+ messages=kwargs["messages"],
55
+ model_name=kwargs["model"].name,
56
+ )
57
+
58
+ for k in [
59
+ "tools",
60
+ "content_chunks",
61
+ "start_text",
62
+ "debug_info",
63
+ "temperature",
64
+ "include",
65
+ "instructions",
66
+ "max_output_tokens",
67
+ "metadata",
68
+ "parallel_tool_calls",
69
+ "text",
70
+ "top_p",
71
+ "reasoning",
72
+ "other_options",
73
+ ]:
74
+ if k in kwargs:
75
+ res[k] = kwargs[k]
76
+
77
+ return res
78
+
79
+
80
+ async def responses_stream_response(
81
+ loop_runner_kwargs: _ResponsesLoopIterationRunnerKwargs,
82
+ **kwargs,
83
+ ) -> ResponsesLanguageModelStreamResponse:
84
+ streaming_handler = loop_runner_kwargs["streaming_handler"]
85
+ streaming_handler_kwargs = _extract_responses_streaming_kwargs(loop_runner_kwargs)
86
+ streaming_handler_kwargs.update(**kwargs)
87
+
88
+ return await streaming_handler.complete_with_references_async(
89
+ **streaming_handler_kwargs
90
+ )
@@ -0,0 +1,87 @@
1
+ from typing import Any, Protocol, Required, Sequence, Unpack
2
+
3
+ from openai.types.chat import ChatCompletionNamedToolChoiceParam
4
+ from openai.types.responses import (
5
+ ResponseIncludable,
6
+ ResponseInputItemParam,
7
+ ResponseOutputItem,
8
+ ResponseTextConfigParam,
9
+ ToolParam,
10
+ response_create_params,
11
+ )
12
+ from openai.types.shared_params import Metadata, Reasoning
13
+ from typing_extensions import TypedDict
14
+
15
+ from unique_toolkit import LanguageModelToolDescription
16
+ from unique_toolkit.chat.functions import LanguageModelStreamResponse
17
+ from unique_toolkit.chat.service import LanguageModelMessages
18
+ from unique_toolkit.content import ContentChunk
19
+ from unique_toolkit.language_model.infos import LanguageModelInfo
20
+ from unique_toolkit.language_model.schemas import (
21
+ LanguageModelMessageOptions,
22
+ ResponsesLanguageModelStreamResponse,
23
+ )
24
+ from unique_toolkit.protocols.support import (
25
+ ResponsesSupportCompleteWithReferences,
26
+ SupportCompleteWithReferences,
27
+ )
28
+
29
+
30
+ class _LoopIterationRunnerKwargs(TypedDict, total=False):
31
+ iteration_index: Required[int]
32
+ streaming_handler: Required[SupportCompleteWithReferences]
33
+ messages: Required[LanguageModelMessages]
34
+ model: Required[LanguageModelInfo]
35
+ tools: list[LanguageModelToolDescription]
36
+ content_chunks: list[ContentChunk]
37
+ start_text: str
38
+ debug_info: dict[str, Any]
39
+ temperature: float
40
+ tool_choices: list[ChatCompletionNamedToolChoiceParam]
41
+ other_options: dict[str, Any]
42
+
43
+
44
+ class LoopIterationRunner(Protocol):
45
+ """
46
+ A loop iteration runner is responsible for running a single iteration of the loop, and returning the stream response for that iteration.
47
+ """
48
+
49
+ async def __call__(
50
+ self,
51
+ **kwargs: Unpack[_LoopIterationRunnerKwargs],
52
+ ) -> LanguageModelStreamResponse: ...
53
+
54
+
55
+ class _ResponsesLoopIterationRunnerKwargs(TypedDict, total=False):
56
+ iteration_index: Required[int]
57
+ streaming_handler: Required[ResponsesSupportCompleteWithReferences]
58
+ messages: Required[
59
+ str
60
+ | LanguageModelMessages
61
+ | Sequence[
62
+ ResponseInputItemParam | LanguageModelMessageOptions | ResponseOutputItem
63
+ ]
64
+ ]
65
+ model: Required[LanguageModelInfo]
66
+ tools: list[LanguageModelToolDescription | ToolParam]
67
+ content_chunks: list[ContentChunk]
68
+ start_text: str
69
+ debug_info: dict[str, Any]
70
+ temperature: float
71
+ include: list[ResponseIncludable]
72
+ instructions: str
73
+ max_output_tokens: int
74
+ metadata: Metadata
75
+ parallel_tool_calls: bool
76
+ text: ResponseTextConfigParam
77
+ tool_choices: list[response_create_params.ToolChoice]
78
+ top_p: float
79
+ reasoning: Reasoning
80
+ other_options: dict[str, Any]
81
+
82
+
83
+ class ResponsesLoopIterationRunner(Protocol):
84
+ async def __call__(
85
+ self,
86
+ **kwargs: Unpack[_ResponsesLoopIterationRunnerKwargs],
87
+ ) -> ResponsesLanguageModelStreamResponse: ...
@@ -1,6 +1,7 @@
1
1
  from unique_toolkit.agentic.loop_runner.runners.basic import (
2
2
  BasicLoopIterationRunner,
3
3
  BasicLoopIterationRunnerConfig,
4
+ ResponsesBasicLoopIterationRunner,
4
5
  )
5
6
  from unique_toolkit.agentic.loop_runner.runners.qwen import (
6
7
  QWEN_FORCED_TOOL_CALL_INSTRUCTION,
@@ -13,6 +14,7 @@ from unique_toolkit.agentic.loop_runner.runners.qwen import (
13
14
  __all__ = [
14
15
  "BasicLoopIterationRunnerConfig",
15
16
  "BasicLoopIterationRunner",
17
+ "ResponsesBasicLoopIterationRunner",
16
18
  "QwenLoopIterationRunner",
17
19
  "QWEN_FORCED_TOOL_CALL_INSTRUCTION",
18
20
  "QWEN_LAST_ITERATION_INSTRUCTION",
@@ -9,14 +9,19 @@ from unique_toolkit.agentic.loop_runner._iteration_handler_utils import (
9
9
  handle_last_iteration,
10
10
  handle_normal_iteration,
11
11
  )
12
+ from unique_toolkit.agentic.loop_runner._responses_iteration_handler_utils import (
13
+ handle_responses_forced_tools_iteration,
14
+ handle_responses_last_iteration,
15
+ handle_responses_normal_iteration,
16
+ )
12
17
  from unique_toolkit.agentic.loop_runner.base import (
13
18
  LoopIterationRunner,
19
+ ResponsesLoopIterationRunner,
14
20
  _LoopIterationRunnerKwargs,
21
+ _ResponsesLoopIterationRunnerKwargs,
15
22
  )
16
23
  from unique_toolkit.chat.functions import LanguageModelStreamResponse
17
- from unique_toolkit.protocols.support import (
18
- ResponsesLanguageModelStreamResponse,
19
- )
24
+ from unique_toolkit.language_model.schemas import ResponsesLanguageModelStreamResponse
20
25
 
21
26
  _LOGGER = logging.getLogger(__name__)
22
27
 
@@ -34,7 +39,7 @@ class BasicLoopIterationRunner(LoopIterationRunner):
34
39
  async def __call__(
35
40
  self,
36
41
  **kwargs: Unpack[_LoopIterationRunnerKwargs],
37
- ) -> LanguageModelStreamResponse | ResponsesLanguageModelStreamResponse:
42
+ ) -> LanguageModelStreamResponse:
38
43
  tool_choices = kwargs.get("tool_choices", [])
39
44
  iteration_index = kwargs["iteration_index"]
40
45
 
@@ -44,3 +49,23 @@ class BasicLoopIterationRunner(LoopIterationRunner):
44
49
  return await handle_last_iteration(**kwargs)
45
50
  else:
46
51
  return await handle_normal_iteration(**kwargs)
52
+
53
+
54
+ class ResponsesBasicLoopIterationRunner(ResponsesLoopIterationRunner):
55
+ def __init__(self, config: BasicLoopIterationRunnerConfig) -> None:
56
+ self._config = config
57
+
58
+ @override
59
+ async def __call__(
60
+ self,
61
+ **kwargs: Unpack[_ResponsesLoopIterationRunnerKwargs],
62
+ ) -> ResponsesLanguageModelStreamResponse:
63
+ tool_choices = kwargs.get("tool_choices", [])
64
+ iteration_index = kwargs["iteration_index"]
65
+
66
+ if len(tool_choices) > 0 and iteration_index == 0:
67
+ return await handle_responses_forced_tools_iteration(**kwargs)
68
+ elif iteration_index == self._config.max_loop_iterations - 1:
69
+ return await handle_responses_last_iteration(**kwargs)
70
+ else:
71
+ return await handle_responses_normal_iteration(**kwargs)
@@ -7,8 +7,6 @@ from unique_toolkit.agentic.tools.openai_builtin.base import (
7
7
  )
8
8
  from unique_toolkit.agentic.tools.schemas import BaseToolConfig
9
9
 
10
- DEFAULT_TOOL_DESCRIPTION = "Use this tool to run python code, e.g to generate plots, process excel files, perform calculations, etc."
11
-
12
10
  DEFAULT_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT = """
13
11
  Use this tool to run python code, e.g to generate plots, process excel files, perform calculations, etc.
14
12
 
@@ -48,11 +46,9 @@ Handling User Queries:
48
46
  - After exhausting all possible solutions without success, inform the user of what was tried and request clarification/help.
49
47
  """.strip()
50
48
 
51
- DEFAULT_TOOL_FORMAT_INFORMATION_FOR_SYSTEM_PROMPT = ""
52
-
53
- DEFAULT_TOOL_FORMAT_INFORMATION_FOR_USER_PROMPT = ""
54
49
 
55
50
  DEFAULT_TOOL_DESCRIPTION_FOR_USER_PROMPT = ""
51
+ DEFAULT_TOOL_DESCRIPTION = "Use this tool to run python code, e.g to generate plots, process excel files, perform calculations, etc."
56
52
 
57
53
 
58
54
  class OpenAICodeInterpreterConfig(BaseToolConfig):
@@ -60,33 +56,20 @@ class OpenAICodeInterpreterConfig(BaseToolConfig):
60
56
  default=True,
61
57
  description="If set, the files uploaded to the chat will be uploaded to the container where code is executed.",
62
58
  )
63
-
64
59
  tool_description: str = Field(
65
60
  default=DEFAULT_TOOL_DESCRIPTION,
66
- description="The description of the tool that will be sent to the model.",
61
+ description="The description of the tool that will be included in the system prompt.",
67
62
  )
68
63
  tool_description_for_system_prompt: str = Field(
69
64
  default=DEFAULT_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT,
70
65
  description="The description of the tool that will be included in the system prompt.",
71
66
  )
72
- tool_format_information_for_system_prompt: SkipJsonSchema[str] = Field(
73
- # Since the tool is executed in Azure, it's not always possible to have dynamic format information
74
- default=DEFAULT_TOOL_FORMAT_INFORMATION_FOR_SYSTEM_PROMPT,
75
- description="The format information of the tool that will be included in the system prompt.",
76
- )
77
67
  tool_description_for_user_prompt: SkipJsonSchema[str] = (
78
68
  Field( # At the moment, this is not appended to the user prompt
79
69
  default=DEFAULT_TOOL_DESCRIPTION_FOR_USER_PROMPT,
80
70
  description="The description of the tool that will be included in the user prompt.",
81
71
  )
82
72
  )
83
- tool_format_information_for_user_prompt: SkipJsonSchema[str] = (
84
- Field( # At the moment, this is not appended to the user prompt
85
- default=DEFAULT_TOOL_FORMAT_INFORMATION_FOR_USER_PROMPT,
86
- description="The format information of the tool that will be included in the user prompt.",
87
- )
88
- )
89
-
90
73
  expires_after_minutes: int = Field(
91
74
  default=20,
92
75
  description="The number of minutes after which the container will be deleted.",
@@ -239,9 +239,9 @@ class OpenAICodeInterpreterTool(OpenAIBuiltInTool[CodeInterpreter]):
239
239
  display_name=self.DISPLAY_NAME,
240
240
  tool_description=self._config.tool_description,
241
241
  tool_system_prompt=self._config.tool_description_for_system_prompt,
242
- tool_format_information_for_system_prompt=self._config.tool_format_information_for_system_prompt,
242
+ tool_format_information_for_system_prompt="",
243
243
  tool_user_prompt=self._config.tool_description_for_user_prompt,
244
- tool_format_information_for_user_prompt=self._config.tool_format_information_for_user_prompt,
244
+ tool_format_information_for_user_prompt="",
245
245
  input_model={},
246
246
  )
247
247
 
@@ -1,38 +0,0 @@
1
- from typing import Any, Protocol, Required, Unpack
2
-
3
- from openai.types.chat import ChatCompletionNamedToolChoiceParam
4
- from typing_extensions import TypedDict
5
-
6
- from unique_toolkit import LanguageModelToolDescription
7
- from unique_toolkit.chat.functions import LanguageModelStreamResponse
8
- from unique_toolkit.chat.service import LanguageModelMessages
9
- from unique_toolkit.content import ContentChunk
10
- from unique_toolkit.language_model.infos import LanguageModelInfo
11
- from unique_toolkit.protocols.support import (
12
- SupportCompleteWithReferences,
13
- )
14
-
15
-
16
- class _LoopIterationRunnerKwargs(TypedDict, total=False):
17
- iteration_index: Required[int]
18
- streaming_handler: Required[SupportCompleteWithReferences]
19
- messages: Required[LanguageModelMessages]
20
- model: Required[LanguageModelInfo]
21
- tools: list[LanguageModelToolDescription]
22
- content_chunks: list[ContentChunk]
23
- start_text: str
24
- debug_info: dict[str, Any]
25
- temperature: float
26
- tool_choices: list[ChatCompletionNamedToolChoiceParam]
27
- other_options: dict[str, Any]
28
-
29
-
30
- class LoopIterationRunner(Protocol):
31
- """
32
- A loop iteration runner is responsible for running a single iteration of the loop, and returning the stream response for that iteration.
33
- """
34
-
35
- async def __call__(
36
- self,
37
- **kwargs: Unpack[_LoopIterationRunnerKwargs],
38
- ) -> LanguageModelStreamResponse: ...