unique_orchestrator 1.5.0__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.
- {unique_orchestrator-1.5.0 → unique_orchestrator-1.5.2}/CHANGELOG.md +9 -0
- {unique_orchestrator-1.5.0 → unique_orchestrator-1.5.2}/PKG-INFO +10 -1
- {unique_orchestrator-1.5.0 → unique_orchestrator-1.5.2}/pyproject.toml +1 -1
- {unique_orchestrator-1.5.0 → unique_orchestrator-1.5.2}/unique_orchestrator/unique_ai.py +23 -4
- {unique_orchestrator-1.5.0 → unique_orchestrator-1.5.2}/unique_orchestrator/unique_ai_builder.py +12 -3
- {unique_orchestrator-1.5.0 → unique_orchestrator-1.5.2}/LICENSE +0 -0
- {unique_orchestrator-1.5.0 → unique_orchestrator-1.5.2}/README.md +0 -0
- {unique_orchestrator-1.5.0 → unique_orchestrator-1.5.2}/unique_orchestrator/config.py +0 -0
- {unique_orchestrator-1.5.0 → unique_orchestrator-1.5.2}/unique_orchestrator/prompts/generic_reference_prompt.jinja2 +0 -0
- {unique_orchestrator-1.5.0 → unique_orchestrator-1.5.2}/unique_orchestrator/prompts/system_prompt.jinja2 +0 -0
- {unique_orchestrator-1.5.0 → unique_orchestrator-1.5.2}/unique_orchestrator/prompts/user_message_prompt.jinja2 +0 -0
- {unique_orchestrator-1.5.0 → unique_orchestrator-1.5.2}/unique_orchestrator/tests/test_unique_ai_reference_order.py +0 -0
|
@@ -5,6 +5,15 @@ 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
|
+
|
|
11
|
+
## [1.5.1] - 2025-10-17
|
|
12
|
+
- revert behavior of unique ai upload and chat to
|
|
13
|
+
1. Add upload and chat tool to forced tools if there are tool choices
|
|
14
|
+
2. Simply force it if there are no tool choices.
|
|
15
|
+
3. Tool not available when no uploaded documents
|
|
16
|
+
|
|
8
17
|
## [1.5.0] - 2025-10-16
|
|
9
18
|
- Make code interpreter configurable through spaces 2.0.
|
|
10
19
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: unique_orchestrator
|
|
3
|
-
Version: 1.5.
|
|
3
|
+
Version: 1.5.2
|
|
4
4
|
Summary:
|
|
5
5
|
License: Proprietary
|
|
6
6
|
Author: Andreas Hauri
|
|
@@ -33,6 +33,15 @@ 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
|
+
|
|
39
|
+
## [1.5.1] - 2025-10-17
|
|
40
|
+
- revert behavior of unique ai upload and chat to
|
|
41
|
+
1. Add upload and chat tool to forced tools if there are tool choices
|
|
42
|
+
2. Simply force it if there are no tool choices.
|
|
43
|
+
3. Tool not available when no uploaded documents
|
|
44
|
+
|
|
36
45
|
## [1.5.0] - 2025-10-16
|
|
37
46
|
- Make code interpreter configurable through spaces 2.0.
|
|
38
47
|
|
|
@@ -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 =
|
|
343
|
-
|
|
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
|
|
360
|
+
_, evaluation_results = await asyncio.gather(
|
|
361
|
+
postprocessor_result,
|
|
362
|
+
evaluation_results,
|
|
363
|
+
)
|
|
347
364
|
|
|
348
|
-
if not all(
|
|
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
|
{unique_orchestrator-1.5.0 → unique_orchestrator-1.5.2}/unique_orchestrator/unique_ai_builder.py
RENAMED
|
@@ -375,17 +375,24 @@ def _build_completions(
|
|
|
375
375
|
common_components: _CommonComponents,
|
|
376
376
|
debug_info_manager: DebugInfoManager,
|
|
377
377
|
) -> UniqueAI:
|
|
378
|
-
|
|
378
|
+
# Uploaded content behavior is always to force uploaded search tool:
|
|
379
|
+
# 1. Add it to forced tools if there are tool choices.
|
|
380
|
+
# 2. Simply force it if there are no tool choices.
|
|
381
|
+
# 3. Not available if not uploaded documents.
|
|
382
|
+
UPLOADED_DOCUMENTS = len(common_components.uploaded_documents) > 0
|
|
383
|
+
TOOL_CHOICES = len(event.payload.tool_choices) > 0
|
|
384
|
+
if UPLOADED_DOCUMENTS:
|
|
379
385
|
logger.info(
|
|
380
386
|
f"Adding UploadedSearchTool with {len(common_components.uploaded_documents)} documents"
|
|
381
387
|
)
|
|
382
|
-
|
|
388
|
+
common_components.tool_manager_config.tools.append(
|
|
383
389
|
ToolBuildConfig(
|
|
384
390
|
name=UploadedSearchTool.name,
|
|
385
391
|
display_name=UploadedSearchTool.name,
|
|
386
392
|
configuration=UploadedSearchConfig(),
|
|
387
|
-
)
|
|
393
|
+
)
|
|
388
394
|
)
|
|
395
|
+
if TOOL_CHOICES and UPLOADED_DOCUMENTS:
|
|
389
396
|
event.payload.tool_choices.append(str(UploadedSearchTool.name))
|
|
390
397
|
|
|
391
398
|
tool_manager = ToolManager(
|
|
@@ -396,6 +403,8 @@ def _build_completions(
|
|
|
396
403
|
mcp_manager=common_components.mcp_manager,
|
|
397
404
|
a2a_manager=common_components.a2a_manager,
|
|
398
405
|
)
|
|
406
|
+
if not TOOL_CHOICES and UPLOADED_DOCUMENTS:
|
|
407
|
+
tool_manager.add_forced_tool(UploadedSearchTool.name)
|
|
399
408
|
|
|
400
409
|
postprocessor_manager = PostprocessorManager(
|
|
401
410
|
logger=logger,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|