waldiez 0.1.9__py3-none-any.whl → 0.1.11__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 +18 -0
- waldiez/_version.py +1 -1
- waldiez/conflict_checker.py +23 -0
- waldiez/exporting/agents/agent.py +7 -0
- waldiez/exporting/agents/rag_user/chroma_utils.py +6 -4
- waldiez/exporting/agents/rag_user/rag_user.py +9 -0
- waldiez/exporting/skills/__init__.py +36 -1
- waldiez/models/agents/agent/agent_data.py +11 -0
- waldiez/models/waldiez.py +7 -0
- waldiez/runner.py +31 -6
- {waldiez-0.1.9.dist-info → waldiez-0.1.11.dist-info}/METADATA +37 -22
- {waldiez-0.1.9.dist-info → waldiez-0.1.11.dist-info}/RECORD +15 -14
- {waldiez-0.1.9.dist-info → waldiez-0.1.11.dist-info}/WHEEL +0 -0
- {waldiez-0.1.9.dist-info → waldiez-0.1.11.dist-info}/entry_points.txt +0 -0
- {waldiez-0.1.9.dist-info → waldiez-0.1.11.dist-info}/licenses/LICENSE +0 -0
waldiez/__init__.py
CHANGED
|
@@ -1,10 +1,28 @@
|
|
|
1
1
|
"""Waldiez package."""
|
|
2
2
|
|
|
3
3
|
from ._version import __version__
|
|
4
|
+
from .conflict_checker import check_conflicts
|
|
4
5
|
from .exporter import WaldiezExporter
|
|
5
6
|
from .models import Waldiez
|
|
6
7
|
from .runner import WaldiezRunner
|
|
7
8
|
|
|
9
|
+
# flag to check if ag2 and autogen-agentchat
|
|
10
|
+
# are installed at the same time
|
|
11
|
+
__WALDIEZ_CHECKED_FOR_CONFLICTS = False
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def _check_conflicts_once() -> None:
|
|
15
|
+
"""Check for conflicts once."""
|
|
16
|
+
# pylint: disable=global-statement
|
|
17
|
+
global __WALDIEZ_CHECKED_FOR_CONFLICTS
|
|
18
|
+
if __WALDIEZ_CHECKED_FOR_CONFLICTS is False:
|
|
19
|
+
check_conflicts()
|
|
20
|
+
__WALDIEZ_CHECKED_FOR_CONFLICTS = True
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
_check_conflicts_once()
|
|
24
|
+
|
|
25
|
+
|
|
8
26
|
__all__ = [
|
|
9
27
|
"Waldiez",
|
|
10
28
|
"WaldiezExporter",
|
waldiez/_version.py
CHANGED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"""Check for conflicts with 'autogen-agentchat' package."""
|
|
2
|
+
|
|
3
|
+
# pylint: disable=line-too-long
|
|
4
|
+
|
|
5
|
+
import sys
|
|
6
|
+
from importlib.metadata import PackageNotFoundError, version
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
# fmt: off
|
|
10
|
+
def check_conflicts() -> None: # pragma: no cover
|
|
11
|
+
"""Check for conflicts with 'autogen-agentchat' package."""
|
|
12
|
+
try:
|
|
13
|
+
version("autogen-agentchat")
|
|
14
|
+
print(
|
|
15
|
+
"Conflict detected: 'autogen-agentchat' is installed, which conflicts with 'ag2'.\n"
|
|
16
|
+
"Please uninstall 'autogen-agentchat': pip uninstall -y autogen-agentchat \n"
|
|
17
|
+
"And install 'ag2' (or 'waldiez') again: pip install --force ag2"
|
|
18
|
+
)
|
|
19
|
+
sys.exit(1)
|
|
20
|
+
except PackageNotFoundError:
|
|
21
|
+
pass
|
|
22
|
+
|
|
23
|
+
# fmt: on
|
|
@@ -26,6 +26,8 @@ def get_agent_class_name(agent: WaldiezAgent) -> str:
|
|
|
26
26
|
str
|
|
27
27
|
The agent class name.
|
|
28
28
|
"""
|
|
29
|
+
if agent.data.is_multimodal:
|
|
30
|
+
return "MultimodalConversableAgent"
|
|
29
31
|
if agent.agent_type == "assistant":
|
|
30
32
|
return "AssistantAgent"
|
|
31
33
|
if agent.agent_type == "user":
|
|
@@ -63,6 +65,11 @@ def get_agent_imports(agent_class: str) -> Set[str]:
|
|
|
63
65
|
"from autogen.agentchat.contrib.retrieve_user_proxy_agent "
|
|
64
66
|
"import RetrieveUserProxyAgent"
|
|
65
67
|
)
|
|
68
|
+
elif agent_class == "MultimodalConversableAgent":
|
|
69
|
+
imports.add(
|
|
70
|
+
"from autogen.agentchat.contrib.multimodal_conversable_agent "
|
|
71
|
+
"import MultimodalConversableAgent"
|
|
72
|
+
)
|
|
66
73
|
return imports
|
|
67
74
|
|
|
68
75
|
|
|
@@ -32,7 +32,10 @@ def _get_chroma_client_string(agent: WaldiezRagUser) -> Tuple[str, str]:
|
|
|
32
32
|
# SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes
|
|
33
33
|
# in position 2-3: truncated \UXXXXXXXX escape
|
|
34
34
|
local_path = Path(agent.retrieve_config.db_config.local_storage_path)
|
|
35
|
-
client_str +=
|
|
35
|
+
client_str += (
|
|
36
|
+
f'PersistentClient(path=r"{local_path}", '
|
|
37
|
+
"settings=Settings(anonymized_telemetry=False))"
|
|
38
|
+
)
|
|
36
39
|
else:
|
|
37
40
|
client_str += "Client(Settings(anonymized_telemetry=False))"
|
|
38
41
|
return client_str, to_import
|
|
@@ -105,7 +108,7 @@ def get_chroma_db_args(
|
|
|
105
108
|
if to_import_embedding:
|
|
106
109
|
to_import.add(to_import_embedding)
|
|
107
110
|
kwarg_string = (
|
|
108
|
-
f" client={
|
|
111
|
+
f" client={agent_name}_client,\n"
|
|
109
112
|
f" embedding_function={embedding_function_arg},\n"
|
|
110
113
|
)
|
|
111
114
|
# The RAG example:
|
|
@@ -115,11 +118,10 @@ def get_chroma_db_args(
|
|
|
115
118
|
# https://github.com/microsoft/autogen/issues/3551#issuecomment-2366930994
|
|
116
119
|
# manually initializing the collection before running the flow,
|
|
117
120
|
# might be a workaround.
|
|
118
|
-
content_before = ""
|
|
121
|
+
content_before = f"{agent_name}_client = {client_str}\n"
|
|
119
122
|
collection_name = agent.retrieve_config.collection_name
|
|
120
123
|
get_or_create = agent.retrieve_config.get_or_create
|
|
121
124
|
if collection_name:
|
|
122
|
-
content_before = f"{agent_name}_client = {client_str}\n"
|
|
123
125
|
if get_or_create:
|
|
124
126
|
content_before += (
|
|
125
127
|
f"{agent_name}_client.get_or_create_collection("
|
|
@@ -69,6 +69,15 @@ def get_rag_user_retrieve_config_str(
|
|
|
69
69
|
args_content = "\n".join(before_vector_db)
|
|
70
70
|
# add the vector_db arg
|
|
71
71
|
args_content += f',\n "vector_db": {vector_db_arg},\n'
|
|
72
|
+
# we should not need to include the client, but let's do it
|
|
73
|
+
# to avoid later issues (with telemetry or other client settings)
|
|
74
|
+
# https://github.com/ag2ai/ag2/blob/main/autogen/agentchat/\
|
|
75
|
+
# contrib/retrieve_user_proxy_agent.py#L265-L266
|
|
76
|
+
if (
|
|
77
|
+
f"{agent_name}_client" in before_the_args
|
|
78
|
+
and agent.retrieve_config.vector_db == "chroma"
|
|
79
|
+
):
|
|
80
|
+
args_content += f' "client": {agent_name}_client,\n'
|
|
72
81
|
args_content += closing_arg
|
|
73
82
|
return before_the_args, args_content, imports
|
|
74
83
|
|
|
@@ -69,6 +69,32 @@ def get_agent_skill_registration(
|
|
|
69
69
|
return content
|
|
70
70
|
|
|
71
71
|
|
|
72
|
+
def _write_skill_secrets(
|
|
73
|
+
skill: WaldiezSkill,
|
|
74
|
+
skill_name: str,
|
|
75
|
+
output_dir: Path,
|
|
76
|
+
) -> None:
|
|
77
|
+
"""Write the skill secrets to a file.
|
|
78
|
+
|
|
79
|
+
Parameters
|
|
80
|
+
----------
|
|
81
|
+
skill : WaldiezSkill
|
|
82
|
+
The skill.
|
|
83
|
+
skill_name : str
|
|
84
|
+
The name of the skill.
|
|
85
|
+
output_dir : Path
|
|
86
|
+
The output directory to save the secrets to.
|
|
87
|
+
"""
|
|
88
|
+
if not skill.secrets:
|
|
89
|
+
return
|
|
90
|
+
secrets_file = output_dir / f"{skill_name}_secrets.py"
|
|
91
|
+
with secrets_file.open("w", encoding="utf-8") as f:
|
|
92
|
+
f.write('"""Secrets for the skill."""\n')
|
|
93
|
+
f.write("from os import environ\n\n")
|
|
94
|
+
for key, value in skill.secrets.items():
|
|
95
|
+
f.write(f'environ["{key}"] = "{value}"\n')
|
|
96
|
+
|
|
97
|
+
|
|
72
98
|
def export_skills(
|
|
73
99
|
skills: List[WaldiezSkill],
|
|
74
100
|
skill_names: Dict[str, str],
|
|
@@ -116,12 +142,21 @@ def export_skills(
|
|
|
116
142
|
skill_secrets: Set[Tuple[str, str]] = set()
|
|
117
143
|
for skill in skills:
|
|
118
144
|
skill_name = skill_names[skill.id]
|
|
119
|
-
skill_imports.add(f"from {skill_name} import {skill_name}")
|
|
120
145
|
skill_secrets.update(skill.secrets.items())
|
|
121
146
|
if not output_dir:
|
|
147
|
+
skill_imports.add(f"from {skill_name} import {skill_name}")
|
|
122
148
|
continue
|
|
123
149
|
if not isinstance(output_dir, Path):
|
|
124
150
|
output_dir = Path(output_dir)
|
|
151
|
+
if not skill.secrets:
|
|
152
|
+
skill_imports.add(f"from {skill_name} import {skill_name}")
|
|
153
|
+
else:
|
|
154
|
+
# have the secrets before the skill
|
|
155
|
+
skill_imports.add(
|
|
156
|
+
f"import {skill_name}_secrets # noqa\n"
|
|
157
|
+
f"from {skill_name} import {skill_name}"
|
|
158
|
+
)
|
|
159
|
+
_write_skill_secrets(skill, skill_name, output_dir)
|
|
125
160
|
skill_file = output_dir / f"{skill_name}.py"
|
|
126
161
|
with skill_file.open("w", encoding="utf-8") as f:
|
|
127
162
|
f.write(skill.content)
|
|
@@ -40,6 +40,8 @@ class WaldiezAgentData(WaldiezBase):
|
|
|
40
40
|
A list of skills (id and executor) to register.
|
|
41
41
|
nested_chats : List[WaldiezAgentNestedChat]
|
|
42
42
|
A list of nested chats (triggered_by, messages), to register.
|
|
43
|
+
is_multimodal: bool
|
|
44
|
+
A flag to indicate if the agent is multimodal.
|
|
43
45
|
"""
|
|
44
46
|
|
|
45
47
|
model_config = ConfigDict(
|
|
@@ -149,3 +151,12 @@ class WaldiezAgentData(WaldiezBase):
|
|
|
149
151
|
alias="nestedChats",
|
|
150
152
|
),
|
|
151
153
|
]
|
|
154
|
+
is_multimodal: Annotated[
|
|
155
|
+
bool,
|
|
156
|
+
Field(
|
|
157
|
+
False,
|
|
158
|
+
title="Is multimodal",
|
|
159
|
+
description="A flag to indicate if the agent is multimodal.",
|
|
160
|
+
alias="isMultimodal",
|
|
161
|
+
),
|
|
162
|
+
] = False
|
waldiez/models/waldiez.py
CHANGED
|
@@ -145,6 +145,11 @@ class Waldiez:
|
|
|
145
145
|
"""Check if the flow has RAG agents."""
|
|
146
146
|
return any(agent.agent_type == "rag_user" for agent in self.agents)
|
|
147
147
|
|
|
148
|
+
@property
|
|
149
|
+
def has_multimodal_agents(self) -> bool:
|
|
150
|
+
"""Check if the flow has multimodal agents."""
|
|
151
|
+
return any(agent.data.is_multimodal for agent in self.agents)
|
|
152
|
+
|
|
148
153
|
@property
|
|
149
154
|
def chats(self) -> List[Tuple[WaldiezChat, WaldiezAgent, WaldiezAgent]]:
|
|
150
155
|
"""Get the chats."""
|
|
@@ -214,6 +219,8 @@ class Waldiez:
|
|
|
214
219
|
requirements.add(f"ag2[retrievechat]=={autogen_version}")
|
|
215
220
|
else:
|
|
216
221
|
requirements.add(f"ag2=={autogen_version}")
|
|
222
|
+
if self.has_multimodal_agents:
|
|
223
|
+
requirements.add(f"ag2[lmm]=={autogen_version}")
|
|
217
224
|
# ref: https://github.com/ag2ai/ag2/blob/main/setup.py
|
|
218
225
|
models_with_additional_requirements = [
|
|
219
226
|
"together",
|
waldiez/runner.py
CHANGED
|
@@ -235,10 +235,31 @@ class WaldiezRunner:
|
|
|
235
235
|
os.environ[var_key] = var_value
|
|
236
236
|
|
|
237
237
|
def _do_run(
|
|
238
|
-
self,
|
|
238
|
+
self,
|
|
239
|
+
output_path: Optional[Union[str, Path]],
|
|
240
|
+
uploads_root: Optional[Union[str, Path]],
|
|
239
241
|
) -> Union["ChatResult", List["ChatResult"]]:
|
|
240
|
-
"""Run the Waldiez workflow.
|
|
242
|
+
"""Run the Waldiez workflow.
|
|
243
|
+
|
|
244
|
+
Parameters
|
|
245
|
+
----------
|
|
246
|
+
output_path : Optional[Union[str, Path]]
|
|
247
|
+
The output path.
|
|
248
|
+
uploads_root : Optional[Union[str, Path]]
|
|
249
|
+
The runtime uploads root.
|
|
250
|
+
|
|
251
|
+
Returns
|
|
252
|
+
-------
|
|
253
|
+
Union[ChatResult, List[ChatResult]]
|
|
254
|
+
The result(s) of the chat(s).
|
|
255
|
+
"""
|
|
241
256
|
results: Union["ChatResult", List["ChatResult"]] = []
|
|
257
|
+
if not uploads_root:
|
|
258
|
+
uploads_root = Path(tempfile.mkdtemp())
|
|
259
|
+
else:
|
|
260
|
+
uploads_root = Path(uploads_root)
|
|
261
|
+
if not uploads_root.exists():
|
|
262
|
+
uploads_root.mkdir(parents=True)
|
|
242
263
|
temp_dir = Path(tempfile.mkdtemp())
|
|
243
264
|
file_name = "flow.py" if not output_path else Path(output_path).name
|
|
244
265
|
if file_name.endswith((".json", ".waldiez")):
|
|
@@ -270,6 +291,7 @@ class WaldiezRunner:
|
|
|
270
291
|
def _run(
|
|
271
292
|
self,
|
|
272
293
|
output_path: Optional[Union[str, Path]],
|
|
294
|
+
uploads_root: Optional[Union[str, Path]],
|
|
273
295
|
) -> Union["ChatResult", List["ChatResult"]]:
|
|
274
296
|
self._install_requirements()
|
|
275
297
|
token = self._stream.get()
|
|
@@ -278,13 +300,14 @@ class WaldiezRunner:
|
|
|
278
300
|
from .io import WaldiezIOStream
|
|
279
301
|
|
|
280
302
|
with WaldiezIOStream.set_default(token):
|
|
281
|
-
return self._do_run(output_path)
|
|
282
|
-
return self._do_run(output_path)
|
|
303
|
+
return self._do_run(output_path, uploads_root)
|
|
304
|
+
return self._do_run(output_path, uploads_root)
|
|
283
305
|
|
|
284
306
|
def run(
|
|
285
307
|
self,
|
|
286
308
|
stream: Optional["WaldiezIOStream"] = None,
|
|
287
309
|
output_path: Optional[Union[str, Path]] = None,
|
|
310
|
+
uploads_root: Optional[Union[str, Path]] = None,
|
|
288
311
|
) -> Union["ChatResult", List["ChatResult"]]:
|
|
289
312
|
"""Run the Waldiez workflow.
|
|
290
313
|
|
|
@@ -294,11 +317,13 @@ class WaldiezRunner:
|
|
|
294
317
|
The stream to use, by default None.
|
|
295
318
|
output_path : Optional[Union[str, Path]], optional
|
|
296
319
|
The output path, by default None.
|
|
320
|
+
uploads_root : Optional[Union[str, Path]], optional
|
|
321
|
+
The uploads root, to get user-uploaded files, by default None.
|
|
297
322
|
|
|
298
323
|
Returns
|
|
299
324
|
-------
|
|
300
325
|
Union[ChatResult, List[ChatResult]]
|
|
301
|
-
The result of the chat(s).
|
|
326
|
+
The result(s) of the chat(s).
|
|
302
327
|
|
|
303
328
|
Raises
|
|
304
329
|
------
|
|
@@ -311,7 +336,7 @@ class WaldiezRunner:
|
|
|
311
336
|
token = self._stream.set(stream)
|
|
312
337
|
file_path = output_path or self._file_path
|
|
313
338
|
try:
|
|
314
|
-
return self._run(file_path)
|
|
339
|
+
return self._run(file_path, uploads_root)
|
|
315
340
|
finally:
|
|
316
341
|
self._running = False
|
|
317
342
|
self._stream.reset(token)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: waldiez
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.11
|
|
4
4
|
Summary: waldiez
|
|
5
5
|
Project-URL: homepage, https://waldiez.github.io/waldiez/
|
|
6
6
|
Project-URL: repository, https://github.com/waldiez/waldiez.git
|
|
7
|
-
Author-email: Panagiotis Kasnesis <pkasnesis@thingenious.io>, Lazaros Toumanidis <laztoum@protonmail.com>
|
|
7
|
+
Author-email: Panagiotis Kasnesis <pkasnesis@thingenious.io>, Lazaros Toumanidis <laztoum@protonmail.com>, Stella Ioannidou <stella@humancentered.gr>
|
|
8
8
|
Classifier: Development Status :: 3 - Alpha
|
|
9
9
|
Classifier: Intended Audience :: Developers
|
|
10
10
|
Classifier: Intended Audience :: Science/Research
|
|
@@ -16,29 +16,30 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
18
|
Requires-Python: <3.13,>=3.10
|
|
19
|
-
Requires-Dist: ag2==0.
|
|
19
|
+
Requires-Dist: ag2==0.4.1
|
|
20
20
|
Requires-Dist: jupytext
|
|
21
21
|
Provides-Extra: ag2-extras
|
|
22
|
-
Requires-Dist: ag2[anthropic]==0.
|
|
23
|
-
Requires-Dist: ag2[bedrock]==0.
|
|
24
|
-
Requires-Dist: ag2[
|
|
25
|
-
Requires-Dist: ag2[
|
|
26
|
-
Requires-Dist: ag2[
|
|
27
|
-
Requires-Dist: ag2[
|
|
28
|
-
Requires-Dist: ag2[
|
|
29
|
-
Requires-Dist: ag2[retrievechat-
|
|
30
|
-
Requires-Dist: ag2[retrievechat]==0.
|
|
31
|
-
Requires-Dist: ag2[
|
|
32
|
-
Requires-Dist: ag2[
|
|
33
|
-
Requires-Dist:
|
|
22
|
+
Requires-Dist: ag2[anthropic]==0.4.1; extra == 'ag2-extras'
|
|
23
|
+
Requires-Dist: ag2[bedrock]==0.4.1; extra == 'ag2-extras'
|
|
24
|
+
Requires-Dist: ag2[captainagent]==0.4.1; extra == 'ag2-extras'
|
|
25
|
+
Requires-Dist: ag2[gemini]==0.4.1; extra == 'ag2-extras'
|
|
26
|
+
Requires-Dist: ag2[groq]==0.4.1; extra == 'ag2-extras'
|
|
27
|
+
Requires-Dist: ag2[lmm]==0.4.1; extra == 'ag2-extras'
|
|
28
|
+
Requires-Dist: ag2[mistral]==0.4.1; extra == 'ag2-extras'
|
|
29
|
+
Requires-Dist: ag2[retrievechat-mongodb]==0.4.1; extra == 'ag2-extras'
|
|
30
|
+
Requires-Dist: ag2[retrievechat-pgvector]==0.4.1; extra == 'ag2-extras'
|
|
31
|
+
Requires-Dist: ag2[retrievechat-qdrant]==0.4.1; extra == 'ag2-extras'
|
|
32
|
+
Requires-Dist: ag2[retrievechat]==0.4.1; extra == 'ag2-extras'
|
|
33
|
+
Requires-Dist: ag2[together]==0.4.1; extra == 'ag2-extras'
|
|
34
|
+
Requires-Dist: ag2[websurfer]==0.4.1; extra == 'ag2-extras'
|
|
34
35
|
Requires-Dist: fastembed==0.4.2; extra == 'ag2-extras'
|
|
35
|
-
Requires-Dist: pgvector>=0.
|
|
36
|
-
Requires-Dist: psycopg[binary]>=3.
|
|
36
|
+
Requires-Dist: pgvector>=0.3.6; extra == 'ag2-extras'
|
|
37
|
+
Requires-Dist: psycopg[binary]>=3.2.3; extra == 'ag2-extras'
|
|
37
38
|
Requires-Dist: pymongo==4.10.1; extra == 'ag2-extras'
|
|
38
39
|
Requires-Dist: qdrant-client==1.12.1; extra == 'ag2-extras'
|
|
39
40
|
Provides-Extra: dev
|
|
40
41
|
Requires-Dist: autoflake==2.3.1; extra == 'dev'
|
|
41
|
-
Requires-Dist: bandit==1.
|
|
42
|
+
Requires-Dist: bandit==1.8.0; extra == 'dev'
|
|
42
43
|
Requires-Dist: black[jupyter]==24.10.0; extra == 'dev'
|
|
43
44
|
Requires-Dist: flake8==7.1.1; extra == 'dev'
|
|
44
45
|
Requires-Dist: isort==5.13.2; extra == 'dev'
|
|
@@ -47,15 +48,15 @@ Requires-Dist: pre-commit==4.0.1; extra == 'dev'
|
|
|
47
48
|
Requires-Dist: pydocstyle==6.3.0; extra == 'dev'
|
|
48
49
|
Requires-Dist: pylint==3.3.1; extra == 'dev'
|
|
49
50
|
Requires-Dist: python-dotenv==1.0.1; extra == 'dev'
|
|
50
|
-
Requires-Dist: ruff==0.
|
|
51
|
-
Requires-Dist: types-pyyaml==6.0.12; extra == 'dev'
|
|
51
|
+
Requires-Dist: ruff==0.8.1; extra == 'dev'
|
|
52
|
+
Requires-Dist: types-pyyaml==6.0.12.20240917; extra == 'dev'
|
|
52
53
|
Requires-Dist: yamllint==1.35.1; extra == 'dev'
|
|
53
54
|
Provides-Extra: docs
|
|
54
55
|
Requires-Dist: mdx-include==1.4.2; extra == 'docs'
|
|
55
56
|
Requires-Dist: mdx-truly-sane-lists==1.3; extra == 'docs'
|
|
56
57
|
Requires-Dist: mkdocs-jupyter==0.25.1; extra == 'docs'
|
|
57
58
|
Requires-Dist: mkdocs-macros-plugin==1.3.7; extra == 'docs'
|
|
58
|
-
Requires-Dist: mkdocs-material==9.5.
|
|
59
|
+
Requires-Dist: mkdocs-material==9.5.46; extra == 'docs'
|
|
59
60
|
Requires-Dist: mkdocs-minify-html-plugin==0.2.3; extra == 'docs'
|
|
60
61
|
Requires-Dist: mkdocs==1.6.1; extra == 'docs'
|
|
61
62
|
Requires-Dist: mkdocstrings-python==1.12.2; extra == 'docs'
|
|
@@ -71,7 +72,7 @@ Description-Content-Type: text/markdown
|
|
|
71
72
|
|
|
72
73
|
# Waldiez
|
|
73
74
|
|
|
74
|
-
 [](https://coveralls.io/github/waldiez/waldiez) [ [](https://coveralls.io/github/waldiez/waldiez) [](https://badge.fury.io/py/waldiez)
|
|
75
76
|
|
|
76
77
|
Translate a Waldiez flow:
|
|
77
78
|
|
|
@@ -236,6 +237,20 @@ with WaldiezIOStream.set_default(io_stream):
|
|
|
236
237
|
- [juptytext](https://github.com/mwouts/jupytext)
|
|
237
238
|
- [pydantic](https://github.com/pydantic/pydantic)
|
|
238
239
|
|
|
240
|
+
## Known Conflicts
|
|
241
|
+
|
|
242
|
+
- **autogen-agentchat**: This package conflicts with `ag2`. Ensure that `autogen-agentchat` is uninstalled before installing `waldiez`. If you have already installed `autogen-agentchat`, you can uninstall it with the following command:
|
|
243
|
+
|
|
244
|
+
```shell
|
|
245
|
+
pip uninstall autogen-agentchat -y
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
If already installed waldiez you might need to reinstall it after uninstalling `autogen-agentchat`:
|
|
249
|
+
|
|
250
|
+
```shell
|
|
251
|
+
pip install --force --no-cache waldiez
|
|
252
|
+
```
|
|
253
|
+
|
|
239
254
|
## License
|
|
240
255
|
|
|
241
256
|
This project is licensed under the MIT License - see the [LICENSE](https://github.com/waldiez/waldiez/blob/main/LICENSE) file for details.
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
waldiez/__init__.py,sha256=
|
|
1
|
+
waldiez/__init__.py,sha256=ASGmxP3JcASIv89_tMYhYxvW0FlHK1jM0Nfb1hMN-z0,722
|
|
2
2
|
waldiez/__main__.py,sha256=9xR-F2ohZcRPDG6KrM7cJpXciKX-u6WdL221ckyJ04k,112
|
|
3
|
-
waldiez/_version.py,sha256=
|
|
3
|
+
waldiez/_version.py,sha256=sJthgAdM_fnhfUw7CJUqaPJliLLYbXnDEyzn7i1rA9U,63
|
|
4
4
|
waldiez/cli.py,sha256=wStRkt056Y-F2CcuD6Zlov-ooUpWndyNesV9s_MjyHU,4798
|
|
5
|
+
waldiez/conflict_checker.py,sha256=T5FA7hsxpuW0Byb4YyZQ3-uVxzNnoTQV199YRBKjvmE,707
|
|
5
6
|
waldiez/exporter.py,sha256=iKe-l_Me8NRWsXHIdBcrOrnLT9XIyp4iYi4HLuuj2jA,9342
|
|
6
7
|
waldiez/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
-
waldiez/runner.py,sha256=
|
|
8
|
+
waldiez/runner.py,sha256=hBHgtfxcV7LlGMAwGEf7xbNp3_qEvFsnbTTnKfe-Y1g,11097
|
|
8
9
|
waldiez/exporting/__init__.py,sha256=GMY7qTRpNmc7tpaCFNGLT5wX9eu26NvoNPuYX8MzP50,344
|
|
9
10
|
waldiez/exporting/agents/__init__.py,sha256=v5KA112W_EFYwXE2TSBKYyO8rRKUOUAOpFS5CMSnfRs,110
|
|
10
|
-
waldiez/exporting/agents/agent.py,sha256=
|
|
11
|
+
waldiez/exporting/agents/agent.py,sha256=d2ut2B90-aG4uBRhPWS7B4MKIvSJqQva6DjlXiqleVQ,7513
|
|
11
12
|
waldiez/exporting/agents/agent_skills.py,sha256=4et3DduwV6dvYTzR4hQRBQGdIkQuJwp1w4oGnjBek6Y,1852
|
|
12
13
|
waldiez/exporting/agents/code_execution.py,sha256=fA_E8EuxUqCzlQMoIDQODiN32CSTttjLXGKBJaAEyqY,2299
|
|
13
14
|
waldiez/exporting/agents/group_manager.py,sha256=rVYtg72dM4J_agEtpN60cGT1dWNqP9msd9I9YRVR1cc,7112
|
|
@@ -15,11 +16,11 @@ waldiez/exporting/agents/llm_config.py,sha256=A88e-RKp09r8n9MG11hArpITzxK8nVrTZ6
|
|
|
15
16
|
waldiez/exporting/agents/teachability.py,sha256=ame4hHJCZRBp7hAQGZzv2Cjs6QtcV9vlQ1zheMEMac0,1103
|
|
16
17
|
waldiez/exporting/agents/termination_message.py,sha256=tzI4-tcveYKBVx5PsznQZwAoghSX3mbn_vPu4rX8tuU,1276
|
|
17
18
|
waldiez/exporting/agents/rag_user/__init__.py,sha256=01F4gwgUwtSpZbGXcfieqIuLNT64u9KiqMIB2f0mplI,196
|
|
18
|
-
waldiez/exporting/agents/rag_user/chroma_utils.py,sha256=
|
|
19
|
+
waldiez/exporting/agents/rag_user/chroma_utils.py,sha256=yASPPnowIFXv86qojBSZWfJQMSId4HIvMlFoU4MYMl8,4720
|
|
19
20
|
waldiez/exporting/agents/rag_user/mongo_utils.py,sha256=y5IL-Anfktg9cYo2o-ED1A7lwHQWdVMWD_W1AT5_RmE,2664
|
|
20
21
|
waldiez/exporting/agents/rag_user/pgvector_utils.py,sha256=EyGDwvo1Pe8bqoJl3NFpqK6zizN81lPPaSMBMQF79Dc,2722
|
|
21
22
|
waldiez/exporting/agents/rag_user/qdrant_utils.py,sha256=tn1A7pjQjJfGS33ALgnPYTz7xu8rVBidcc5-WHLq8e8,3487
|
|
22
|
-
waldiez/exporting/agents/rag_user/rag_user.py,sha256=
|
|
23
|
+
waldiez/exporting/agents/rag_user/rag_user.py,sha256=uT0wlYCYbBjsw6uZm9bXAk6IaMtk0fev7sM6Xf1MuTo,6268
|
|
23
24
|
waldiez/exporting/agents/rag_user/vector_db.py,sha256=64Gr_y1VTZLXi1pC4KjChsZ6DTX7cxdkDRQI3Ty_H-U,3659
|
|
24
25
|
waldiez/exporting/chats/__init__.py,sha256=v5aR1gWqSN5xeDDMIFo-ceC_Z9UgL8qJZofC2sU8HqQ,296
|
|
25
26
|
waldiez/exporting/chats/chats.py,sha256=xI5ZzWpcqYz8Kuu7B9pU6iHN16wUwHxOvYFhH5vxWuA,1259
|
|
@@ -29,7 +30,7 @@ waldiez/exporting/flow/__init__.py,sha256=WhdPrjXQAcihrS1KUtPNgbx0y1tqD5HtGykzpE
|
|
|
29
30
|
waldiez/exporting/flow/def_main.py,sha256=YpdhqO4iFng3r7if69ZPMJAibPVNDqnrOrWvGw7CJq8,1052
|
|
30
31
|
waldiez/exporting/flow/flow.py,sha256=x2AlXr7aJJfrPMeuXQYfT9sG5GycMwf0kRkovZWKGag,6206
|
|
31
32
|
waldiez/exporting/models/__init__.py,sha256=_Yt6sBAyRrN3LSAg4Nrh4dP7pmtIzGzWu4G1AutxK-Q,7078
|
|
32
|
-
waldiez/exporting/skills/__init__.py,sha256=
|
|
33
|
+
waldiez/exporting/skills/__init__.py,sha256=RQUDX77TQR8zI0mSXpCiK6wjx6Db3MapI_BEGQWV61A,4638
|
|
33
34
|
waldiez/exporting/utils/__init__.py,sha256=tP1V4g9-MyARlfOEL_1YWMJNW7UivUrrukq7DIwdq6k,1018
|
|
34
35
|
waldiez/exporting/utils/comments.py,sha256=X9j8w48rh3DfFDjiMverU9DBSuE9yuMMbbStxBbN1sE,3190
|
|
35
36
|
waldiez/exporting/utils/importing.py,sha256=dA4HCQ-OxmodUjovgXyLI9IwNvLwbY67P41969XoZ7g,8649
|
|
@@ -40,12 +41,12 @@ waldiez/exporting/utils/object_string.py,sha256=2kdIu4in3iUV92a2KbLWwp9POhvY-fzF
|
|
|
40
41
|
waldiez/exporting/utils/path_check.py,sha256=aO49sbk6hUHEr65UjNNUSKO5WCGnQitiT733W-kGVtI,1062
|
|
41
42
|
waldiez/io/__init__.py,sha256=-w6ywIjG8ByxGtpSeRt1bjhnP4CZzpHf8WRWckjs4ng,5172
|
|
42
43
|
waldiez/models/__init__.py,sha256=IMq8vzuAgmv92kHSSuZQLF38vVd31ojgOHonuHqWYj0,2888
|
|
43
|
-
waldiez/models/waldiez.py,sha256=
|
|
44
|
+
waldiez/models/waldiez.py,sha256=gNZYlXVW3ONHl9snwtRruFOCa0mX23ffUOiF104ctRQ,9351
|
|
44
45
|
waldiez/models/agents/__init__.py,sha256=3ZyVYBHMFzZjRMIdPrBF6HLg82LPAlEubL6utL6KhfU,1856
|
|
45
46
|
waldiez/models/agents/agents.py,sha256=zIqihnoBjzaQLL_P6FcVoHddcusRNYsWPIFLZD091bE,3641
|
|
46
47
|
waldiez/models/agents/agent/__init__.py,sha256=inA0zV3dnwmcQlcObH_FLaZSURjFG31E_XUampJAnJU,746
|
|
47
48
|
waldiez/models/agents/agent/agent.py,sha256=DAwreQtIdoM2x_vVccIkALl5whyS07GvfKRUxdVhLeY,5513
|
|
48
|
-
waldiez/models/agents/agent/agent_data.py,sha256=
|
|
49
|
+
waldiez/models/agents/agent/agent_data.py,sha256=HMrVqTOh5PtQ5VtgNTIaZl3tFgfyVLyBMm75oe8wkJg,5334
|
|
49
50
|
waldiez/models/agents/agent/code_execution.py,sha256=kgL3pbEEyuMvJid0sIbfe4os7SWKpzL1Bv4O525Biyk,1942
|
|
50
51
|
waldiez/models/agents/agent/linked_skill.py,sha256=8RHWHkHXqFuv7lEe1PuQoK1hTO3kBQ7ILKm9kCEWqNs,667
|
|
51
52
|
waldiez/models/agents/agent/nested_chat.py,sha256=VKzHI38CUCnOlB6oBdO7CJdCk-wmG0aGXIkWpJPa4-Q,1757
|
|
@@ -84,8 +85,8 @@ waldiez/models/model/model_data.py,sha256=pDPKUbltaXWjCuDArgwTOEHw_igfk_DkxzFzdn
|
|
|
84
85
|
waldiez/models/skill/__init__.py,sha256=rU88bajKOGMYoHFcE8MP0jW9H0MswbQmvz5wxS35BYE,169
|
|
85
86
|
waldiez/models/skill/skill.py,sha256=fhsAI413an2_d4DBIkf7dzEuWk6rGs2t4sl97a4dj20,3473
|
|
86
87
|
waldiez/models/skill/skill_data.py,sha256=RTWn8Od6w7g-nRIpsS29sqZ8sPm5dCPiK7-qXmU-KD4,815
|
|
87
|
-
waldiez-0.1.
|
|
88
|
-
waldiez-0.1.
|
|
89
|
-
waldiez-0.1.
|
|
90
|
-
waldiez-0.1.
|
|
91
|
-
waldiez-0.1.
|
|
88
|
+
waldiez-0.1.11.dist-info/METADATA,sha256=hzcUFwIJ4SXtYWeEbhfTNy8A7fkVupJFm5GJhfCbuOg,9288
|
|
89
|
+
waldiez-0.1.11.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
|
|
90
|
+
waldiez-0.1.11.dist-info/entry_points.txt,sha256=5Po4yQXPa_QEdtTevpEBgr3rGoIvDMeQuJR2zqwBLBo,45
|
|
91
|
+
waldiez-0.1.11.dist-info/licenses/LICENSE,sha256=VQEHM6WMQLRu1qaGl3GWsoOknDwro-69eGo4NLIJPIM,1064
|
|
92
|
+
waldiez-0.1.11.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|