unique_orchestrator 0.0.2__py3-none-any.whl → 0.0.4__py3-none-any.whl

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.
@@ -15,19 +15,15 @@ from unique_toolkit._common.validators import (
15
15
  ClipInt,
16
16
  get_LMI_default_field,
17
17
  )
18
- from unique_toolkit.evals.hallucination.constants import HallucinationConfig
19
- from unique_toolkit.evals.schemas import EvaluationMetricName
20
- from unique_toolkit.history_manager.history_manager import (
21
- UploadedContentConfig,
18
+ from unique_toolkit.agentic.evaluation.hallucination.constants import (
19
+ HallucinationConfig,
22
20
  )
23
- from unique_toolkit.language_model import LanguageModelName
24
- from unique_toolkit.language_model.infos import (
25
- LanguageModelInfo,
21
+ from unique_toolkit.agentic.evaluation.schemas import EvaluationMetricName
22
+ from unique_toolkit.agentic.history_manager.history_manager import (
23
+ UploadedContentConfig,
26
24
  )
27
- from unique_toolkit.tools.config import get_configuration_dict
28
- from unique_toolkit.tools.factory import ToolFactory
29
- from unique_toolkit.tools.schemas import BaseToolConfig
30
- from unique_toolkit.tools.tool import ToolBuildConfig
25
+ from unique_toolkit.agentic.tools.config import get_configuration_dict
26
+ from unique_toolkit.agentic.tools.tool import ToolBuildConfig
31
27
  from unique_web_search.config import WebSearchConfig
32
28
  from unique_web_search.service import WebSearchTool
33
29
 
@@ -104,7 +100,6 @@ class UniqueAISpaceConfig(SpaceConfigBase):
104
100
 
105
101
  UniqueAISpaceConfig.model_rebuild()
106
102
 
107
- LIMIT_LOOP_ITERATIONS = 50
108
103
  LIMIT_MAX_TOOL_CALLS_PER_ITERATION = 50
109
104
 
110
105
 
@@ -123,135 +118,6 @@ class EvaluationConfig(BaseModel):
123
118
  hallucination_config: HallucinationConfig = HallucinationConfig()
124
119
 
125
120
 
126
- class LoopAgentTokenLimitsConfig(BaseModel):
127
- model_config = get_configuration_dict()
128
-
129
- language_model: LMI = LanguageModelInfo.from_name(
130
- LanguageModelName.AZURE_GPT_4o_2024_1120
131
- )
132
-
133
- percent_of_max_tokens_for_history: float = Field(
134
- default=0.2,
135
- ge=0.0,
136
- lt=1.0,
137
- description="The fraction of the max input tokens that will be reserved for the history.",
138
- )
139
-
140
- @property
141
- def max_history_tokens(self) -> int:
142
- return int(
143
- self.language_model.token_limits.token_limit_input
144
- * self.percent_of_max_tokens_for_history,
145
- )
146
-
147
-
148
- class SearchAgentConfig(BaseModel):
149
- """Configure the search agent."""
150
-
151
- model_config = get_configuration_dict(frozen=True)
152
-
153
- language_model: LMI = LanguageModelInfo.from_name(DEFAULT_GPT_4o)
154
-
155
- token_limits: LoopAgentTokenLimitsConfig = Field(
156
- default=LoopAgentTokenLimitsConfig(percent_of_max_tokens_for_history=0.6)
157
- )
158
- temperature: float = 0.0
159
- additional_llm_options: dict[str, Any] = Field(
160
- default={},
161
- description="Additional options to pass to the language model.",
162
- )
163
-
164
- # Space 2.0
165
- project_name: str = Field(
166
- default="Unique AI",
167
- description="The project name as optained from spaces 2.0",
168
- )
169
-
170
- # Space 2.0
171
- custom_instructions: str = Field(
172
- default="",
173
- description="A custom instruction provided by the system admin.",
174
- )
175
-
176
- thinking_steps_display: bool = False
177
-
178
- ##############################
179
- ### General Configurations
180
- ##############################
181
- max_loop_iterations: Annotated[
182
- int, *ClipInt(min_value=1, max_value=LIMIT_LOOP_ITERATIONS)
183
- ] = 8
184
-
185
- loop_configuration: LoopConfiguration = LoopConfiguration()
186
-
187
- tools: list[ToolBuildConfig] = Field(
188
- default=[
189
- ToolBuildConfig(
190
- name=InternalSearchTool.name,
191
- configuration=InternalSearchConfig(
192
- exclude_uploaded_files=True,
193
- ),
194
- ),
195
- ToolBuildConfig(
196
- name=WebSearchTool.name,
197
- configuration=WebSearchConfig(),
198
- ),
199
- ToolBuildConfig(
200
- name=DeepResearchTool.name,
201
- configuration=DeepResearchToolConfig(),
202
- ),
203
- ],
204
- )
205
-
206
- system_prompt_template: str = Field(
207
- default_factory=lambda: (
208
- Path(__file__).parent / "prompts" / "system_prompt.jinja2"
209
- ).read_text(),
210
- description="The system prompt template as a Jinja2 template string.",
211
- )
212
-
213
- user_message_prompt_template: str = Field(
214
- default_factory=lambda: (
215
- Path(__file__).parent / "prompts" / "user_message_prompt.jinja2"
216
- ).read_text(),
217
- description="The user message prompt template as a Jinja2 template string.",
218
- )
219
-
220
- ##############################
221
- ### Follow-up Questions
222
- ##############################
223
- follow_up_questions_config: FollowUpQuestionsConfig = FollowUpQuestionsConfig()
224
-
225
- ##############################
226
- ### Evaluation
227
- ##############################
228
- evaluation_config: EvaluationConfig = EvaluationConfig(
229
- hallucination_config=HallucinationConfig(),
230
- max_review_steps=0,
231
- )
232
-
233
- ##############################
234
- ### Stock Ticker
235
- ##############################
236
- stock_ticker_config: StockTickerConfig = StockTickerConfig()
237
-
238
- # TODO: generalize this there should only be 1 point in the code where we do the tool check.
239
- def get_tool_config(self, tool: str) -> BaseToolConfig:
240
- """Get the tool configuration by name."""
241
- return ToolFactory.build_tool_config(tool)
242
-
243
- # TODO: @gustavhartz, the Hallucination check should be triggered if enabled and the answer contains references.
244
- force_checks_on_stream_response_references: list[EvaluationMetricName] = Field(
245
- default=[EvaluationMetricName.HALLUCINATION],
246
- description="A list of checks to force on references. This is used to add hallucination check to references without new tool calls.",
247
- )
248
-
249
- uploaded_content_config: UploadedContentConfig = Field(
250
- default_factory=UploadedContentConfig,
251
- description="The uploaded content config.",
252
- )
253
-
254
-
255
121
  # ------------------------------------------------------------
256
122
  # Space 2.0 Config
257
123
  # ------------------------------------------------------------
@@ -386,120 +252,3 @@ class UniqueAIConfig(BaseModel):
386
252
  space: UniqueAISpaceConfig = UniqueAISpaceConfig()
387
253
 
388
254
  agent: UniqueAIAgentConfig = UniqueAIAgentConfig()
389
-
390
-
391
- # ---
392
- # Configuration adapter SearchAgentConfig -> UniqueAISpaceConfig
393
- # --
394
-
395
-
396
- def search_agent_config_to_unique_ai_space_config(
397
- search_agent_config: SearchAgentConfig,
398
- ) -> UniqueAIConfig:
399
- space = UniqueAISpaceConfig(
400
- project_name=search_agent_config.project_name,
401
- custom_instructions=search_agent_config.custom_instructions,
402
- tools=search_agent_config.tools,
403
- language_model=search_agent_config.language_model,
404
- type=SpaceType.UNIQUE_AI,
405
- )
406
-
407
- prompt_config = UniqueAIPromptConfig(
408
- system_prompt_template=search_agent_config.system_prompt_template,
409
- user_message_prompt_template=search_agent_config.user_message_prompt_template,
410
- )
411
-
412
- services = UniqueAIServices(
413
- follow_up_questions_config=search_agent_config.follow_up_questions_config,
414
- evaluation_config=search_agent_config.evaluation_config,
415
- stock_ticker_config=search_agent_config.stock_ticker_config,
416
- uploaded_content_config=search_agent_config.uploaded_content_config,
417
- )
418
-
419
- experimental = ExperimentalConfig(
420
- thinking_steps_display=search_agent_config.thinking_steps_display,
421
- force_checks_on_stream_response_references=search_agent_config.force_checks_on_stream_response_references,
422
- temperature=search_agent_config.temperature,
423
- additional_llm_options=search_agent_config.additional_llm_options,
424
- loop_configuration=search_agent_config.loop_configuration,
425
- )
426
-
427
- # Calculate remaining token percentages based on history percentage
428
-
429
- history_percent = search_agent_config.token_limits.percent_of_max_tokens_for_history
430
-
431
- agent = UniqueAIAgentConfig(
432
- max_loop_iterations=search_agent_config.max_loop_iterations,
433
- input_token_distribution=InputTokenDistributionConfig(
434
- percent_for_history=history_percent,
435
- ),
436
- prompt_config=prompt_config,
437
- services=services,
438
- experimental=experimental,
439
- )
440
-
441
- return UniqueAIConfig(
442
- space=space,
443
- agent=agent,
444
- )
445
-
446
-
447
- def needs_conversion_to_unique_ai_space_config(
448
- configuration: dict[str, Any],
449
- ) -> bool:
450
- """Check if the configuration needs to be converted to the new UniqueAISpaceConfig."""
451
- if (
452
- "space_two_point_zero" in configuration
453
- or "SpaceTwoPointZeroConfig" in configuration
454
- or ("space" in configuration and "agent" in configuration)
455
- ):
456
- return False
457
-
458
- return True
459
-
460
-
461
- if __name__ == "__main__":
462
- import json
463
-
464
- from unique_toolkit._common.utils.write_configuration import (
465
- write_service_configuration,
466
- )
467
-
468
- write_service_configuration(
469
- service_folderpath=Path(__file__).parent.parent,
470
- write_folderpath=Path(__file__).parent,
471
- config=UniqueAIConfig(),
472
- sub_name="unique_ai_config",
473
- )
474
-
475
- # TODO: @cdkl Delete these models
476
- # This model is only used to have the old and new models in the same json
477
- # schema for the data migration in the node chat backend
478
-
479
- # The types can be generated with quicktype.io with the following command:
480
- # quicktype unique_ai_old_and_new_config.json \
481
- # --src-lang schema --lang typescript \
482
- # --just-types --prefer-types --explicit-unions \
483
- # -o unique_ai_old_new_configuration.ts \
484
- # --top-level UniqueAIOldAndNewConfig \
485
- # --raw-type any
486
-
487
- # You will need to replace the `any` type with `unknown` in the generated file.
488
- # On the branch `feat/unique-ai-configuration-migration-node-chat-part`.
489
- # I you further update the types you will need to adapt both branches
490
- # - feat/unique-ai-configuration-migration-next-admin-part
491
- # - feat/unique-ai-configuration-migration-node-chat-part
492
-
493
- class UniqueAIOldAndNewConfig(BaseModel):
494
- new: UniqueAIConfig = UniqueAIConfig()
495
- old: SearchAgentConfig = SearchAgentConfig()
496
-
497
- with open(
498
- Path(__file__).parent / "unique_ai_old_and_new_config.json",
499
- "w",
500
- ) as f:
501
- json.dump(
502
- UniqueAIOldAndNewConfig().model_json_schema(by_alias=True),
503
- f,
504
- indent=4,
505
- )
@@ -2,25 +2,25 @@ from datetime import datetime
2
2
  from logging import Logger
3
3
 
4
4
  import jinja2
5
+ from unique_toolkit.agentic.debug_info_manager.debug_info_manager import (
6
+ DebugInfoManager,
7
+ )
8
+ from unique_toolkit.agentic.evaluation.evaluation_manager import EvaluationManager
9
+ from unique_toolkit.agentic.history_manager.history_manager import HistoryManager
10
+ from unique_toolkit.agentic.postprocessor.postprocessor_manager import (
11
+ PostprocessorManager,
12
+ )
13
+ from unique_toolkit.agentic.reference_manager.reference_manager import ReferenceManager
14
+ from unique_toolkit.agentic.thinking_manager.thinking_manager import ThinkingManager
15
+ from unique_toolkit.agentic.tools.tool_manager import ToolManager
5
16
  from unique_toolkit.app.schemas import ChatEvent, McpServer
6
17
  from unique_toolkit.chat.service import ChatService
7
18
  from unique_toolkit.content.service import ContentService
8
- from unique_toolkit.debug_info_manager.debug_info_manager import (
9
- DebugInfoManager,
10
- )
11
- from unique_toolkit.evals.evaluation_manager import EvaluationManager
12
- from unique_toolkit.history_manager.history_manager import HistoryManager
13
19
  from unique_toolkit.language_model.schemas import (
14
20
  LanguageModelAssistantMessage,
15
21
  LanguageModelMessages,
16
22
  LanguageModelStreamResponse,
17
23
  )
18
- from unique_toolkit.postprocessor.postprocessor_manager import (
19
- PostprocessorManager,
20
- )
21
- from unique_toolkit.reference_manager.reference_manager import ReferenceManager
22
- from unique_toolkit.thinking_manager.thinking_manager import ThinkingManager
23
- from unique_toolkit.tools.tool_manager import ToolManager
24
24
 
25
25
  from unique_orchestrator.config import UniqueAIConfig
26
26
 
@@ -13,36 +13,36 @@ from unique_stock_ticker.stock_ticker_postprocessor import (
13
13
  StockTickerPostprocessor,
14
14
  )
15
15
  from unique_toolkit import LanguageModelService
16
- from unique_toolkit.app.schemas import ChatEvent
17
- from unique_toolkit.chat.service import ChatService
18
- from unique_toolkit.content.service import ContentService
19
- from unique_toolkit.debug_info_manager.debug_info_manager import (
16
+ from unique_toolkit.agentic.debug_info_manager.debug_info_manager import (
20
17
  DebugInfoManager,
21
18
  )
22
- from unique_toolkit.evals.evaluation_manager import EvaluationManager
23
- from unique_toolkit.evals.hallucination.hallucination_evaluation import (
19
+ from unique_toolkit.agentic.evaluation.evaluation_manager import EvaluationManager
20
+ from unique_toolkit.agentic.evaluation.hallucination.hallucination_evaluation import (
24
21
  HallucinationEvaluation,
25
22
  )
26
- from unique_toolkit.history_manager import (
23
+ from unique_toolkit.agentic.history_manager import (
27
24
  history_manager as history_manager_module,
28
25
  )
29
- from unique_toolkit.history_manager.history_manager import (
26
+ from unique_toolkit.agentic.history_manager.history_manager import (
30
27
  HistoryManager,
31
28
  HistoryManagerConfig,
32
29
  )
33
- from unique_toolkit.postprocessor.postprocessor_manager import (
30
+ from unique_toolkit.agentic.postprocessor.postprocessor_manager import (
34
31
  PostprocessorManager,
35
32
  )
36
- from unique_toolkit.reference_manager.reference_manager import ReferenceManager
37
- from unique_toolkit.thinking_manager.thinking_manager import (
33
+ from unique_toolkit.agentic.reference_manager.reference_manager import ReferenceManager
34
+ from unique_toolkit.agentic.thinking_manager.thinking_manager import (
38
35
  ThinkingManager,
39
36
  ThinkingManagerConfig,
40
37
  )
41
- from unique_toolkit.tools.a2a.manager import A2AManager
42
- from unique_toolkit.tools.config import ToolBuildConfig
43
- from unique_toolkit.tools.mcp.manager import MCPManager
44
- from unique_toolkit.tools.tool_manager import ToolManager, ToolManagerConfig
45
- from unique_toolkit.tools.tool_progress_reporter import ToolProgressReporter
38
+ from unique_toolkit.agentic.tools.a2a.manager import A2AManager
39
+ from unique_toolkit.agentic.tools.config import ToolBuildConfig
40
+ from unique_toolkit.agentic.tools.mcp.manager import MCPManager
41
+ from unique_toolkit.agentic.tools.tool_manager import ToolManager, ToolManagerConfig
42
+ from unique_toolkit.agentic.tools.tool_progress_reporter import ToolProgressReporter
43
+ from unique_toolkit.app.schemas import ChatEvent
44
+ from unique_toolkit.chat.service import ChatService
45
+ from unique_toolkit.content.service import ContentService
46
46
 
47
47
  from unique_orchestrator.config import UniqueAIConfig
48
48
  from unique_orchestrator.unique_ai import UniqueAI
@@ -1,27 +1,26 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_orchestrator
3
- Version: 0.0.2
3
+ Version: 0.0.4
4
4
  Summary:
5
5
  License: Proprietary
6
- Author: Martin Fadler
7
- Author-email: martin.fadler@unique.ch
8
- Requires-Python: >=3.11,<4.0
6
+ Author: Andreas Hauri
7
+ Author-email: andreas.hauri@unique.ai
8
+ Requires-Python: >=3.12,<4.0
9
9
  Classifier: License :: Other/Proprietary License
10
10
  Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3.11
12
11
  Classifier: Programming Language :: Python :: 3.12
13
12
  Requires-Dist: pydantic (>=2.8.2,<3.0.0)
14
13
  Requires-Dist: pydantic-settings (>=2.10.1,<3.0.0)
15
14
  Requires-Dist: pytest (>=8.4.1,<9.0.0)
16
15
  Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
17
16
  Requires-Dist: typing-extensions (>=4.9.0,<5.0.0)
18
- Requires-Dist: unique-deep-research (>=0.0.10,<0.0.11)
19
- Requires-Dist: unique-follow-up-questions (>=0.0.4,<0.0.5)
20
- Requires-Dist: unique-internal-search (>=0.0.6,<0.0.7)
17
+ Requires-Dist: unique-deep-research (>=0.0.11,<0.0.12)
18
+ Requires-Dist: unique-follow-up-questions (>=0.0.5,<0.0.6)
19
+ Requires-Dist: unique-internal-search (>=0.0.7,<0.0.8)
21
20
  Requires-Dist: unique-sdk (>=0.10.0,<0.11.0)
22
- Requires-Dist: unique-stock-ticker (>=0.0.5,<0.0.6)
23
- Requires-Dist: unique-toolkit (>=0.8.57,<0.9.0)
24
- Requires-Dist: unique-web-search (>=0.1.0,<0.2.0)
21
+ Requires-Dist: unique-stock-ticker (>=0.0.6,<0.0.7)
22
+ Requires-Dist: unique-toolkit (>=0.9.0,<0.10.0)
23
+ Requires-Dist: unique-web-search (>=0.1.3,<0.2.0)
25
24
  Description-Content-Type: text/markdown
26
25
 
27
26
  # Internal Search Tool
@@ -34,6 +33,12 @@ All notable changes to this project will be documented in this file.
34
33
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
35
34
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
36
35
 
36
+ ## [0.0.4] - 2025-09-17
37
+ - Updated to latest toolkit
38
+
39
+ ## [0.0.3] - 2025-09-16
40
+ - Cleaned configuration
41
+
37
42
  ## [0.0.2] - 2025-09-15
38
43
  - Resolve dependency bug
39
44
 
@@ -0,0 +1,11 @@
1
+ unique_orchestrator/config.py,sha256=8EvcgwzxbVfCu74Wy61j9K1_mg9KjIly8oB_eyRnanI,8063
2
+ unique_orchestrator/prompts/generic_reference_prompt.jinja2,sha256=fYPaiE-N1gSoOqu85OeEBa_ttAim8grOhHuOHJjSHNU,2663
3
+ unique_orchestrator/prompts/system_prompt.jinja2,sha256=2Dy8GHrT018Sj9UkYGxSfjt7fvTTDvD53BxjDMZRPVY,6897
4
+ unique_orchestrator/prompts/user_message_prompt.jinja2,sha256=KLCfbxMu5R7_V8-AHkdXEmVorcSHNej_xM_7xJyNkl0,692
5
+ unique_orchestrator/tests/test_unique_ai_reference_order.py,sha256=8mZeVP1k8neH4qrFW3oa3zwIdaq2c7R1VvurC7kjBU8,4445
6
+ unique_orchestrator/unique_ai.py,sha256=OFzgyPWvh5mK4p3OxII3hKpQt_dhHBD2BbtHakZ35n8,15635
7
+ unique_orchestrator/unique_ai_builder.py,sha256=QaIY4lMb8HiuyYkUzAhW3IO3eU7j8FIXFU0tqdTHC5I,6105
8
+ unique_orchestrator-0.0.4.dist-info/LICENSE,sha256=GlN8wHNdh53xwOPg44URnwag6TEolCjoq3YD_KrWgss,193
9
+ unique_orchestrator-0.0.4.dist-info/METADATA,sha256=7ve-uxXKkP8JT4ueiu809JCjIPqtXuMlGdUUbyUkJQs,1515
10
+ unique_orchestrator-0.0.4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
11
+ unique_orchestrator-0.0.4.dist-info/RECORD,,
@@ -1,115 +0,0 @@
1
- from unique_orchestrator.config import (
2
- SearchAgentConfig,
3
- search_agent_config_to_unique_ai_space_config,
4
- )
5
-
6
-
7
- def test_ai_tools_conversion():
8
- """
9
- AI-authored test: Validates the transfer of tool configurations.
10
-
11
- This test ensures that:
12
- 1. All tools from the old config are present in the new config
13
- 2. Tool names are preserved exactly
14
- 3. Tool configurations are maintained without modification
15
-
16
- Written by AI Assistant to verify tool configuration preservation.
17
- """
18
- old_config = SearchAgentConfig()
19
- new_config = search_agent_config_to_unique_ai_space_config(old_config)
20
-
21
- assert len(new_config.space.tools) == len(old_config.tools)
22
- for old_tool, new_tool in zip(old_config.tools, new_config.space.tools):
23
- assert old_tool.name == new_tool.name
24
- assert old_tool.configuration == new_tool.configuration
25
-
26
-
27
- def test_ai_services_conversion():
28
- """
29
- AI-authored test: Verifies the conversion of service configurations.
30
-
31
- This test checks that all service configurations are properly transferred:
32
- 1. Follow-up questions configuration
33
- 2. Evaluation configuration
34
- 3. Stock ticker configuration
35
- 4. Reference manager configuration
36
-
37
- Written by AI Assistant to ensure service configuration integrity.
38
- """
39
- old_config = SearchAgentConfig()
40
- new_config = search_agent_config_to_unique_ai_space_config(old_config)
41
-
42
- services = new_config.agent.services
43
- assert services.follow_up_questions_config == old_config.follow_up_questions_config
44
- assert services.evaluation_config == old_config.evaluation_config
45
- assert services.stock_ticker_config == old_config.stock_ticker_config
46
-
47
-
48
- def test_ai_experimental_config_conversion():
49
- """
50
- AI-authored test: Checks the conversion of experimental features.
51
-
52
- This test verifies that:
53
- 1. Experimental features like thinking_steps_display are properly transferred
54
- 2. Boolean values are preserved accurately
55
-
56
- Written by AI Assistant to ensure experimental feature preservation.
57
- """
58
- old_config = SearchAgentConfig()
59
- old_config.thinking_steps_display = True
60
- new_config = search_agent_config_to_unique_ai_space_config(old_config)
61
-
62
- assert (
63
- new_config.agent.experimental.thinking_steps_display
64
- == old_config.thinking_steps_display
65
- )
66
-
67
-
68
- def test_ai_force_checks_conversion():
69
- """
70
- AI-authored test: Validates the conversion of force checks configuration.
71
-
72
- This test ensures that:
73
- 1. Force checks for stream response references are properly transferred
74
- 2. The configuration maintains its integrity during conversion
75
-
76
- Written by AI Assistant to verify force checks preservation.
77
- """
78
- old_config = SearchAgentConfig()
79
- new_config = search_agent_config_to_unique_ai_space_config(old_config)
80
-
81
- assert (
82
- new_config.agent.experimental.force_checks_on_stream_response_references
83
- == old_config.force_checks_on_stream_response_references
84
- )
85
-
86
-
87
- def test_ai_custom_values_conversion():
88
- """
89
- AI-authored test: Verifies the conversion of custom configuration values.
90
-
91
- This test validates that custom values are properly transferred:
92
- 1. Project name
93
- 2. Custom instructions
94
- 3. Temperature settings
95
- 4. Loop iteration limits
96
- 5. Additional LLM options
97
-
98
- Written by AI Assistant to ensure custom configuration preservation.
99
- """
100
- old_config = SearchAgentConfig(
101
- project_name="Custom Project",
102
- custom_instructions="Custom Instructions",
103
- temperature=0.8,
104
- max_loop_iterations=5,
105
- additional_llm_options={"some_option": "value"},
106
- )
107
- new_config = search_agent_config_to_unique_ai_space_config(old_config)
108
-
109
- assert new_config.space.project_name == "Custom Project"
110
- assert new_config.space.custom_instructions == "Custom Instructions"
111
- assert new_config.agent.experimental.temperature == 0.8
112
- assert new_config.agent.max_loop_iterations == 5
113
- assert new_config.agent.experimental.additional_llm_options == {
114
- "some_option": "value"
115
- }
@@ -1,12 +0,0 @@
1
- unique_orchestrator/config.py,sha256=y5keSY9hDrtinV6LnMxpIwEOQIJ1zEfwKfr8EQvX-wY,16652
2
- unique_orchestrator/prompts/generic_reference_prompt.jinja2,sha256=fYPaiE-N1gSoOqu85OeEBa_ttAim8grOhHuOHJjSHNU,2663
3
- unique_orchestrator/prompts/system_prompt.jinja2,sha256=2Dy8GHrT018Sj9UkYGxSfjt7fvTTDvD53BxjDMZRPVY,6897
4
- unique_orchestrator/prompts/user_message_prompt.jinja2,sha256=KLCfbxMu5R7_V8-AHkdXEmVorcSHNej_xM_7xJyNkl0,692
5
- unique_orchestrator/tests/test_config.py,sha256=P7QkVlVv0ppiK77s5i4rE4IOzdtdBCZZkeIA3KRc82k,4070
6
- unique_orchestrator/tests/test_unique_ai_reference_order.py,sha256=8mZeVP1k8neH4qrFW3oa3zwIdaq2c7R1VvurC7kjBU8,4445
7
- unique_orchestrator/unique_ai.py,sha256=xGQogDbxA7qjfk8R85t5m8PI_XDY7tk-s4tkvp8on_Q,15574
8
- unique_orchestrator/unique_ai_builder.py,sha256=J73_Lg3XjI9JKirUmC6juWTefk7gPkG67NPLdUL4zr0,5991
9
- unique_orchestrator-0.0.2.dist-info/LICENSE,sha256=GlN8wHNdh53xwOPg44URnwag6TEolCjoq3YD_KrWgss,193
10
- unique_orchestrator-0.0.2.dist-info/METADATA,sha256=9ywF7T7AkbTZ2TSsgpCafIWeK26qhlb4EvFyh_fr5G4,1464
11
- unique_orchestrator-0.0.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
12
- unique_orchestrator-0.0.2.dist-info/RECORD,,