waldiez 0.4.7__py3-none-any.whl → 0.4.9__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.
Potentially problematic release.
This version of waldiez might be problematic. Click here for more details.
- waldiez/__init__.py +5 -5
- waldiez/_version.py +1 -1
- waldiez/cli.py +97 -102
- waldiez/exporter.py +61 -19
- waldiez/exporting/__init__.py +25 -6
- waldiez/exporting/agent/__init__.py +7 -3
- waldiez/exporting/agent/code_execution.py +114 -0
- waldiez/exporting/agent/exporter.py +354 -0
- waldiez/exporting/agent/extras/__init__.py +15 -0
- waldiez/exporting/agent/extras/captain_agent_extras.py +315 -0
- waldiez/exporting/agent/extras/group/target.py +178 -0
- waldiez/exporting/agent/extras/group_manager_agent_extas.py +500 -0
- waldiez/exporting/agent/extras/group_member_extras.py +181 -0
- waldiez/exporting/agent/extras/handoffs/__init__.py +19 -0
- waldiez/exporting/agent/extras/handoffs/after_work.py +78 -0
- waldiez/exporting/agent/extras/handoffs/available.py +74 -0
- waldiez/exporting/agent/extras/handoffs/condition.py +158 -0
- waldiez/exporting/agent/extras/handoffs/handoff.py +171 -0
- waldiez/exporting/agent/extras/handoffs/target.py +189 -0
- waldiez/exporting/agent/extras/rag/__init__.py +10 -0
- waldiez/exporting/agent/{utils/rag_user/chroma_utils.py → extras/rag/chroma_extras.py} +37 -24
- waldiez/exporting/agent/{utils/rag_user/mongo_utils.py → extras/rag/mongo_extras.py} +10 -10
- waldiez/exporting/agent/{utils/rag_user/pgvector_utils.py → extras/rag/pgvector_extras.py} +13 -13
- waldiez/exporting/agent/{utils/rag_user/qdrant_utils.py → extras/rag/qdrant_extras.py} +13 -13
- waldiez/exporting/agent/{utils/rag_user/vector_db.py → extras/rag/vector_db_extras.py} +59 -46
- waldiez/exporting/agent/extras/rag_user_proxy_agent_extras.py +245 -0
- waldiez/exporting/agent/extras/reasoning_agent_extras.py +88 -0
- waldiez/exporting/agent/factory.py +95 -0
- waldiez/exporting/agent/processor.py +150 -0
- waldiez/exporting/agent/system_message.py +36 -0
- waldiez/exporting/agent/termination.py +50 -0
- waldiez/exporting/chats/__init__.py +7 -3
- waldiez/exporting/chats/exporter.py +97 -0
- waldiez/exporting/chats/factory.py +65 -0
- waldiez/exporting/chats/processor.py +226 -0
- waldiez/exporting/chats/utils/__init__.py +6 -5
- waldiez/exporting/chats/utils/common.py +11 -45
- waldiez/exporting/chats/utils/group.py +55 -0
- waldiez/exporting/chats/utils/nested.py +37 -52
- waldiez/exporting/chats/utils/sequential.py +72 -61
- waldiez/exporting/chats/utils/{single_chat.py → single.py} +48 -50
- waldiez/exporting/core/__init__.py +196 -0
- waldiez/exporting/core/constants.py +17 -0
- waldiez/exporting/core/content.py +69 -0
- waldiez/exporting/core/context.py +244 -0
- waldiez/exporting/core/enums.py +89 -0
- waldiez/exporting/core/errors.py +19 -0
- waldiez/exporting/core/exporter.py +390 -0
- waldiez/exporting/core/exporters.py +67 -0
- waldiez/exporting/core/extras/__init__.py +39 -0
- waldiez/exporting/core/extras/agent_extras/__init__.py +27 -0
- waldiez/exporting/core/extras/agent_extras/captain_extras.py +57 -0
- waldiez/exporting/core/extras/agent_extras/group_manager_extras.py +102 -0
- waldiez/exporting/core/extras/agent_extras/rag_user_extras.py +53 -0
- waldiez/exporting/core/extras/agent_extras/reasoning_extras.py +68 -0
- waldiez/exporting/core/extras/agent_extras/standard_extras.py +263 -0
- waldiez/exporting/core/extras/base.py +241 -0
- waldiez/exporting/core/extras/chat_extras.py +118 -0
- waldiez/exporting/core/extras/flow_extras.py +70 -0
- waldiez/exporting/core/extras/model_extras.py +73 -0
- waldiez/exporting/core/extras/path_resolver.py +93 -0
- waldiez/exporting/core/extras/serializer.py +138 -0
- waldiez/exporting/core/extras/tool_extras.py +82 -0
- waldiez/exporting/core/protocols.py +259 -0
- waldiez/exporting/core/result.py +705 -0
- waldiez/exporting/core/types.py +329 -0
- waldiez/exporting/core/utils/__init__.py +11 -0
- waldiez/exporting/core/utils/comment.py +33 -0
- waldiez/exporting/core/utils/llm_config.py +117 -0
- waldiez/exporting/core/validation.py +96 -0
- waldiez/exporting/flow/__init__.py +6 -2
- waldiez/exporting/flow/execution_generator.py +193 -0
- waldiez/exporting/flow/exporter.py +107 -0
- waldiez/exporting/flow/factory.py +94 -0
- waldiez/exporting/flow/file_generator.py +214 -0
- waldiez/exporting/flow/merger.py +387 -0
- waldiez/exporting/flow/orchestrator.py +411 -0
- waldiez/exporting/flow/utils/__init__.py +9 -36
- waldiez/exporting/flow/utils/common.py +206 -0
- waldiez/exporting/flow/utils/importing.py +373 -0
- waldiez/exporting/flow/utils/linting.py +200 -0
- waldiez/exporting/flow/utils/{logging_utils.py → logging.py} +23 -9
- waldiez/exporting/models/__init__.py +3 -1
- waldiez/exporting/models/exporter.py +233 -0
- waldiez/exporting/models/factory.py +66 -0
- waldiez/exporting/models/processor.py +139 -0
- waldiez/exporting/tools/__init__.py +11 -0
- waldiez/exporting/tools/exporter.py +207 -0
- waldiez/exporting/tools/factory.py +57 -0
- waldiez/exporting/tools/processor.py +248 -0
- waldiez/exporting/tools/registration.py +133 -0
- waldiez/io/__init__.py +128 -0
- waldiez/io/_ws.py +199 -0
- waldiez/io/models/__init__.py +60 -0
- waldiez/io/models/base.py +66 -0
- waldiez/io/models/constants.py +78 -0
- waldiez/io/models/content/__init__.py +23 -0
- waldiez/io/models/content/audio.py +43 -0
- waldiez/io/models/content/base.py +45 -0
- waldiez/io/models/content/file.py +43 -0
- waldiez/io/models/content/image.py +96 -0
- waldiez/io/models/content/text.py +37 -0
- waldiez/io/models/content/video.py +43 -0
- waldiez/io/models/user_input.py +269 -0
- waldiez/io/models/user_response.py +215 -0
- waldiez/io/mqtt.py +681 -0
- waldiez/io/redis.py +782 -0
- waldiez/io/structured.py +439 -0
- waldiez/io/utils.py +184 -0
- waldiez/io/ws.py +298 -0
- waldiez/logger.py +481 -0
- waldiez/models/__init__.py +108 -51
- waldiez/models/agents/__init__.py +34 -70
- waldiez/models/agents/agent/__init__.py +10 -4
- waldiez/models/agents/agent/agent.py +466 -65
- waldiez/models/agents/agent/agent_data.py +119 -47
- waldiez/models/agents/agent/agent_type.py +13 -2
- waldiez/models/agents/agent/code_execution.py +12 -12
- waldiez/models/agents/agent/human_input_mode.py +8 -0
- waldiez/models/agents/agent/{linked_skill.py → linked_tool.py} +7 -7
- waldiez/models/agents/agent/nested_chat.py +35 -7
- waldiez/models/agents/agent/termination_message.py +30 -22
- waldiez/models/agents/{swarm_agent → agent}/update_system_message.py +22 -22
- waldiez/models/agents/agents.py +58 -63
- waldiez/models/agents/assistant/assistant.py +4 -4
- waldiez/models/agents/assistant/assistant_data.py +13 -1
- waldiez/models/agents/{captain_agent → captain}/captain_agent.py +5 -5
- waldiez/models/agents/{captain_agent → captain}/captain_agent_data.py +5 -5
- waldiez/models/agents/extra_requirements.py +11 -16
- waldiez/models/agents/group_manager/group_manager.py +103 -13
- waldiez/models/agents/group_manager/group_manager_data.py +36 -14
- waldiez/models/agents/group_manager/speakers.py +77 -24
- waldiez/models/agents/{rag_user → rag_user_proxy}/__init__.py +16 -16
- waldiez/models/agents/rag_user_proxy/rag_user_proxy.py +64 -0
- waldiez/models/agents/{rag_user/rag_user_data.py → rag_user_proxy/rag_user_proxy_data.py} +6 -5
- waldiez/models/agents/{rag_user → rag_user_proxy}/retrieve_config.py +182 -114
- waldiez/models/agents/{rag_user → rag_user_proxy}/vector_db_config.py +13 -13
- waldiez/models/agents/reasoning/reasoning_agent.py +6 -6
- waldiez/models/agents/reasoning/reasoning_agent_data.py +110 -63
- waldiez/models/agents/reasoning/reasoning_agent_reason_config.py +38 -10
- waldiez/models/agents/user_proxy/user_proxy.py +11 -7
- waldiez/models/agents/user_proxy/user_proxy_data.py +2 -2
- waldiez/models/chat/__init__.py +2 -1
- waldiez/models/chat/chat.py +166 -87
- waldiez/models/chat/chat_data.py +99 -136
- waldiez/models/chat/chat_message.py +33 -23
- waldiez/models/chat/chat_nested.py +31 -30
- waldiez/models/chat/chat_summary.py +10 -8
- waldiez/models/common/__init__.py +52 -2
- waldiez/models/common/ag2_version.py +1 -1
- waldiez/models/common/base.py +38 -7
- waldiez/models/common/dict_utils.py +42 -17
- waldiez/models/common/handoff.py +459 -0
- waldiez/models/common/id_generator.py +19 -0
- waldiez/models/common/method_utils.py +130 -68
- waldiez/{exporting/base/utils → models/common}/naming.py +38 -61
- waldiez/models/common/waldiez_version.py +37 -0
- waldiez/models/flow/__init__.py +9 -2
- waldiez/models/flow/connection.py +18 -0
- waldiez/models/flow/flow.py +311 -215
- waldiez/models/flow/flow_data.py +207 -40
- waldiez/models/flow/info.py +85 -0
- waldiez/models/flow/naming.py +131 -0
- waldiez/models/model/__init__.py +7 -1
- waldiez/models/model/extra_requirements.py +3 -12
- waldiez/models/model/model.py +76 -21
- waldiez/models/model/model_data.py +108 -20
- waldiez/models/tool/__init__.py +16 -0
- waldiez/models/tool/extra_requirements.py +36 -0
- waldiez/models/{skill/skill.py → tool/tool.py} +88 -88
- waldiez/models/tool/tool_data.py +51 -0
- waldiez/models/tool/tool_type.py +8 -0
- waldiez/models/waldiez.py +97 -80
- waldiez/runner.py +115 -61
- waldiez/running/__init__.py +13 -7
- waldiez/running/environment.py +49 -68
- waldiez/running/gen_seq_diagram.py +16 -14
- waldiez/running/post_run.py +119 -0
- waldiez/running/pre_run.py +149 -0
- waldiez/running/util.py +134 -0
- waldiez/utils/__init__.py +2 -4
- waldiez/utils/cli_extras/jupyter.py +5 -3
- waldiez/utils/cli_extras/runner.py +6 -4
- waldiez/utils/cli_extras/studio.py +6 -4
- waldiez/utils/conflict_checker.py +15 -9
- waldiez/utils/flaml_warnings.py +5 -5
- waldiez/utils/version.py +47 -0
- {waldiez-0.4.7.dist-info → waldiez-0.4.9.dist-info}/METADATA +235 -91
- waldiez-0.4.9.dist-info/RECORD +203 -0
- waldiez/exporting/agent/agent_exporter.py +0 -297
- waldiez/exporting/agent/utils/__init__.py +0 -23
- waldiez/exporting/agent/utils/captain_agent.py +0 -263
- waldiez/exporting/agent/utils/code_execution.py +0 -65
- waldiez/exporting/agent/utils/group_manager.py +0 -220
- waldiez/exporting/agent/utils/rag_user/__init__.py +0 -7
- waldiez/exporting/agent/utils/rag_user/rag_user.py +0 -209
- waldiez/exporting/agent/utils/reasoning.py +0 -36
- waldiez/exporting/agent/utils/swarm_agent.py +0 -469
- waldiez/exporting/agent/utils/teachability.py +0 -41
- waldiez/exporting/agent/utils/termination_message.py +0 -44
- waldiez/exporting/base/__init__.py +0 -25
- waldiez/exporting/base/agent_position.py +0 -75
- waldiez/exporting/base/base_exporter.py +0 -118
- waldiez/exporting/base/export_position.py +0 -48
- waldiez/exporting/base/import_position.py +0 -23
- waldiez/exporting/base/mixin.py +0 -137
- waldiez/exporting/base/utils/__init__.py +0 -18
- waldiez/exporting/base/utils/comments.py +0 -96
- waldiez/exporting/base/utils/path_check.py +0 -68
- waldiez/exporting/base/utils/to_string.py +0 -84
- waldiez/exporting/chats/chats_exporter.py +0 -240
- waldiez/exporting/chats/utils/swarm.py +0 -210
- waldiez/exporting/flow/flow_exporter.py +0 -528
- waldiez/exporting/flow/utils/agent_utils.py +0 -204
- waldiez/exporting/flow/utils/chat_utils.py +0 -71
- waldiez/exporting/flow/utils/def_main.py +0 -77
- waldiez/exporting/flow/utils/flow_content.py +0 -202
- waldiez/exporting/flow/utils/flow_names.py +0 -116
- waldiez/exporting/flow/utils/importing_utils.py +0 -227
- waldiez/exporting/models/models_exporter.py +0 -199
- waldiez/exporting/models/utils.py +0 -174
- waldiez/exporting/skills/__init__.py +0 -9
- waldiez/exporting/skills/skills_exporter.py +0 -176
- waldiez/exporting/skills/utils.py +0 -369
- waldiez/models/agents/agent/teachability.py +0 -70
- waldiez/models/agents/rag_user/rag_user.py +0 -60
- waldiez/models/agents/swarm_agent/__init__.py +0 -50
- waldiez/models/agents/swarm_agent/after_work.py +0 -179
- waldiez/models/agents/swarm_agent/on_condition.py +0 -105
- waldiez/models/agents/swarm_agent/on_condition_available.py +0 -142
- waldiez/models/agents/swarm_agent/on_condition_target.py +0 -40
- waldiez/models/agents/swarm_agent/swarm_agent.py +0 -107
- waldiez/models/agents/swarm_agent/swarm_agent_data.py +0 -124
- waldiez/models/flow/utils.py +0 -232
- waldiez/models/skill/__init__.py +0 -16
- waldiez/models/skill/extra_requirements.py +0 -36
- waldiez/models/skill/skill_data.py +0 -53
- waldiez/models/skill/skill_type.py +0 -8
- waldiez/running/running.py +0 -369
- waldiez/utils/pysqlite3_checker.py +0 -308
- waldiez/utils/rdps_checker.py +0 -122
- waldiez-0.4.7.dist-info/RECORD +0 -149
- /waldiez/models/agents/{captain_agent → captain}/__init__.py +0 -0
- /waldiez/models/agents/{captain_agent → captain}/captain_agent_lib_entry.py +0 -0
- {waldiez-0.4.7.dist-info → waldiez-0.4.9.dist-info}/WHEEL +0 -0
- {waldiez-0.4.7.dist-info → waldiez-0.4.9.dist-info}/entry_points.txt +0 -0
- {waldiez-0.4.7.dist-info → waldiez-0.4.9.dist-info}/licenses/LICENSE +0 -0
- {waldiez-0.4.7.dist-info → waldiez-0.4.9.dist-info}/licenses/NOTICE.md +0 -0
waldiez/models/waldiez.py
CHANGED
|
@@ -1,23 +1,33 @@
|
|
|
1
1
|
# SPDX-License-Identifier: Apache-2.0.
|
|
2
2
|
# Copyright (c) 2024 - 2025 Waldiez and contributors.
|
|
3
|
+
# pylint: disable=too-many-public-methods
|
|
3
4
|
"""Waldiez data class.
|
|
4
5
|
|
|
5
|
-
A Waldiez class contains all the information
|
|
6
|
+
A Waldiez class contains all the information needed to generate
|
|
6
7
|
and run an autogen workflow. It has the model/LLM configurations, the agent
|
|
7
|
-
definitions and their optional additional
|
|
8
|
+
definitions and their optional additional tools to be used.
|
|
8
9
|
"""
|
|
9
10
|
|
|
10
11
|
import json
|
|
11
12
|
from dataclasses import dataclass
|
|
12
13
|
from pathlib import Path
|
|
13
|
-
from typing import Any,
|
|
14
|
-
|
|
15
|
-
from .agents import
|
|
16
|
-
|
|
14
|
+
from typing import Any, Iterator, Optional
|
|
15
|
+
|
|
16
|
+
from .agents import (
|
|
17
|
+
WaldiezAgent,
|
|
18
|
+
WaldiezGroupManager,
|
|
19
|
+
get_captain_agent_extra_requirements,
|
|
20
|
+
get_retrievechat_extra_requirements,
|
|
21
|
+
)
|
|
17
22
|
from .common import get_autogen_version
|
|
18
|
-
from .flow import
|
|
23
|
+
from .flow import (
|
|
24
|
+
WaldiezAgentConnection,
|
|
25
|
+
WaldiezFlow,
|
|
26
|
+
WaldiezFlowInfo,
|
|
27
|
+
get_flow_data,
|
|
28
|
+
)
|
|
19
29
|
from .model import WaldiezModel, get_models_extra_requirements
|
|
20
|
-
from .
|
|
30
|
+
from .tool import WaldiezTool, get_tools_extra_requirements
|
|
21
31
|
|
|
22
32
|
|
|
23
33
|
@dataclass(frozen=True, slots=True)
|
|
@@ -32,18 +42,18 @@ class Waldiez:
|
|
|
32
42
|
@classmethod
|
|
33
43
|
def from_dict(
|
|
34
44
|
cls,
|
|
35
|
-
data:
|
|
45
|
+
data: dict[str, Any],
|
|
36
46
|
flow_id: Optional[str] = None,
|
|
37
47
|
name: Optional[str] = None,
|
|
38
48
|
description: Optional[str] = None,
|
|
39
|
-
tags: Optional[
|
|
40
|
-
requirements: Optional[
|
|
49
|
+
tags: Optional[list[str]] = None,
|
|
50
|
+
requirements: Optional[list[str]] = None,
|
|
41
51
|
) -> "Waldiez":
|
|
42
52
|
"""Create a Waldiez from dict.
|
|
43
53
|
|
|
44
54
|
Parameters
|
|
45
55
|
----------
|
|
46
|
-
data :
|
|
56
|
+
data : dict[str, Any]
|
|
47
57
|
The data.
|
|
48
58
|
flow_id : Optional[str], optional
|
|
49
59
|
The flow id, by default None (retrieved from data or generated).
|
|
@@ -51,9 +61,9 @@ class Waldiez:
|
|
|
51
61
|
The name, by default None (retrieved from data).
|
|
52
62
|
description : Optional[str], optional
|
|
53
63
|
The description, by default None (retrieved from data).
|
|
54
|
-
tags : Optional[
|
|
64
|
+
tags : Optional[list[str]], optional
|
|
55
65
|
The tags, by default None (retrieved from data).
|
|
56
|
-
requirements : Optional[
|
|
66
|
+
requirements : Optional[list[str]], optional
|
|
57
67
|
The requirements, by default None (retrieved from data).
|
|
58
68
|
|
|
59
69
|
Returns
|
|
@@ -69,16 +79,17 @@ class Waldiez:
|
|
|
69
79
|
tags=tags,
|
|
70
80
|
requirements=requirements,
|
|
71
81
|
)
|
|
72
|
-
|
|
82
|
+
validated = WaldiezFlow.model_validate(flow)
|
|
83
|
+
return cls(flow=validated) # pyright: ignore
|
|
73
84
|
|
|
74
85
|
@classmethod
|
|
75
86
|
def load(
|
|
76
87
|
cls,
|
|
77
|
-
waldiez_file:
|
|
88
|
+
waldiez_file: str | Path,
|
|
78
89
|
name: Optional[str] = None,
|
|
79
90
|
description: Optional[str] = None,
|
|
80
|
-
tags: Optional[
|
|
81
|
-
requirements: Optional[
|
|
91
|
+
tags: Optional[list[str]] = None,
|
|
92
|
+
requirements: Optional[list[str]] = None,
|
|
82
93
|
) -> "Waldiez":
|
|
83
94
|
"""Load a Waldiez from a file.
|
|
84
95
|
|
|
@@ -90,9 +101,9 @@ class Waldiez:
|
|
|
90
101
|
The name, by default None.
|
|
91
102
|
description : Optional[str], optional
|
|
92
103
|
The description, by default None.
|
|
93
|
-
tags : Optional[
|
|
104
|
+
tags : Optional[list[str]], optional
|
|
94
105
|
The tags, by default None.
|
|
95
|
-
requirements : Optional[
|
|
106
|
+
requirements : Optional[list[str]], optional
|
|
96
107
|
The requirements, by default None.
|
|
97
108
|
|
|
98
109
|
Returns
|
|
@@ -105,7 +116,7 @@ class Waldiez:
|
|
|
105
116
|
ValueError
|
|
106
117
|
If the file is not found or invalid JSON.
|
|
107
118
|
"""
|
|
108
|
-
data:
|
|
119
|
+
data: dict[str, Any] = {}
|
|
109
120
|
if not Path(waldiez_file).exists():
|
|
110
121
|
raise ValueError(f"File not found: {waldiez_file}")
|
|
111
122
|
with open(waldiez_file, "r", encoding="utf-8") as file:
|
|
@@ -142,23 +153,33 @@ class Waldiez:
|
|
|
142
153
|
"""
|
|
143
154
|
return self.flow.model_dump_json(by_alias=by_alias, indent=indent)
|
|
144
155
|
|
|
156
|
+
@property
|
|
157
|
+
def id(self) -> str:
|
|
158
|
+
"""Get the flow id."""
|
|
159
|
+
return self.flow.id
|
|
160
|
+
|
|
145
161
|
@property
|
|
146
162
|
def has_rag_agents(self) -> bool:
|
|
147
163
|
"""Check if the flow has RAG agents."""
|
|
148
|
-
return any(agent.
|
|
164
|
+
return any(agent.is_rag_user for agent in self.agents)
|
|
149
165
|
|
|
150
166
|
@property
|
|
151
167
|
def has_multimodal_agents(self) -> bool:
|
|
152
168
|
"""Check if the flow has multimodal agents."""
|
|
153
|
-
return any(
|
|
169
|
+
return any(
|
|
170
|
+
agent.data.is_multimodal
|
|
171
|
+
for agent in self.flow.data.agents.assistantAgents
|
|
172
|
+
)
|
|
154
173
|
|
|
155
174
|
@property
|
|
156
175
|
def has_captain_agents(self) -> bool:
|
|
157
176
|
"""Check if the flow has captain agents."""
|
|
158
|
-
return any(agent.
|
|
177
|
+
return any(agent.is_captain for agent in self.agents)
|
|
159
178
|
|
|
160
179
|
@property
|
|
161
|
-
def
|
|
180
|
+
def initial_chats(
|
|
181
|
+
self,
|
|
182
|
+
) -> list[WaldiezAgentConnection]:
|
|
162
183
|
"""Get the chats."""
|
|
163
184
|
return self.flow.ordered_flow
|
|
164
185
|
|
|
@@ -174,15 +195,15 @@ class Waldiez:
|
|
|
174
195
|
yield from self.flow.data.agents.members
|
|
175
196
|
|
|
176
197
|
@property
|
|
177
|
-
def
|
|
178
|
-
"""Get the flow
|
|
198
|
+
def tools(self) -> Iterator[WaldiezTool]:
|
|
199
|
+
"""Get the flow tools.
|
|
179
200
|
|
|
180
201
|
Yields
|
|
181
202
|
------
|
|
182
|
-
|
|
183
|
-
The
|
|
203
|
+
WaldiezTool
|
|
204
|
+
The tools.
|
|
184
205
|
"""
|
|
185
|
-
yield from self.flow.data.
|
|
206
|
+
yield from self.flow.data.tools
|
|
186
207
|
|
|
187
208
|
@property
|
|
188
209
|
def models(self) -> Iterator[WaldiezModel]:
|
|
@@ -195,6 +216,14 @@ class Waldiez:
|
|
|
195
216
|
"""
|
|
196
217
|
yield from self.flow.data.models
|
|
197
218
|
|
|
219
|
+
@property
|
|
220
|
+
def info(self) -> WaldiezFlowInfo:
|
|
221
|
+
"""Get the flow info."""
|
|
222
|
+
return WaldiezFlowInfo.create(
|
|
223
|
+
agents=self.agents,
|
|
224
|
+
agent_names=self.flow.unique_names["agent_names"],
|
|
225
|
+
)
|
|
226
|
+
|
|
198
227
|
@property
|
|
199
228
|
def name(self) -> str:
|
|
200
229
|
"""Get the flow name."""
|
|
@@ -206,7 +235,7 @@ class Waldiez:
|
|
|
206
235
|
return self.flow.description or "Waldiez Flow description"
|
|
207
236
|
|
|
208
237
|
@property
|
|
209
|
-
def tags(self) ->
|
|
238
|
+
def tags(self) -> list[str]:
|
|
210
239
|
"""Get the flow tags."""
|
|
211
240
|
return self.flow.tags
|
|
212
241
|
|
|
@@ -226,14 +255,13 @@ class Waldiez:
|
|
|
226
255
|
return self.flow.is_single_agent_mode
|
|
227
256
|
|
|
228
257
|
@property
|
|
229
|
-
def requirements(self) ->
|
|
258
|
+
def requirements(self) -> list[str]:
|
|
230
259
|
"""Get the flow requirements."""
|
|
231
260
|
autogen_version = get_autogen_version()
|
|
232
261
|
requirements_list = filter(
|
|
233
262
|
# we use the fixed "ag2=={autogen_version}" below
|
|
234
263
|
lambda requirement: not (
|
|
235
|
-
|
|
236
|
-
requirement.startswith("pyautogen")
|
|
264
|
+
requirement.startswith("ag2")
|
|
237
265
|
or requirement.startswith("ag2")
|
|
238
266
|
or requirement.startswith("autogen")
|
|
239
267
|
),
|
|
@@ -241,29 +269,13 @@ class Waldiez:
|
|
|
241
269
|
)
|
|
242
270
|
requirements = set(requirements_list)
|
|
243
271
|
requirements.add(f"ag2[openai]=={autogen_version}")
|
|
244
|
-
if self.has_rag_agents:
|
|
272
|
+
if self.has_rag_agents: # pragma: no branch
|
|
245
273
|
rag_extras = get_retrievechat_extra_requirements(self.agents)
|
|
246
274
|
requirements.update(rag_extras)
|
|
247
|
-
if self.has_multimodal_agents:
|
|
275
|
+
if self.has_multimodal_agents: # pragma: no branch
|
|
248
276
|
requirements.add(f"ag2[lmm]=={autogen_version}")
|
|
249
|
-
if self.has_captain_agents:
|
|
250
|
-
|
|
251
|
-
captain_extras = [
|
|
252
|
-
"chromadb",
|
|
253
|
-
"sentence-transformers",
|
|
254
|
-
"huggingface-hub",
|
|
255
|
-
# tools:
|
|
256
|
-
"pillow",
|
|
257
|
-
"markdownify",
|
|
258
|
-
"arxiv",
|
|
259
|
-
"pymupdf",
|
|
260
|
-
"wikipedia-api",
|
|
261
|
-
"easyocr",
|
|
262
|
-
"python-pptx",
|
|
263
|
-
"openai-whisper",
|
|
264
|
-
"pandas",
|
|
265
|
-
"scipy",
|
|
266
|
-
]
|
|
277
|
+
if self.has_captain_agents: # pragma: no branch
|
|
278
|
+
captain_extras = get_captain_agent_extra_requirements()
|
|
267
279
|
requirements.update(captain_extras)
|
|
268
280
|
requirements.update(
|
|
269
281
|
get_models_extra_requirements(
|
|
@@ -272,28 +284,50 @@ class Waldiez:
|
|
|
272
284
|
)
|
|
273
285
|
)
|
|
274
286
|
requirements.update(
|
|
275
|
-
|
|
276
|
-
self.
|
|
287
|
+
get_tools_extra_requirements(
|
|
288
|
+
self.tools,
|
|
277
289
|
autogen_version=autogen_version,
|
|
278
290
|
)
|
|
279
291
|
)
|
|
280
292
|
return sorted(requirements)
|
|
281
293
|
|
|
282
|
-
def
|
|
294
|
+
# def get_flow_chat_info(self) ->
|
|
295
|
+
|
|
296
|
+
def get_flow_env_vars(self) -> list[tuple[str, str]]:
|
|
283
297
|
"""Get the flow environment variables.
|
|
284
298
|
|
|
285
299
|
Returns
|
|
286
300
|
-------
|
|
287
|
-
|
|
301
|
+
list[tuple[str, str]]
|
|
288
302
|
The environment variables for the flow.
|
|
289
303
|
"""
|
|
290
|
-
env_vars:
|
|
291
|
-
for
|
|
292
|
-
for secret_key, secret_value in
|
|
304
|
+
env_vars: list[tuple[str, str]] = []
|
|
305
|
+
for tool in self.tools:
|
|
306
|
+
for secret_key, secret_value in tool.secrets.items():
|
|
293
307
|
env_vars.append((secret_key, secret_value))
|
|
308
|
+
for model in self.models:
|
|
309
|
+
api_env_key = model.api_key_env_key
|
|
310
|
+
api_key = model.api_key
|
|
311
|
+
if api_env_key and api_key: # pragma: no branch
|
|
312
|
+
env_vars.append((api_env_key, api_key))
|
|
294
313
|
return env_vars
|
|
295
314
|
|
|
296
|
-
def
|
|
315
|
+
def get_root_group_manager(self) -> WaldiezGroupManager:
|
|
316
|
+
"""Get the root group manager agent.
|
|
317
|
+
|
|
318
|
+
Returns
|
|
319
|
+
-------
|
|
320
|
+
WaldiezGroupManager
|
|
321
|
+
The root group manager agent.
|
|
322
|
+
|
|
323
|
+
Raises
|
|
324
|
+
------
|
|
325
|
+
ValueError
|
|
326
|
+
If the root group manager agent is not found.
|
|
327
|
+
"""
|
|
328
|
+
return self.flow.get_root_group_manager()
|
|
329
|
+
|
|
330
|
+
def get_group_chat_members(self, agent: WaldiezAgent) -> list[WaldiezAgent]:
|
|
297
331
|
"""Get the chat members that connect to a group chat manager agent.
|
|
298
332
|
|
|
299
333
|
Parameters
|
|
@@ -306,23 +340,6 @@ class Waldiez:
|
|
|
306
340
|
List[WaldiezAgent]
|
|
307
341
|
The group chat members.
|
|
308
342
|
"""
|
|
309
|
-
if agent.
|
|
343
|
+
if not agent.is_group_manager:
|
|
310
344
|
return []
|
|
311
345
|
return self.flow.get_group_chat_members(agent.id)
|
|
312
|
-
|
|
313
|
-
def get_swarm_members(
|
|
314
|
-
self, initial_agent: WaldiezAgent
|
|
315
|
-
) -> Tuple[List[WaldiezAgent], Optional[WaldiezAgent]]:
|
|
316
|
-
"""Get the chat members that connect to a swarm agent.
|
|
317
|
-
|
|
318
|
-
Parameters
|
|
319
|
-
----------
|
|
320
|
-
initial_agent : WaldiezAgent
|
|
321
|
-
The initial agent.
|
|
322
|
-
|
|
323
|
-
Returns
|
|
324
|
-
-------
|
|
325
|
-
Tuple[List[WaldiezAgent], Optional[WaldiezAgent]]
|
|
326
|
-
The swarm agents and the user agent.
|
|
327
|
-
"""
|
|
328
|
-
return self.flow.get_swarm_chat_members(initial_agent)
|