unique_orchestrator 1.5.1__tar.gz → 1.5.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.

Potentially problematic release.


This version of unique_orchestrator might be problematic. Click here for more details.

@@ -5,6 +5,9 @@ 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.5.2] - 2025-10-23
9
+ - Run evaluation and post processing in parallel
10
+
8
11
  ## [1.5.1] - 2025-10-17
9
12
  - revert behavior of unique ai upload and chat to
10
13
  1. Add upload and chat tool to forced tools if there are tool choices
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_orchestrator
3
- Version: 1.5.1
3
+ Version: 1.5.2
4
4
  Summary:
5
5
  License: Proprietary
6
6
  Author: Andreas Hauri
@@ -33,6 +33,9 @@ All notable changes to this project will be documented in this file.
33
33
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
34
34
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
35
35
 
36
+ ## [1.5.2] - 2025-10-23
37
+ - Run evaluation and post processing in parallel
38
+
36
39
  ## [1.5.1] - 2025-10-17
37
40
  - revert behavior of unique ai upload and chat to
38
41
  1. Add upload and chat tool to forced tools if there are tool choices
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "unique_orchestrator"
3
- version = "1.5.1"
3
+ version = "1.5.2"
4
4
  description = ""
5
5
  authors = ["Andreas Hauri <andreas.hauri@unique.ai>"]
6
6
  readme = ["README.md", "CHANGELOG.md"]
@@ -1,3 +1,4 @@
1
+ import asyncio
1
2
  from datetime import datetime
2
3
  from logging import Logger
3
4
 
@@ -14,6 +15,7 @@ from unique_toolkit.agentic.reference_manager.reference_manager import Reference
14
15
  from unique_toolkit.agentic.thinking_manager.thinking_manager import ThinkingManager
15
16
  from unique_toolkit.agentic.tools.tool_manager import (
16
17
  ResponsesApiToolManager,
18
+ SafeTaskExecutor,
17
19
  ToolManager,
18
20
  )
19
21
  from unique_toolkit.app.schemas import ChatEvent, McpServer
@@ -338,14 +340,31 @@ class UniqueAI:
338
340
  self, loop_response: LanguageModelStreamResponse
339
341
  ) -> bool:
340
342
  """Handle the case where no tool calls are returned."""
343
+ task_executor = SafeTaskExecutor(
344
+ logger=self._logger,
345
+ )
346
+
341
347
  selected_evaluation_names = self._tool_manager.get_evaluation_check_list()
342
- evaluation_results = await self._evaluation_manager.run_evaluations(
343
- selected_evaluation_names, loop_response, self._latest_assistant_id
348
+ evaluation_results = task_executor.execute_async(
349
+ self._evaluation_manager.run_evaluations,
350
+ selected_evaluation_names,
351
+ loop_response,
352
+ self._latest_assistant_id,
353
+ )
354
+
355
+ postprocessor_result = task_executor.execute_async(
356
+ self._postprocessor_manager.run_postprocessors,
357
+ loop_response.model_copy(deep=True),
344
358
  )
345
359
 
346
- await self._postprocessor_manager.run_postprocessors(loop_response)
360
+ _, evaluation_results = await asyncio.gather(
361
+ postprocessor_result,
362
+ evaluation_results,
363
+ )
347
364
 
348
- if not all(result.is_positive for result in evaluation_results):
365
+ if evaluation_results.success and not all(
366
+ result.is_positive for result in evaluation_results.unpack()
367
+ ):
349
368
  self._logger.warning(
350
369
  "we should add here the retry counter add an instruction and retry the loop for now we just exit the loop"
351
370
  ) # TODO: add retry counter and instruction