waldiez 0.4.6__py3-none-any.whl → 0.4.8__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.

Files changed (244) hide show
  1. waldiez/__init__.py +5 -5
  2. waldiez/_version.py +1 -1
  3. waldiez/cli.py +112 -73
  4. waldiez/exporter.py +61 -19
  5. waldiez/exporting/__init__.py +25 -6
  6. waldiez/exporting/agent/__init__.py +7 -3
  7. waldiez/exporting/agent/code_execution.py +114 -0
  8. waldiez/exporting/agent/exporter.py +354 -0
  9. waldiez/exporting/agent/extras/__init__.py +15 -0
  10. waldiez/exporting/agent/extras/captain_agent_extras.py +315 -0
  11. waldiez/exporting/agent/extras/group/target.py +178 -0
  12. waldiez/exporting/agent/extras/group_manager_agent_extas.py +500 -0
  13. waldiez/exporting/agent/extras/group_member_extras.py +181 -0
  14. waldiez/exporting/agent/extras/handoffs/__init__.py +19 -0
  15. waldiez/exporting/agent/extras/handoffs/after_work.py +78 -0
  16. waldiez/exporting/agent/extras/handoffs/available.py +74 -0
  17. waldiez/exporting/agent/extras/handoffs/condition.py +158 -0
  18. waldiez/exporting/agent/extras/handoffs/handoff.py +171 -0
  19. waldiez/exporting/agent/extras/handoffs/target.py +189 -0
  20. waldiez/exporting/agent/extras/rag/__init__.py +10 -0
  21. waldiez/exporting/agent/{utils/rag_user/chroma_utils.py → extras/rag/chroma_extras.py} +16 -15
  22. waldiez/exporting/agent/{utils/rag_user/mongo_utils.py → extras/rag/mongo_extras.py} +10 -10
  23. waldiez/exporting/agent/{utils/rag_user/pgvector_utils.py → extras/rag/pgvector_extras.py} +13 -13
  24. waldiez/exporting/agent/{utils/rag_user/qdrant_utils.py → extras/rag/qdrant_extras.py} +13 -13
  25. waldiez/exporting/agent/{utils/rag_user/vector_db.py → extras/rag/vector_db_extras.py} +59 -46
  26. waldiez/exporting/agent/extras/rag_user_proxy_agent_extras.py +245 -0
  27. waldiez/exporting/agent/extras/reasoning_agent_extras.py +88 -0
  28. waldiez/exporting/agent/factory.py +95 -0
  29. waldiez/exporting/agent/processor.py +150 -0
  30. waldiez/exporting/agent/system_message.py +36 -0
  31. waldiez/exporting/agent/termination.py +50 -0
  32. waldiez/exporting/chats/__init__.py +7 -3
  33. waldiez/exporting/chats/exporter.py +97 -0
  34. waldiez/exporting/chats/factory.py +65 -0
  35. waldiez/exporting/chats/processor.py +226 -0
  36. waldiez/exporting/chats/utils/__init__.py +6 -5
  37. waldiez/exporting/chats/utils/common.py +11 -45
  38. waldiez/exporting/chats/utils/group.py +55 -0
  39. waldiez/exporting/chats/utils/nested.py +37 -52
  40. waldiez/exporting/chats/utils/sequential.py +72 -61
  41. waldiez/exporting/chats/utils/{single_chat.py → single.py} +48 -50
  42. waldiez/exporting/core/__init__.py +196 -0
  43. waldiez/exporting/core/constants.py +17 -0
  44. waldiez/exporting/core/content.py +69 -0
  45. waldiez/exporting/core/context.py +244 -0
  46. waldiez/exporting/core/enums.py +89 -0
  47. waldiez/exporting/core/errors.py +19 -0
  48. waldiez/exporting/core/exporter.py +390 -0
  49. waldiez/exporting/core/exporters.py +67 -0
  50. waldiez/exporting/core/extras/__init__.py +39 -0
  51. waldiez/exporting/core/extras/agent_extras/__init__.py +27 -0
  52. waldiez/exporting/core/extras/agent_extras/captain_extras.py +57 -0
  53. waldiez/exporting/core/extras/agent_extras/group_manager_extras.py +102 -0
  54. waldiez/exporting/core/extras/agent_extras/rag_user_extras.py +53 -0
  55. waldiez/exporting/core/extras/agent_extras/reasoning_extras.py +68 -0
  56. waldiez/exporting/core/extras/agent_extras/standard_extras.py +263 -0
  57. waldiez/exporting/core/extras/base.py +241 -0
  58. waldiez/exporting/core/extras/chat_extras.py +118 -0
  59. waldiez/exporting/core/extras/flow_extras.py +70 -0
  60. waldiez/exporting/core/extras/model_extras.py +73 -0
  61. waldiez/exporting/core/extras/path_resolver.py +93 -0
  62. waldiez/exporting/core/extras/serializer.py +138 -0
  63. waldiez/exporting/core/extras/tool_extras.py +82 -0
  64. waldiez/exporting/core/protocols.py +259 -0
  65. waldiez/exporting/core/result.py +705 -0
  66. waldiez/exporting/core/types.py +329 -0
  67. waldiez/exporting/core/utils/__init__.py +11 -0
  68. waldiez/exporting/core/utils/comment.py +33 -0
  69. waldiez/exporting/core/utils/llm_config.py +117 -0
  70. waldiez/exporting/core/validation.py +96 -0
  71. waldiez/exporting/flow/__init__.py +6 -2
  72. waldiez/exporting/flow/execution_generator.py +193 -0
  73. waldiez/exporting/flow/exporter.py +107 -0
  74. waldiez/exporting/flow/factory.py +94 -0
  75. waldiez/exporting/flow/file_generator.py +214 -0
  76. waldiez/exporting/flow/merger.py +387 -0
  77. waldiez/exporting/flow/orchestrator.py +411 -0
  78. waldiez/exporting/flow/utils/__init__.py +9 -36
  79. waldiez/exporting/flow/utils/common.py +206 -0
  80. waldiez/exporting/flow/utils/importing.py +373 -0
  81. waldiez/exporting/flow/utils/linting.py +200 -0
  82. waldiez/exporting/flow/utils/{logging_utils.py → logging.py} +23 -9
  83. waldiez/exporting/models/__init__.py +3 -1
  84. waldiez/exporting/models/exporter.py +233 -0
  85. waldiez/exporting/models/factory.py +66 -0
  86. waldiez/exporting/models/processor.py +139 -0
  87. waldiez/exporting/tools/__init__.py +11 -0
  88. waldiez/exporting/tools/exporter.py +207 -0
  89. waldiez/exporting/tools/factory.py +57 -0
  90. waldiez/exporting/tools/processor.py +248 -0
  91. waldiez/exporting/tools/registration.py +133 -0
  92. waldiez/io/__init__.py +128 -0
  93. waldiez/io/_ws.py +199 -0
  94. waldiez/io/models/__init__.py +60 -0
  95. waldiez/io/models/base.py +66 -0
  96. waldiez/io/models/constants.py +78 -0
  97. waldiez/io/models/content/__init__.py +23 -0
  98. waldiez/io/models/content/audio.py +43 -0
  99. waldiez/io/models/content/base.py +45 -0
  100. waldiez/io/models/content/file.py +43 -0
  101. waldiez/io/models/content/image.py +96 -0
  102. waldiez/io/models/content/text.py +37 -0
  103. waldiez/io/models/content/video.py +43 -0
  104. waldiez/io/models/user_input.py +269 -0
  105. waldiez/io/models/user_response.py +215 -0
  106. waldiez/io/mqtt.py +681 -0
  107. waldiez/io/redis.py +782 -0
  108. waldiez/io/structured.py +419 -0
  109. waldiez/io/utils.py +184 -0
  110. waldiez/io/ws.py +298 -0
  111. waldiez/logger.py +481 -0
  112. waldiez/models/__init__.py +108 -51
  113. waldiez/models/agents/__init__.py +34 -70
  114. waldiez/models/agents/agent/__init__.py +10 -4
  115. waldiez/models/agents/agent/agent.py +466 -65
  116. waldiez/models/agents/agent/agent_data.py +119 -47
  117. waldiez/models/agents/agent/agent_type.py +13 -2
  118. waldiez/models/agents/agent/code_execution.py +12 -12
  119. waldiez/models/agents/agent/human_input_mode.py +8 -0
  120. waldiez/models/agents/agent/{linked_skill.py → linked_tool.py} +7 -7
  121. waldiez/models/agents/agent/nested_chat.py +35 -7
  122. waldiez/models/agents/agent/termination_message.py +30 -22
  123. waldiez/models/agents/{swarm_agent → agent}/update_system_message.py +22 -22
  124. waldiez/models/agents/agents.py +58 -63
  125. waldiez/models/agents/assistant/assistant.py +4 -4
  126. waldiez/models/agents/assistant/assistant_data.py +13 -1
  127. waldiez/models/agents/{captain_agent → captain}/captain_agent.py +5 -5
  128. waldiez/models/agents/{captain_agent → captain}/captain_agent_data.py +5 -5
  129. waldiez/models/agents/extra_requirements.py +11 -16
  130. waldiez/models/agents/group_manager/group_manager.py +103 -13
  131. waldiez/models/agents/group_manager/group_manager_data.py +36 -14
  132. waldiez/models/agents/group_manager/speakers.py +77 -24
  133. waldiez/models/agents/{rag_user → rag_user_proxy}/__init__.py +16 -16
  134. waldiez/models/agents/rag_user_proxy/rag_user_proxy.py +64 -0
  135. waldiez/models/agents/{rag_user/rag_user_data.py → rag_user_proxy/rag_user_proxy_data.py} +6 -5
  136. waldiez/models/agents/{rag_user → rag_user_proxy}/retrieve_config.py +182 -114
  137. waldiez/models/agents/{rag_user → rag_user_proxy}/vector_db_config.py +13 -13
  138. waldiez/models/agents/reasoning/reasoning_agent.py +6 -6
  139. waldiez/models/agents/reasoning/reasoning_agent_data.py +110 -63
  140. waldiez/models/agents/reasoning/reasoning_agent_reason_config.py +38 -10
  141. waldiez/models/agents/user_proxy/user_proxy.py +11 -7
  142. waldiez/models/agents/user_proxy/user_proxy_data.py +2 -2
  143. waldiez/models/chat/__init__.py +2 -1
  144. waldiez/models/chat/chat.py +166 -87
  145. waldiez/models/chat/chat_data.py +99 -136
  146. waldiez/models/chat/chat_message.py +33 -23
  147. waldiez/models/chat/chat_nested.py +31 -30
  148. waldiez/models/chat/chat_summary.py +10 -8
  149. waldiez/models/common/__init__.py +52 -2
  150. waldiez/models/common/ag2_version.py +1 -1
  151. waldiez/models/common/base.py +38 -7
  152. waldiez/models/common/dict_utils.py +42 -17
  153. waldiez/models/common/handoff.py +459 -0
  154. waldiez/models/common/id_generator.py +19 -0
  155. waldiez/models/common/method_utils.py +130 -68
  156. waldiez/{exporting/base/utils → models/common}/naming.py +38 -61
  157. waldiez/models/common/waldiez_version.py +37 -0
  158. waldiez/models/flow/__init__.py +9 -2
  159. waldiez/models/flow/connection.py +18 -0
  160. waldiez/models/flow/flow.py +311 -215
  161. waldiez/models/flow/flow_data.py +207 -40
  162. waldiez/models/flow/info.py +85 -0
  163. waldiez/models/flow/naming.py +131 -0
  164. waldiez/models/model/__init__.py +7 -1
  165. waldiez/models/model/extra_requirements.py +3 -12
  166. waldiez/models/model/model.py +76 -21
  167. waldiez/models/model/model_data.py +108 -20
  168. waldiez/models/tool/__init__.py +16 -0
  169. waldiez/models/tool/extra_requirements.py +36 -0
  170. waldiez/models/{skill/skill.py → tool/tool.py} +88 -88
  171. waldiez/models/tool/tool_data.py +51 -0
  172. waldiez/models/tool/tool_type.py +8 -0
  173. waldiez/models/waldiez.py +97 -80
  174. waldiez/runner.py +114 -49
  175. waldiez/running/__init__.py +1 -1
  176. waldiez/running/environment.py +49 -68
  177. waldiez/running/gen_seq_diagram.py +16 -14
  178. waldiez/running/running.py +53 -34
  179. waldiez/utils/__init__.py +0 -4
  180. waldiez/utils/cli_extras/jupyter.py +5 -3
  181. waldiez/utils/cli_extras/runner.py +6 -4
  182. waldiez/utils/cli_extras/studio.py +6 -4
  183. waldiez/utils/conflict_checker.py +15 -9
  184. waldiez/utils/flaml_warnings.py +5 -5
  185. {waldiez-0.4.6.dist-info → waldiez-0.4.8.dist-info}/METADATA +235 -91
  186. waldiez-0.4.8.dist-info/RECORD +200 -0
  187. waldiez/exporting/agent/agent_exporter.py +0 -297
  188. waldiez/exporting/agent/utils/__init__.py +0 -23
  189. waldiez/exporting/agent/utils/captain_agent.py +0 -263
  190. waldiez/exporting/agent/utils/code_execution.py +0 -65
  191. waldiez/exporting/agent/utils/group_manager.py +0 -220
  192. waldiez/exporting/agent/utils/rag_user/__init__.py +0 -7
  193. waldiez/exporting/agent/utils/rag_user/rag_user.py +0 -209
  194. waldiez/exporting/agent/utils/reasoning.py +0 -36
  195. waldiez/exporting/agent/utils/swarm_agent.py +0 -469
  196. waldiez/exporting/agent/utils/teachability.py +0 -41
  197. waldiez/exporting/agent/utils/termination_message.py +0 -44
  198. waldiez/exporting/base/__init__.py +0 -25
  199. waldiez/exporting/base/agent_position.py +0 -75
  200. waldiez/exporting/base/base_exporter.py +0 -118
  201. waldiez/exporting/base/export_position.py +0 -48
  202. waldiez/exporting/base/import_position.py +0 -23
  203. waldiez/exporting/base/mixin.py +0 -137
  204. waldiez/exporting/base/utils/__init__.py +0 -18
  205. waldiez/exporting/base/utils/comments.py +0 -96
  206. waldiez/exporting/base/utils/path_check.py +0 -68
  207. waldiez/exporting/base/utils/to_string.py +0 -84
  208. waldiez/exporting/chats/chats_exporter.py +0 -240
  209. waldiez/exporting/chats/utils/swarm.py +0 -210
  210. waldiez/exporting/flow/flow_exporter.py +0 -528
  211. waldiez/exporting/flow/utils/agent_utils.py +0 -204
  212. waldiez/exporting/flow/utils/chat_utils.py +0 -71
  213. waldiez/exporting/flow/utils/def_main.py +0 -77
  214. waldiez/exporting/flow/utils/flow_content.py +0 -202
  215. waldiez/exporting/flow/utils/flow_names.py +0 -116
  216. waldiez/exporting/flow/utils/importing_utils.py +0 -227
  217. waldiez/exporting/models/models_exporter.py +0 -199
  218. waldiez/exporting/models/utils.py +0 -174
  219. waldiez/exporting/skills/__init__.py +0 -9
  220. waldiez/exporting/skills/skills_exporter.py +0 -176
  221. waldiez/exporting/skills/utils.py +0 -369
  222. waldiez/models/agents/agent/teachability.py +0 -70
  223. waldiez/models/agents/rag_user/rag_user.py +0 -60
  224. waldiez/models/agents/swarm_agent/__init__.py +0 -50
  225. waldiez/models/agents/swarm_agent/after_work.py +0 -179
  226. waldiez/models/agents/swarm_agent/on_condition.py +0 -105
  227. waldiez/models/agents/swarm_agent/on_condition_available.py +0 -142
  228. waldiez/models/agents/swarm_agent/on_condition_target.py +0 -40
  229. waldiez/models/agents/swarm_agent/swarm_agent.py +0 -107
  230. waldiez/models/agents/swarm_agent/swarm_agent_data.py +0 -124
  231. waldiez/models/flow/utils.py +0 -232
  232. waldiez/models/skill/__init__.py +0 -16
  233. waldiez/models/skill/extra_requirements.py +0 -36
  234. waldiez/models/skill/skill_data.py +0 -53
  235. waldiez/models/skill/skill_type.py +0 -8
  236. waldiez/utils/pysqlite3_checker.py +0 -308
  237. waldiez/utils/rdps_checker.py +0 -122
  238. waldiez-0.4.6.dist-info/RECORD +0 -149
  239. /waldiez/models/agents/{captain_agent → captain}/__init__.py +0 -0
  240. /waldiez/models/agents/{captain_agent → captain}/captain_agent_lib_entry.py +0 -0
  241. {waldiez-0.4.6.dist-info → waldiez-0.4.8.dist-info}/WHEEL +0 -0
  242. {waldiez-0.4.6.dist-info → waldiez-0.4.8.dist-info}/entry_points.txt +0 -0
  243. {waldiez-0.4.6.dist-info → waldiez-0.4.8.dist-info}/licenses/LICENSE +0 -0
  244. {waldiez-0.4.6.dist-info → waldiez-0.4.8.dist-info}/licenses/NOTICE.md +0 -0
@@ -0,0 +1,189 @@
1
+ # SPDX-License-Identifier: Apache-2.0.
2
+ # Copyright (c) 2024 - 2025 Waldiez and contributors.
3
+ # pylint: disable=too-few-public-methods
4
+ """Transition target processor for Waldiez agents."""
5
+
6
+ from dataclasses import dataclass, field
7
+ from typing import Callable, Set
8
+
9
+ from waldiez.exporting.chats.utils.nested import get_nested_chat_queue
10
+ from waldiez.models import (
11
+ WaldiezAgent,
12
+ WaldiezAgentTarget,
13
+ WaldiezChat,
14
+ WaldiezGroupOrNestedTarget,
15
+ WaldiezRandomAgentTarget,
16
+ WaldiezTransitionTarget,
17
+ )
18
+
19
+
20
+ @dataclass
21
+ class TargetResult:
22
+ """Result from processing a transition target.
23
+
24
+ Attributes
25
+ ----------
26
+ content : str
27
+ Content to be used for the target processing.
28
+ before_content : str
29
+ Content to be placed before the target processing.
30
+ extra_imports : Set[str]
31
+ Additional imports required for the target processing.
32
+ """
33
+
34
+ content: str = ""
35
+ before_content: str = ""
36
+ extra_imports: Set[str] = field(default_factory=set) # pyright: ignore
37
+
38
+
39
+ class TransitionTargetProcessor:
40
+ """Processor for transition targets."""
41
+
42
+ def __init__(
43
+ self,
44
+ agent: WaldiezAgent,
45
+ agent_names: dict[str, str],
46
+ chat_names: dict[str, str],
47
+ all_chats: list[WaldiezChat],
48
+ serializer: Callable[..., str],
49
+ ) -> None:
50
+ """Initialize the processor with agent names and context.
51
+
52
+ Parameters
53
+ ----------
54
+ agent_names : dict[str, str]
55
+ Mapping of agent IDs to their names.
56
+ """
57
+ self.agent_names = agent_names
58
+ self.chat_names = chat_names
59
+ self.agent = agent
60
+ self.agent_name = agent_names[agent.id]
61
+ self.all_chats = all_chats
62
+ self.serializer = serializer
63
+
64
+ def process(self, target: WaldiezTransitionTarget) -> TargetResult:
65
+ """Process transition target based on its type.
66
+
67
+ Parameters
68
+ ----------
69
+ target : WaldiezTransitionTarget
70
+ The transition target to process.
71
+
72
+ Returns
73
+ -------
74
+ TargetResult
75
+ The processed result containing the target string,
76
+ before_content code, and extra imports.
77
+
78
+ Raises
79
+ ------
80
+ ValueError
81
+ If the target type is unknown.
82
+ """
83
+ result = TargetResult()
84
+ where = "autogen.agentchat.group"
85
+ if target.target_type == "GroupManagerTarget":
86
+ where += ".targets.group_manager_target"
87
+ what = target.target_type
88
+ result.extra_imports.add(f"from {where} import {what}")
89
+
90
+ processors: dict[str, Callable[[WaldiezTransitionTarget], str]] = {
91
+ "AgentTarget": self._process_agent_target,
92
+ "RandomAgentTarget": self._process_random_agent_target,
93
+ "GroupChatTarget": self._process_group_chat_target,
94
+ "NestedChatTarget": self._process_nested_chat_target,
95
+ "AskUserTarget": self._process_simple_target,
96
+ "GroupManagerTarget": self._process_simple_target,
97
+ "RevertToUserTarget": self._process_simple_target,
98
+ "StayTarget": self._process_simple_target,
99
+ "TerminateTarget": self._process_simple_target,
100
+ }
101
+
102
+ processor = processors.get(target.target_type)
103
+ if not processor:
104
+ raise ValueError(f"Unknown target type: {target.target_type}")
105
+
106
+ result.content = processor(target)
107
+
108
+ # Special handling for nested chat targets
109
+ if target.target_type == "NestedChatTarget":
110
+ nested_result = self._process_nested_chat_target_full(target)
111
+ result.before_content = nested_result.before_content
112
+
113
+ return result
114
+
115
+ def _process_agent_target(self, target: WaldiezTransitionTarget) -> str:
116
+ """Process agent target."""
117
+ if not isinstance(target, WaldiezAgentTarget):
118
+ raise ValueError(
119
+ "Expected WaldiezAgentTarget for agent target processing."
120
+ )
121
+ agent_name = self.agent_names[target.value[0]]
122
+ return f"AgentTarget({agent_name})"
123
+
124
+ def _process_random_agent_target(
125
+ self, target: WaldiezTransitionTarget
126
+ ) -> str:
127
+ """Process random agent target."""
128
+ if not isinstance(target, WaldiezRandomAgentTarget):
129
+ raise ValueError(
130
+ "Expected WaldiezRandomAgentTarget"
131
+ " for random agent target processing."
132
+ )
133
+ agent_vars = [self.agent_names[agent_id] for agent_id in target.value]
134
+ agents_str = ", ".join(agent_vars)
135
+ return f"RandomAgentTarget([{agents_str}])"
136
+
137
+ def _process_group_chat_target(
138
+ self, target: WaldiezTransitionTarget
139
+ ) -> str:
140
+ """Process group chat target."""
141
+ if not isinstance(target, WaldiezGroupOrNestedTarget):
142
+ raise ValueError(
143
+ "Expected WaldiezGroupOrNestedTarget for group chat target "
144
+ "processing."
145
+ )
146
+ chat_name = self.chat_names[target.value[0]]
147
+ return f"GroupChatTarget({chat_name})"
148
+
149
+ def _process_nested_chat_target(self, _: WaldiezTransitionTarget) -> str:
150
+ """Process nested chat target (simple string only)."""
151
+ chat_name = f"{self.agent_name}_handoff_nested_chat_queue"
152
+ target_arg = f'nested_chat_config={{"chat_queue": {chat_name}}}'
153
+ return f"NestedChatTarget({target_arg})"
154
+
155
+ def _process_nested_chat_target_full(
156
+ self, _: WaldiezTransitionTarget
157
+ ) -> TargetResult:
158
+ """Process nested chat target with full configuration."""
159
+ result = TargetResult()
160
+
161
+ chat_queue, extra_methods = get_nested_chat_queue(
162
+ nested_chat=self.agent.data.nested_chats[0],
163
+ agent=self.agent,
164
+ agent_names=self.agent_names,
165
+ chat_names=self.chat_names,
166
+ all_chats=self.all_chats,
167
+ serializer=self.serializer,
168
+ )
169
+
170
+ chat_name = f"{self.agent_name}_handoff_nested_chat_queue"
171
+
172
+ if extra_methods:
173
+ result.before_content += "\n".join(extra_methods) + "\n"
174
+
175
+ result.before_content += (
176
+ f"{chat_name}: list[dict[str, Any]] = {chat_queue}\n\n"
177
+ )
178
+ return result
179
+
180
+ # pylint: disable=no-self-use
181
+ def _process_simple_target(self, target: WaldiezTransitionTarget) -> str:
182
+ """Process simple targets that don't need parameters.
183
+
184
+ Parameters
185
+ ----------
186
+ target : WaldiezTransitionTarget
187
+ The target to process.
188
+ """
189
+ return f"{target.target_type}()"
@@ -0,0 +1,10 @@
1
+ # SPDX-License-Identifier: Apache-2.0.
2
+ # Copyright (c) 2024 - 2025 Waldiez and contributors.
3
+ """Agent exporter rag extras."""
4
+
5
+ from .vector_db_extras import VectorDBExtras, get_vector_db_extras
6
+
7
+ __all__ = [
8
+ "get_vector_db_extras",
9
+ "VectorDBExtras",
10
+ ]
@@ -3,24 +3,24 @@
3
3
  """Get chroma db related imports and content."""
4
4
 
5
5
  from pathlib import Path
6
- from typing import Set, Tuple
6
+ from typing import Set
7
7
 
8
- from waldiez.models import WaldiezRagUser
8
+ from waldiez.models import WaldiezRagUserProxy
9
9
 
10
10
 
11
- def _get_chroma_client_string(agent: WaldiezRagUser) -> Tuple[str, str]:
11
+ def _get_chroma_client_string(agent: WaldiezRagUserProxy) -> tuple[str, str]:
12
12
  """Get the ChromaVectorDB client string.
13
13
 
14
14
  Parameters
15
15
  ----------
16
- agent : WaldiezRagUser
16
+ agent : WaldiezRagUserProxy
17
17
  The agent.
18
18
  agent_name : str
19
19
  The agent's name.
20
20
 
21
21
  Returns
22
22
  -------
23
- Tuple[str, str]
23
+ tuple[str, str]
24
24
  The 'client' and what to import.
25
25
  """
26
26
  # TODO: also check `connection_url` (chroma in client-server mode)
@@ -46,20 +46,20 @@ def _get_chroma_client_string(agent: WaldiezRagUser) -> Tuple[str, str]:
46
46
 
47
47
 
48
48
  def _get_chroma_embedding_function_string(
49
- agent: WaldiezRagUser, agent_name: str
50
- ) -> Tuple[str, str, str]:
49
+ agent: WaldiezRagUserProxy, agent_name: str
50
+ ) -> tuple[str, str, str]:
51
51
  """Get the ChromaVectorDB embedding function string.
52
52
 
53
53
  Parameters
54
54
  ----------
55
- agent : WaldiezRagUser
55
+ agent : WaldiezRagUserProxy
56
56
  The agent.
57
57
  agent_name : str
58
58
  The agent's name.
59
59
 
60
60
  Returns
61
61
  -------
62
- Tuple[str, str, str]
62
+ tuple[str, str, str]
63
63
  The 'embedding_function', the import and the custom embedding function.
64
64
  """
65
65
  to_import = ""
@@ -68,8 +68,9 @@ def _get_chroma_embedding_function_string(
68
68
  vector_db_model = agent.retrieve_config.db_config.model
69
69
  if not agent.retrieve_config.use_custom_embedding:
70
70
  to_import = (
71
- "from chromadb.utils.embedding_functions "
72
- "import SentenceTransformerEmbeddingFunction"
71
+ "from chromadb.utils.embedding_functions."
72
+ "sentence_transformer_embedding_function import "
73
+ "SentenceTransformerEmbeddingFunction"
73
74
  )
74
75
  embedding_function_arg = "SentenceTransformerEmbeddingFunction("
75
76
  embedding_function_arg += f'model_name="{vector_db_model}")'
@@ -84,20 +85,20 @@ def _get_chroma_embedding_function_string(
84
85
 
85
86
 
86
87
  def get_chroma_db_args(
87
- agent: WaldiezRagUser, agent_name: str
88
- ) -> Tuple[str, Set[str], str, str]:
88
+ agent: WaldiezRagUserProxy, agent_name: str
89
+ ) -> tuple[str, Set[str], str, str]:
89
90
  """Get the 'kwargs to use for ChromaVectorDB.
90
91
 
91
92
  Parameters
92
93
  ----------
93
- agent : WaldiezRagUser
94
+ agent : WaldiezRagUserProxy
94
95
  The agent.
95
96
  agent_name : str
96
97
  The agent's name.
97
98
 
98
99
  Returns
99
100
  -------
100
- Tuple[str, Set[str], str]
101
+ tuple[str, Set[str], str]
101
102
 
102
103
  - The 'kwargs' string.
103
104
  - What to import.
@@ -2,26 +2,26 @@
2
2
  # Copyright (c) 2024 - 2025 Waldiez and contributors.
3
3
  """Get mongodb related content and imports."""
4
4
 
5
- from typing import Set, Tuple
5
+ from typing import Set
6
6
 
7
- from waldiez.models import WaldiezRagUser
7
+ from waldiez.models import WaldiezRagUserProxy
8
8
 
9
9
 
10
10
  def _get_mongodb_embedding_function_string(
11
- agent: WaldiezRagUser, agent_name: str
12
- ) -> Tuple[str, str, str]:
11
+ agent: WaldiezRagUserProxy, agent_name: str
12
+ ) -> tuple[str, str, str]:
13
13
  """Get the MongoDBAtlasVectorDB embedding function string.
14
14
 
15
15
  Parameters
16
16
  ----------
17
- agent : WaldiezRagUser
17
+ agent : WaldiezRagUserProxy
18
18
  The agent.
19
19
  agent_name : str
20
20
  The agent's name.
21
21
 
22
22
  Returns
23
23
  -------
24
- Tuple[str, str, str]
24
+ tuple[str, str, str]
25
25
  The 'embedding_function', the import and the custom_embedding_function.
26
26
  """
27
27
  to_import = ""
@@ -45,20 +45,20 @@ def _get_mongodb_embedding_function_string(
45
45
 
46
46
 
47
47
  def get_mongodb_db_args(
48
- agent: WaldiezRagUser, agent_name: str
49
- ) -> Tuple[str, Set[str], str]:
48
+ agent: WaldiezRagUserProxy, agent_name: str
49
+ ) -> tuple[str, Set[str], str]:
50
50
  """Get the kwargs to use for MongoDBAtlasVectorDB.
51
51
 
52
52
  Parameters
53
53
  ----------
54
- agent : WaldiezRagUser
54
+ agent : WaldiezRagUserProxy
55
55
  The agent.
56
56
  agent_name : str
57
57
  The agent's name.
58
58
 
59
59
  Returns
60
60
  -------
61
- Tuple[str, Set[str], str]
61
+ tuple[str, Set[str], str]
62
62
  The kwargs to use, what to import and the custom_embedding_function.
63
63
  """
64
64
  embedding_function_arg, to_import_embedding, embedding_function_body = (
@@ -2,22 +2,22 @@
2
2
  # Copyright (c) 2024 - 2025 Waldiez and contributors.
3
3
  """Get pgvector related content and imports."""
4
4
 
5
- from typing import Set, Tuple
5
+ from typing import Set
6
6
 
7
- from waldiez.models import WaldiezRagUser
7
+ from waldiez.models import WaldiezRagUserProxy
8
8
 
9
9
 
10
- def _get_pgvector_client_string(agent: WaldiezRagUser) -> Tuple[str, str]:
10
+ def _get_pgvector_client_string(agent: WaldiezRagUserProxy) -> tuple[str, str]:
11
11
  """Get the PGVectorDB client string.
12
12
 
13
13
  Parameters
14
14
  ----------
15
- agent : WaldiezRagUser
15
+ agent : WaldiezRagUserProxy
16
16
  The agent.
17
17
 
18
18
  Returns
19
19
  -------
20
- Tuple[str, str]
20
+ tuple[str, str]
21
21
  The 'client' and what to import.
22
22
  """
23
23
  to_import = "import psycopg"
@@ -28,20 +28,20 @@ def _get_pgvector_client_string(agent: WaldiezRagUser) -> Tuple[str, str]:
28
28
 
29
29
 
30
30
  def _get_pgvector_embedding_function_string(
31
- agent: WaldiezRagUser, agent_name: str
32
- ) -> Tuple[str, str, str]:
31
+ agent: WaldiezRagUserProxy, agent_name: str
32
+ ) -> tuple[str, str, str]:
33
33
  """Get the PGVectorDB embedding function string.
34
34
 
35
35
  Parameters
36
36
  ----------
37
- agent : WaldiezRagUser
37
+ agent : WaldiezRagUserProxy
38
38
  The agent.
39
39
  agent_name : str
40
40
  The agent's name.
41
41
 
42
42
  Returns
43
43
  -------
44
- Tuple[str, str, str]
44
+ tuple[str, str, str]
45
45
  The 'embedding_function', the import and the custom_embedding_function.
46
46
  """
47
47
  to_import = ""
@@ -65,20 +65,20 @@ def _get_pgvector_embedding_function_string(
65
65
 
66
66
 
67
67
  def get_pgvector_db_args(
68
- agent: WaldiezRagUser, agent_name: str
69
- ) -> Tuple[str, Set[str], str]:
68
+ agent: WaldiezRagUserProxy, agent_name: str
69
+ ) -> tuple[str, Set[str], str]:
70
70
  """Get the kwargs to use for PGVectorDB.
71
71
 
72
72
  Parameters
73
73
  ----------
74
- agent : WaldiezRagUser
74
+ agent : WaldiezRagUserProxy
75
75
  The agent.
76
76
  agent_name : str
77
77
  The agent's name.
78
78
 
79
79
  Returns
80
80
  -------
81
- Tuple[str, Set[str], str]
81
+ tuple[tuple[str,str], Set[str], str]
82
82
  The kwargs to use, what to import and the custom_embedding_function.
83
83
  """
84
84
  client_str, to_import_client = _get_pgvector_client_string(agent)
@@ -3,24 +3,24 @@
3
3
  """Get qdrant db related imports and content."""
4
4
 
5
5
  from pathlib import Path
6
- from typing import Set, Tuple
6
+ from typing import Set
7
7
 
8
- from waldiez.models import WaldiezRagUser
8
+ from waldiez.models import WaldiezRagUserProxy
9
9
 
10
10
 
11
- def _get_qdrant_client_string(agent: WaldiezRagUser) -> Tuple[str, str]:
11
+ def _get_qdrant_client_string(agent: WaldiezRagUserProxy) -> tuple[str, str]:
12
12
  """Get the QdrantVectorDB client string.
13
13
 
14
14
  Parameters
15
15
  ----------
16
- agent : WaldiezRagUser
16
+ agent : WaldiezRagUserProxy
17
17
  The agent.
18
18
  agent_name : str
19
19
  The agent's name.
20
20
 
21
21
  Returns
22
22
  -------
23
- Tuple[str, str, str]
23
+ tuple[str, str, str]
24
24
  The 'client' argument, and the module to import.
25
25
  """
26
26
  to_import: str = "from qdrant_client import QdrantClient"
@@ -44,20 +44,20 @@ def _get_qdrant_client_string(agent: WaldiezRagUser) -> Tuple[str, str]:
44
44
 
45
45
 
46
46
  def _get_qdrant_embedding_function_string(
47
- agent: WaldiezRagUser, agent_name: str
48
- ) -> Tuple[str, str, str]:
47
+ agent: WaldiezRagUserProxy, agent_name: str
48
+ ) -> tuple[str, str, str]:
49
49
  """Get the QdrantVectorDB embedding function string.
50
50
 
51
51
  Parameters
52
52
  ----------
53
- agent : WaldiezRagUser
53
+ agent : WaldiezRagUserProxy
54
54
  The agent.
55
55
  agent_name : str
56
56
  The agent's name.
57
57
 
58
58
  Returns
59
59
  -------
60
- Tuple[str, str, str]
60
+ tuple[str, str, str]
61
61
  The 'embedding_function', the module to import
62
62
  and the custom_embedding_function if used.
63
63
  """
@@ -83,20 +83,20 @@ def _get_qdrant_embedding_function_string(
83
83
 
84
84
 
85
85
  def get_qdrant_db_args(
86
- agent: WaldiezRagUser, agent_name: str
87
- ) -> Tuple[str, Set[str], str]:
86
+ agent: WaldiezRagUserProxy, agent_name: str
87
+ ) -> tuple[str, Set[str], str]:
88
88
  """Get the kwargs to use for QdrantVectorDB.
89
89
 
90
90
  Parameters
91
91
  ----------
92
- agent : WaldiezRagUser
92
+ agent : WaldiezRagUserProxy
93
93
  The agent.
94
94
  agent_name : str
95
95
  The agent's name.
96
96
 
97
97
  Returns
98
98
  -------
99
- Tuple[str, Set[str], str]
99
+ tuple[str, Set[str], str]
100
100
  The kwargs to use, the imports and the embedding function body if used.
101
101
  """
102
102
  client_str, to_import_client = _get_qdrant_client_string(agent)
@@ -4,51 +4,30 @@
4
4
  # pylint: disable=line-too-long
5
5
  """Vector DB exporting utils for RAG user agents."""
6
6
 
7
- from typing import Any, Set, Tuple
7
+ from dataclasses import dataclass, field
8
+ from typing import Any
8
9
 
9
- from waldiez.models import WaldiezRagUser
10
+ from waldiez.models import WaldiezRagUserProxy
10
11
 
11
- from .chroma_utils import get_chroma_db_args
12
- from .mongo_utils import get_mongodb_db_args
13
- from .pgvector_utils import get_pgvector_db_args
14
- from .qdrant_utils import get_qdrant_db_args
12
+ from .chroma_extras import get_chroma_db_args
13
+ from .mongo_extras import get_mongodb_db_args
14
+ from .pgvector_extras import get_pgvector_db_args
15
+ from .qdrant_extras import get_qdrant_db_args
15
16
 
16
17
 
17
- def _get_metadata_arg(
18
- agent: WaldiezRagUser,
19
- ) -> str:
20
- """Get the metadata arg.
21
-
22
- Parameters
23
- ----------
24
- agent : WaldiezRagUser
25
- The agent.
18
+ @dataclass
19
+ class VectorDBExtras:
20
+ """Vector DB exporting extras for RAG user agents."""
26
21
 
27
- Returns
28
- -------
29
- str
30
- The metadata arg.
31
- """
32
- metadata_arg = ""
33
- if agent.retrieve_config.db_config.metadata:
34
- tab = " "
35
- indent = tab * 3
36
- metadata_arg += f"{indent}metadata={{" + "\n"
37
- for key, value in agent.retrieve_config.db_config.metadata.items():
38
- value_string: Any = f'"{value}"'
39
- if str(value).isdigit():
40
- value_string = int(value)
41
- elif str(value).replace(".", "").isdigit():
42
- value_string = float(value)
43
- metadata_arg += f'{indent} "{key}": {value_string},' + "\n"
44
- metadata_arg += f"{indent}}}," + "\n"
45
- return metadata_arg
22
+ before_arg: str
23
+ vector_db_arg: str
24
+ imports: set[str] = field(default_factory=set[str])
46
25
 
47
26
 
48
- def get_rag_user_vector_db_string(
49
- agent: WaldiezRagUser,
27
+ def get_vector_db_extras(
28
+ agent: WaldiezRagUserProxy,
50
29
  agent_name: str,
51
- ) -> Tuple[str, str, Set[str]]:
30
+ ) -> VectorDBExtras:
52
31
  """Get the RAG user vector db string.
53
32
 
54
33
  The vector db can be one of the following:
@@ -62,20 +41,20 @@ def get_rag_user_vector_db_string(
62
41
 
63
42
  Parameters
64
43
  ----------
65
- agent : WaldiezRagUser
44
+ agent : WaldiezRagUserProxy
66
45
  The agent.
67
46
  agent_name : str
68
47
  The agent's name.
69
48
 
70
49
  Returns
71
50
  -------
72
- Tuple[str, str, Set[str]]
51
+ tuple[str, str, Set[str]]
73
52
  The content before the arg if any, the arg and the related imports.
74
53
  """
75
54
  before = ""
76
- imports: Set[str] = set()
55
+ imports: set[str] = set()
77
56
  ef_body: str = ""
78
- db_imports: Set[str] = set()
57
+ db_imports: set[str] = set()
79
58
  kwarg_string = ""
80
59
  content_before = ""
81
60
  vdb_class = "ChromaVectorDB"
@@ -97,14 +76,14 @@ def get_rag_user_vector_db_string(
97
76
  if agent.retrieve_config.vector_db == "mongodb":
98
77
  vdb_class = "MongoDBAtlasVectorDB"
99
78
  imports.add(
100
- "from autogen.agentchat.contrib.vectordb.mongo import MongoDBAtlasVectorDB"
79
+ "from autogen.agentchat.contrib.vectordb.mongodb import MongoDBAtlasVectorDB"
101
80
  )
102
81
  kwarg_string, db_imports, ef_body = get_mongodb_db_args(
103
82
  agent, agent_name
104
83
  )
105
84
  if agent.retrieve_config.vector_db == "pgvector":
106
85
  imports.add(
107
- "from autogen.agentchat.contrib.vectordb.pgvector import PGVectorDB"
86
+ "from autogen.agentchat.contrib.vectordb.pgvectordb import PGVectorDB"
108
87
  )
109
88
  vdb_class = "PGVectorDB"
110
89
  kwarg_string, db_imports, ef_body = get_pgvector_db_args(
@@ -114,9 +93,43 @@ def get_rag_user_vector_db_string(
114
93
  before += "\n" + f"{content_before}"
115
94
  if ef_body:
116
95
  before += "\n" + f"{ef_body}" + "\n"
117
- if db_imports:
118
- imports.update(db_imports)
96
+ imports.update(db_imports)
119
97
  kwarg_string += _get_metadata_arg(agent)
120
98
  vdb_arg = f"{vdb_class}(" + "\n"
121
99
  vdb_arg += kwarg_string + " )"
122
- return before, vdb_arg, imports
100
+ return VectorDBExtras(
101
+ before_arg=before,
102
+ vector_db_arg=vdb_arg,
103
+ imports=imports,
104
+ )
105
+
106
+
107
+ def _get_metadata_arg(
108
+ agent: WaldiezRagUserProxy,
109
+ ) -> str:
110
+ """Get the metadata arg.
111
+
112
+ Parameters
113
+ ----------
114
+ agent : WaldiezRagUserProxy
115
+ The agent.
116
+
117
+ Returns
118
+ -------
119
+ str
120
+ The metadata arg.
121
+ """
122
+ metadata_arg = ""
123
+ if agent.retrieve_config.db_config.metadata:
124
+ tab = " "
125
+ indent = tab * 3
126
+ metadata_arg += f"{indent}metadata={{" + "\n"
127
+ for key, value in agent.retrieve_config.db_config.metadata.items():
128
+ value_string: Any = f'"{value}"'
129
+ if str(value).isdigit():
130
+ value_string = int(value)
131
+ elif str(value).replace(".", "").isdigit():
132
+ value_string = float(value)
133
+ metadata_arg += f'{indent} "{key}": {value_string},' + "\n"
134
+ metadata_arg += f"{indent}}}," + "\n"
135
+ return metadata_arg