pygeai 0.1.51b3__py3-none-any.whl → 0.6.0b15__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 pygeai might be problematic. Click here for more details.

Files changed (648) hide show
  1. pygeai/__init__.py +9 -1
  2. pygeai/_docs/Makefile +20 -0
  3. pygeai/_docs/make.bat +35 -0
  4. pygeai/_docs/source/conf.py +117 -0
  5. pygeai/_docs/source/content/ai_lab/cli.rst +747 -0
  6. pygeai/_docs/source/content/ai_lab/models.rst +1734 -0
  7. pygeai/_docs/source/content/ai_lab/runner.rst +253 -0
  8. pygeai/_docs/source/content/ai_lab/spec.rst +431 -0
  9. pygeai/_docs/source/content/ai_lab/usage.rst +1011 -0
  10. pygeai/_docs/source/content/ai_lab.rst +102 -0
  11. pygeai/_docs/source/content/analytics.rst +598 -0
  12. pygeai/_docs/source/content/api_reference/admin.rst +161 -0
  13. pygeai/_docs/source/content/api_reference/assistant.rst +326 -0
  14. pygeai/_docs/source/content/api_reference/auth.rst +379 -0
  15. pygeai/_docs/source/content/api_reference/chat.rst +754 -0
  16. pygeai/_docs/source/content/api_reference/embeddings.rst +154 -0
  17. pygeai/_docs/source/content/api_reference/evaluation.rst +590 -0
  18. pygeai/_docs/source/content/api_reference/feedback.rst +237 -0
  19. pygeai/_docs/source/content/api_reference/files.rst +592 -0
  20. pygeai/_docs/source/content/api_reference/gam.rst +401 -0
  21. pygeai/_docs/source/content/api_reference/health.rst +58 -0
  22. pygeai/_docs/source/content/api_reference/project.rst +738 -0
  23. pygeai/_docs/source/content/api_reference/proxy.rst +318 -0
  24. pygeai/_docs/source/content/api_reference/rag.rst +710 -0
  25. pygeai/_docs/source/content/api_reference/rerank.rst +94 -0
  26. pygeai/_docs/source/content/api_reference/secrets.rst +495 -0
  27. pygeai/_docs/source/content/api_reference/usage_limits.rst +390 -0
  28. pygeai/_docs/source/content/api_reference.rst +58 -0
  29. pygeai/_docs/source/content/authentication.rst +295 -0
  30. pygeai/_docs/source/content/chat_gui.rst +121 -0
  31. pygeai/_docs/source/content/cli.rst +203 -0
  32. pygeai/_docs/source/content/debugger.rst +651 -0
  33. pygeai/_docs/source/content/intro.rst +67 -0
  34. pygeai/_docs/source/content/migration.rst +929 -0
  35. pygeai/_docs/source/content/modules.rst +7 -0
  36. pygeai/_docs/source/content/quickstart.rst +143 -0
  37. pygeai/_docs/source/content/samples.rst +394 -0
  38. pygeai/_docs/source/index.rst +75 -0
  39. pygeai/_docs/source/modules.rst +7 -0
  40. pygeai/_docs/source/pygeai.admin.rst +29 -0
  41. pygeai/_docs/source/pygeai.analytics.rst +53 -0
  42. pygeai/_docs/source/pygeai.assistant.data.rst +21 -0
  43. pygeai/_docs/source/pygeai.assistant.data_analyst.rst +29 -0
  44. pygeai/_docs/source/pygeai.assistant.rag.rst +53 -0
  45. pygeai/_docs/source/pygeai.assistant.rst +55 -0
  46. pygeai/_docs/source/pygeai.auth.rst +29 -0
  47. pygeai/_docs/source/pygeai.chat.rst +69 -0
  48. pygeai/_docs/source/pygeai.cli.commands.flows.rst +10 -0
  49. pygeai/_docs/source/pygeai.cli.commands.lab.rst +53 -0
  50. pygeai/_docs/source/pygeai.cli.commands.rst +222 -0
  51. pygeai/_docs/source/pygeai.cli.rst +62 -0
  52. pygeai/_docs/source/pygeai.cli.texts.rst +21 -0
  53. pygeai/_docs/source/pygeai.core.base.rst +53 -0
  54. pygeai/_docs/source/pygeai.core.common.rst +37 -0
  55. pygeai/_docs/source/pygeai.core.embeddings.rst +61 -0
  56. pygeai/_docs/source/pygeai.core.feedback.rst +37 -0
  57. pygeai/_docs/source/pygeai.core.files.rst +61 -0
  58. pygeai/_docs/source/pygeai.core.llm.rst +29 -0
  59. pygeai/_docs/source/pygeai.core.plugins.rst +37 -0
  60. pygeai/_docs/source/pygeai.core.rerank.rst +53 -0
  61. pygeai/_docs/source/pygeai.core.rst +63 -0
  62. pygeai/_docs/source/pygeai.core.secrets.rst +29 -0
  63. pygeai/_docs/source/pygeai.core.services.llm.rst +29 -0
  64. pygeai/_docs/source/pygeai.core.services.rst +37 -0
  65. pygeai/_docs/source/pygeai.core.utils.rst +37 -0
  66. pygeai/_docs/source/pygeai.dbg.rst +21 -0
  67. pygeai/_docs/source/pygeai.evaluation.dataset.rst +29 -0
  68. pygeai/_docs/source/pygeai.evaluation.plan.rst +29 -0
  69. pygeai/_docs/source/pygeai.evaluation.result.rst +29 -0
  70. pygeai/_docs/source/pygeai.evaluation.rst +31 -0
  71. pygeai/_docs/source/pygeai.flows.rst +29 -0
  72. pygeai/_docs/source/pygeai.gam.rst +29 -0
  73. pygeai/_docs/source/pygeai.health.rst +29 -0
  74. pygeai/_docs/source/pygeai.lab.agents.rst +37 -0
  75. pygeai/_docs/source/pygeai.lab.processes.rst +37 -0
  76. pygeai/_docs/source/pygeai.lab.rst +65 -0
  77. pygeai/_docs/source/pygeai.lab.spec.rst +29 -0
  78. pygeai/_docs/source/pygeai.lab.strategies.rst +37 -0
  79. pygeai/_docs/source/pygeai.lab.tools.rst +37 -0
  80. pygeai/_docs/source/pygeai.man.man1.rst +10 -0
  81. pygeai/_docs/source/pygeai.man.rst +18 -0
  82. pygeai/_docs/source/pygeai.migration.rst +29 -0
  83. pygeai/_docs/source/pygeai.organization.limits.rst +45 -0
  84. pygeai/_docs/source/pygeai.organization.rst +61 -0
  85. pygeai/_docs/source/pygeai.proxy.rst +53 -0
  86. pygeai/_docs/source/pygeai.rst +35 -0
  87. pygeai/_docs/source/pygeai.tests.admin.rst +21 -0
  88. pygeai/_docs/source/pygeai.tests.analytics.rst +45 -0
  89. pygeai/_docs/source/pygeai.tests.assistants.rag.rst +37 -0
  90. pygeai/_docs/source/pygeai.tests.assistants.rst +45 -0
  91. pygeai/_docs/source/pygeai.tests.auth.rst +29 -0
  92. pygeai/_docs/source/pygeai.tests.chat.rst +45 -0
  93. pygeai/_docs/source/pygeai.tests.cli.commands.lab.rst +37 -0
  94. pygeai/_docs/source/pygeai.tests.cli.commands.rst +165 -0
  95. pygeai/_docs/source/pygeai.tests.cli.docker.rst +10 -0
  96. pygeai/_docs/source/pygeai.tests.cli.rst +46 -0
  97. pygeai/_docs/source/pygeai.tests.core.base.data.rst +29 -0
  98. pygeai/_docs/source/pygeai.tests.core.base.rst +45 -0
  99. pygeai/_docs/source/pygeai.tests.core.common.data.rst +10 -0
  100. pygeai/_docs/source/pygeai.tests.core.common.rst +37 -0
  101. pygeai/_docs/source/pygeai.tests.core.embeddings.rst +37 -0
  102. pygeai/_docs/source/pygeai.tests.core.feedback.rst +21 -0
  103. pygeai/_docs/source/pygeai.tests.core.files.rst +53 -0
  104. pygeai/_docs/source/pygeai.tests.core.llm.rst +21 -0
  105. pygeai/_docs/source/pygeai.tests.core.plugins.rst +21 -0
  106. pygeai/_docs/source/pygeai.tests.core.rerank.rst +37 -0
  107. pygeai/_docs/source/pygeai.tests.core.rst +39 -0
  108. pygeai/_docs/source/pygeai.tests.core.secrets.rst +21 -0
  109. pygeai/_docs/source/pygeai.tests.core.services.rst +21 -0
  110. pygeai/_docs/source/pygeai.tests.core.utils.rst +21 -0
  111. pygeai/_docs/source/pygeai.tests.dbg.rst +21 -0
  112. pygeai/_docs/source/pygeai.tests.evaluation.dataset.rst +21 -0
  113. pygeai/_docs/source/pygeai.tests.evaluation.plan.rst +21 -0
  114. pygeai/_docs/source/pygeai.tests.evaluation.result.rst +21 -0
  115. pygeai/_docs/source/pygeai.tests.evaluation.rst +20 -0
  116. pygeai/_docs/source/pygeai.tests.gam.rst +21 -0
  117. pygeai/_docs/source/pygeai.tests.health.rst +21 -0
  118. pygeai/_docs/source/pygeai.tests.integration.assistants.rag.rst +21 -0
  119. pygeai/_docs/source/pygeai.tests.integration.assistants.rst +18 -0
  120. pygeai/_docs/source/pygeai.tests.integration.chat.rst +21 -0
  121. pygeai/_docs/source/pygeai.tests.integration.lab.agents.rst +69 -0
  122. pygeai/_docs/source/pygeai.tests.integration.lab.processes.rst +77 -0
  123. pygeai/_docs/source/pygeai.tests.integration.lab.reasoning_strategies.rst +37 -0
  124. pygeai/_docs/source/pygeai.tests.integration.lab.rst +21 -0
  125. pygeai/_docs/source/pygeai.tests.integration.lab.tools.rst +77 -0
  126. pygeai/_docs/source/pygeai.tests.integration.rst +20 -0
  127. pygeai/_docs/source/pygeai.tests.lab.agents.rst +29 -0
  128. pygeai/_docs/source/pygeai.tests.lab.processes.rst +29 -0
  129. pygeai/_docs/source/pygeai.tests.lab.rst +49 -0
  130. pygeai/_docs/source/pygeai.tests.lab.spec.rst +29 -0
  131. pygeai/_docs/source/pygeai.tests.lab.strategies.rst +29 -0
  132. pygeai/_docs/source/pygeai.tests.lab.tools.rst +29 -0
  133. pygeai/_docs/source/pygeai.tests.migration.rst +29 -0
  134. pygeai/_docs/source/pygeai.tests.organization.limits.rst +29 -0
  135. pygeai/_docs/source/pygeai.tests.organization.rst +53 -0
  136. pygeai/_docs/source/pygeai.tests.proxy.rst +61 -0
  137. pygeai/_docs/source/pygeai.tests.rst +33 -0
  138. pygeai/admin/clients.py +14 -11
  139. pygeai/admin/endpoints.py +2 -2
  140. pygeai/analytics/clients.py +505 -0
  141. pygeai/analytics/endpoints.py +35 -0
  142. pygeai/analytics/managers.py +606 -0
  143. pygeai/analytics/mappers.py +207 -0
  144. pygeai/analytics/responses.py +240 -0
  145. pygeai/assistant/clients.py +18 -45
  146. pygeai/assistant/data/clients.py +1 -0
  147. pygeai/assistant/data_analyst/clients.py +8 -12
  148. pygeai/assistant/managers.py +195 -157
  149. pygeai/assistant/mappers.py +4 -2
  150. pygeai/assistant/rag/clients.py +27 -67
  151. pygeai/assistant/rag/mappers.py +12 -6
  152. pygeai/assistant/rag/models.py +301 -159
  153. pygeai/auth/__init__.py +0 -0
  154. pygeai/auth/clients.py +129 -0
  155. pygeai/auth/endpoints.py +6 -0
  156. pygeai/chat/clients.py +308 -37
  157. pygeai/chat/endpoints.py +3 -0
  158. pygeai/chat/iris.py +2 -8
  159. pygeai/chat/managers.py +9 -6
  160. pygeai/chat/session.py +38 -0
  161. pygeai/chat/settings.py +6 -0
  162. pygeai/chat/ui.py +678 -0
  163. pygeai/cli/__init__.py +0 -1
  164. pygeai/cli/commands/admin.py +7 -10
  165. pygeai/cli/commands/analytics.py +533 -0
  166. pygeai/cli/commands/assistant.py +9 -9
  167. pygeai/cli/commands/auth.py +299 -0
  168. pygeai/cli/commands/base.py +71 -9
  169. pygeai/cli/commands/chat.py +676 -19
  170. pygeai/cli/commands/common.py +28 -24
  171. pygeai/cli/commands/configuration.py +66 -13
  172. pygeai/cli/commands/docs.py +105 -0
  173. pygeai/cli/commands/embeddings.py +58 -11
  174. pygeai/cli/commands/evaluation.py +38 -38
  175. pygeai/cli/commands/feedback.py +3 -4
  176. pygeai/cli/commands/files.py +7 -8
  177. pygeai/cli/commands/gam.py +85 -10
  178. pygeai/cli/commands/lab/ai_lab.py +340 -484
  179. pygeai/cli/commands/lab/options.py +8 -0
  180. pygeai/cli/commands/lab/spec.py +273 -0
  181. pygeai/cli/commands/lab/utils.py +13 -0
  182. pygeai/cli/commands/llm.py +6 -7
  183. pygeai/cli/commands/migrate.py +1064 -436
  184. pygeai/cli/commands/organization.py +516 -11
  185. pygeai/cli/commands/rag.py +13 -14
  186. pygeai/cli/commands/rerank.py +3 -5
  187. pygeai/cli/commands/secrets.py +8 -9
  188. pygeai/cli/commands/usage_limits.py +18 -20
  189. pygeai/cli/commands/validators.py +144 -1
  190. pygeai/cli/commands/version.py +4 -5
  191. pygeai/cli/error_handler.py +151 -0
  192. pygeai/cli/geai.py +170 -31
  193. pygeai/cli/geai_proxy.py +86 -25
  194. pygeai/cli/install_man.py +93 -22
  195. pygeai/cli/parsers.py +75 -25
  196. pygeai/cli/texts/help.py +265 -28
  197. pygeai/core/base/clients.py +53 -12
  198. pygeai/core/base/mappers.py +11 -2
  199. pygeai/core/base/session.py +95 -11
  200. pygeai/core/common/config.py +78 -14
  201. pygeai/core/common/exceptions.py +96 -6
  202. pygeai/core/embeddings/__init__.py +19 -0
  203. pygeai/core/embeddings/clients.py +23 -5
  204. pygeai/core/embeddings/managers.py +9 -4
  205. pygeai/core/embeddings/mappers.py +16 -2
  206. pygeai/core/embeddings/responses.py +9 -2
  207. pygeai/core/feedback/clients.py +8 -3
  208. pygeai/core/files/clients.py +23 -24
  209. pygeai/core/files/managers.py +121 -30
  210. pygeai/core/files/responses.py +4 -3
  211. pygeai/core/handlers.py +10 -1
  212. pygeai/core/llm/clients.py +22 -29
  213. pygeai/core/models.py +127 -11
  214. pygeai/core/plugins/clients.py +6 -6
  215. pygeai/core/rerank/clients.py +9 -3
  216. pygeai/core/rerank/managers.py +22 -5
  217. pygeai/core/secrets/clients.py +16 -37
  218. pygeai/core/services/response.py +18 -0
  219. pygeai/core/services/rest.py +159 -49
  220. pygeai/core/utils/__init__.py +0 -0
  221. pygeai/core/utils/console.py +83 -0
  222. pygeai/core/utils/parsers.py +32 -0
  223. pygeai/core/utils/validators.py +10 -0
  224. pygeai/dbg/__init__.py +3 -0
  225. pygeai/dbg/debugger.py +854 -14
  226. pygeai/evaluation/clients.py +7 -4
  227. pygeai/evaluation/dataset/clients.py +46 -44
  228. pygeai/evaluation/plan/clients.py +28 -26
  229. pygeai/evaluation/result/clients.py +38 -5
  230. pygeai/gam/clients.py +50 -28
  231. pygeai/gam/endpoints.py +2 -1
  232. pygeai/health/__init__.py +0 -0
  233. pygeai/health/clients.py +24 -0
  234. pygeai/health/endpoints.py +1 -0
  235. pygeai/lab/__init__.py +0 -90
  236. pygeai/lab/agents/clients.py +203 -162
  237. pygeai/lab/agents/endpoints.py +4 -0
  238. pygeai/lab/agents/mappers.py +57 -7
  239. pygeai/lab/clients.py +24 -0
  240. pygeai/lab/constants.py +3 -0
  241. pygeai/lab/managers.py +571 -541
  242. pygeai/lab/models.py +108 -19
  243. pygeai/lab/processes/clients.py +332 -340
  244. pygeai/lab/processes/mappers.py +3 -3
  245. pygeai/lab/runners.py +90 -0
  246. pygeai/lab/spec/__init__.py +0 -0
  247. pygeai/lab/spec/loader.py +24 -0
  248. pygeai/lab/spec/parsers.py +39 -0
  249. pygeai/lab/strategies/clients.py +67 -63
  250. pygeai/lab/strategies/mappers.py +1 -1
  251. pygeai/lab/tools/clients.py +85 -118
  252. pygeai/lab/tools/endpoints.py +4 -0
  253. pygeai/lab/tools/mappers.py +5 -5
  254. pygeai/man/man1/geai-proxy.1 +116 -0
  255. pygeai/man/man1/geai.1 +2580 -66
  256. pygeai/migration/__init__.py +33 -0
  257. pygeai/migration/strategies.py +468 -146
  258. pygeai/migration/tools.py +170 -3
  259. pygeai/organization/clients.py +245 -50
  260. pygeai/organization/endpoints.py +17 -8
  261. pygeai/organization/limits/clients.py +34 -32
  262. pygeai/organization/limits/managers.py +108 -49
  263. pygeai/organization/managers.py +347 -53
  264. pygeai/organization/mappers.py +102 -2
  265. pygeai/organization/responses.py +58 -1
  266. pygeai/proxy/clients.py +6 -3
  267. pygeai/proxy/config.py +14 -1
  268. pygeai/proxy/managers.py +61 -33
  269. pygeai/proxy/servers.py +196 -51
  270. pygeai/proxy/tool.py +33 -16
  271. pygeai/tests/admin/__init__.py +0 -0
  272. pygeai/tests/admin/test_clients.py +148 -0
  273. pygeai/tests/analytics/__init__.py +0 -0
  274. pygeai/tests/analytics/test_clients.py +86 -0
  275. pygeai/tests/analytics/test_managers.py +94 -0
  276. pygeai/tests/analytics/test_mappers.py +84 -0
  277. pygeai/tests/analytics/test_responses.py +73 -0
  278. pygeai/tests/assistants/rag/test_clients.py +346 -0
  279. pygeai/tests/assistants/rag/test_models.py +292 -0
  280. pygeai/tests/assistants/test_clients.py +176 -82
  281. pygeai/tests/assistants/test_managers.py +191 -57
  282. pygeai/tests/auth/__init__.py +0 -0
  283. pygeai/tests/auth/test_clients.py +289 -0
  284. pygeai/tests/auth/test_oauth.py +172 -0
  285. pygeai/tests/auth/test_session_logging.py +150 -0
  286. pygeai/tests/chat/__init__.py +0 -0
  287. pygeai/tests/chat/test_clients.py +393 -0
  288. pygeai/tests/chat/test_iris.py +38 -0
  289. pygeai/tests/chat/test_session.py +62 -0
  290. pygeai/tests/chat/test_ui.py +224 -0
  291. pygeai/tests/cli/commands/__init__.py +0 -0
  292. pygeai/tests/cli/commands/lab/__init__.py +0 -0
  293. pygeai/tests/cli/commands/lab/test_ai_lab.py +786 -0
  294. pygeai/tests/cli/commands/lab/test_common.py +208 -0
  295. pygeai/tests/cli/commands/lab/test_spec.py +246 -0
  296. pygeai/tests/cli/commands/test_assistant.py +202 -0
  297. pygeai/tests/cli/commands/test_chat.py +130 -0
  298. pygeai/tests/cli/commands/test_common.py +350 -0
  299. pygeai/tests/cli/commands/test_embeddings.py +132 -0
  300. pygeai/tests/cli/commands/test_evaluation.py +656 -0
  301. pygeai/tests/cli/commands/test_feedback.py +65 -0
  302. pygeai/tests/cli/commands/test_files.py +161 -0
  303. pygeai/tests/cli/commands/test_gam.py +201 -0
  304. pygeai/tests/cli/commands/test_llm.py +114 -0
  305. pygeai/tests/cli/commands/test_migrate.py +176 -0
  306. pygeai/tests/cli/commands/test_organization.py +276 -0
  307. pygeai/tests/cli/commands/test_rag.py +266 -0
  308. pygeai/tests/cli/commands/test_rerank.py +110 -0
  309. pygeai/tests/cli/commands/test_secrets.py +171 -0
  310. pygeai/tests/cli/commands/test_show_help.py +41 -0
  311. pygeai/tests/cli/commands/test_usage_limits.py +412 -0
  312. pygeai/tests/cli/commands/test_validators.py +160 -0
  313. pygeai/tests/cli/commands/test_version.py +81 -0
  314. pygeai/tests/cli/docker/__init__.py +0 -0
  315. pygeai/tests/cli/test_credentials_flag.py +316 -0
  316. pygeai/tests/cli/test_error_handler.py +225 -0
  317. pygeai/tests/cli/test_geai_driver.py +154 -0
  318. pygeai/tests/cli/test_parsers.py +5 -5
  319. pygeai/tests/core/base/data/models.py +7 -0
  320. pygeai/tests/core/base/test_mappers.py +43 -11
  321. pygeai/tests/core/base/test_models.py +3 -1
  322. pygeai/tests/core/base/test_responses.py +53 -0
  323. pygeai/tests/core/common/__init__.py +0 -0
  324. pygeai/tests/core/common/data/__init__.py +0 -0
  325. pygeai/tests/core/common/test_config.py +186 -0
  326. pygeai/tests/core/common/test_decorators.py +69 -0
  327. pygeai/tests/core/embeddings/__init__.py +0 -0
  328. pygeai/tests/core/embeddings/test_clients.py +225 -0
  329. pygeai/tests/core/embeddings/test_managers.py +171 -0
  330. pygeai/tests/core/embeddings/test_mappers.py +142 -0
  331. pygeai/tests/core/feedback/__init__.py +0 -0
  332. pygeai/tests/core/feedback/test_clients.py +64 -0
  333. pygeai/tests/core/files/test_clients.py +128 -0
  334. pygeai/tests/core/files/test_managers.py +124 -78
  335. pygeai/tests/core/files/test_mappers.py +137 -0
  336. pygeai/tests/core/files/test_models.py +103 -0
  337. pygeai/tests/core/files/test_responses.py +122 -0
  338. pygeai/tests/core/llm/__init__.py +0 -0
  339. pygeai/tests/core/llm/test_clients.py +142 -0
  340. pygeai/tests/core/plugins/__init__.py +0 -0
  341. pygeai/tests/core/plugins/test_clients.py +66 -0
  342. pygeai/tests/core/rerank/test_clients.py +76 -0
  343. pygeai/tests/core/rerank/test_managers.py +61 -39
  344. pygeai/tests/core/secrets/__init__.py +0 -0
  345. pygeai/tests/core/secrets/test_clients.py +264 -0
  346. pygeai/tests/core/services/__init__.py +0 -0
  347. pygeai/tests/core/services/test_rest.py +273 -0
  348. pygeai/tests/core/test_handlers.py +66 -0
  349. pygeai/tests/core/utils/__init__.py +0 -0
  350. pygeai/tests/core/utils/test_console.py +80 -0
  351. pygeai/tests/dbg/__init__.py +0 -0
  352. pygeai/tests/dbg/test_debugger.py +591 -0
  353. pygeai/tests/evaluation/__init__.py +0 -0
  354. pygeai/tests/evaluation/dataset/__init__.py +0 -0
  355. pygeai/tests/evaluation/dataset/test_clients.py +265 -0
  356. pygeai/tests/evaluation/plan/__init__.py +0 -0
  357. pygeai/tests/evaluation/plan/test_clients.py +195 -0
  358. pygeai/tests/evaluation/result/__init__.py +0 -0
  359. pygeai/tests/evaluation/result/test_clients.py +66 -0
  360. pygeai/tests/gam/__init__.py +0 -0
  361. pygeai/tests/gam/test_clients.py +195 -0
  362. pygeai/tests/health/__init__.py +0 -0
  363. pygeai/tests/health/test_clients.py +41 -0
  364. pygeai/tests/integration/__init__.py +0 -0
  365. pygeai/tests/integration/assistants/__init__.py +0 -0
  366. pygeai/tests/integration/assistants/rag/__init__.py +0 -0
  367. pygeai/tests/integration/assistants/rag/test_create_rag.py +91 -0
  368. pygeai/tests/integration/chat/__init__.py +0 -0
  369. pygeai/tests/integration/chat/test_generate_image.py +158 -0
  370. pygeai/tests/integration/lab/__init__.py +0 -0
  371. pygeai/tests/integration/lab/agents/__init__.py +0 -0
  372. pygeai/tests/integration/lab/agents/test_agents_list.py +106 -0
  373. pygeai/tests/integration/lab/agents/test_create_agent.py +319 -0
  374. pygeai/tests/integration/lab/agents/test_create_sharing_link.py +70 -0
  375. pygeai/tests/integration/lab/agents/test_delete_agent.py +75 -0
  376. pygeai/tests/integration/lab/agents/test_get_agent.py +94 -0
  377. pygeai/tests/integration/lab/agents/test_publish_agent_revision.py +127 -0
  378. pygeai/tests/integration/lab/agents/test_update_agent.py +250 -0
  379. pygeai/tests/integration/lab/processes/__init__.py +0 -0
  380. pygeai/tests/integration/lab/processes/test_create_process.py +345 -0
  381. pygeai/tests/integration/lab/processes/test_create_task.py +211 -0
  382. pygeai/tests/integration/lab/processes/test_delete_process.py +111 -0
  383. pygeai/tests/integration/lab/processes/test_get_process.py +201 -0
  384. pygeai/tests/integration/lab/processes/test_list_process_instances.py +91 -0
  385. pygeai/tests/integration/lab/processes/test_list_processes.py +138 -0
  386. pygeai/tests/integration/lab/processes/test_publish_process_revision.py +232 -0
  387. pygeai/tests/integration/lab/processes/test_update_process.py +289 -0
  388. pygeai/tests/integration/lab/reasoning_strategies/__init__.py +0 -0
  389. pygeai/tests/integration/lab/reasoning_strategies/test_get_reasoning_strategy.py +70 -0
  390. pygeai/tests/integration/lab/reasoning_strategies/test_list_reasoning_strategies.py +93 -0
  391. pygeai/tests/integration/lab/reasoning_strategies/test_update_reasoning_strategy.py +149 -0
  392. pygeai/tests/integration/lab/tools/__init__.py +0 -0
  393. pygeai/tests/integration/lab/tools/test_create_tool.py +288 -0
  394. pygeai/tests/integration/lab/tools/test_delete_tool.py +87 -0
  395. pygeai/tests/integration/lab/tools/test_get_parameter.py +98 -0
  396. pygeai/tests/integration/lab/tools/test_get_tool.py +91 -0
  397. pygeai/tests/integration/lab/tools/test_list_tools.py +106 -0
  398. pygeai/tests/integration/lab/tools/test_publish_tool_revision.py +119 -0
  399. pygeai/tests/integration/lab/tools/test_set_parameter.py +114 -0
  400. pygeai/tests/integration/lab/tools/test_update_tool.py +267 -0
  401. pygeai/tests/lab/agents/__init__.py +0 -0
  402. pygeai/tests/lab/agents/test_clients.py +481 -0
  403. pygeai/tests/lab/agents/test_mappers.py +440 -0
  404. pygeai/tests/lab/processes/__init__.py +0 -0
  405. pygeai/tests/lab/processes/test_clients.py +1416 -0
  406. pygeai/tests/lab/processes/test_mappers.py +1092 -0
  407. pygeai/tests/lab/spec/__init__.py +0 -0
  408. pygeai/tests/lab/spec/test_loader.py +59 -0
  409. pygeai/tests/lab/spec/test_parsers.py +182 -0
  410. pygeai/tests/lab/strategies/__init__.py +0 -0
  411. pygeai/tests/lab/strategies/test_clients.py +241 -0
  412. pygeai/tests/lab/strategies/test_mappers.py +132 -0
  413. pygeai/tests/lab/test_managers.py +553 -0
  414. pygeai/tests/lab/test_models.py +500 -3
  415. pygeai/tests/lab/tools/__init__.py +0 -0
  416. pygeai/tests/lab/tools/test_clients.py +521 -0
  417. pygeai/tests/lab/tools/test_mappers.py +198 -0
  418. pygeai/tests/migration/__init__.py +0 -0
  419. pygeai/tests/migration/test_strategies.py +405 -0
  420. pygeai/tests/migration/test_tools.py +159 -0
  421. pygeai/tests/organization/limits/test_clients.py +567 -0
  422. pygeai/tests/organization/limits/test_managers.py +298 -56
  423. pygeai/tests/organization/test_clients.py +600 -30
  424. pygeai/tests/organization/test_managers.py +424 -0
  425. pygeai/tests/organization/test_mappers.py +153 -0
  426. pygeai/tests/organization/test_responses.py +137 -0
  427. pygeai/tests/proxy/__init__.py +1 -0
  428. pygeai/tests/proxy/test_clients.py +397 -0
  429. pygeai/tests/proxy/test_config.py +171 -0
  430. pygeai/tests/proxy/test_integration.py +305 -0
  431. pygeai/tests/proxy/test_managers.py +312 -0
  432. pygeai/tests/proxy/test_servers.py +387 -0
  433. pygeai/tests/proxy/test_tool.py +176 -0
  434. pygeai/tests/snippets/analytics/__init__.py +0 -0
  435. pygeai/tests/snippets/analytics/get_agent_usage_per_user.py +16 -0
  436. pygeai/tests/snippets/analytics/get_agents_created_and_modified.py +11 -0
  437. pygeai/tests/snippets/analytics/get_average_cost_per_request.py +10 -0
  438. pygeai/tests/snippets/analytics/get_overall_error_rate.py +10 -0
  439. pygeai/tests/snippets/analytics/get_top_10_agents_by_requests.py +12 -0
  440. pygeai/tests/snippets/analytics/get_total_active_users.py +10 -0
  441. pygeai/tests/snippets/analytics/get_total_cost.py +10 -0
  442. pygeai/tests/snippets/analytics/get_total_requests_per_day.py +12 -0
  443. pygeai/tests/snippets/analytics/get_total_tokens.py +12 -0
  444. pygeai/tests/snippets/auth/__init__.py +0 -0
  445. pygeai/tests/snippets/chat/chat_completion_with_reasoning_effort.py +18 -0
  446. pygeai/tests/snippets/chat/get_response.py +15 -0
  447. pygeai/tests/snippets/chat/get_response_complete_example.py +67 -0
  448. pygeai/tests/snippets/chat/get_response_streaming.py +20 -0
  449. pygeai/tests/snippets/chat/get_response_with_files.py +16 -0
  450. pygeai/tests/snippets/chat/get_response_with_instructions.py +19 -0
  451. pygeai/tests/snippets/chat/get_response_with_metadata.py +24 -0
  452. pygeai/tests/snippets/chat/get_response_with_parallel_tools.py +58 -0
  453. pygeai/tests/snippets/chat/get_response_with_reasoning.py +21 -0
  454. pygeai/tests/snippets/chat/get_response_with_store.py +38 -0
  455. pygeai/tests/snippets/chat/get_response_with_tools.py +36 -0
  456. pygeai/tests/snippets/chat/get_response_with_truncation.py +24 -0
  457. pygeai/tests/snippets/dbg/__init__.py +0 -0
  458. pygeai/tests/snippets/dbg/basic_debugging.py +32 -0
  459. pygeai/tests/snippets/dbg/breakpoint_management.py +48 -0
  460. pygeai/tests/snippets/dbg/file_debugging.py +72 -0
  461. pygeai/tests/snippets/dbg/module_debugging.py +61 -0
  462. pygeai/tests/snippets/dbg/stack_navigation.py +45 -0
  463. pygeai/tests/snippets/dbg/stepping_example.py +40 -0
  464. pygeai/tests/snippets/embeddings/cache_example.py +31 -0
  465. pygeai/tests/snippets/embeddings/cohere_example.py +41 -0
  466. pygeai/tests/snippets/embeddings/openai_base64_example.py +27 -0
  467. pygeai/tests/snippets/embeddings/openai_example.py +30 -0
  468. pygeai/tests/snippets/embeddings/similarity_example.py +42 -0
  469. pygeai/tests/snippets/evaluation/dataset/__init__.py +0 -0
  470. pygeai/tests/snippets/evaluation/dataset/complete_workflow_example.py +195 -0
  471. pygeai/tests/snippets/evaluation/dataset/create_dataset.py +26 -0
  472. pygeai/tests/snippets/evaluation/dataset/create_dataset_from_file.py +11 -0
  473. pygeai/tests/snippets/evaluation/dataset/create_dataset_row.py +17 -0
  474. pygeai/tests/snippets/evaluation/dataset/create_expected_source.py +18 -0
  475. pygeai/tests/snippets/evaluation/dataset/create_filter_variable.py +19 -0
  476. pygeai/tests/snippets/evaluation/dataset/delete_dataset.py +9 -0
  477. pygeai/tests/snippets/evaluation/dataset/delete_dataset_row.py +10 -0
  478. pygeai/tests/snippets/evaluation/dataset/delete_expected_source.py +15 -0
  479. pygeai/tests/snippets/evaluation/dataset/delete_filter_variable.py +15 -0
  480. pygeai/tests/snippets/evaluation/dataset/get_dataset.py +9 -0
  481. pygeai/tests/snippets/evaluation/dataset/get_dataset_row.py +10 -0
  482. pygeai/tests/snippets/evaluation/dataset/get_expected_source.py +15 -0
  483. pygeai/tests/snippets/evaluation/dataset/get_filter_variable.py +15 -0
  484. pygeai/tests/snippets/evaluation/dataset/list_dataset_rows.py +9 -0
  485. pygeai/tests/snippets/evaluation/dataset/list_datasets.py +6 -0
  486. pygeai/tests/snippets/evaluation/dataset/list_expected_sources.py +10 -0
  487. pygeai/tests/snippets/evaluation/dataset/list_filter_variables.py +10 -0
  488. pygeai/tests/snippets/evaluation/dataset/update_dataset.py +15 -0
  489. pygeai/tests/snippets/evaluation/dataset/update_dataset_row.py +20 -0
  490. pygeai/tests/snippets/evaluation/dataset/update_expected_source.py +18 -0
  491. pygeai/tests/snippets/evaluation/dataset/update_filter_variable.py +19 -0
  492. pygeai/tests/snippets/evaluation/dataset/upload_dataset_rows_file.py +10 -0
  493. pygeai/tests/snippets/evaluation/plan/__init__.py +0 -0
  494. pygeai/tests/snippets/evaluation/plan/add_plan_system_metric.py +13 -0
  495. pygeai/tests/snippets/evaluation/plan/complete_workflow_example.py +136 -0
  496. pygeai/tests/snippets/evaluation/plan/create_evaluation_plan.py +24 -0
  497. pygeai/tests/snippets/evaluation/plan/create_rag_evaluation_plan.py +22 -0
  498. pygeai/tests/snippets/evaluation/plan/delete_evaluation_plan.py +9 -0
  499. pygeai/tests/snippets/evaluation/plan/delete_plan_system_metric.py +13 -0
  500. pygeai/tests/snippets/evaluation/plan/execute_evaluation_plan.py +11 -0
  501. pygeai/tests/snippets/evaluation/plan/get_evaluation_plan.py +9 -0
  502. pygeai/tests/snippets/evaluation/plan/get_plan_system_metric.py +13 -0
  503. pygeai/tests/snippets/evaluation/plan/get_system_metric.py +9 -0
  504. pygeai/tests/snippets/evaluation/plan/list_evaluation_plans.py +7 -0
  505. pygeai/tests/snippets/evaluation/plan/list_plan_system_metrics.py +9 -0
  506. pygeai/tests/snippets/evaluation/plan/list_system_metrics.py +7 -0
  507. pygeai/tests/snippets/evaluation/plan/update_evaluation_plan.py +22 -0
  508. pygeai/tests/snippets/evaluation/plan/update_plan_system_metric.py +14 -0
  509. pygeai/tests/snippets/evaluation/result/__init__.py +0 -0
  510. pygeai/tests/snippets/evaluation/result/complete_workflow_example.py +150 -0
  511. pygeai/tests/snippets/evaluation/result/get_evaluation_result.py +26 -0
  512. pygeai/tests/snippets/evaluation/result/list_evaluation_results.py +17 -0
  513. pygeai/tests/snippets/files/delete_file.py +1 -4
  514. pygeai/tests/snippets/files/get_file_content.py +2 -4
  515. pygeai/tests/snippets/files/get_file_data.py +1 -4
  516. pygeai/tests/snippets/files/get_file_list.py +1 -6
  517. pygeai/tests/snippets/files/upload_file.py +1 -5
  518. pygeai/tests/snippets/gam/gam_access_token.py +87 -0
  519. pygeai/tests/snippets/lab/agentic_flow_example_1.py +25 -23
  520. pygeai/tests/snippets/lab/agentic_flow_example_4.py +23 -23
  521. pygeai/tests/snippets/lab/agents/create_agent.py +5 -8
  522. pygeai/tests/snippets/lab/agents/create_agent_2.py +1 -5
  523. pygeai/tests/snippets/lab/agents/create_agent_edge_case.py +48 -0
  524. pygeai/tests/snippets/lab/agents/create_agent_with_permissions.py +39 -0
  525. pygeai/tests/snippets/lab/agents/create_agent_with_properties.py +46 -0
  526. pygeai/tests/snippets/lab/agents/create_agent_without_instructions.py +48 -0
  527. pygeai/tests/snippets/lab/agents/delete_agent.py +1 -5
  528. pygeai/tests/snippets/lab/agents/get_agent.py +2 -11
  529. pygeai/tests/snippets/lab/agents/get_agent_with_new_fields.py +62 -0
  530. pygeai/tests/snippets/lab/agents/get_sharing_link.py +2 -7
  531. pygeai/tests/snippets/lab/agents/list_agents.py +4 -7
  532. pygeai/tests/snippets/lab/agents/publish_agent_revision.py +2 -6
  533. pygeai/tests/snippets/lab/agents/update_agent.py +1 -5
  534. pygeai/tests/snippets/lab/agents/update_agent_properties.py +50 -0
  535. pygeai/tests/snippets/lab/assistant_to_agent.py +191 -0
  536. pygeai/tests/snippets/lab/crud_ui.py +462 -0
  537. pygeai/tests/snippets/lab/processes/create_process.py +3 -5
  538. pygeai/tests/snippets/lab/processes/create_task.py +3 -5
  539. pygeai/tests/snippets/lab/processes/jobs/list_jobs.py +10 -19
  540. pygeai/tests/snippets/lab/processes/kbs/create_kb.py +2 -5
  541. pygeai/tests/snippets/lab/processes/kbs/get_kb.py +10 -16
  542. pygeai/tests/snippets/lab/processes/kbs/list_kbs.py +13 -20
  543. pygeai/tests/snippets/lab/processes/kbs/try_all.py +5 -7
  544. pygeai/tests/snippets/lab/processes/list_processes.py +5 -7
  545. pygeai/tests/snippets/lab/runner_1.py +1 -1
  546. pygeai/tests/snippets/lab/samples/summarize_files.py +3 -3
  547. pygeai/tests/snippets/lab/strategies/create_reasoning_strategy.py +2 -5
  548. pygeai/tests/snippets/lab/strategies/get_reasoning_strategy.py +2 -5
  549. pygeai/tests/snippets/lab/strategies/list_reasoning_strategies.py +3 -6
  550. pygeai/tests/snippets/lab/strategies/update_reasoning_strategy.py +2 -5
  551. pygeai/tests/snippets/lab/tools/create_tool.py +4 -10
  552. pygeai/tests/snippets/lab/tools/create_tool_edge_case.py +50 -0
  553. pygeai/tests/snippets/lab/tools/delete_tool.py +2 -6
  554. pygeai/tests/snippets/lab/tools/get_parameter.py +5 -7
  555. pygeai/tests/snippets/lab/tools/get_tool.py +5 -7
  556. pygeai/tests/snippets/lab/tools/list_tools.py +3 -7
  557. pygeai/tests/snippets/lab/tools/publish_tool_revision.py +3 -5
  558. pygeai/tests/snippets/lab/tools/set_parameters.py +4 -9
  559. pygeai/tests/snippets/lab/tools/update_tool.py +4 -8
  560. pygeai/tests/snippets/lab/use_cases/__init__.py +0 -0
  561. pygeai/tests/snippets/lab/use_cases/create_cli_expert.py +1640 -0
  562. pygeai/tests/snippets/lab/use_cases/create_lab_expert.py +4541 -0
  563. pygeai/tests/snippets/lab/use_cases/create_tool_headless_web_browser.py +133 -0
  564. pygeai/tests/snippets/lab/use_cases/create_web_designer.py +189 -0
  565. pygeai/tests/snippets/lab/use_cases/create_web_reader.py +185 -0
  566. pygeai/tests/snippets/lab/{file_summarizer_example.py → use_cases/file_summarizer_example.py} +3 -3
  567. pygeai/tests/snippets/lab/{file_summarizer_example_2.py → use_cases/file_summarizer_example_2.py} +12 -12
  568. pygeai/tests/snippets/lab/use_cases/update_cli_expert.py +1773 -0
  569. pygeai/tests/snippets/lab/use_cases/update_lab_expert.py +4541 -0
  570. pygeai/tests/snippets/lab/use_cases/update_web_designer.py +188 -0
  571. pygeai/tests/snippets/lab/use_cases/update_web_reader.py +195 -0
  572. pygeai/tests/snippets/lab/use_cases/update_web_reader_with_tool.py +210 -0
  573. pygeai/tests/snippets/migrate/__init__.py +45 -0
  574. pygeai/tests/snippets/migrate/agent_migration.py +110 -0
  575. pygeai/tests/snippets/migrate/assistant_migration.py +64 -0
  576. pygeai/tests/snippets/migrate/orchestrator_examples.py +179 -0
  577. pygeai/tests/snippets/migrate/process_migration.py +64 -0
  578. pygeai/tests/snippets/migrate/project_migration.py +42 -0
  579. pygeai/tests/snippets/migrate/tool_migration.py +64 -0
  580. pygeai/tests/snippets/organization/add_project_member.py +10 -0
  581. pygeai/tests/snippets/organization/add_project_member_batch.py +44 -0
  582. pygeai/tests/snippets/organization/create_project.py +2 -2
  583. pygeai/tests/snippets/organization/get_memberships.py +12 -0
  584. pygeai/tests/snippets/organization/get_organization_members.py +6 -0
  585. pygeai/tests/snippets/organization/get_project_members.py +6 -0
  586. pygeai/tests/snippets/organization/get_project_memberships.py +12 -0
  587. pygeai/tests/snippets/organization/get_project_roles.py +6 -0
  588. pygeai/vendor/a2a/__init__.py +1 -0
  589. pygeai/vendor/a2a/auth/__init__.py +0 -0
  590. pygeai/vendor/a2a/auth/user.py +31 -0
  591. pygeai/vendor/a2a/client/__init__.py +19 -0
  592. pygeai/vendor/a2a/client/client.py +425 -0
  593. pygeai/vendor/a2a/client/errors.py +33 -0
  594. pygeai/vendor/a2a/client/helpers.py +22 -0
  595. pygeai/vendor/a2a/py.typed +0 -0
  596. pygeai/vendor/a2a/server/__init__.py +1 -0
  597. pygeai/vendor/a2a/server/agent_execution/__init__.py +18 -0
  598. pygeai/vendor/a2a/server/agent_execution/agent_executor.py +44 -0
  599. pygeai/vendor/a2a/server/agent_execution/context.py +155 -0
  600. pygeai/vendor/a2a/server/agent_execution/request_context_builder.py +20 -0
  601. pygeai/vendor/a2a/server/agent_execution/simple_request_context_builder.py +77 -0
  602. pygeai/vendor/a2a/server/apps/__init__.py +16 -0
  603. pygeai/vendor/a2a/server/apps/jsonrpc/__init__.py +16 -0
  604. pygeai/vendor/a2a/server/apps/jsonrpc/fastapi_app.py +88 -0
  605. pygeai/vendor/a2a/server/apps/jsonrpc/jsonrpc_app.py +426 -0
  606. pygeai/vendor/a2a/server/apps/jsonrpc/starlette_app.py +123 -0
  607. pygeai/vendor/a2a/server/context.py +23 -0
  608. pygeai/vendor/a2a/server/events/__init__.py +21 -0
  609. pygeai/vendor/a2a/server/events/event_consumer.py +149 -0
  610. pygeai/vendor/a2a/server/events/event_queue.py +156 -0
  611. pygeai/vendor/a2a/server/events/in_memory_queue_manager.py +85 -0
  612. pygeai/vendor/a2a/server/events/queue_manager.py +35 -0
  613. pygeai/vendor/a2a/server/request_handlers/__init__.py +20 -0
  614. pygeai/vendor/a2a/server/request_handlers/default_request_handler.py +435 -0
  615. pygeai/vendor/a2a/server/request_handlers/jsonrpc_handler.py +327 -0
  616. pygeai/vendor/a2a/server/request_handlers/request_handler.py +161 -0
  617. pygeai/vendor/a2a/server/request_handlers/response_helpers.py +133 -0
  618. pygeai/vendor/a2a/server/tasks/__init__.py +20 -0
  619. pygeai/vendor/a2a/server/tasks/inmemory_push_notifier.py +62 -0
  620. pygeai/vendor/a2a/server/tasks/inmemory_task_store.py +51 -0
  621. pygeai/vendor/a2a/server/tasks/push_notifier.py +25 -0
  622. pygeai/vendor/a2a/server/tasks/result_aggregator.py +151 -0
  623. pygeai/vendor/a2a/server/tasks/task_manager.py +253 -0
  624. pygeai/vendor/a2a/server/tasks/task_store.py +22 -0
  625. pygeai/vendor/a2a/server/tasks/task_updater.py +155 -0
  626. pygeai/vendor/a2a/types.py +1624 -0
  627. pygeai/vendor/a2a/utils/__init__.py +40 -0
  628. pygeai/vendor/a2a/utils/artifact.py +72 -0
  629. pygeai/vendor/a2a/utils/errors.py +69 -0
  630. pygeai/vendor/a2a/utils/helpers.py +176 -0
  631. pygeai/vendor/a2a/utils/message.py +83 -0
  632. pygeai/vendor/a2a/utils/task.py +57 -0
  633. pygeai/vendor/a2a/utils/telemetry.py +299 -0
  634. pygeai-0.6.0b15.dist-info/METADATA +205 -0
  635. pygeai-0.6.0b15.dist-info/RECORD +799 -0
  636. {pygeai-0.1.51b3.dist-info → pygeai-0.6.0b15.dist-info}/WHEEL +1 -1
  637. {pygeai-0.1.51b3.dist-info → pygeai-0.6.0b15.dist-info}/entry_points.txt +2 -1
  638. {pygeai-0.1.51b3.dist-info → pygeai-0.6.0b15.dist-info}/licenses/LICENSE +13 -1
  639. pygeai-0.6.0b15.dist-info/top_level.txt +1 -0
  640. docs/geai-proxy/README.md +0 -145
  641. docs/source/conf.py +0 -45
  642. pygeai/tests/core/test_managers.py +0 -233
  643. pygeai-0.1.51b3.dist-info/METADATA +0 -130
  644. pygeai-0.1.51b3.dist-info/RECORD +0 -324
  645. pygeai-0.1.51b3.dist-info/top_level.txt +0 -3
  646. scripts/bump_beta_version.py +0 -56
  647. {scripts → pygeai/analytics}/__init__.py +0 -0
  648. /pygeai/tests/snippets/lab/{c_code_fixer_agent_flow.py → use_cases/c_code_fixer_agent_flow.py} +0 -0
@@ -0,0 +1,1734 @@
1
+ Data Models
2
+ ===========
3
+
4
+ The PyGEAI SDK provides Pydantic-based data models for interacting with the Globant Enterprise AI Lab, enabling developers to configure agents, tools, processes, tasks, and more. These models ensure type safety and API compatibility without requiring hardcoded field details that may change. Many models allow direct dictionary inputs for nested configurations, simplifying instantiation. This section describes each model’s purpose, provides examples of instantiation (via attributes and dictionaries), and notes key restrictions, keeping documentation maintainable and flexible.
5
+
6
+ .. note::
7
+ Models inherit from ``CustomBaseModel``, a Pydantic ``BaseModel`` subclass, providing ``to_dict()`` for serialization.
8
+
9
+ FilterSettings
10
+ --------------
11
+
12
+ Purpose
13
+ ~~~~~~~
14
+
15
+ Configures filters for querying Lab entities like agents or tools, supporting pagination and scope.
16
+
17
+ Usage Examples
18
+ ~~~~~~~~~~~~~~
19
+
20
+ **Via Attributes**:
21
+
22
+ .. code-block:: python
23
+
24
+ from pygeai.lab.models import FilterSettings
25
+
26
+ filters = FilterSettings(id="agent-123", name="MyAgent", access_scope="private")
27
+ print(filters.to_dict())
28
+ # Output: Dictionary with filter settings
29
+
30
+ **Via Dictionary**:
31
+
32
+ .. code-block:: python
33
+
34
+ from pygeai.lab.models import FilterSettings
35
+
36
+ filters = FilterSettings(**{
37
+ "id": "agent-123",
38
+ "name": "MyAgent",
39
+ "accessScope": "private"
40
+ })
41
+ print(filters.to_dict())
42
+ # Output: Dictionary with filter settings
43
+
44
+ Restrictions and Considerations
45
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
46
+
47
+ - Most fields are optional for flexible queries.
48
+ - Pagination requires non-negative integers.
49
+ - Scope values must match API expectations (e.g., "public", "private").
50
+ - Use dictionaries for quick filter setup in API calls.
51
+ - Avoid over-specifying to ensure results.
52
+
53
+ Sampling
54
+ --------
55
+
56
+ Purpose
57
+ ~~~~~~~
58
+
59
+ Controls randomness in LLM token generation.
60
+
61
+ Usage Examples
62
+ ~~~~~~~~~~~~~~
63
+
64
+ **Via Attributes**:
65
+
66
+ .. code-block:: python
67
+
68
+ from pygeai.lab.models import Sampling
69
+
70
+ sampling = Sampling(temperature=0.8, top_k=40, top_p=0.95)
71
+ print(sampling.to_dict())
72
+ # Output: {"temperature": 0.8, "topK": 40, "topP": 0.95}
73
+
74
+ **Via Dictionary**:
75
+
76
+ .. code-block:: python
77
+
78
+ from pygeai.lab.models import Sampling
79
+
80
+ sampling = Sampling(**{
81
+ "temperature": 0.8,
82
+ "topK": 40,
83
+ "topP": 0.95
84
+ })
85
+ print(sampling.to_dict())
86
+ # Output: {"temperature": 0.8, "topK": 40, "topP": 0.95}
87
+
88
+ Restrictions and Considerations
89
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
90
+
91
+ - All fields are required.
92
+ - Temperature should range from 0.1 to 2.0.
93
+ - Top-k and top-p need positive, reasonable values.
94
+ - Dictionaries simplify sampling configuration.
95
+ - Test settings to balance creativity and coherence.
96
+
97
+ LlmConfig
98
+ ---------
99
+
100
+ Purpose
101
+ ~~~~~~~
102
+
103
+ Defines LLM settings, including token limits and sampling.
104
+
105
+ Usage Examples
106
+ ~~~~~~~~~~~~~~
107
+
108
+ **Via Attributes**:
109
+
110
+ .. code-block:: python
111
+
112
+ from pygeai.lab.models import LlmConfig, Sampling
113
+
114
+ sampling = Sampling(temperature=0.7, top_k=50, top_p=0.9)
115
+ llm_config = LlmConfig(max_tokens=2048, timeout=30, sampling=sampling)
116
+ print(llm_config.to_dict())
117
+ # Output: Dictionary with LLM settings
118
+
119
+ **Via Dictionary (with Sampling as dict)**:
120
+
121
+ .. code-block:: python
122
+
123
+ from pygeai.lab.models import LlmConfig
124
+
125
+ llm_config = LlmConfig(**{
126
+ "maxTokens": 2048,
127
+ "timeout": 30,
128
+ "sampling": {
129
+ "temperature": 0.7,
130
+ "topK": 50,
131
+ "topP": 0.9
132
+ }
133
+ })
134
+ print(llm_config.to_dict())
135
+ # Output: Dictionary with LLM settings
136
+
137
+ Restrictions and Considerations
138
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
139
+
140
+ - Core fields are mandatory.
141
+ - Token limits depend on LLM capacity.
142
+ - Timeout may be API-capped; use 0 carefully.
143
+ - Accepts sampling as a dictionary for convenience.
144
+ - Verify settings before scaling.
145
+
146
+ Model
147
+ -----
148
+
149
+ Purpose
150
+ ~~~~~~~
151
+
152
+ Customizes an LLM for an agent.
153
+
154
+ Usage Examples
155
+ ~~~~~~~~~~~~~~
156
+
157
+ **Via Attributes**:
158
+
159
+ .. code-block:: python
160
+
161
+ from pygeai.lab.models import Model, LlmConfig, Sampling
162
+
163
+ sampling = Sampling(temperature=0.7, top_k=50, top_p=0.9)
164
+ llm_config = LlmConfig(max_tokens=2048, timeout=30, sampling=sampling)
165
+ model = Model(name="gpt-4", llm_config=llm_config)
166
+ print(model.to_dict())
167
+ # Output: Dictionary with model settings
168
+
169
+ **Via Dictionary (with LlmConfig as dict)**:
170
+
171
+ .. code-block:: python
172
+
173
+ from pygeai.lab.models import Model
174
+
175
+ model = Model(**{
176
+ "name": "gpt-4",
177
+ "llmConfig": {
178
+ "maxTokens": 2048,
179
+ "timeout": 30,
180
+ "sampling": {
181
+ "temperature": 0.7,
182
+ "topK": 50,
183
+ "topP": 0.9
184
+ }
185
+ }
186
+ })
187
+ print(model.to_dict())
188
+ # Output: Dictionary with model settings
189
+
190
+ Restrictions and Considerations
191
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
192
+
193
+ - Name is required; must be Lab-supported.
194
+ - Optional LLM config can be a dictionary.
195
+ - Prompt, if used, should align with agent tasks.
196
+ - Useful for flexible model assignments.
197
+ - Check LLM compatibility.
198
+
199
+ PromptExample
200
+ -------------
201
+
202
+ Purpose
203
+ ~~~~~~~
204
+
205
+ Provides input-output pairs for few-shot learning.
206
+
207
+ Usage Examples
208
+ ~~~~~~~~~~~~~~
209
+
210
+ **Via Attributes**:
211
+
212
+ .. code-block:: python
213
+
214
+ from pygeai.lab.models import PromptExample
215
+
216
+ example = PromptExample(input_data="Summarize: [article]", output='{"summary": "AI news."}')
217
+ print(example.to_dict())
218
+ # Output: Dictionary with example data
219
+
220
+ **Via Dictionary**:
221
+
222
+ .. code-block:: python
223
+
224
+ from pygeai.lab.models import PromptExample
225
+
226
+ example = PromptExample(**{
227
+ "inputData": "Summarize: [article]",
228
+ "output": '{"summary": "AI news."}'
229
+ })
230
+ print(example.to_dict())
231
+ # Output: Dictionary with example data
232
+
233
+ Restrictions and Considerations
234
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
235
+
236
+ - Both fields are required; output must be JSON.
237
+ - Keep examples concise and relevant.
238
+ - Multiple examples improve accuracy.
239
+ - Dictionaries simplify example setup.
240
+ - Monitor token usage with examples.
241
+
242
+ PromptOutput
243
+ ------------
244
+
245
+ Purpose
246
+ ~~~~~~~
247
+
248
+ Defines expected prompt outputs.
249
+
250
+ Usage Examples
251
+ ~~~~~~~~~~~~~~
252
+
253
+ **Via Attributes**:
254
+
255
+ .. code-block:: python
256
+
257
+ from pygeai.lab.models import PromptOutput
258
+
259
+ output = PromptOutput(key="summary", description="Text summary.")
260
+ print(output.to_dict())
261
+ # Output: {"key": "summary", "description": "Text summary."}
262
+
263
+ **Via Dictionary**:
264
+
265
+ .. code-block:: python
266
+
267
+ from pygeai.lab.models import PromptOutput
268
+
269
+ output = PromptOutput(**{
270
+ "key": "summary",
271
+ "description": "Text summary."
272
+ })
273
+ print(output.to_dict())
274
+ # Output: {"key": "summary", "description": "Text summary."}
275
+
276
+ Restrictions and Considerations
277
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
278
+
279
+ - Key and description are required.
280
+ - Keys must be unique per prompt.
281
+ - Use clear descriptions for output format.
282
+ - Dictionaries streamline output definitions.
283
+ - Supports multiple outputs.
284
+
285
+ Prompt
286
+ ------
287
+
288
+ Purpose
289
+ ~~~~~~~
290
+
291
+ Configures an agent’s prompt behavior.
292
+
293
+ Usage Examples
294
+ ~~~~~~~~~~~~~~
295
+
296
+ **Via Attributes**:
297
+
298
+ .. code-block:: python
299
+
300
+ from pygeai.lab.models import Prompt, PromptOutput, PromptExample
301
+
302
+ output = PromptOutput(key="summary", description="Text summary.")
303
+ example = PromptExample(input_data="Article: [content]", output='{"summary": "AI news."}')
304
+ prompt = Prompt(instructions="Summarize article.", inputs=["article"], outputs=[output], examples=[example])
305
+ print(prompt.to_dict())
306
+ # Output: Dictionary with prompt settings
307
+
308
+ **Via Dictionary (with Outputs, Examples as dicts)**:
309
+
310
+ .. code-block:: python
311
+
312
+ from pygeai.lab.models import Prompt
313
+
314
+ prompt = Prompt(**{
315
+ "instructions": "Summarize article.",
316
+ "inputs": ["article"],
317
+ "outputs": [{"key": "summary", "description": "Text summary."}],
318
+ "examples": [{"inputData": "Article: [content]", "output": '{"summary": "AI news."}'}]
319
+ })
320
+ print(prompt.to_dict())
321
+ # Output: Dictionary with prompt settings
322
+
323
+ Restrictions and Considerations
324
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
325
+
326
+ - Instructions, inputs, and outputs are required.
327
+ - Outputs need at least one entry.
328
+ - Accepts outputs and examples as dictionaries.
329
+ - Inputs must be unique.
330
+ - Avoid unimplemented fields like context.
331
+
332
+ ModelList
333
+ ---------
334
+
335
+ Purpose
336
+ ~~~~~~~
337
+
338
+ Holds multiple model configurations.
339
+
340
+ Usage Examples
341
+ ~~~~~~~~~~~~~~
342
+
343
+ **Via Attributes**:
344
+
345
+ .. code-block:: python
346
+
347
+ from pygeai.lab.models import ModelList, Model
348
+
349
+ model = Model(name="gpt-4")
350
+ model_list = ModelList(models=[model])
351
+ print(model_list.to_dict())
352
+ # Output: List of model dictionaries
353
+
354
+ **Via Dictionary (with Models as dicts)**:
355
+
356
+ .. code-block:: python
357
+
358
+ from pygeai.lab.models import ModelList
359
+
360
+ model_list = ModelList(**{
361
+ "models": [
362
+ {"name": "gpt-4"},
363
+ {"name": "gpt-3.5"}
364
+ ]
365
+ })
366
+ print(model_list.to_dict())
367
+ # Output: List of model dictionaries
368
+
369
+ Restrictions and Considerations
370
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
371
+
372
+ - Models collection is required; can be empty.
373
+ - Accepts models as dictionaries.
374
+ - Supports iteration and appending.
375
+ - Ensure unique model names.
376
+ - Simplifies bulk model setup.
377
+
378
+
379
+ Permission
380
+ ----------
381
+
382
+ Purpose
383
+ ~~~~~~~
384
+
385
+ Represents permission settings for an agent, defining access levels for chat sharing and external execution.
386
+
387
+ Usage Examples
388
+ ~~~~~~~~~~~~~~
389
+
390
+ **Via Attributes**:
391
+
392
+ .. code-block:: python
393
+
394
+ from pygeai.lab.models import Permission
395
+
396
+ permission = Permission(chat_sharing="organization", external_execution="project")
397
+ print(permission.to_dict())
398
+ # Output: {"chatSharing": "organization", "externalExecution": "project"}
399
+
400
+ **Via Dictionary**:
401
+
402
+ .. code-block:: python
403
+
404
+ from pygeai.lab.models import Permission
405
+
406
+ permission = Permission(**{
407
+ "chatSharing": "organization",
408
+ "externalExecution": "none"
409
+ })
410
+ print(permission.to_dict())
411
+ # Output: {"chatSharing": "organization", "externalExecution": "none"}
412
+
413
+ Restrictions and Considerations
414
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
415
+
416
+ - Valid values for both fields: "none", "organization", "project"
417
+ - Both fields are optional
418
+ - Used to control agent sharing and execution permissions
419
+ - Can be used as `permissions` or `effective_permissions` in Agent model
420
+
421
+ Property
422
+ --------
423
+
424
+ Purpose
425
+ ~~~~~~~
426
+
427
+ Represents a custom property for an agent, allowing key-value storage with type information.
428
+
429
+ Usage Examples
430
+ ~~~~~~~~~~~~~~
431
+
432
+ **Via Attributes**:
433
+
434
+ .. code-block:: python
435
+
436
+ from pygeai.lab.models import Property
437
+
438
+ property = Property(data_type="string", key="environment", value="production")
439
+ print(property.to_dict())
440
+ # Output: {"dataType": "string", "key": "environment", "value": "production"}
441
+
442
+ **Via Dictionary**:
443
+
444
+ .. code-block:: python
445
+
446
+ from pygeai.lab.models import Property
447
+
448
+ property = Property(**{
449
+ "dataType": "number",
450
+ "key": "max_retries",
451
+ "value": "3"
452
+ })
453
+ print(property.to_dict())
454
+ # Output: {"dataType": "number", "key": "max_retries", "value": "3"}
455
+
456
+ Restrictions and Considerations
457
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
458
+
459
+ - All three fields (data_type, key, value) are required
460
+ - Supported data types: "string", "number", "boolean", "object", "array"
461
+ - Value is always stored as string, regardless of data_type
462
+ - Used in AgentData to store custom configuration
463
+ - Useful for environment-specific settings
464
+ AgentData
465
+ ---------
466
+
467
+ Purpose
468
+ ~~~~~~~
469
+
470
+ Defines an agent’s core configuration.
471
+
472
+ Usage Examples
473
+ ~~~~~~~~~~~~~~
474
+
475
+ **Via Attributes**:
476
+
477
+ .. code-block:: python
478
+
479
+ from pygeai.lab.models import AgentData, Prompt, PromptOutput, LlmConfig, Sampling, ModelList, Model
480
+
481
+ prompt = Prompt(instructions="Summarize.", inputs=["text"], outputs=[PromptOutput(key="summary", description="Summary.")])
482
+ sampling = Sampling(temperature=0.7, top_k=50, top_p=0.9)
483
+ llm_config = LlmConfig(max_tokens=2048, timeout=30, sampling=sampling)
484
+ model_list = ModelList(models=[Model(name="gpt-4")])
485
+ agent_data = AgentData(prompt=prompt, llm_config=llm_config, models=model_list)
486
+ print(agent_data.to_dict())
487
+ # Output: Dictionary with agent data
488
+
489
+ **Via Dictionary (with Prompt, LlmConfig, Models as dicts)**:
490
+
491
+ .. code-block:: python
492
+
493
+ from pygeai.lab.models import AgentData
494
+
495
+ agent_data = AgentData(**{
496
+ "prompt": {
497
+ "instructions": "Summarize.",
498
+ "inputs": ["text"],
499
+ "outputs": [{"key": "summary", "description": "Summary."}]
500
+ },
501
+ "llmConfig": {
502
+ "maxTokens": 2048,
503
+ "timeout": 30,
504
+ "sampling": {"temperature": 0.7, "topK": 50, "topP": 0.9}
505
+ },
506
+ "models": [{"name": "gpt-4"}]
507
+ })
508
+ print(agent_data.to_dict())
509
+ # Output: Dictionary with agent data
510
+
511
+ **With Properties**:
512
+
513
+ .. code-block:: python
514
+
515
+ from pygeai.lab.models import AgentData, Property
516
+
517
+ agent_data = AgentData(**{
518
+ "prompt": {"instructions": "Process data"},
519
+ "models": [{"name": "gpt-4"}],
520
+ "properties": [
521
+ {"dataType": "string", "key": "environment", "value": "production"},
522
+ {"dataType": "number", "key": "timeout", "value": "30"},
523
+ {"dataType": "boolean", "key": "cache_enabled", "value": "true"}
524
+ ],
525
+ "strategyName": "Dynamic Prompting"
526
+ })
527
+ print(agent_data.properties[0].key) # Output: "environment"
528
+ print(agent_data.strategy_name) # Output: "Dynamic Prompting"
529
+
530
+
531
+ Restrictions and Considerations
532
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
533
+
534
+ - Core components are required.
535
+ - Accepts prompt, LLM config, and models as dictionaries.
536
+ - Non-draft agents need at least one model.
537
+ - Align settings with LLM capabilities.
538
+ - Simplifies complex agent setups.
539
+
540
+ Agent
541
+ -----
542
+
543
+ Purpose
544
+ ~~~~~~~
545
+
546
+ Represents a complete agent with metadata.
547
+
548
+ Usage Examples
549
+ ~~~~~~~~~~~~~~
550
+
551
+ **Via Attributes**:
552
+
553
+ .. code-block:: python
554
+
555
+ from pygeai.lab.models import Agent, AgentData, Prompt, PromptOutput, ModelList, Model
556
+
557
+ prompt = Prompt(instructions="Summarize.", inputs=["text"], outputs=[PromptOutput(key="summary", description="Summary.")])
558
+ model_list = ModelList(models=[Model(name="gpt-4")])
559
+ agent_data = AgentData(prompt=prompt, llm_config=LlmConfig(max_tokens=2048, timeout=30, sampling=Sampling(temperature=0.7, top_k=50, top_p=0.9)), models=model_list)
560
+ agent = Agent(name="SummaryAgent", access_scope="public", public_name="summary-agent", agent_data=agent_data)
561
+ print(agent.to_dict())
562
+ # Output: Dictionary with agent settings
563
+
564
+ **Via Dictionary (with AgentData as dict)**:
565
+
566
+ .. code-block:: python
567
+
568
+ from pygeai.lab.models import Agent
569
+
570
+ agent = Agent(**{
571
+ "name": "SummaryAgent",
572
+ "accessScope": "public",
573
+ "publicName": "summary-agent",
574
+ "agentData": {
575
+ "prompt": {
576
+ "instructions": "Summarize.",
577
+ "inputs": ["text"],
578
+ "outputs": [{"key": "summary", "description": "Summary."}]
579
+ },
580
+ "llmConfig": {
581
+ "maxTokens": 2048,
582
+ "timeout": 30,
583
+ "sampling": {"temperature": 0.7, "topK": 50, "topP": 0.9}
584
+ },
585
+ "models": [{"name": "gpt-4"}]
586
+ }
587
+ })
588
+ print(agent.to_dict())
589
+ # Output: Dictionary with agent settings
590
+
591
+ **With New Fields (permissions, sharing_scope)**:
592
+
593
+ .. code-block:: python
594
+
595
+ from pygeai.lab.models import Agent, Permission
596
+
597
+ agent = Agent(**{
598
+ "name": "SecureAgent",
599
+ "accessScope": "private",
600
+ "sharingScope": "organization",
601
+ "permissions": {
602
+ "chatSharing": "organization",
603
+ "externalExecution": "none"
604
+ },
605
+ "agentData": {
606
+ "prompt": {"instructions": "Secure assistant"},
607
+ "models": [{"name": "gpt-4"}],
608
+ "properties": [
609
+ {"dataType": "string", "key": "env", "value": "production"},
610
+ {"dataType": "boolean", "key": "logging", "value": "true"}
611
+ ]
612
+ }
613
+ })
614
+ print(agent.sharing_scope) # Output: "organization"
615
+ print(agent.permissions.chat_sharing) # Output: "organization"
616
+ print(agent.agent_data.properties[0].key) # Output: "env"
617
+
618
+
619
+ Restrictions and Considerations
620
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
621
+
622
+ - Name is required; avoid special characters.
623
+ - Accepts `agent_data` as a dictionary.
624
+ - Public agents need valid public names.
625
+ - Non-draft agents require full configuration.
626
+ - API sets identifiers automatically.
627
+
628
+ AgentList
629
+ ---------
630
+
631
+ Purpose
632
+ ~~~~~~~
633
+
634
+ Manages multiple agents, typically from API responses.
635
+
636
+ Usage Examples
637
+ ~~~~~~~~~~~~~~
638
+
639
+ **Via Attributes**:
640
+
641
+ .. code-block:: python
642
+
643
+ from pygeai.lab.models import AgentList, Agent
644
+
645
+ agent = Agent(name="Agent1", access_scope="private")
646
+ agent_list = AgentList(agents=[agent])
647
+ print(agent_list.to_dict())
648
+ # Output: List of agent dictionaries
649
+
650
+ **Via Dictionary (with Agents as dicts)**:
651
+
652
+ .. code-block:: python
653
+
654
+ from pygeai.lab.models import AgentList
655
+
656
+ agent_list = AgentList(**{
657
+ "agents": [
658
+ {"name": "Agent1", "accessScope": "private"},
659
+ {"name": "Agent2", "accessScope": "public", "publicName": "agent-two"}
660
+ ]
661
+ })
662
+ print(agent_list.to_dict())
663
+ # Output: List of agent dictionaries
664
+
665
+ Restrictions and Considerations
666
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
667
+
668
+ - Agents collection is required; can be empty.
669
+ - Accepts agents as dictionaries.
670
+ - Supports iteration and appending.
671
+ - Useful for bulk agent management.
672
+
673
+ SharingLink
674
+ -----------
675
+
676
+ Purpose
677
+ ~~~~~~~
678
+
679
+ Enables agent sharing via links.
680
+
681
+ Usage Examples
682
+ ~~~~~~~~~~~~~~
683
+
684
+ **Via Attributes**:
685
+
686
+ .. code-block:: python
687
+
688
+ from pygeai.lab.models import SharingLink
689
+
690
+ link = SharingLink(agent_id="agent-123", api_token="xyz-token", shared_link="https://lab.globant.ai/share/agent-123")
691
+ print(link.to_dict())
692
+ # Output: Dictionary with link details
693
+
694
+ **Via Dictionary**:
695
+
696
+ .. code-block:: python
697
+
698
+ from pygeai.lab.models import SharingLink
699
+
700
+ link = SharingLink(**{
701
+ "agentId": "agent-123",
702
+ "apiToken": "xyz-token",
703
+ "sharedLink": "https://lab.globant.ai/share/agent-123"
704
+ })
705
+ print(link.to_dict())
706
+ # Output: Dictionary with link details
707
+
708
+ Restrictions and Considerations
709
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
710
+
711
+ - All fields are required, set by API.
712
+ - Links must be valid URLs.
713
+ - Secure tokens to prevent leaks.
714
+ - Dictionaries simplify link creation.
715
+
716
+ ToolParameter
717
+ -------------
718
+
719
+ Purpose
720
+ ~~~~~~~
721
+
722
+ Defines tool parameters.
723
+
724
+ Usage Examples
725
+ ~~~~~~~~~~~~~~
726
+
727
+ **Via Attributes**:
728
+
729
+ .. code-block:: python
730
+
731
+ from pygeai.lab.models import ToolParameter
732
+
733
+ param = ToolParameter(key="api_key", data_type="String", description="API key.", is_required=True)
734
+ print(param.to_dict())
735
+ # Output: Dictionary with parameter details
736
+
737
+ **Via Dictionary**:
738
+
739
+ .. code-block:: python
740
+
741
+ from pygeai.lab.models import ToolParameter
742
+
743
+ param = ToolParameter(**{
744
+ "key": "api_key",
745
+ "dataType": "String",
746
+ "description": "API key.",
747
+ "isRequired": True
748
+ })
749
+ print(param.to_dict())
750
+ # Output: Dictionary with parameter details
751
+
752
+ Restrictions and Considerations
753
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
754
+
755
+ - Core fields are mandatory.
756
+ - Data types must match API expectations.
757
+ - Keys must be unique per tool.
758
+ - Dictionaries streamline parameter setup.
759
+
760
+ ToolMessage
761
+ -----------
762
+
763
+ Purpose
764
+ ~~~~~~~
765
+
766
+ Provides tool feedback messages.
767
+
768
+ Usage Examples
769
+ ~~~~~~~~~~~~~~
770
+
771
+ **Via Attributes**:
772
+
773
+ .. code-block:: python
774
+
775
+ from pygeai.lab.models import ToolMessage
776
+
777
+ message = ToolMessage(description="Invalid key.", type="error")
778
+ print(message.to_dict())
779
+ # Output: {"description": "Invalid key.", "type": "error"}
780
+
781
+ **Via Dictionary**:
782
+
783
+ .. code-block:: python
784
+
785
+ from pygeai.lab.models import ToolMessage
786
+
787
+ message = ToolMessage(**{
788
+ "description": "Invalid key.",
789
+ "type": "error"
790
+ })
791
+ print(message.to_dict())
792
+ # Output: {"description": "Invalid key.", "type": "error"}
793
+
794
+ Restrictions and Considerations
795
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
796
+
797
+ - Both fields are required.
798
+ - Types are typically "warning" or "error."
799
+ - Keep messages concise.
800
+ - Dictionaries simplify message creation.
801
+
802
+ Tool
803
+ ----
804
+
805
+ Purpose
806
+ ~~~~~~~
807
+
808
+ Configures tools for agents.
809
+
810
+ Usage Examples
811
+ ~~~~~~~~~~~~~~
812
+
813
+ **Via Attributes**:
814
+
815
+ .. code-block:: python
816
+
817
+ from pygeai.lab.models import Tool, ToolParameter
818
+
819
+ param = ToolParameter(key="api_key", data_type="String", description="API key.", is_required=True)
820
+ tool = Tool(name="WeatherTool", description="Fetches weather.", scope="api", parameters=[param])
821
+ print(tool.to_dict())
822
+ # Output: Dictionary with tool settings
823
+
824
+ **Via Dictionary (with Parameters as dicts)**:
825
+
826
+ .. code-block:: python
827
+
828
+ from pygeai.lab.models import Tool
829
+
830
+ tool = Tool(**{
831
+ "name": "WeatherTool",
832
+ "description": "Fetches weather.",
833
+ "scope": "api",
834
+ "parameters": [
835
+ {"key": "api_key", "dataType": "String", "description": "API key.", "isRequired": True}
836
+ ]
837
+ })
838
+ print(tool.to_dict())
839
+ # Output: Dictionary with tool settings
840
+
841
+ Restrictions and Considerations
842
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
843
+
844
+ - Name and description are required.
845
+ - Accepts parameters as dictionaries.
846
+ - API tools need valid OpenAPI specs.
847
+ - Public tools require valid public names.
848
+ - Ensure unique parameter keys.
849
+
850
+ ToolList
851
+ --------
852
+
853
+ Purpose
854
+ ~~~~~~~
855
+
856
+ Manages multiple tools.
857
+
858
+ Usage Examples
859
+ ~~~~~~~~~~~~~~
860
+
861
+ **Via Attributes**:
862
+
863
+ .. code-block:: python
864
+
865
+ from pygeai.lab.models import ToolList, Tool
866
+
867
+ tool = Tool(name="Tool1", description="Tool one.", scope="builtin")
868
+ tool_list = ToolList(tools=[tool])
869
+ print(tool_list.to_dict())
870
+ # Output: Dictionary with tool list
871
+
872
+ **Via Dictionary (with Tools as dicts)**:
873
+
874
+ .. code-block:: python
875
+
876
+ from pygeai.lab.models import ToolList
877
+
878
+ tool_list = ToolList(**{
879
+ "tools": [
880
+ {"name": "Tool1", "description": "Tool one.", "scope": "builtin"}
881
+ ]
882
+ })
883
+ print(tool_list.to_dict())
884
+ # Output: Dictionary with tool list
885
+
886
+ Restrictions and Considerations
887
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
888
+
889
+ - Tools collection is required; can be empty.
890
+ - Accepts tools as dictionaries.
891
+ - Supports iteration and appending.
892
+ - Simplifies bulk tool handling.
893
+
894
+ LocalizedDescription
895
+ --------------------
896
+
897
+ Purpose
898
+ ~~~~~~~
899
+
900
+ Provides multilingual strategy descriptions.
901
+
902
+ Usage Examples
903
+ ~~~~~~~~~~~~~~
904
+
905
+ **Via Attributes**:
906
+
907
+ .. code-block:: python
908
+
909
+ from pygeai.lab.models import LocalizedDescription
910
+
911
+ desc = LocalizedDescription(language="english", description="Creative strategy.")
912
+ print(desc.to_dict())
913
+ # Output: {"language": "english", "description": "Creative strategy."}
914
+
915
+ **Via Dictionary**:
916
+
917
+ .. code-block:: python
918
+
919
+ from pygeai.lab.models import LocalizedDescription
920
+
921
+ desc = LocalizedDescription(**{
922
+ "language": "english",
923
+ "description": "Creative strategy."
924
+ })
925
+ print(desc.to_dict())
926
+ # Output: {"language": "english", "description": "Creative strategy."}
927
+
928
+ Restrictions and Considerations
929
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
930
+
931
+ - Both fields are required.
932
+ - Use standard language names.
933
+ - Dictionaries simplify descriptions.
934
+ - Supports multiple languages.
935
+
936
+ ReasoningStrategy
937
+ -----------------
938
+
939
+ Purpose
940
+ ~~~~~~~
941
+
942
+ Guides agent reasoning behavior.
943
+
944
+ Usage Examples
945
+ ~~~~~~~~~~~~~~
946
+
947
+ **Via Attributes**:
948
+
949
+ .. code-block:: python
950
+
951
+ from pygeai.lab.models import ReasoningStrategy, LocalizedDescription
952
+
953
+ desc = LocalizedDescription(language="english", description="Creative strategy.")
954
+ strategy = ReasoningStrategy(name="CreativeStrategy", access_scope="public", type="addendum", localized_descriptions=[desc])
955
+ print(strategy.to_dict())
956
+ # Output: Dictionary with strategy settings
957
+
958
+ **Via Dictionary (with Descriptions as dicts)**:
959
+
960
+ .. code-block:: python
961
+
962
+ from pygeai.lab.models import ReasoningStrategy
963
+
964
+ strategy = ReasoningStrategy(**{
965
+ "name": "CreativeStrategy",
966
+ "accessScope": "public",
967
+ "type": "addendum",
968
+ "localizedDescriptions": [
969
+ {"language": "english", "description": "Creative strategy."}
970
+ ]
971
+ })
972
+ print(strategy.to_dict())
973
+ # Output: Dictionary with strategy settings
974
+
975
+ Restrictions and Considerations
976
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
977
+
978
+ - Name, scope, and type are required.
979
+ - Accepts descriptions as dictionaries.
980
+ - Scope and type depend on Lab values.
981
+ - API sets identifiers.
982
+
983
+ ReasoningStrategyList
984
+ ---------------------
985
+
986
+ Purpose
987
+ ~~~~~~~
988
+
989
+ Manages multiple reasoning strategies.
990
+
991
+ Usage Examples
992
+ ~~~~~~~~~~~~~~
993
+
994
+ **Via Attributes**:
995
+
996
+ .. code-block:: python
997
+
998
+ from pygeai.lab.models import ReasoningStrategyList, ReasoningStrategy
999
+
1000
+ strategy = ReasoningStrategy(name="Strategy1", access_scope="private", type="addendum")
1001
+ strategy_list = ReasoningStrategyList(strategies=[strategy])
1002
+ print(strategy_list.to_dict())
1003
+ # Output: List of strategy dictionaries
1004
+
1005
+ **Via Dictionary (with Strategies as dicts)**:
1006
+
1007
+ .. code-block:: python
1008
+
1009
+ from pygeai.lab.models import ReasoningStrategyList
1010
+
1011
+ strategy_list = ReasoningStrategyList(**{
1012
+ "strategies": [
1013
+ {"name": "Strategy1", "accessScope": "private", "type": "addendum"}
1014
+ ]
1015
+ })
1016
+ print(strategy_list.to_dict())
1017
+ # Output: List of strategy dictionaries
1018
+
1019
+ Restrictions and Considerations
1020
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1021
+
1022
+ - Strategies collection is required; can be empty.
1023
+ - Accepts strategies as dictionaries.
1024
+ - Supports iteration and appending.
1025
+
1026
+ KnowledgeBase
1027
+ -------------
1028
+
1029
+ Purpose
1030
+ ~~~~~~~
1031
+
1032
+ Manages process artifacts.
1033
+
1034
+ Usage Examples
1035
+ ~~~~~~~~~~~~~~
1036
+
1037
+ **Via Attributes**:
1038
+
1039
+ .. code-block:: python
1040
+
1041
+ from pygeai.lab.models import KnowledgeBase
1042
+
1043
+ kb = KnowledgeBase(name="DocsKB", artifact_type_name=["document"])
1044
+ print(kb.to_dict())
1045
+ # Output: Dictionary with knowledge base settings
1046
+
1047
+ **Via Dictionary**:
1048
+
1049
+ .. code-block:: python
1050
+
1051
+ from pygeai.lab.models import KnowledgeBase
1052
+
1053
+ kb = KnowledgeBase(**{
1054
+ "name": "DocsKB",
1055
+ "artifactTypeName": ["document"]
1056
+ })
1057
+ print(kb.to_dict())
1058
+ # Output: Dictionary with knowledge base settings
1059
+
1060
+ Restrictions and Considerations
1061
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1062
+
1063
+ - Name and artifact types are required.
1064
+ - Dictionaries simplify setup.
1065
+ - API sets identifiers.
1066
+ - Ensure valid artifact types.
1067
+
1068
+ AgenticActivity
1069
+ ---------------
1070
+
1071
+ Purpose
1072
+ ~~~~~~~
1073
+
1074
+ Links tasks and agents in processes.
1075
+
1076
+ Usage Examples
1077
+ ~~~~~~~~~~~~~~
1078
+
1079
+ **Via Attributes**:
1080
+
1081
+ .. code-block:: python
1082
+
1083
+ from pygeai.lab.models import AgenticActivity
1084
+
1085
+ activity = AgenticActivity(key="act1", name="Summarize", task_name="SummaryTask", agent_name="SummaryAgent", agent_revision_id=1)
1086
+ print(activity.to_dict())
1087
+ # Output: Dictionary with activity settings
1088
+
1089
+ **Via Dictionary**:
1090
+
1091
+ .. code-block:: python
1092
+
1093
+ from pygeai.lab.models import AgenticActivity
1094
+
1095
+ activity = AgenticActivity(**{
1096
+ "key": "act1",
1097
+ "name": "Summarize",
1098
+ "taskName": "SummaryTask",
1099
+ "agentName": "SummaryAgent",
1100
+ "agentRevisionId": 1
1101
+ })
1102
+ print(activity.to_dict())
1103
+ # Output: Dictionary with activity settings
1104
+
1105
+ Restrictions and Considerations
1106
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1107
+
1108
+ - Core fields are required.
1109
+ - Keys must be unique.
1110
+ - Dictionaries streamline activity setup.
1111
+ - Reference existing tasks and agents.
1112
+
1113
+ ArtifactSignal
1114
+ --------------
1115
+
1116
+ Purpose
1117
+ ~~~~~~~
1118
+
1119
+ Triggers process actions via artifacts.
1120
+
1121
+ Usage Examples
1122
+ ~~~~~~~~~~~~~~
1123
+
1124
+ **Via Attributes**:
1125
+
1126
+ .. code-block:: python
1127
+
1128
+ from pygeai.lab.models import ArtifactSignal
1129
+
1130
+ signal = ArtifactSignal(key="sig1", name="DocSignal", handling_type="C", artifact_type_name=["document"])
1131
+ print(signal.to_dict())
1132
+ # Output: Dictionary with signal settings
1133
+
1134
+ **Via Dictionary**:
1135
+
1136
+ .. code-block:: python
1137
+
1138
+ from pygeai.lab.models import ArtifactSignal
1139
+
1140
+ signal = ArtifactSignal(**{
1141
+ "key": "sig1",
1142
+ "name": "DocSignal",
1143
+ "handlingType": "C",
1144
+ "artifactTypeName": ["document"]
1145
+ })
1146
+ print(signal.to_dict())
1147
+ # Output: Dictionary with signal settings
1148
+
1149
+ Restrictions and Considerations
1150
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1151
+
1152
+ - All fields are required.
1153
+ - Keys must be unique.
1154
+ - Dictionaries simplify signal setup.
1155
+ - Handling types depend on Lab engine.
1156
+
1157
+ UserSignal
1158
+ ----------
1159
+
1160
+ Purpose
1161
+ ~~~~~~~
1162
+
1163
+ Enables user-driven process signals.
1164
+
1165
+ Usage Examples
1166
+ ~~~~~~~~~~~~~~
1167
+
1168
+ **Via Attributes**:
1169
+
1170
+ .. code-block:: python
1171
+
1172
+ from pygeai.lab.models import UserSignal
1173
+
1174
+ signal = UserSignal(key="user1", name="UserInput")
1175
+ print(signal.to_dict())
1176
+ # Output: {"key": "user1", "name": "UserInput"}
1177
+
1178
+ **Via Dictionary**:
1179
+
1180
+ .. code-block:: python
1181
+
1182
+ from pygeai.lab.models import UserSignal
1183
+
1184
+ signal = UserSignal(**{
1185
+ "key": "user1",
1186
+ "name": "UserInput"
1187
+ })
1188
+ print(signal.to_dict())
1189
+ # Output: {"key": "user1", "name": "UserInput"}
1190
+
1191
+ Restrictions and Considerations
1192
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1193
+
1194
+ - Both fields are required.
1195
+ - Keys must be unique.
1196
+ - Dictionaries simplify setup.
1197
+ - Use descriptive names.
1198
+
1199
+ Event
1200
+ -----
1201
+
1202
+ Purpose
1203
+ ~~~~~~~
1204
+
1205
+ Marks process start or end points.
1206
+
1207
+ Usage Examples
1208
+ ~~~~~~~~~~~~~~
1209
+
1210
+ **Via Attributes**:
1211
+
1212
+ .. code-block:: python
1213
+
1214
+ from pygeai.lab.models import Event
1215
+
1216
+ event = Event(key="start1", name="ProcessStart")
1217
+ print(event.to_dict())
1218
+ # Output: {"key": "start1", "name": "ProcessStart"}
1219
+
1220
+ **Via Dictionary**:
1221
+
1222
+ .. code-block:: python
1223
+
1224
+ from pygeai.lab.models import Event
1225
+
1226
+ event = Event(**{
1227
+ "key": "start1",
1228
+ "name": "ProcessStart"
1229
+ })
1230
+ print(event.to_dict())
1231
+ # Output: {"key": "start1", "name": "ProcessStart"}
1232
+
1233
+ Restrictions and Considerations
1234
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1235
+
1236
+ - Both fields are required.
1237
+ - Keys must be unique.
1238
+ - Dictionaries simplify event setup.
1239
+ - Ensure flow connectivity.
1240
+
1241
+ SequenceFlow
1242
+ ------------
1243
+
1244
+ Purpose
1245
+ ~~~~~~~
1246
+
1247
+ Connects process elements.
1248
+
1249
+ Usage Examples
1250
+ ~~~~~~~~~~~~~~
1251
+
1252
+ **Via Attributes**:
1253
+
1254
+ .. code-block:: python
1255
+
1256
+ from pygeai.lab.models import SequenceFlow
1257
+
1258
+ flow = SequenceFlow(key="flow1", source_key="start1", target_key="act1")
1259
+ print(flow.to_dict())
1260
+ # Output: Dictionary with flow settings
1261
+
1262
+ **Via Dictionary**:
1263
+
1264
+ .. code-block:: python
1265
+
1266
+ from pygeai.lab.models import SequenceFlow
1267
+
1268
+ flow = SequenceFlow(**{
1269
+ "key": "flow1",
1270
+ "sourceKey": "start1",
1271
+ "targetKey": "act1"
1272
+ })
1273
+ print(flow.to_dict())
1274
+ # Output: Dictionary with flow settings
1275
+
1276
+ Restrictions and Considerations
1277
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1278
+
1279
+ - All fields are required.
1280
+ - Keys must be unique.
1281
+ - Dictionaries simplify flow setup.
1282
+ - Reference valid elements.
1283
+
1284
+ Variable
1285
+ --------
1286
+
1287
+ Purpose
1288
+ ~~~~~~~
1289
+
1290
+ Stores dynamic process data.
1291
+
1292
+ Usage Examples
1293
+ ~~~~~~~~~~~~~~
1294
+
1295
+ **Via Attributes**:
1296
+
1297
+ .. code-block:: python
1298
+
1299
+ from pygeai.lab.models import Variable
1300
+
1301
+ var = Variable(key="input_text", value="Sample text")
1302
+ print(var.to_dict())
1303
+ # Output: {"key": "input_text", "value": "Sample text"}
1304
+
1305
+ **Via Dictionary**:
1306
+
1307
+ .. code-block:: python
1308
+
1309
+ from pygeai.lab.models import Variable
1310
+
1311
+ var = Variable(**{
1312
+ "key": "input_text",
1313
+ "value": "Sample text"
1314
+ })
1315
+ print(var.to_dict())
1316
+ # Output: {"key": "input_text", "value": "Sample text"}
1317
+
1318
+ Restrictions and Considerations
1319
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1320
+
1321
+ - Both fields are required.
1322
+ - Keys should be unique.
1323
+ - Dictionaries simplify variable setup.
1324
+ - Values must be strings.
1325
+
1326
+ VariableList
1327
+ ------------
1328
+
1329
+ Purpose
1330
+ ~~~~~~~
1331
+
1332
+ Manages process variables.
1333
+
1334
+ Usage Examples
1335
+ ~~~~~~~~~~~~~~
1336
+
1337
+ **Via Attributes**:
1338
+
1339
+ .. code-block:: python
1340
+
1341
+ from pygeai.lab.models import VariableList, Variable
1342
+
1343
+ var = Variable(key="input_text", value="Sample text")
1344
+ var_list = VariableList(variables=[var])
1345
+ print(var_list.to_dict())
1346
+ # Output: List of variable dictionaries
1347
+
1348
+ **Via Dictionary (with Variables as dicts)**:
1349
+
1350
+ .. code-block:: python
1351
+
1352
+ from pygeai.lab.models import VariableList
1353
+
1354
+ var_list = VariableList(**{
1355
+ "variables": [
1356
+ {"key": "input_text", "value": "Sample text"}
1357
+ ]
1358
+ })
1359
+ print(var_list.to_dict())
1360
+ # Output: List of variable dictionaries
1361
+
1362
+ Restrictions and Considerations
1363
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1364
+
1365
+ - Variables collection is optional; defaults to empty.
1366
+ - Accepts variables as dictionaries.
1367
+ - Supports iteration and appending.
1368
+
1369
+ AgenticProcess
1370
+ --------------
1371
+
1372
+ Purpose
1373
+ ~~~~~~~
1374
+
1375
+ Orchestrates process workflows.
1376
+
1377
+ Usage Examples
1378
+ ~~~~~~~~~~~~~~
1379
+
1380
+ **Via Attributes**:
1381
+
1382
+ .. code-block:: python
1383
+
1384
+ from pygeai.lab.models import AgenticProcess, AgenticActivity, Event, SequenceFlow
1385
+
1386
+ activity = AgenticActivity(key="act1", name="Summarize", task_name="SummaryTask", agent_name="SummaryAgent", agent_revision_id=1)
1387
+ start_event = Event(key="start1", name="Start")
1388
+ flow = SequenceFlow(key="flow1", source_key="start1", target_key="act1")
1389
+ process = AgenticProcess(name="SummaryProcess", agentic_activities=[activity], start_event=start_event, sequence_flows=[flow])
1390
+ print(process.to_dict())
1391
+ # Output: Dictionary with process settings
1392
+
1393
+ **Via Dictionary (with Activities, Event, Flows as dicts)**:
1394
+
1395
+ .. code-block:: python
1396
+
1397
+ from pygeai.lab.models import AgenticProcess
1398
+
1399
+ process = AgenticProcess(**{
1400
+ "name": "SummaryProcess",
1401
+ "agenticActivities": [
1402
+ {
1403
+ "key": "act1",
1404
+ "name": "Summarize",
1405
+ "taskName": "SummaryTask",
1406
+ "agentName": "SummaryAgent",
1407
+ "agentRevisionId": 1
1408
+ }
1409
+ ],
1410
+ "startEvent": {"key": "start1", "name": "Start"},
1411
+ "sequenceFlows": [
1412
+ {"key": "flow1", "sourceKey": "start1", "targetKey": "act1"}
1413
+ ]
1414
+ })
1415
+ print(process.to_dict())
1416
+ # Output: Dictionary with process settings
1417
+
1418
+ Restrictions and Considerations
1419
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1420
+
1421
+ - Name is required; avoid special characters.
1422
+ - Accepts activities, events, and flows as dictionaries.
1423
+ - Flows must reference valid keys.
1424
+ - API sets identifiers.
1425
+ - Ensure valid process structure.
1426
+
1427
+ ArtifactType
1428
+ ------------
1429
+
1430
+ Purpose
1431
+ ~~~~~~~
1432
+
1433
+ Defines task artifacts.
1434
+
1435
+ Usage Examples
1436
+ ~~~~~~~~~~~~~~
1437
+
1438
+ **Via Attributes**:
1439
+
1440
+ .. code-block:: python
1441
+
1442
+ from pygeai.lab.models import ArtifactType
1443
+
1444
+ artifact = ArtifactType(name="document", usage_type="input")
1445
+ print(artifact.to_dict())
1446
+ # Output: Dictionary with artifact settings
1447
+
1448
+ **Via Dictionary**:
1449
+
1450
+ .. code-block:: python
1451
+
1452
+ from pygeai.lab.models import ArtifactType
1453
+
1454
+ artifact = ArtifactType(**{
1455
+ "name": "document",
1456
+ "usageType": "input"
1457
+ })
1458
+ print(artifact.to_dict())
1459
+ # Output: Dictionary with artifact settings
1460
+
1461
+ Restrictions and Considerations
1462
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1463
+
1464
+ - Name and usage type are required.
1465
+ - Usage type is "input" or "output."
1466
+ - Dictionaries simplify artifact setup.
1467
+ - Variable keys have length limits.
1468
+
1469
+ ArtifactTypeList
1470
+ ----------------
1471
+
1472
+ Purpose
1473
+ ~~~~~~~
1474
+
1475
+ Manages task artifact types.
1476
+
1477
+ Usage Examples
1478
+ ~~~~~~~~~~~~~~
1479
+
1480
+ **Via Attributes**:
1481
+
1482
+ .. code-block:: python
1483
+
1484
+ from pygeai.lab.models import ArtifactTypeList, ArtifactType
1485
+
1486
+ artifact = ArtifactType(name="document", usage_type="input")
1487
+ artifact_list = ArtifactTypeList(artifact_types=[artifact])
1488
+ print(artifact_list.to_dict())
1489
+ # Output: List of artifact dictionaries
1490
+
1491
+ **Via Dictionary (with ArtifactTypes as dicts)**:
1492
+
1493
+ .. code-block:: python
1494
+
1495
+ from pygeai.lab.models import ArtifactTypeList
1496
+
1497
+ artifact_list = ArtifactTypeList(**{
1498
+ "artifact_types": [
1499
+ {"name": "document", "usageType": "input"}
1500
+ ]
1501
+ })
1502
+ print(artifact_list.to_dict())
1503
+ # Output: List of artifact dictionaries
1504
+
1505
+ Restrictions and Considerations
1506
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1507
+
1508
+ - Artifact types collection is optional; defaults to empty.
1509
+ - Accepts artifact types as dictionaries.
1510
+ - Supports iteration and appending.
1511
+
1512
+ Task
1513
+ ----
1514
+
1515
+ Purpose
1516
+ ~~~~~~~
1517
+
1518
+ Configures agent tasks.
1519
+
1520
+ Usage Examples
1521
+ ~~~~~~~~~~~~~~
1522
+
1523
+ **Via Attributes**:
1524
+
1525
+ .. code-block:: python
1526
+
1527
+ from pygeai.lab.models import Task, Prompt, PromptOutput, ArtifactTypeList, ArtifactType
1528
+
1529
+ prompt = Prompt(instructions="Summarize.", inputs=["text"], outputs=[PromptOutput(key="summary", description="Summary.")])
1530
+ artifact = ArtifactType(name="document", usage_type="input")
1531
+ task = Task(name="SummaryTask", prompt_data=prompt, artifact_types=ArtifactTypeList(artifact_types=[artifact]))
1532
+ print(task.to_dict())
1533
+ # Output: Dictionary with task settings
1534
+
1535
+ **Via Dictionary (with Prompt, ArtifactTypes as dicts)**:
1536
+
1537
+ .. code-block:: python
1538
+
1539
+ from pygeai.lab.models import Task
1540
+
1541
+ task = Task(**{
1542
+ "name": "SummaryTask",
1543
+ "promptData": {
1544
+ "instructions": "Summarize.",
1545
+ "inputs": ["text"],
1546
+ "outputs": [{"key": "summary", "description": "Summary."}]
1547
+ },
1548
+ "artifactTypes": [
1549
+ {"name": "document", "usageType": "input"}
1550
+ ]
1551
+ })
1552
+ print(task.to_dict())
1553
+ # Output: Dictionary with task settings
1554
+
1555
+ Restrictions and Considerations
1556
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1557
+
1558
+ - Name is required; avoid special characters.
1559
+ - Accepts prompt and artifact types as dictionaries.
1560
+ - Artifact types must use valid usage types.
1561
+ - Prompt is optional but recommended.
1562
+
1563
+ AgenticProcessList
1564
+ ------------------
1565
+
1566
+ Purpose
1567
+ ~~~~~~~
1568
+
1569
+ Manages multiple processes.
1570
+
1571
+ Usage Examples
1572
+ ~~~~~~~~~~~~~~
1573
+
1574
+ **Via Attributes**:
1575
+
1576
+ .. code-block:: python
1577
+
1578
+ from pygeai.lab.models import AgenticProcessList, AgenticProcess
1579
+
1580
+ process = AgenticProcess(name="Process1")
1581
+ process_list = AgenticProcessList(processes=[process])
1582
+ print(process_list.to_dict())
1583
+ # Output: Dictionary with process list
1584
+
1585
+ **Via Dictionary (with Processes as dicts)**:
1586
+
1587
+ .. code-block:: python
1588
+
1589
+ from pygeai.lab.models import AgenticProcessList
1590
+
1591
+ process_list = AgenticProcessList(**{
1592
+ "processes": [
1593
+ {"name": "Process1"}
1594
+ ]
1595
+ })
1596
+ print(process_list.to_dict())
1597
+ # Output: Dictionary with process list
1598
+
1599
+ Restrictions and Considerations
1600
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1601
+
1602
+ - Processes collection is required; can be empty.
1603
+ - Accepts processes as dictionaries.
1604
+ - Supports iteration and appending.
1605
+
1606
+ TaskList
1607
+ --------
1608
+
1609
+ Purpose
1610
+ ~~~~~~~
1611
+
1612
+ Manages multiple tasks.
1613
+
1614
+ Usage Examples
1615
+ ~~~~~~~~~~~~~~
1616
+
1617
+ **Via Attributes**:
1618
+
1619
+ .. code-block:: python
1620
+
1621
+ from pygeai.lab.models import TaskList, Task
1622
+
1623
+ task = Task(name="Task1")
1624
+ task_list = TaskList(tasks=[task])
1625
+ print(task_list.to_dict())
1626
+ # Output: List of task dictionaries
1627
+
1628
+ **Via Dictionary (with Tasks as dicts)**:
1629
+
1630
+ .. code-block:: python
1631
+
1632
+ from pygeai.lab.models import TaskList
1633
+
1634
+ task_list = TaskList(**{
1635
+ "tasks": [
1636
+ {"name": "Task1"}
1637
+ ]
1638
+ })
1639
+ print(task_list.to_dict())
1640
+ # Output: List of task dictionaries
1641
+
1642
+ Restrictions and Considerations
1643
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1644
+
1645
+ - Tasks collection is required; can be empty.
1646
+ - Accepts tasks as dictionaries.
1647
+ - Supports iteration and appending.
1648
+
1649
+ ProcessInstance
1650
+ ---------------
1651
+
1652
+ Purpose
1653
+ ~~~~~~~
1654
+
1655
+ Tracks running process instances.
1656
+
1657
+ Usage Examples
1658
+ ~~~~~~~~~~~~~~
1659
+
1660
+ **Via Attributes**:
1661
+
1662
+ .. code-block:: python
1663
+
1664
+ from pygeai.lab.models import ProcessInstance, AgenticProcess
1665
+
1666
+ process = AgenticProcess(name="SummaryProcess")
1667
+ instance = ProcessInstance(process=process, subject="Summary")
1668
+ print(instance.to_dict())
1669
+ # Output: Dictionary with instance settings
1670
+
1671
+ **Via Dictionary (with Process as dict)**:
1672
+
1673
+ .. code-block:: python
1674
+
1675
+ from pygeai.lab.models import ProcessInstance
1676
+
1677
+ instance = ProcessInstance(**{
1678
+ "process": {"name": "SummaryProcess"},
1679
+ "subject": "Summary"
1680
+ })
1681
+ print(instance.to_dict())
1682
+ # Output: Dictionary with instance settings
1683
+
1684
+ Restrictions and Considerations
1685
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1686
+
1687
+ - Process and subject are required.
1688
+ - Accepts process as a dictionary.
1689
+ - API sets identifiers.
1690
+ - Align variables with process needs.
1691
+
1692
+ ProcessInstanceList
1693
+ -------------------
1694
+
1695
+ Purpose
1696
+ ~~~~~~~
1697
+
1698
+ Manages multiple process instances.
1699
+
1700
+ Usage Examples
1701
+ ~~~~~~~~~~~~~~
1702
+
1703
+ **Via Attributes**:
1704
+
1705
+ .. code-block:: python
1706
+
1707
+ from pygeai.lab.models import ProcessInstanceList, ProcessInstance, AgenticProcess
1708
+
1709
+ process = AgenticProcess(name="Process1")
1710
+ instance = ProcessInstance(process=process, subject="Instance1")
1711
+ instance_list = ProcessInstanceList(instances=[instance])
1712
+ print(instance_list.to_dict())
1713
+ # Output: List of instance dictionaries
1714
+
1715
+ **Via Dictionary (with Instances as dicts)**:
1716
+
1717
+ .. code-block:: python
1718
+
1719
+ from pygeai.lab.models import ProcessInstanceList
1720
+
1721
+ instance_list = ProcessInstanceList(**{
1722
+ "instances": [
1723
+ {"process": {"name": "Process1"}, "subject": "Instance1"}
1724
+ ]
1725
+ })
1726
+ print(instance_list.to_dict())
1727
+ # Output: List of instance dictionaries
1728
+
1729
+ Restrictions and Considerations
1730
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1731
+
1732
+ - Instances collection is required; can be empty.
1733
+ - Accepts instances as dictionaries.
1734
+ - Supports iteration and appending.