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,462 @@
1
+ import json
2
+ import streamlit as st
3
+ from typing import Optional, List, Dict, Any
4
+ from pygeai.lab.managers import AILabManager
5
+ from pygeai.lab.models import (
6
+ Agent, AgentData, Prompt, PromptExample, PromptOutput, LlmConfig, Sampling, Model, ModelList,
7
+ Tool, ToolParameter, ResourcePool, ResourcePoolTool, ResourcePoolList,
8
+ Task, AgenticProcess, KnowledgeBase, AgenticActivity, ArtifactSignal, UserSignal, Event, SequenceFlow,
9
+ Variable, VariableList, FilterSettings
10
+ )
11
+
12
+ # Initialize the manager
13
+ manager = AILabManager()
14
+
15
+ # Streamlit App
16
+ st.title("AI Lab Manager Interface")
17
+ st.write("Manage Agents, Tools, Tasks, and Agentic Processes for your AI Lab project.")
18
+
19
+ # Project ID Input at the top of the app
20
+ project_id = st.text_input("Project ID (Required)", value="2ca6883f-6778-40bb-bcc1-85451fb11107", key="project_id")
21
+ if not project_id:
22
+ st.error("Please enter a valid Project ID to proceed.")
23
+ st.stop()
24
+
25
+ # Helper function to display results or errors with detailed feedback
26
+ def display_result(result: Any, operation: str, entity_type: str, entity_name: str):
27
+ """
28
+ Displays success or error messages based on the result of an operation.
29
+
30
+ Args:
31
+ result: The response object from the AILabManager operation.
32
+ operation: The type of operation ('create', 'update', 'delete').
33
+ entity_type: The type of entity ('Agent', 'Tool', 'Task', 'Process').
34
+ entity_name: The name or ID of the entity for personalized feedback.
35
+ """
36
+ success_msg = {
37
+ 'create': f"{entity_type} '{entity_name}' created successfully!",
38
+ 'update': f"{entity_type} '{entity_name}' updated successfully!",
39
+ 'delete': f"{entity_type} '{entity_name}' deleted successfully!"
40
+ }
41
+ error_msg = {
42
+ 'create': f"Failed to create {entity_type.lower()} '{entity_name}'",
43
+ 'update': f"Failed to update {entity_type.lower()} '{entity_name}'",
44
+ 'delete': f"Failed to delete {entity_type.lower()} '{entity_name}'"
45
+ }
46
+
47
+ if hasattr(result, 'errors') and result.errors:
48
+ st.error(f"{error_msg[operation]}: {result.errors}")
49
+ elif isinstance(result, dict) and 'errors' in result:
50
+ st.error(f"{error_msg[operation]}: {result['errors']}")
51
+ elif hasattr(result, '__dict__') and 'errors' in result.__dict__ and result.__dict__['errors']:
52
+ st.error(f"{error_msg[operation]}: {result.__dict__['errors']}")
53
+ else:
54
+ st.success(success_msg[operation])
55
+
56
+ # Create tabs for different components
57
+ agent_tab, tool_tab, task_tab, process_tab = st.tabs(["Agents", "Tools", "Tasks", "Agentic Processes"])
58
+
59
+ # --- Agents Tab ---
60
+ with agent_tab:
61
+ st.header("Manage Agents")
62
+
63
+ # JSON Upload Section
64
+ st.subheader("Upload Agent JSON")
65
+ uploaded_agent_file = st.file_uploader("Upload Agent JSON File", type=["json"], key="agent_json_upload")
66
+ if uploaded_agent_file is not None:
67
+ try:
68
+ agent_json = json.load(uploaded_agent_file)
69
+ st.json(agent_json) # Display the JSON for user verification
70
+
71
+ # Parse JSON to Agent object
72
+ agent_data_json = agent_json.get("agentData", {})
73
+ prompt_json = agent_data_json.get("prompt", {})
74
+ llm_config_json = agent_data_json.get("llmConfig", {})
75
+ sampling_json = llm_config_json.get("sampling", {})
76
+ models_json = agent_data_json.get("models", [])
77
+
78
+ agent = Agent(
79
+ id=agent_json.get("id"),
80
+ name=agent_json.get("name", ""),
81
+ access_scope=agent_json.get("accessScope", "private"),
82
+ description=agent_json.get("description"),
83
+ job_description=agent_json.get("jobDescription"),
84
+ is_draft=agent_json.get("isDraft", True),
85
+ agent_data=AgentData(
86
+ prompt=Prompt(
87
+ context=prompt_json.get("context", ""),
88
+ instructions=prompt_json.get("instructions", "")
89
+ ),
90
+ llm_config=LlmConfig(
91
+ max_tokens=llm_config_json.get("maxTokens", 1500),
92
+ sampling=Sampling(
93
+ temperature=sampling_json.get("temperature", 0.7),
94
+ top_k=sampling_json.get("topK", 50),
95
+ top_p=sampling_json.get("topP", 1.0)
96
+ ),
97
+ timeout=llm_config_json.get("timeout", 60)
98
+ ),
99
+ models=ModelList(models=[
100
+ Model(
101
+ name=model.get("name", ""),
102
+ llm_config=LlmConfig(
103
+ max_tokens=model.get("llmConfig", {}).get("maxTokens", 0),
104
+ sampling=Sampling(
105
+ temperature=model.get("llmConfig", {}).get("sampling", {}).get("temperature", 0.7)
106
+ )
107
+ )
108
+ ) for model in models_json
109
+ ]),
110
+ resource_pools=None # Simplified; can be extended if needed
111
+ )
112
+ )
113
+
114
+ st.success("Agent JSON parsed successfully!")
115
+ if st.button("Create/Update Agent from JSON", key="agent_json_submit"):
116
+ if agent.id:
117
+ result = manager.update_agent(project_id=project_id, agent=agent, automatic_publish=False)
118
+ display_result(result, 'update', 'Agent', agent.name)
119
+ else:
120
+ result = manager.create_agent(project_id=project_id, agent=agent, automatic_publish=False)
121
+ display_result(result, 'create', 'Agent', agent.name)
122
+ except json.JSONDecodeError:
123
+ st.error("Invalid JSON format in uploaded file.")
124
+ except Exception as e:
125
+ st.error(f"Error parsing Agent JSON: {str(e)}")
126
+
127
+ with st.form("agent_form"):
128
+ st.subheader("Create or Update Agent")
129
+ agent_name = st.text_input("Name (Required)", key="agent_name")
130
+ agent_access_scope = st.selectbox("Access Scope (Required)", ["private", "public"], key="agent_access_scope")
131
+ agent_public_name = st.text_input("Public Name (Required if Public)", key="agent_public_name")
132
+ agent_description = st.text_area("Description (Optional)", key="agent_description")
133
+ agent_job_description = st.text_area("Job Description (Optional)", key="agent_job_description")
134
+ agent_avatar_image = st.text_input("Avatar Image URL (Optional)", key="agent_avatar_image")
135
+ agent_is_draft = st.checkbox("Is Draft (Optional)", value=True, key="agent_is_draft")
136
+ # Simplified Agent Data (focus on key fields, default nested structures)
137
+ prompt_instructions = st.text_area("Prompt Instructions (Required for Agent Data)", key="agent_prompt_instructions")
138
+ llm_max_tokens = st.number_input("LLM Max Tokens (Required for Agent Data)", min_value=1, value=1500, key="agent_max_tokens")
139
+ # For update/delete
140
+ agent_id = st.text_input("Agent ID (Required for Update/Delete)", key="agent_id")
141
+
142
+ col1, col2, col3 = st.columns(3)
143
+ with col1:
144
+ create_agent_btn = st.form_submit_button("Create Agent")
145
+ with col2:
146
+ update_agent_btn = st.form_submit_button("Update Agent")
147
+ with col3:
148
+ delete_agent_btn = st.form_submit_button("Delete Agent")
149
+
150
+ if create_agent_btn:
151
+ if not agent_name or not prompt_instructions:
152
+ st.error("Name and Prompt Instructions are required.")
153
+ else:
154
+ agent = Agent(
155
+ name=agent_name,
156
+ access_scope=agent_access_scope,
157
+ public_name=agent_public_name if agent_public_name else None,
158
+ description=agent_description if agent_description else None,
159
+ job_description=agent_job_description if agent_job_description else None,
160
+ avatar_image=agent_avatar_image if agent_avatar_image else None,
161
+ is_draft=agent_is_draft,
162
+ agent_data=AgentData(
163
+ prompt=Prompt(instructions=prompt_instructions),
164
+ llm_config=LlmConfig(max_tokens=llm_max_tokens),
165
+ models=ModelList(models=[Model(name="gpt-3.5-turbo")]),
166
+ resource_pools=None
167
+ )
168
+ )
169
+ result = manager.create_agent(project_id=project_id, agent=agent, automatic_publish=False)
170
+ display_result(result, 'create', 'Agent', agent_name)
171
+
172
+ if update_agent_btn:
173
+ if not agent_id or not agent_name or not prompt_instructions:
174
+ st.error("Agent ID, Name, and Prompt Instructions are required for update.")
175
+ else:
176
+ agent = Agent(
177
+ id=agent_id,
178
+ name=agent_name,
179
+ access_scope=agent_access_scope,
180
+ public_name=agent_public_name if agent_public_name else None,
181
+ description=agent_description if agent_description else None,
182
+ job_description=agent_job_description if agent_job_description else None,
183
+ avatar_image=agent_avatar_image if agent_avatar_image else None,
184
+ is_draft=agent_is_draft,
185
+ agent_data=AgentData(
186
+ prompt=Prompt(instructions=prompt_instructions),
187
+ llm_config=LlmConfig(max_tokens=llm_max_tokens),
188
+ models=ModelList(models=[Model(name="gpt-3.5-turbo")]),
189
+ resource_pools=None
190
+ )
191
+ )
192
+ result = manager.update_agent(project_id=project_id, agent=agent, automatic_publish=False)
193
+ display_result(result, 'update', 'Agent', agent_name)
194
+
195
+ if delete_agent_btn:
196
+ if not agent_id:
197
+ st.error("Agent ID is required for deletion.")
198
+ else:
199
+ result = manager.delete_agent(project_id=project_id, agent_id=agent_id)
200
+ display_result(result, 'delete', 'Agent', f"ID: {agent_id}")
201
+
202
+ # --- Tools Tab ---
203
+ with tool_tab:
204
+ st.header("Manage Tools")
205
+
206
+ # JSON Upload Section
207
+ st.subheader("Upload Tool JSON")
208
+ uploaded_tool_file = st.file_uploader("Upload Tool JSON File", type=["json"], key="tool_json_upload")
209
+ if uploaded_tool_file is not None:
210
+ try:
211
+ tool_json = json.load(uploaded_tool_file)
212
+ st.json(tool_json) # Display the JSON for user verification
213
+
214
+ # Parse JSON to Tool object
215
+ parameters_json = tool_json.get("parameters", [])
216
+ parameters = [
217
+ ToolParameter(
218
+ key=param.get("key", ""),
219
+ data_type=param.get("dataType", ""),
220
+ description=param.get("description", ""),
221
+ is_required=param.get("isRequired", False),
222
+ type=param.get("type"),
223
+ value=param.get("value"),
224
+ from_secret=param.get("fromSecret", False)
225
+ ) for param in parameters_json
226
+ ]
227
+
228
+ tool = Tool(
229
+ id=tool_json.get("id"),
230
+ name=tool_json.get("name", ""),
231
+ description=tool_json.get("description", ""),
232
+ scope=tool_json.get("scope", "builtin"),
233
+ access_scope=tool_json.get("accessScope"),
234
+ public_name=None, # Optional field, not in JSON example
235
+ icon=None, # Optional field, not in JSON example
236
+ open_api=None, # Optional field, not in JSON example
237
+ report_events="None", # Default value
238
+ is_draft=False, # Default value
239
+ parameters=parameters if parameters else None
240
+ )
241
+
242
+ st.success("Tool JSON parsed successfully!")
243
+ if st.button("Create/Update Tool from JSON", key="tool_json_submit"):
244
+ if tool.id:
245
+ result = manager.update_tool(project_id=project_id, tool=tool, automatic_publish=False)
246
+ display_result(result, 'update', 'Tool', tool.name)
247
+ else:
248
+ result = manager.create_tool(project_id=project_id, tool=tool, automatic_publish=False)
249
+ display_result(result, 'create', 'Tool', tool.name)
250
+ except json.JSONDecodeError:
251
+ st.error("Invalid JSON format in uploaded file.")
252
+ except Exception as e:
253
+ st.error(f"Error parsing Tool JSON: {str(e)}")
254
+
255
+ with st.form("tool_form"):
256
+ st.subheader("Create or Update Tool")
257
+ tool_name = st.text_input("Name (Required)", key="tool_name")
258
+ tool_description = st.text_area("Description (Required)", key="tool_description")
259
+ tool_scope = st.selectbox("Scope (Required)", ["builtin", "external", "api"], key="tool_scope")
260
+ tool_access_scope = st.selectbox("Access Scope (Optional)", ["", "private", "public"], key="tool_access_scope")
261
+ tool_public_name = st.text_input("Public Name (Required if Public)", key="tool_public_name")
262
+ tool_icon = st.text_input("Icon URL (Optional)", key="tool_icon")
263
+ tool_open_api = st.text_input("OpenAPI URL (Required if Scope is API)", key="tool_open_api")
264
+ tool_report_events = st.selectbox("Report Events (Optional)", ["None", "All", "Start", "Finish", "Progress"], key="tool_report_events")
265
+ tool_is_draft = st.checkbox("Is Draft (Optional)", value=True, key="tool_is_draft")
266
+ # Simplified Parameters Input
267
+ param_key = st.text_input("Parameter Key (Optional)", key="tool_param_key")
268
+ param_data_type = st.text_input("Parameter Data Type (Optional)", key="tool_param_data_type")
269
+ param_desc = st.text_area("Parameter Description (Optional)", key="tool_param_desc")
270
+ param_is_required = st.checkbox("Parameter Is Required (Optional)", value=False, key="tool_param_is_required")
271
+ # For update/delete
272
+ tool_id = st.text_input("Tool ID (Required for Update/Delete)", key="tool_id")
273
+
274
+ col1, col2, col3 = st.columns(3)
275
+ with col1:
276
+ create_tool_btn = st.form_submit_button("Create Tool")
277
+ with col2:
278
+ update_tool_btn = st.form_submit_button("Update Tool")
279
+ with col3:
280
+ delete_tool_btn = st.form_submit_button("Delete Tool")
281
+
282
+ if create_tool_btn:
283
+ if not tool_name or not tool_description:
284
+ st.error("Name and Description are required.")
285
+ elif tool_scope == "api" and not tool_open_api:
286
+ st.error("OpenAPI URL is required for API scope.")
287
+ else:
288
+ parameters = []
289
+ if param_key and param_data_type:
290
+ parameters.append(ToolParameter(
291
+ key=param_key,
292
+ data_type=param_data_type,
293
+ description=param_desc if param_desc else "",
294
+ is_required=param_is_required
295
+ ))
296
+ tool = Tool(
297
+ name=tool_name,
298
+ description=tool_description,
299
+ scope=tool_scope,
300
+ access_scope=tool_access_scope if tool_access_scope else None,
301
+ public_name=tool_public_name if tool_public_name else None,
302
+ icon=tool_icon if tool_icon else None,
303
+ open_api=tool_open_api if tool_open_api else None,
304
+ report_events=tool_report_events,
305
+ is_draft=tool_is_draft,
306
+ parameters=parameters if parameters else None
307
+ )
308
+ result = manager.create_tool(project_id=project_id, tool=tool, automatic_publish=False)
309
+ display_result(result, 'create', 'Tool', tool_name)
310
+
311
+ if update_tool_btn:
312
+ if not tool_id or not tool_name or not tool_description:
313
+ st.error("Tool ID, Name, and Description are required for update.")
314
+ elif tool_scope == "api" and not tool_open_api:
315
+ st.error("OpenAPI URL is required for API scope.")
316
+ else:
317
+ parameters = []
318
+ if param_key and param_data_type:
319
+ parameters.append(ToolParameter(
320
+ key=param_key,
321
+ data_type=param_data_type,
322
+ description=param_desc if param_desc else "",
323
+ is_required=param_is_required
324
+ ))
325
+ tool = Tool(
326
+ id=tool_id,
327
+ name=tool_name,
328
+ description=tool_description,
329
+ scope=tool_scope,
330
+ access_scope=tool_access_scope if tool_access_scope else None,
331
+ public_name=tool_public_name if tool_public_name else None,
332
+ icon=tool_icon if tool_icon else None,
333
+ open_api=tool_open_api if tool_open_api else None,
334
+ report_events=tool_report_events,
335
+ is_draft=tool_is_draft,
336
+ parameters=parameters if parameters else None
337
+ )
338
+ result = manager.update_tool(project_id=project_id, tool=tool, automatic_publish=False)
339
+ display_result(result, 'update', 'Tool', tool_name)
340
+
341
+ if delete_tool_btn:
342
+ if not tool_id:
343
+ st.error("Tool ID is required for deletion.")
344
+ else:
345
+ result = manager.delete_tool(project_id=project_id, tool_id=tool_id)
346
+ display_result(result, 'delete', 'Tool', f"ID: {tool_id}")
347
+
348
+ # --- Tasks Tab ---
349
+ with task_tab:
350
+ st.header("Manage Tasks")
351
+
352
+ with st.form("task_form"):
353
+ st.subheader("Create or Update Task")
354
+ task_name = st.text_input("Name (Required)", key="task_name")
355
+ task_description = st.text_area("Description (Optional)", key="task_description")
356
+ task_title_template = st.text_input("Title Template (Optional)", key="task_title_template")
357
+ task_is_draft = st.checkbox("Is Draft (Optional)", value=True, key="task_is_draft")
358
+ prompt_instructions = st.text_area("Prompt Instructions (Optional)", key="task_prompt_instructions")
359
+ # For update/delete
360
+ task_id = st.text_input("Task ID (Required for Update/Delete)", key="task_id")
361
+
362
+ col1, col2, col3 = st.columns(3)
363
+ with col1:
364
+ create_task_btn = st.form_submit_button("Create Task")
365
+ with col2:
366
+ update_task_btn = st.form_submit_button("Update Task")
367
+ with col3:
368
+ delete_task_btn = st.form_submit_button("Delete Task")
369
+
370
+ if create_task_btn:
371
+ if not task_name:
372
+ st.error("Name is required.")
373
+ else:
374
+ task = Task(
375
+ name=task_name,
376
+ description=task_description if task_description else None,
377
+ title_template=task_title_template if task_title_template else None,
378
+ is_draft=task_is_draft,
379
+ prompt_data=Prompt(instructions=prompt_instructions) if prompt_instructions else None
380
+ )
381
+ result = manager.create_task(project_id=project_id, task=task, automatic_publish=False)
382
+ display_result(result, 'create', 'Task', task_name)
383
+
384
+ if update_task_btn:
385
+ if not task_id or not task_name:
386
+ st.error("Task ID and Name are required for update.")
387
+ else:
388
+ task = Task(
389
+ id=task_id,
390
+ name=task_name,
391
+ description=task_description if task_description else None,
392
+ title_template=task_title_template if task_title_template else None,
393
+ is_draft=task_is_draft,
394
+ prompt_data=Prompt(instructions=prompt_instructions) if prompt_instructions else None
395
+ )
396
+ result = manager.update_task(project_id=project_id, task=task, automatic_publish=False)
397
+ display_result(result, 'update', 'Task', task_name)
398
+
399
+ if delete_task_btn:
400
+ if not task_id:
401
+ st.error("Task ID is required for deletion.")
402
+ else:
403
+ result = manager.delete_task(project_id=project_id, task_id=task_id)
404
+ display_result(result, 'delete', 'Task', f"ID: {task_id}")
405
+
406
+ # --- Agentic Processes Tab ---
407
+ with process_tab:
408
+ st.header("Manage Agentic Processes")
409
+
410
+ with st.form("process_form"):
411
+ st.subheader("Create or Update Agentic Process")
412
+ process_name = st.text_input("Name (Required)", key="process_name")
413
+ process_key = st.text_input("Key (Optional)", key="process_key")
414
+ process_description = st.text_area("Description (Optional)", key="process_description")
415
+ process_is_draft = st.checkbox("Is Draft (Optional)", value=True, key="process_is_draft")
416
+ kb_name = st.text_input("Knowledge Base Name (Optional)", key="process_kb_name")
417
+ # For update/delete
418
+ process_id = st.text_input("Process ID (Required for Update/Delete)", key="process_id")
419
+
420
+ col1, col2, col3 = st.columns(3)
421
+ with col1:
422
+ create_process_btn = st.form_submit_button("Create Process")
423
+ with col2:
424
+ update_process_btn = st.form_submit_button("Update Process")
425
+ with col3:
426
+ delete_process_btn = st.form_submit_button("Delete Process")
427
+
428
+ if create_process_btn:
429
+ if not process_name:
430
+ st.error("Name is required.")
431
+ else:
432
+ process = AgenticProcess(
433
+ name=process_name,
434
+ key=process_key if process_key else None,
435
+ description=process_description if process_description else None,
436
+ is_draft=process_is_draft,
437
+ kb=KnowledgeBase(name=kb_name) if kb_name else None
438
+ )
439
+ result = manager.create_process(project_id=project_id, process=process, automatic_publish=False)
440
+ display_result(result, 'create', 'Process', process_name)
441
+
442
+ if update_process_btn:
443
+ if not process_id or not process_name:
444
+ st.error("Process ID and Name are required for update.")
445
+ else:
446
+ process = AgenticProcess(
447
+ id=process_id,
448
+ name=process_name,
449
+ key=process_key if process_key else None,
450
+ description=process_description if process_description else None,
451
+ is_draft=process_is_draft,
452
+ kb=KnowledgeBase(name=kb_name) if kb_name else None
453
+ )
454
+ result = manager.update_process(project_id=project_id, process=process, automatic_publish=False)
455
+ display_result(result, 'update', 'Process', process_name)
456
+
457
+ if delete_process_btn:
458
+ if not process_id:
459
+ st.error("Process ID is required for deletion.")
460
+ else:
461
+ result = manager.delete_process(project_id=project_id, process_id=process_id)
462
+ display_result(result, 'delete', 'Process', f"ID: {process_id}")
@@ -19,8 +19,6 @@ process = AgenticProcess(
19
19
  ]
20
20
  )
21
21
 
22
- result = manager.create_process(project_id="2ca6883f-6778-40bb-bcc1-85451fb11107", process=process, automatic_publish=False)
23
- if isinstance(result, AgenticProcess):
24
- print(f"Created process: {result.name}, ID: {result.id}")
25
- else:
26
- print("Errors:", result.errors)
22
+ result = manager.create_process(process=process, automatic_publish=False)
23
+
24
+ print(f"Created process: {result.name}, ID: {result.id}")
@@ -3,8 +3,6 @@ from pygeai.lab.models import Task
3
3
 
4
4
  manager = AILabManager()
5
5
  task = Task(name="basic-task-4", description="Basic task for process", title_template="Basic Task")
6
- result = manager.create_task(project_id="2ca6883f-6778-40bb-bcc1-85451fb11107", task=task, automatic_publish=True)
7
- if isinstance(result, Task):
8
- print(f"Created task: {result.name}, ID: {result.id}")
9
- else:
10
- print("Errors:", result.errors)
6
+ result = manager.create_task(task=task, automatic_publish=True)
7
+
8
+ print(f"Created task: {result.name}, ID: {result.id}")
@@ -1,30 +1,21 @@
1
1
  from pygeai.lab.managers import AILabManager
2
2
  from pygeai.lab.models import FilterSettings
3
- from pygeai.core.base.responses import ErrorListResponse
4
3
 
5
4
  manager = AILabManager()
6
5
 
7
- project_id = "2ca6883f-6778-40bb-bcc1-85451fb11107"
8
-
9
6
  response = manager.list_jobs(
10
- project_id=project_id,
11
7
  filter_settings=FilterSettings(start="0", count="100"),
12
8
  topic=None,
13
9
  token=None
14
10
  )
15
11
 
16
- if isinstance(response, ErrorListResponse):
17
- print("Error retrieving jobs:")
18
- for error in response:
19
- print(f"- {error}")
20
- else:
21
- jobs = response
22
- print("Jobs retrieved successfully:")
23
- for job in jobs:
24
- print(f"- Job: {job.name}, Token: {job.token}, Topic: {job.topic}, Caption: {job.caption}")
25
- if job.parameters:
26
- print(" Parameters:")
27
- for param in job.parameters:
28
- print(f" - {param.Name}: {param.Value}")
29
- if job.info:
30
- print(f" Info: {job.info}")
12
+ jobs = response
13
+ print("Jobs retrieved successfully:")
14
+ for job in jobs:
15
+ print(f"- Job: {job.name}, Token: {job.token}, Topic: {job.topic}, Caption: {job.caption}")
16
+ if job.parameters:
17
+ print(" Parameters:")
18
+ for param in job.parameters:
19
+ print(f" - {param.Name}: {param.Value}")
20
+ if job.info:
21
+ print(f" Info: {job.info}")
@@ -11,11 +11,8 @@ knowledge_base = KnowledgeBase(
11
11
  )
12
12
 
13
13
  result = manager.create_knowledge_base(
14
- project_id="2ca6883f-6778-40bb-bcc1-85451fb11107",
15
14
  knowledge_base=knowledge_base
16
15
  )
17
16
 
18
- if isinstance(result, KnowledgeBase):
19
- print(f"Created knowledge base: {result.name}, ID: {result.id}")
20
- else:
21
- print("Errors:", result)
17
+ print(f"Created knowledge base: {result.name}, ID: {result.id}")
18
+
@@ -5,28 +5,22 @@ manager = AILabManager()
5
5
 
6
6
  kb_id = "c6af1295-3ea6-4823-8ae4-730337b278c6"
7
7
  result = manager.get_knowledge_base(
8
- project_id="2ca6883f-6778-40bb-bcc1-85451fb11107",
9
8
  kb_id=kb_id
10
9
  )
11
10
 
12
- if isinstance(result, KnowledgeBase):
13
- print(f"Retrieved knowledge base: {result.name}, ID: {result.id}")
14
- print(f"Artifacts: {result.artifacts}")
15
- print(f"Metadata: {result.metadata}")
16
- print(f"Artifact Types: {result.artifact_type_name}")
17
- else:
18
- print("Errors:", result)
11
+
12
+ print(f"Retrieved knowledge base: {result.name}, ID: {result.id}")
13
+ print(f"Artifacts: {result.artifacts}")
14
+ print(f"Metadata: {result.metadata}")
15
+ print(f"Artifact Types: {result.artifact_type_name}")
19
16
 
20
17
  kb_name = "sample-kb"
21
18
  result = manager.get_knowledge_base(
22
- project_id="2ca6883f-6778-40bb-bcc1-85451fb11107",
23
19
  kb_name=kb_name
24
20
  )
25
21
 
26
- if isinstance(result, KnowledgeBase):
27
- print(f"Retrieved knowledge base: {result.name}, ID: {result.id}")
28
- print(f"Artifacts: {result.artifacts}")
29
- print(f"Metadata: {result.metadata}")
30
- print(f"Artifact Types: {result.artifact_type_name}")
31
- else:
32
- print("Errors:", result.errors)
22
+
23
+ print(f"Retrieved knowledge base: {result.name}, ID: {result.id}")
24
+ print(f"Artifacts: {result.artifacts}")
25
+ print(f"Metadata: {result.metadata}")
26
+ print(f"Artifact Types: {result.artifact_type_name}")
@@ -4,34 +4,27 @@ from pygeai.lab.models import KnowledgeBaseList
4
4
  manager = AILabManager()
5
5
 
6
6
  result = manager.list_knowledge_bases(
7
- project_id="2ca6883f-6778-40bb-bcc1-85451fb11107",
8
7
  start=0,
9
8
  count=10
10
9
  )
11
10
 
12
- if isinstance(result, KnowledgeBaseList):
13
- print(f"Retrieved {len(result.knowledge_bases)} knowledge bases:")
14
- for kb in result.knowledge_bases:
15
- print(f"- Name: {kb.name}, ID: {kb.id}")
16
- print(f" Artifacts: {kb.artifacts}")
17
- print(f" Metadata: {kb.metadata}")
18
- print(f" Artifact Types: {kb.artifact_type_name}")
19
- else:
20
- print("Errors:", result.errors)
11
+ print(f"Retrieved {len(result.knowledge_bases)} knowledge bases:")
12
+ for kb in result.knowledge_bases:
13
+ print(f"- Name: {kb.name}, ID: {kb.id}")
14
+ print(f" Artifacts: {kb.artifacts}")
15
+ print(f" Metadata: {kb.metadata}")
16
+ print(f" Artifact Types: {kb.artifact_type_name}")
21
17
 
22
18
  result = manager.list_knowledge_bases(
23
- project_id="2ca6883f-6778-40bb-bcc1-85451fb11107",
24
19
  name="sample-kb",
25
20
  start=0,
26
21
  count=5
27
22
  )
28
23
 
29
- if isinstance(result, KnowledgeBaseList):
30
- print(f"Retrieved {len(result.knowledge_bases)} knowledge bases with name 'sample-kb':")
31
- for kb in result.knowledge_bases:
32
- print(f"- Name: {kb.name}, ID: {kb.id}")
33
- print(f" Artifacts: {kb.artifacts}")
34
- print(f" Metadata: {kb.metadata}")
35
- print(f" Artifact Types: {kb.artifact_type_name}")
36
- else:
37
- print("Errors:", result.errors)
24
+
25
+ print(f"Retrieved {len(result.knowledge_bases)} knowledge bases with name 'sample-kb':")
26
+ for kb in result.knowledge_bases:
27
+ print(f"- Name: {kb.name}, ID: {kb.id}")
28
+ print(f" Artifacts: {kb.artifacts}")
29
+ print(f" Metadata: {kb.metadata}")
30
+ print(f" Artifact Types: {kb.artifact_type_name}")