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,1773 @@
1
+ from pygeai.lab.managers import AILabManager
2
+ from pygeai.lab.models import Agent, AgentData, Prompt, LlmConfig, Model, Sampling, PromptExample, PromptOutput
3
+ import uuid
4
+
5
+ GEAI_CLI_HELP = """
6
+ # PyGEAI - SDK for Globant Enterprise AI
7
+
8
+ PyGEAI is a Software Development Kit (SDK) for interacting with [Globant Enterprise AI](https://wiki.genexus.com/enterprise-ai/wiki?8,Table+of+contents%3AEnterprise+AI). It comprises libraries, tools, code samples, and documentation to simplify your experience with the platform.
9
+
10
+ ## Repository
11
+
12
+ Find the PyGEAI source code and documentation in the following GitHub repository:
13
+
14
+ [GitHub repository](https://github.com/RT-GEN029-GI/pygeai)
15
+
16
+ ## Configuration
17
+
18
+ Before using the SDK, you need to define `GEAI_API_KEY` (`$SAIA_APITOKEN`) and `GEAI_API_BASE_URL` (`$BASE_URL`). You can achieve this in three ways:
19
+
20
+ * **Environment variables:** Set `GEAI_API_KEY` and `GEAI_API_BASE_URL` as environment variables in your operating system.
21
+ * **Credentials file:** Create a file named credentials in the `.geai` directory within your user home directory (`$USER_HOME/.geai/credentials`) and define `GEAI_API_KEY` and `GEAI_API_BASE_URL` within this file.
22
+ * **Client instantiation:** Specify the `api_key` and `base_url` parameters directly when creating an instance of a client class.
23
+
24
+ **Note:** If you plan to use the [Evaluation Module](https://wiki.genexus.com/enterprise-ai/wiki?896,Evaluation), you must also define `GEAI_API_EVAL_URL`
25
+
26
+ ## Modules
27
+
28
+ The SDK consists of several modules, all accessible through a meta-package:
29
+
30
+ - **`pygeai`**: This meta-package encapsulates all components of the SDK.
31
+ - **`pygeai-cli`**: This package provides a command-line tool for interacting with the SDK.
32
+ - **`pygeai-chat`**: This package offers facilities to chat with assistants/agents created in Globant Enterprise AI.
33
+ - **`pygeai-dbg`**: This package includes a debugger to troubleshoot potential SDK issues and gain detailed insights into its operations.
34
+ - **`pygeai-core`**: This package handles interactions with the fundamental components of Globant Enterprise AI, including users, groups, permissions, API keys, organizations, and [Projects](https://wiki.genexus.com/enterprise-ai/wiki?565,Projects).
35
+ - **`pygeai-admin`**: This package enables interactions with the Globant Enterprise AI instance.
36
+ - **`pygeai-lab`**: This package facilitates interactions with AI LAB.
37
+ - **`pygeai-evaluation`**: This package provides functionality from the evaluation module.
38
+ - **`pygeai-gam`**: This package allows interaction with [GAM] (https://wiki.genexus.com/commwiki/wiki?24746,Table+of+contents%3AGeneXus+Access+Manager+%28GAM%29,).
39
+ - **`pygeai-assistant`**: This package handles interactions with various Assistants, including [Data Analyst Assistants](https://wiki.genexus.com/enterprise-ai/wiki?886,Data+Analyst+Assistant+2.0), [RAG Assistants](https://wiki.genexus.com/enterprise-ai/wiki?44,RAG+Assistants+Introduction), [Chat with Data Assistants](https://wiki.genexus.com/enterprise-ai/wiki?159,Chat+with+Data+Assistant), [Chat with API Assistants](https://wiki.genexus.com/enterprise-ai/wiki?110,API+Assistant), and [Chat Assistants](https://wiki.genexus.com/enterprise-ai/wiki?708,Chat+Assistant).
40
+ - **`pygeai-organization`**: This package facilitates interactions with Organizations in Globant Enterprise AI.
41
+ - **`pygeai-flows`**: This package enables interactions with [Flows](https://wiki.genexus.com/enterprise-ai/wiki?321,Flows+in+Globant+Enterprise+AI) [in development].
42
+
43
+ ## Usage
44
+
45
+ ### Install PyGEAI
46
+ Use pip to install the package from PyPI:
47
+
48
+ ```
49
+ (venv) ~$ pip install pygeai
50
+ ```
51
+
52
+ To install pre-release versions, you can run:
53
+ ```
54
+ (venv) ~$ pip install --pre pygeai
55
+ ```
56
+
57
+ ### Verify installation
58
+ To check the installed PyGEAI version, run:
59
+
60
+ ```
61
+ (venv) ~$ geai v
62
+ ```
63
+
64
+ ### View help
65
+
66
+ To access the general help menu:
67
+
68
+ ```
69
+ (venv) ~$ geai h
70
+ ```
71
+ To view help for a specific command:
72
+
73
+ ```
74
+ (venv) ~$ geai <command> h
75
+ ```
76
+
77
+ ### Debugger
78
+
79
+ The `pygeai-dbg` package provides a command-line debugger (`geai-dbg`) for troubleshooting and inspecting the `geai` CLI.
80
+ It pauses execution at breakpoints, allowing you to inspect variables, execute Python code, and control program flow interactively.
81
+
82
+ To debug a `geai` command, replace `geai` with `geai-dbg`. For example:
83
+
84
+ ```bash
85
+ (venv) ~$ geai-dbg ail lrs
86
+ ```
87
+
88
+ This pauses at the `main` function in `pygeai.cli.geai`, displaying an interactive prompt `(geai-dbg)`.
89
+ You can then use commands like `continue` (resume), `run` (run without pauses), `quit` (exit), or `help` (list commands).
90
+
91
+
92
+ ### Man Pages Documentation
93
+
94
+ The package includes Unix manual pages (man pages) for detailed command-line documentation.
95
+
96
+ To install man pages locally:
97
+
98
+ ```bash
99
+ geai-install-man
100
+ ```
101
+
102
+ To install man pages system-wide:
103
+
104
+ ```bash
105
+ sudo geai-install-man --system
106
+ ```
107
+
108
+ To access the man pages:
109
+
110
+ ```bash
111
+ man geai
112
+ ```
113
+
114
+ #### Setting up Man Pages Access
115
+
116
+ If you're using a virtual environment, you'll need to configure your system to find the man pages. Add the following to your shell configuration file (`.bashrc`, `.zshrc`, etc.):
117
+
118
+ ```bash
119
+ # For macOS
120
+ if [ -n "$VIRTUAL_ENV" ]; then
121
+ export MANPATH="$VIRTUAL_ENV/share/man:$MANPATH"
122
+ fi
123
+
124
+ # For Linux
125
+ if [ -n "$VIRTUAL_ENV" ]; then
126
+ export MANPATH="$VIRTUAL_ENV/man:$MANPATH"
127
+ fi
128
+ ```
129
+
130
+ After adding this configuration:
131
+ 1. Reload your shell configuration: `source ~/.bashrc` or `source ~/.zshrc`
132
+ 2. The man pages will be available when your virtual environment is active
133
+
134
+ ## Bugs and suggestions
135
+ To report any bug, request features or make any suggestions, the following email is available:
136
+
137
+ <geai-sdk@globant.com>
138
+
139
+ ## Authors
140
+ Copyright 2025, Globant. All rights reserved
141
+
142
+ GEAI CLI
143
+ --------
144
+
145
+
146
+ SYNOPSIS
147
+ geai <command> [<subcommand>] [--option] [option-arg]
148
+
149
+ DESCRIPTION
150
+ geai is a cli utility that interacts with the PyGEAI SDK to handle common tasks in Globant Enterprise AI,
151
+ such as creating organizations and projects, defining assistants, managing workflows, etc.
152
+
153
+ The available subcommands are as follows:
154
+ help or h Display help text
155
+ version or v Display version text
156
+ check-updates or cu Search for available updates
157
+
158
+ configure or config or c Setup the environment variables required to interact with GEAI
159
+ --key or -k Set GEAI API KEY
160
+ --url or -u Set GEAI API BASE URL
161
+ --eval-url or --eu Set GEAI API EVAL URL for the evaluation module
162
+ --alias or -a Set alias for settings section
163
+ --list or -l List available alias
164
+ organization or org Invoke organization endpoints to handle project parameters
165
+ assistant or ast Invoke assistant endpoints to handle assistant parameters
166
+ rag Invoke rag assistant endpoints to handle RAG assistant parameters
167
+ chat Invoke chat endpoints to handle chat with assistants parameters
168
+ admin or adm Invoke admin endpoints designed for internal use
169
+ llm Invoke llm endpoints for provider's and model retrieval
170
+ files Invoke files endpoints for file handling
171
+ usage-limit or ulim Invoke usage limit endpoints for organization and project
172
+ embeddings or emb Invoke embeddings endpoints
173
+ feedback or fbk Invoke feedback endpoints
174
+ rerank or rr Invoke rerank endpoints
175
+ evaluation or eval Invoke evaluation endpoints
176
+ gam Invoke GAM authentication endpoints
177
+ secrets or sec Handle Globant Enterprise AI secrets
178
+ ai-lab or ail Invoke AI Lab endpoints
179
+ ai-lab-spec or spec Invoke AI Lab endpoints
180
+ migrate or mig Invoke migrate procedures
181
+
182
+
183
+ You can consult specific options for each command using with:
184
+ geai <command> h
185
+ or
186
+ geai <command> help
187
+
188
+ ERROR CODES
189
+ Certain error descriptions can contain up to %n references specific to that error.
190
+ These references are described with %1, %2,... ,%n.
191
+
192
+ ErrorCode Description
193
+ 1 Assistant Not Found
194
+ 2 Provider Type Not Found
195
+ 3 Request Not Found
196
+ 5 Api Key Not Found
197
+ 6 Api Token Not Found
198
+ 7 Api Token Out Of Scope
199
+ 10 Query Text Empty
200
+ 20 Bad Input Text
201
+ 100 Provider Request Timeout
202
+ 150 Provider Unknown Error
203
+ 151 Provider Rate Limit
204
+ 152 Provider Quota Exceeded
205
+ 153 Provider Over Capacity
206
+ 154 Quota Exceeded
207
+ 401 Unauthorized
208
+ 404 Bad Endpoint
209
+ 405 Method Not Allowed
210
+ 500 Internal Server Error
211
+ 1001 Provider Configuration Error
212
+ 1010 RAG Not Found
213
+ 1101 Search Index Profile Name Not Found
214
+ 1102 Request Failed
215
+ 2000 Invalid ProjectName
216
+ 2001 Invalid OrganizationId
217
+ 2002 ProjectName %1 Already Exists In The Organization
218
+ 2003 OrganizationName Already Exists
219
+ 2004 Organization Not Found
220
+ 2005 Project Not Found
221
+ 2006 Project Not In Organization
222
+ 2007 Name is Empty
223
+ 2008 Prompt is Empty
224
+ 2009 Invalid Type
225
+ 2010 Not Implemented
226
+ 2011 Assistant General Error
227
+ 2012 Assistant Not Implemented
228
+ 2013 Revision Is Empty
229
+ 2014 Assistant Revision Not Found
230
+ 2015 Assistant Revision Update Error
231
+ 2016 AIModel Id For %1 %2
232
+ 2017 RAG General Error
233
+ 2018 Vector Store Not Found
234
+ 2019 Index Profile General Error
235
+ 2020 RAG Already Exists
236
+ 2021 Document Not Found
237
+ 2022 Invalid DocumentId
238
+ 2023 Document General Error
239
+ 2024 RAG Invalid
240
+ 2025 Document Name Not Provided
241
+ 2026 Verb Not Supported
242
+ 2027 Document Extension Invalid
243
+ 2028 Invalid File Size
244
+ 2029 Project name already exists
245
+ 2030 Assistant name already exists
246
+ 2031 Assistant not in Project
247
+ 2032 The status value is unexpected
248
+ 2041 The assistant specified is of a different type than expected
249
+ 3000 Data Analyst APIError: The connection with DataAnalyst Server could not be established
250
+ 3003 The assistant is currently being updated and is not yet available
251
+ 3004 Error validating metadata: each uploaded file requires related JSON metadata and vice versa
252
+ 3005 Error validating metadata: no metadata was found for file 'nameOfFile'
253
+
254
+ EXAMPLES
255
+ The command:
256
+ geai --configure
257
+ will help you setup the required environment variables to work with GEAI.
258
+
259
+ The command:
260
+ ...
261
+
262
+ INSTALL MAN PAGES
263
+ To install the manual pages, run:
264
+ sudo geai-install-man
265
+ (requires superuser privileges)
266
+
267
+ GEAI CLI - ORGANIZATION
268
+ -----------------------
269
+
270
+
271
+ SYNOPSIS
272
+ geai organization <subcommand> --[flag] [flag_arg]
273
+
274
+ DESCRIPTION
275
+ geai organization is a command from geai cli utility, developed to interact with key components of GEAI
276
+ such as creating organizations and projects, defining assistants, managing workflows, etc.
277
+
278
+ The options are as follows:
279
+ help or h Display help text
280
+
281
+ list-assistants List assistant information
282
+ --organization-id or --oid UUID of the organization
283
+ --project-id or --pid UUID of the project
284
+
285
+ list-projects List project information
286
+ --detail or -d Defines the level of detail required. The available options are summary (default) or full (optional).
287
+ --name or -n Name of the project
288
+
289
+ get-project Get project information
290
+ --project-id or --pid GUID of the project (required)
291
+
292
+ create-project Create new project
293
+ --name or -n Name of the new project
294
+ --description or -d Description of the new project
295
+ --email or -e Project administrator's email
296
+ --subscription-type string: Options: Freemium, Daily, Weekly, Monthly)
297
+ --usage-unit string: Options: Requests, Cost)
298
+ --soft-limit number: Soft limit for usage (lower threshold))
299
+ --hard-limit number: Hard limit for usage (upper threshold)). Must be greater or equal to --soft-limit.
300
+ --renewal-status string: Options: Renewable, NonRenewable). If --subscription-type is Freemium, this must be NonRenewable
301
+
302
+ update-project Update existing project
303
+ --project-id or --pid GUID of the project (required)
304
+ --name or -n Name of the project
305
+ --description or -d Description of the new project
306
+
307
+ delete-project Delete existing project
308
+ --project-id or --pid GUID of the project (required)
309
+
310
+ get-tokens Get project tokens
311
+ --project-id or --pid GUID of the project (required)
312
+
313
+ export-request Export request data
314
+ --assistant-name string: Assistant name (optional)
315
+ --status string: Status (optional)
316
+ --skip integer: Number of entries to skip
317
+ --count integer: Number of entries to retrieve
318
+
319
+
320
+ EXAMPLES
321
+ The command:
322
+ geai c
323
+ starts an interactive tool to configure API KEY and BASE URL to work with GEAI.
324
+
325
+ The command:
326
+ geai organization list-projects
327
+ list available projects. For this, an organization API KEY is required.
328
+
329
+ The command:
330
+ ...
331
+
332
+
333
+
334
+
335
+
336
+
337
+
338
+ GEAI CLI - ASSISTANT
339
+ -----------------------
340
+
341
+
342
+ SYNOPSIS
343
+ geai assistant <subcommand> --[flag] [flag_arg]
344
+
345
+ DESCRIPTION
346
+ geai assistant is a command from geai cli utility, developed to interact with assistant in GEAI.
347
+
348
+ The options are as follows:
349
+ help or h Display help text
350
+
351
+ get-assistant Get assistant detail
352
+ --detail or -d Defines the level of detail required. The available options are summary (default) or full.
353
+ --assistant-id or --id Assistant ID.
354
+
355
+ create-assistant Create new assistant
356
+ --type or -t string: Type of assistant. Possible values: text, chat. (Required)
357
+ --name or -n string: Name of the assistant (Required)
358
+ --description or -d string: Description of the assistant.
359
+ --prompt string: Prompt for the assistant (Required)
360
+ --provider-name or --provider or -p string: provider to be used
361
+ --model-name or -m string: name of model according to selected provider
362
+ --temperature decimal: Volatility of the assistant
363
+ --max-tokens integer: Max number of tokens
364
+ --wd-title Title for welcome data
365
+ --wd-description Description for welcome data
366
+ --wd-feature Feature to include in welcome data. Must be in JSON format. It can be passed multiple times with one dictionaryeach time or one time with a list of dictionaries. Each dictionary must have exactly two keys: "title" and "description". Example: '{"title": "title of feature", "description": "Description of feature"}'
367
+ --wd-example-prompt Example prompt to include in welcome data. Must be in JSON format. It can be passed multiple times with one dictionaryeach time or one time with a list of dictionaries. Each dictionary must have exactly two keys: "title", "description" and "prompt_text". Example: '{"title": "Title of prompt", "description": "Description of prompt", "prompt_text": "Prompt text"}'
368
+
369
+ update-assistant Update existing assistant
370
+ --assistant-id or --id Assistant ID.
371
+ --status integer: Possible values: 1:Enabled, 2:Disabled (Optional)
372
+ --action string: Possible values: save, saveNewRevision (default), savePublishNewRevision
373
+ --revision-id integer: Required if user needs to update an existent revision when action = save
374
+ --name or -n string: Name of the assistant (Required)
375
+ --description or -d string: Description of the assistant.
376
+ --prompt string: Prompt for the assistant (Required)
377
+ --provider-name or --provider or -p string: provider to be used
378
+ --model-name or -m string: name of model according to selected provider
379
+ --temperature decimal: Volatility of the assistant
380
+ --max-tokens integer: Max number of tokens
381
+ --wd-title Title for welcome data
382
+ --wd-description Description for welcome data
383
+ --wd-feature Feature to include in welcome data. Must be in JSON format. It can be passed multiple times with one dictionaryeach time or one time with a list of dictionaries. Each dictionary must have exactly two keys: "title" and "description". Example: '{"title": "title of feature", "description": "Description of feature"}'
384
+ --wd-example-prompt Example prompt to include in welcome data. Must be in JSON format. It can be passed multiple times with one dictionaryeach time or one time with a list of dictionaries. Each dictionary must have exactly two keys: "title", "description" and "prompt_text". Example: '{"title": "Title of prompt", "description": "Description of prompt", "prompt_text": "Prompt text"}'
385
+
386
+ delete-assistant Delete existing assistant
387
+ --assistant-id or --id Assistant ID.
388
+
389
+ chat Sends a chat request to the Globant Enterprise AI Assistant.
390
+ --name or -n string: Name of the assistant.
391
+ --messages or --msg array: Chat request data. It can be passed multiple times with single dictionary each time, or a single time as a list of dictionaries. Each dictionary instance must contain 'role' and 'content'
392
+ --revision integer: Revision number.
393
+ --revision-name string: Name of the revision.
394
+ --variables or --var collection: A list of key/value properties (optional)
395
+
396
+ request-status Retrieves the status of a request.
397
+ --request-id or --id Request ID.
398
+
399
+ cancel-request Cancels a request.
400
+ --request-id or --id Request ID.
401
+
402
+
403
+ GEAI CLI - RAG ASSISTANT
404
+ -----------------------
405
+
406
+
407
+ SYNOPSIS
408
+ geai rag <subcommand> --[flag] [flag_arg]
409
+
410
+ DESCRIPTION
411
+ geai RAG assistant is a command from geai cli utility, developed to interact with RAG assistant in GEAI.
412
+
413
+ The options are as follows:
414
+ help or h Display help text
415
+ list-assistants Gets all RAG assistants from a project
416
+
417
+ get-assistant Gets a specific RAG assistant
418
+ --name or -n RAG assistant name (required)
419
+
420
+ create-assistant Create a new RAG assistant
421
+ --name or -n RAG assistant name (required)
422
+ --description or -d string: Description of the RAG assistant
423
+ --template or --tpl string: Name of an existing RAG to base the configuration (optional), empty by default
424
+ --history-count or --hc integer: history count
425
+ --cache or -c boolean: cache
426
+ --frequency-penalty or --fp decimal: frequency penalty
427
+ --max-tokens or --mt integer: max tokens
428
+ --model-name or -m string: model name
429
+ -n integer: n
430
+ --presence-penalty or --pp decimal: presence penalty
431
+ --provider or -p string: provider
432
+ --stream boolean: stream
433
+ --temperature or --temp or -t decimal: temperature
434
+ --top-p decimal: top P
435
+ --llm-type string: /: type* empty value (default) or json_object */
436
+ --verbose or -v boolean: verbose
437
+ -k integer: k
438
+ --search-type string: /: type* similarity (default) or mmr */
439
+ --fetch-k or --fk number: fetchK (valid when using mmr type)
440
+ --lambda or -l decimal: lambda (valid when using mmr type)
441
+ --search-prompt or --sp string: prompt
442
+ --return-source-documents or --rsd boolean: return source documents
443
+ --score-threshold or --st decimal: score threshold
444
+ --search-template or --stpl string: template
445
+ --retriever-type string: /: type* vectorStore, multiQuery, selfQuery, hyde, contextualCompression */
446
+ --retriever-search-type string: searchType (similarity | similarity_hybrid | semantic_hybrid). Azure AISearch specific, defaults to similarity
447
+ --step string: /: step* all (default) or documents */
448
+ --retriever-prompt or --rp string: prompt (not needed when using vectorStore)
449
+ --chunk-overlap Overlap size between chunks in the main document.
450
+ --chunk-size Size of each chunk in the main document.
451
+ --use-parent-document Whether to enable parent-child document relationships.
452
+ --child-k Parameter to configure child document processing, such as relevance or retrieval count.
453
+ --child-chunk-size Size of each chunk in the child document.
454
+ --child-chunk-overlap Overlap size between chunks in the child document.
455
+ --wd-title Title for welcome data
456
+ --wd-description Description for welcome data
457
+ --wd-feature Feature to include in welcome data. Must be in JSON format. It can be passed multiple times with one dictionaryeach time or one time with a list of dictionaries. Each dictionary must have exactly two keys: "title" and "description". Example: '{"title": "title of feature", "description": "Description of feature"}'
458
+ --wd-example-prompt Example prompt to include in welcome data. Must be in JSON format. It can be passed multiple times with one dictionaryeach time or one time with a list of dictionaries. Each dictionary must have exactly two keys: "title", "description" and "prompt_text". Example: '{"title": "Title of prompt", "description": "Description of prompt", "prompt_text": "Prompt text"}'
459
+
460
+ update-assistant Update existing RAG assistant
461
+ --name or -n RAG assistant name (required)
462
+ --status RAG assistant status (defaults to 1). 1: enabled; 0: disabled
463
+ --description or -d string: Description of the RAG assistant
464
+ --template or --tpl string: Name of an existing RAG to base the configuration (optional), empty by default
465
+ --history-count or --hc integer: history count
466
+ --cache or -c boolean: cache
467
+ --frequency-penalty or --fp decimal: frequency penalty
468
+ --max-tokens or --mt integer: max tokens
469
+ --model-name or -m string: model name
470
+ -n integer: n
471
+ --presence-penalty or --pp decimal: presence penalty
472
+ --provider or -p string: provider
473
+ --stream boolean: stream
474
+ --temperature or --temp or -t decimal: temperature
475
+ --top-p decimal: top P
476
+ --llm-type string: /: type* empty value (default) or json_object */
477
+ --verbose or -v boolean: verbose
478
+ -k integer: k
479
+ --search-type string: /: type* similarity (default) or mmr */
480
+ --fetch-k or --fk number: fetchK (valid when using mmr type)
481
+ --lambda or -l decimal: lambda (valid when using mmr type)
482
+ --search-prompt or --sp string: prompt
483
+ --return-source-documents or --rsd boolean: return source documents
484
+ --score-threshold or --st decimal: score threshold
485
+ --search-template or --stpl string: template
486
+ --retriever-type string: /: type* vectorStore, multiQuery, selfQuery, hyde, contextualCompression */
487
+ --retriever-search-type string: searchType (similarity | similarity_hybrid | semantic_hybrid). Azure AISearch specific, defaults to similarity
488
+ --step string: /: step* all (default) or documents */
489
+ --retriever-prompt or --rp string: prompt (not needed when using vectorStore)
490
+ --wd-title Title for welcome data
491
+ --wd-description Description for welcome data
492
+ --wd-feature Feature to include in welcome data. Must be in JSON format. It can be passed multiple times with one dictionaryeach time or one time with a list of dictionaries. Each dictionary must have exactly two keys: "title" and "description". Example: '{"title": "title of feature", "description": "Description of feature"}'
493
+ --wd-example-prompt Example prompt to include in welcome data. Must be in JSON format. It can be passed multiple times with one dictionaryeach time or one time with a list of dictionaries. Each dictionary must have exactly two keys: "title", "description" and "prompt_text". Example: '{"title": "Title of prompt", "description": "Description of prompt", "prompt_text": "Prompt text"}'
494
+
495
+ delete-assistant Delete existing RAG assistant
496
+ --name or -n RAG assistant name (required)
497
+
498
+ list-documents List documents for RAG assistant
499
+ --name or -n RAG assistant name (required)
500
+ --skip or -s Number of documents to skip
501
+ --count or -c Number of documents to return (defaults to 10)
502
+
503
+ delete-all-documents or del-docs Delete all documents for RAG assistant
504
+ --name or -n RAG assistant name (required)
505
+
506
+ get-document or get-doc Get document for RAG assistant
507
+ --name or -n RAG assistant name (required)
508
+ --document-id or --id Document id (required)
509
+
510
+ upload-document or up-doc Upload document for RAG assistant
511
+ --name or -n RAG assistant name (required)
512
+ --file-path or -f Path to document file (required)
513
+ --upload-type or -t Upload type. Available options: binary or multipart (multipart/form-data). Defaults to multipart
514
+ --metadata or -m Document metadata (only available for multipart/form-data). Can be valid JSON or a path to metadata file.
515
+ --content-type or --ct Document content type
516
+
517
+ delete-document or del-doc Delete document for RAG assistant by id
518
+ --name or -n RAG assistant name (required)
519
+ --document-id or --id Document id (required)
520
+
521
+
522
+ GEAI CLI - CHAT
523
+ ----------------
524
+
525
+
526
+ SYNOPSIS
527
+ geai chat <subcommand> --[flag] [flag_arg]
528
+
529
+ DESCRIPTION
530
+ geai chat is a command from geai cli utility, developed to chat with assistant in GEAI.
531
+
532
+ The options are as follows:
533
+ help or h Display help text
534
+
535
+ completion or comp Get chat completion
536
+ --model or -m The model needs to address the assistant type and name or bot_id, depending on the Type. Then, the parameters will vary depending on the type. Its format is as follows:
537
+ "model": "saia:<assistant_type>:<assistant_name>|<bot_id>"
538
+ --messages or --msg The messages element defines the desired messages to be added. The minimal value needs to be the following, where the content details the user input.
539
+ {
540
+ "role": "string", /* user, system and may support others depending on the selected model */
541
+ "content": "string"
542
+ }
543
+
544
+ --stream If response should be streamed. Possible values: 0: OFF; 1: ON
545
+ --temperature or --temp Float value to set volatility of the assistant's answers (between 0 and 2)
546
+ --max-tokens Integer value to set max tokens to use
547
+ --thread-id Optional UUID for conversation identifier
548
+ --frequency-penalty Optional number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.
549
+ --presence-penalty Optional number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics.
550
+ --top-p Optional float value for nucleus sampling, where the model considers tokens with top_p probability mass (between 0 and 1). An alternative to temperature.
551
+ --stop Optional string or JSON array of up to 4 sequences where the API will stop generating further tokens.
552
+ --response-format Optional JSON object specifying the output format, e.g., {"type": "json_schema", "json_schema": {...}} for structured outputs.
553
+ --tools Optional JSON array of tools (e.g., functions) the model may call.
554
+ --tool-choice Optional string (e.g., "none", "auto") or JSON object to control which tool is called.
555
+ --logprobs Optional boolean to return log probabilities of output tokens. Possible values: 0: OFF; 1: ON
556
+ --top-logprobs Optional integer (0-20) specifying the number of most likely tokens to return with log probabilities.
557
+ --seed Optional integer for deterministic sampling (in Beta).
558
+ --stream-options Optional JSON object for streaming options, e.g., {"include_usage": true}.
559
+ --store Optional boolean to store the output for model distillation or evals. Possible values: 0: OFF; 1: ON
560
+ --metadata Optional JSON object with up to 16 key-value pairs to attach to the object.
561
+ --user Optional string identifier for the end-user to monitor abuse.
562
+ iris Interactive chat with Iris
563
+
564
+ agent Interactive chat with Agent
565
+ --agent-name or --name or -n You can use the internal name, public name and agent id in order to chat interactively with any agent
566
+ --gui or -g Launch a Streamlit GUI chat interface. Possible values: 0: OFF; 1: ON
567
+
568
+
569
+ GEAI CLI - ADMIN
570
+ -----------------------
571
+
572
+
573
+ SYNOPSIS
574
+ geai admin <subcommand> --[flag] [flag_arg]
575
+
576
+ DESCRIPTION
577
+ geai admin is a command from geai cli utility, developed to interact instance of GEAI.
578
+
579
+ The options are as follows:
580
+ help or h Display help text
581
+ validate-token or vt Validate API Token: Obtains organization and project information related to the provided apitoken.
582
+ list-authorized-organizations or auth-org Obtain the list of organizations that a user is permitted to access.
583
+
584
+ list-authorized-projects or auth-proj Obtain the list of projects that a user is permitted to access in a particular organization.
585
+ --organization or --org or -o ID of the organization.
586
+
587
+ project-visibility or pv Determines if a GAM user has visibility of a project
588
+ --organization or --org or -o ID of the organization.
589
+ --project or -p ID of the project.
590
+ --access-token or --token or --at GAM access token.
591
+
592
+ project-token or pt Returns Project's API Token
593
+ --organization or --org or -o ID of the organization.
594
+ --project or -p ID of the project.
595
+ --access-token or --token or --at GAM access token.
596
+
597
+
598
+ GEAI CLI - LLM
599
+ -----------------------
600
+
601
+
602
+ SYNOPSIS
603
+ geai llm <subcommand> --[flag] [flag_arg]
604
+
605
+ DESCRIPTION
606
+ geai llm is a command from geai cli utility, developed to retrieve information about available models and providers
607
+ in GEAI.
608
+
609
+ The options are as follows:
610
+ help or h Display help text
611
+ list-providers or lp Retrieve providers list
612
+
613
+ get-provider or gp Retrieve provider data
614
+ --provider-name or --pn LLM Provider name (required)
615
+
616
+ list-models or lm Retrieve provider models
617
+ --provider-name or --pn LLM Provider name (required)
618
+
619
+ get-model or gm Retrieve model data
620
+ --provider-name or --pn LLM Provider name (required)
621
+ --model-name or --mn LLM Model name
622
+ --model-id or --mid LLM Model ID
623
+
624
+
625
+ GEAI CLI - FILES
626
+ -----------------------
627
+
628
+
629
+ SYNOPSIS
630
+ geai files <subcommand> --[flag] [flag_arg]
631
+
632
+ DESCRIPTION
633
+ geai files is a command from geai cli utility, developed to interact with files in GEAI.
634
+
635
+ The options are as follows:
636
+ help or h Display help text
637
+
638
+ upload-file or uf Upload file
639
+ --organization or --org or -o Organization ID (required)
640
+ --project or --proj or -p Project ID (required)
641
+ --file-name or --fn File name (optional). If not provided, the name of the uploaded file will be used.
642
+ --file-path or --fp File path to the file you want to upload (required)
643
+ --folder or -f Destination folder (optional). If not provided, the file will be temporarily saved.
644
+
645
+ get-file or gf Get file data
646
+ --organization or --org or -o Organization ID (required)
647
+ --project or --proj or -p Project ID (required)
648
+ --file-id or --fid File ID (required)
649
+
650
+ delete-file or df Delete file data
651
+ --organization or --org or -o Organization ID (required)
652
+ --project or --proj or -p Project ID (required)
653
+ --file-id or --fid File ID (required)
654
+
655
+ get-file-content or gfc Get file content
656
+ --organization or --org or -o Organization ID (required)
657
+ --project or --proj or -p Project ID (required)
658
+ --file-id or --fid File ID (required)
659
+
660
+ list-files or lf Retrieve file list
661
+ --organization or --org or -o Organization ID (required)
662
+ --project or --proj or -p Project ID (required)
663
+
664
+
665
+ GEAI CLI - USAGE LIMITS
666
+ -----------------------
667
+
668
+
669
+ SYNOPSIS
670
+ geai usage-limit <subcommand> --[flag] [flag_arg]
671
+
672
+ DESCRIPTION
673
+ geai usage-limits is a command from geai cli utility, developed to manager usage limits in GEAI.
674
+
675
+ The options are as follows:
676
+ help or h Display help text
677
+
678
+ set-organization-limit or set-org-lim Set organization usage limit
679
+ --organization or --org or -o Organization ID (Required)
680
+ --subscription-type string: Options: Freemium, Daily, Weekly, Monthly)
681
+ --usage-unit string: Options: Requests, Cost)
682
+ --soft-limit number: Soft limit for usage (lower threshold))
683
+ --hard-limit number: Hard limit for usage (upper threshold)). Must be greater or equal to --soft-limit.
684
+ --renewal-status string: Options: Renewable, NonRenewable). If --subscription-type is Freemium, this must be NonRenewable
685
+
686
+ get-latest-organization-limit or get-latest-org-lim Get latest organization usage limit
687
+ --organization or --org or -o Organization ID (Required)
688
+
689
+ get-all-organization-limit or get-all-org-lim Get all organization usage limit
690
+ --organization or --org or -o Organization ID (Required)
691
+
692
+ delete-organization-limit or del-org-lim Delete organization usage limit
693
+ --organization or --org or -o Organization ID (Required)
694
+ --limit-id or --lid Usage limit ID (Required)
695
+
696
+ update-organization-limit or up-org-lim Update organization usage limit
697
+ --organization or --org or -o Organization ID (Required)
698
+ --limit-id or --lid Usage limit ID (Required)
699
+ --hard-limit number: Hard limit for usage (upper threshold)). Must be greater or equal to --soft-limit.
700
+ --soft-limit number: Soft limit for usage (lower threshold))
701
+ --renewal-status string: Options: Renewable, NonRenewable). If --subscription-type is Freemium, this must be NonRenewable
702
+
703
+ set-project-limit or set-proj-lim Set project usage limit
704
+ --organization or --org or -o Organization ID (Required)
705
+ --project or --proj or -p Project ID (Required)
706
+ --subscription-type string: Options: Freemium, Daily, Weekly, Monthly)
707
+ --usage-unit string: Options: Requests, Cost)
708
+ --soft-limit number: Soft limit for usage (lower threshold))
709
+ --hard-limit number: Hard limit for usage (upper threshold)). Must be greater or equal to --soft-limit.
710
+ --renewal-status string: Options: Renewable, NonRenewable). If --subscription-type is Freemium, this must be NonRenewable
711
+
712
+ get-all-project-limit or get-all-proj-lim Get all usage limits for project
713
+ --organization or --org or -o Organization ID (Required)
714
+ --project or --proj or -p Project ID (Required)
715
+
716
+ get-latest-project-limit or get-latest-proj-lim Get latest usage limit for project
717
+ --organization or --org or -o Organization ID (Required)
718
+ --project or --proj or -p Project ID (Required)
719
+
720
+ get-active-project-limit or get-active-proj-lim Get active usage limit for project
721
+ --organization or --org or -o Organization ID (Required)
722
+ --project or --proj or -p Project ID (Required)
723
+
724
+ delete-project-limit or del-proj-lim Get active usage limit for project
725
+ --organization or --org or -o Organization ID (Required)
726
+ --project or --proj or -p Project ID (Required)
727
+ --limit-id or --lid Usage limit ID (Required)
728
+
729
+ update-project-limit or up-proj-lim Update project usage limit
730
+ --organization or --org or -o Organization ID (Required)
731
+ --project or --proj or -p Project ID (Required)
732
+ --limit-id or --lid Usage limit ID (Required)
733
+ --hard-limit number: Hard limit for usage (upper threshold)). Must be greater or equal to --soft-limit.
734
+ --soft-limit number: Soft limit for usage (lower threshold))
735
+ --renewal-status string: Options: Renewable, NonRenewable). If --subscription-type is Freemium, this must be NonRenewable
736
+
737
+
738
+ GEAI CLI - EMBEDDINGS
739
+ -----------------------
740
+
741
+
742
+ SYNOPSIS
743
+ geai embeddings <subcommand> --[flag] [flag_arg]
744
+
745
+ DESCRIPTION
746
+ geai embeddings is a command from geai cli utility, developed to generate embeddings in GEAI.
747
+
748
+ The options are as follows:
749
+ help or h Display help text
750
+
751
+ generate or gen Get embeddings
752
+ --input or -i string: Input to embed, encoded as a string. To embed multiple inputs in a single request, pass the string inputs multiple times using -i. The input must not exceed the max input tokens for the model and cannot be an empty string
753
+ --model or -m string: provider/modelId to use
754
+ --encoding-format or --enc-for string: The format to return the embeddings. It can be either float (default) or base64 (optional)
755
+ --dimensions or --dim integer: The number of dimensions the resulting output embeddings should have. Only supported in text-embedding-3* and later models (optional)
756
+ --user or -u string: A unique identifier representing your end-user
757
+ --input-type or --it string: Defines how the input data will be used when generating embeddings (optional)
758
+ --timeout or -t integer: The maximum time, in seconds, to wait for the API to respond. Defaults to 600 seconds
759
+ --cache Enable X-Saia-Cache-Enabled to cache the embeddings for the model; it applies by Organization/Project.1 to set to True and 0 to false. 0 is default
760
+
761
+
762
+ GEAI CLI - FEEDBACK
763
+ --------------------
764
+
765
+
766
+ SYNOPSIS
767
+ geai feedback <subcommand> --[flag] [flag_arg]
768
+
769
+ DESCRIPTION
770
+ geai feedback is a command from geai cli utility, developed to send feedback from the assistant's answers.
771
+
772
+ The options are as follows:
773
+ help or h Display help text
774
+
775
+ send or sf Send feedback
776
+ --request-id or --rid The request associated with a user's execution. Integer
777
+ --origin Origin for the feedback. Defaults to user-feedback
778
+ --answer-score or --ans-score or --score Associated feedback: 1 good, 2 bad
779
+ --comments Associated feedback comment (optional)
780
+
781
+
782
+ GEAI CLI - RERANK
783
+ -----------------
784
+
785
+
786
+ SYNOPSIS
787
+ geai rerank <subcommand> --[flag] [flag_arg]
788
+
789
+ DESCRIPTION
790
+ geai rerank is a command from geai cli utility, developed to rerank a list of document chunks based on a query in GEAI.
791
+
792
+ The options are as follows:
793
+ help or h Display help text
794
+
795
+ rerank-chunks or chunks or rc Rerank chunks based on a query
796
+ --query or -q string: Input query
797
+ --model or -m string: provider/modelName reranker to use; supported values: cohere/rerank-v3.5, awsbedrock/cohere.rerank-v3.5, awsbedrock/amazon.rerank-v1
798
+ --documents or --doc or -d string or array: A list of text chunks
799
+ --top-n string: Count of best n results to return
800
+
801
+
802
+ GEAI CLI - EVALUATION
803
+ ----------------------
804
+
805
+
806
+ SYNOPSIS
807
+ geai evaluation <subcommand> --[flag] [flag_arg]
808
+
809
+ DESCRIPTION
810
+ geai evaluation is a command from geai cli utility, developed to interact with Dataset, Plan and Result APIs from
811
+ the Evaluation module.
812
+
813
+ Dataset rows have the following structure:
814
+ {
815
+ "dataSetRowExpectedAnswer": "This is the expected answer",
816
+ "dataSetRowInput": "What is the capital of France?",
817
+ "dataSetRowContextDocument": "",
818
+ "expectedSources": [
819
+ {
820
+ "dataSetExpectedSourceId": "UUID",
821
+ "dataSetExpectedSourceName": "Source Name",
822
+ "dataSetExpectedSourceValue": "Some value",
823
+ "dataSetexpectedSourceExtention": "pdf"
824
+ }
825
+ ],
826
+ "filterVariables": [
827
+ {
828
+ "dataSetMetadataType": "Type",
829
+ "dataSetRowFilterKey": "key",
830
+ "dataSetRowFilterOperator": "equals",
831
+ "dataSetRowFilterValue": "value",
832
+ "dataSetRowFilterVarId": "UUID"
833
+ }
834
+ ]
835
+ }
836
+
837
+ The options are as follows:
838
+ help or h Display help text
839
+ list-datasets or ld List all datasets
840
+
841
+ create-dataset or cd Create dataset
842
+ --dataset-name or --dn dataSetName: string
843
+ --dataset-description or --dd dataSetDescription: string
844
+ --dataset-type or --dt dataSetType: string //e.g., 'T' for test, 'E' for evaluation, etc.
845
+ --dataset-active or --da dataSetActive: boolean. 0: False; 1: True
846
+ --row or -r JSON object containing row data
847
+ --dataset-file or --df dataSetActive: Creates a new dataset from a JSON file. The file must contain the complete dataset structure, including header information and rows.
848
+
849
+ get-dataset or gd Get dataset by ID
850
+ --dataset-id or --did UUID representing the dataset to retrieve
851
+
852
+ update-dataset or ud Update dataset by ID
853
+ --dataset-id or --did UUID representing the dataset to retrieve
854
+ --dataset-name or --dn dataSetName: string
855
+ --dataset-description or --dd dataSetDescription: string
856
+ --dataset-type or --dt dataSetType: string //e.g., 'T' for test, 'E' for evaluation, etc.
857
+ --dataset-active or --da dataSetActive: boolean. 0: False; 1: True
858
+ --row or -r JSON object containing row data
859
+
860
+ delete-dataset or dd Delete dataset by ID
861
+ --dataset-id or --did UUID representing the dataset to retrieve
862
+
863
+ create-dataset-row or cdr Create dataset row
864
+ --dataset-id or --did UUID representing the dataset to retrieve
865
+ --row or -r JSON object containing row data
866
+
867
+ list-dataset-rows or ldr List dataset rows
868
+ --dataset-id or --did UUID representing the dataset to retrieve
869
+
870
+ get-dataset-row or gdr Get dataset row
871
+ --dataset-id or --did UUID representing the dataset to retrieve
872
+ --row-id or --rid UUID representing the row dataset to retrieve
873
+
874
+ update-dataset-row or udr Update dataset row
875
+ --dataset-id or --did UUID representing the dataset to retrieve
876
+ --row-id or --rid UUID representing the row dataset to retrieve
877
+ --row or -r JSON object containing row data
878
+
879
+ delete-dataset-row or ddr Delete dataset row
880
+ --dataset-id or --did UUID representing the dataset to retrieve
881
+ --row-id or --rid UUID representing the row dataset to retrieve
882
+
883
+ create-expected-source or ces Create dataset row expected source
884
+ --dataset-id or --did UUID representing the dataset to retrieve
885
+ --row-id or --rid UUID representing the row dataset to retrieve
886
+ --name or -n dataSetExpectedSourceName: string
887
+ --value or -v dataSetExpectedSourceValue: string
888
+ --extension or -e dataSetExpectedSourceExtension: string //e.g., 'txt', 'pdf', 'json'
889
+
890
+ list-expected-sources or les List dataset row expected sources
891
+ --dataset-id or --did UUID representing the dataset to retrieve
892
+ --row-id or --rid UUID representing the row dataset to retrieve
893
+
894
+ get-expected-source or ges Get dataset row expected source
895
+ --dataset-id or --did UUID representing the dataset to retrieve
896
+ --row-id or --rid UUID representing the row dataset to retrieve
897
+ --expected-source-id or --esid UUID representing the expected source to retrieve
898
+
899
+ update-expected-source or ues Update dataset row expected source
900
+ --dataset-id or --did UUID representing the dataset to retrieve
901
+ --row-id or --rid UUID representing the row dataset to retrieve
902
+ --expected-source-id or --esid UUID representing the expected source to retrieve
903
+ --name or -n dataSetExpectedSourceName: string
904
+ --value or -v dataSetExpectedSourceValue: string
905
+ --extension or -e dataSetExpectedSourceExtension: string //e.g., 'txt', 'pdf', 'json'
906
+
907
+ delete-expected-source or des Delete dataset row expected source
908
+ --dataset-id or --did UUID representing the dataset to retrieve
909
+ --row-id or --rid UUID representing the row dataset to retrieve
910
+ --expected-source-id or --esid UUID representing the expected source to retrieve
911
+
912
+ create-filter-variable or cfv Create dataset row filter variable
913
+ --dataset-id or --did UUID representing the dataset to retrieve
914
+ --row-id or --rid UUID representing the row dataset to retrieve
915
+ --metadata-type or --mt dataSetMetadataType: string //e.g., 'V' for variable, 'F' for flag, etc.
916
+ --key or -k dataSetRowFilterKey: string. The name of the filter key
917
+ --value or -v dataSetRowFilterValue: string. The value to filter by
918
+ --operator or -o dataSetRowFilterOperator: string ///e.g., '=', '!=', '>', '<', 'contains', etc.
919
+
920
+ list-filter-variables or lfv List dataset row filter variables
921
+ --dataset-id or --did UUID representing the dataset to retrieve
922
+ --row-id or --rid UUID representing the row dataset to retrieve
923
+
924
+ get-filter-variable or gfv Get dataset row filter variable
925
+ --dataset-id or --did UUID representing the dataset to retrieve
926
+ --row-id or --rid UUID representing the row dataset to retrieve
927
+ --filter-variable-id or --fvid UUID representing the filter variable to retrieve
928
+
929
+ update-filter-variable or ufv Update dataset row filter variable
930
+ --dataset-id or --did UUID representing the dataset to retrieve
931
+ --row-id or --rid UUID representing the row dataset to retrieve
932
+ --filter-variable-id or --fvid UUID representing the filter variable to retrieve
933
+ --metadata-type or --mt dataSetMetadataType: string //e.g., 'V' for variable, 'F' for flag, etc.
934
+ --key or -k dataSetRowFilterKey: string. The name of the filter key
935
+ --value or -v dataSetRowFilterValue: string. The value to filter by
936
+ --operator or -o dataSetRowFilterOperator: string ///e.g., '=', '!=', '>', '<', 'contains', etc.
937
+
938
+ delete-filter-variable or dfv Delete dataset row filter variable
939
+ --dataset-id or --did UUID representing the dataset to retrieve
940
+ --row-id or --rid UUID representing the row dataset to retrieve
941
+ --filter-variable-id or --fvid UUID representing the filter variable to retrieve
942
+
943
+ upload-dataset-rows or udrf Upload dataset rows file
944
+ --dataset-id or --did UUID representing the dataset to retrieve
945
+ --rows-file or --rf The JSON file should contain an array of DatasetRow objects
946
+ list-evaluation-plans or lep Retrieves a list of all evaluation plans.
947
+
948
+ create-evaluation-plan or cep Creates a new evaluation plan.
949
+ --name or --epn Name of the evaluation plan
950
+ --assistant-type or --epat Type of assistant (e.g., 'TextPromptAssistant', 'RAG Assistant')
951
+ --assistant-id or --epai UUID of the assistant (optional, required for TextPromptAssistant)
952
+ --assistant-name or --epan Name of the assistant (optional, required for TextPromptAssistant)
953
+ --assistant-revision or --epar Revision of the assistant (optional, required for TextPromptAssistant)
954
+ --profile-name or --eppn Name of the RAG profile (optional, required for RAG Assistant)
955
+ --dataset-id or --did ID of the dataset (optional)
956
+ --system-metrics or --sm Array of system metrics (each with 'systemMetricId' and 'systemMetricWeight')Alternatively, multiple instances of --sm can be passes as arguments for a single list.
957
+
958
+ get-evaluation-plan or gep Retrieve evaluation plan by ID.
959
+ --evaluation-plan-id or --epid UUID representing the evaluation plan to retrieve
960
+
961
+ update-evaluation-plan or uep Update evaluation plan by ID.
962
+ --evaluation-plan-id or --epid UUID representing the evaluation plan to retrieve
963
+ --name or --epn Name of the evaluation plan
964
+ --assistant-type or --epat Type of assistant (e.g., 'TextPromptAssistant', 'RAG Assistant')
965
+ --assistant-id or --epai UUID of the assistant (optional, required for TextPromptAssistant)
966
+ --assistant-name or --epan Name of the assistant (optional, required for TextPromptAssistant)
967
+ --assistant-revision or --epar Revision of the assistant (optional, required for TextPromptAssistant)
968
+ --profile-name or --eppn Name of the RAG profile (optional, required for RAG Assistant)
969
+ --dataset-id or --did ID of the dataset (optional)
970
+ --system-metrics or --sm Array of system metrics (each with 'systemMetricId' and 'systemMetricWeight')Alternatively, multiple instances of --sm can be passes as arguments for a single list.
971
+
972
+ delete-evaluation-plan or dep Delete evaluation plan by ID.
973
+ --evaluation-plan-id or --epid UUID representing the evaluation plan to retrieve
974
+
975
+ list-evaluation-plan-system-metrics or lepsm List system metrics for evaluation plan by ID.
976
+ --evaluation-plan-id or --epid UUID representing the evaluation plan to retrieve
977
+
978
+ add-evaluation-plan-system-metric or aepsm Adds a new system metric to an existing evaluation plan.
979
+ --evaluation-plan-id or --epid UUID representing the evaluation plan to retrieve
980
+ --system-metric-id or --smid systemMetricId: string. ID of the system metric
981
+ --system-metric-weight or --smw systemMetricWeight: number. Weight of the system metric (between 0 and 1)
982
+
983
+ get-evaluation-plan-system-metric or gepsm Retrieves a specific system metric from a given evaluation plan.
984
+ --evaluation-plan-id or --epid UUID representing the evaluation plan to retrieve
985
+ --system-metric-id or --smid ID of the system metric
986
+
987
+ update-evaluation-plan-system-metric or uepsm Updates a specific system metric within an existing evaluation plan.
988
+ --evaluation-plan-id or --epid UUID representing the evaluation plan to retrieve
989
+ --system-metric-id or --smid systemMetricId: string. ID of the system metric
990
+ --system-metric-weight or --smw systemMetricWeight: number. Weight of the system metric (between 0 and 1)
991
+
992
+ delete-evaluation-plan-system-metric or depsm Delete a specific system metric within an existing evaluation plan.
993
+ --evaluation-plan-id or --epid UUID representing the evaluation plan to retrieve
994
+ --system-metric-id or --smid ID of the system metric
995
+ list-available-system-metrics or lsm Retrieves a list of all available system metrics that can be used in evaluation plans
996
+
997
+ get-system-metrics or gsm Retrieves a specific system metric using its ID.
998
+ --system-metric-id or --smid ID of the system metric
999
+
1000
+ execute-evaluation-plan or xep Initiates the execution of a previously defined evaluation plan. The evaluation plan's configuration (assistant, dataset, metrics, and weights) determines how the assessment is performed.
1001
+ --evaluation-plan-id or --epid UUID representing the evaluation plan to retrieve
1002
+
1003
+ list-evaluation-results or ler Retrieves a list of evaluation results associated with a specific evaluation plan.
1004
+ --evaluation-plan-id or --epid UUID representing the evaluation plan to retrieve
1005
+
1006
+ get-evaluation-result or ger Retrieves a specific evaluation result by its ID.
1007
+ --evaluation-result-id or --erid UUID representing the evaluation result to retrieve
1008
+
1009
+
1010
+ EXAMPLES
1011
+ The command:
1012
+ geai evaluation create-dataset \
1013
+ --dataset-name "MyNewDataset" \
1014
+ --dataset-description "A dataset for testing" \
1015
+ --dataset-type "T" \
1016
+ --dataset-active 1 \
1017
+ --row '[
1018
+ {
1019
+ "dataSetRowExpectedAnswer": "This is the expected answer",
1020
+ "dataSetRowInput": "What is the capital of France?",
1021
+ "dataSetRowContextDocument": ""
1022
+ }
1023
+ ]'
1024
+
1025
+ This will create a new dataset called "MyNewDataset" with a description, type "T" (test), and one row where the expected answer is provided along with the input question.
1026
+
1027
+ The command:
1028
+ geai evaluation create-dataset \
1029
+ --dataset-name "MyNewDataset" \
1030
+ --dataset-description "A dataset for testing" \
1031
+ --dataset-type "T" \
1032
+ --dataset-active 1 \
1033
+ --row '[
1034
+ {
1035
+ "dataSetRowExpectedAnswer": "This is the expected answer",
1036
+ "dataSetRowInput": "What is the capital of France?",
1037
+ "dataSetRowContextDocument": "",
1038
+ "expectedSources": [
1039
+ {
1040
+ "dataSetExpectedSourceId": "UUID",
1041
+ "dataSetExpectedSourceName": "Source Name",
1042
+ "dataSetExpectedSourceValue": "Some value",
1043
+ "dataSetexpectedSourceExtention": "pdf"
1044
+ }
1045
+ ],
1046
+ "filterVariables": [
1047
+ {
1048
+ "dataSetMetadataType": "Type",
1049
+ "dataSetRowFilterKey": "key",
1050
+ "dataSetRowFilterOperator": "equals",
1051
+ "dataSetRowFilterValue": "value",
1052
+ "dataSetRowFilterVarId": "UUID"
1053
+ }
1054
+ ]
1055
+ }
1056
+ ]'
1057
+
1058
+ This will create a new dataset with rows that include optional "expectedSources" and "filterVariables".
1059
+
1060
+ GEAI CLI - GAM
1061
+ ----------------
1062
+
1063
+ SYNOPSIS
1064
+ geai gam <subcommand> --[flag] [flag_arg]
1065
+
1066
+ DESCRIPTION
1067
+ geai gam is a command from geai cli utility, developed to interact with GAM authentication mechanisms in GEAI.
1068
+
1069
+ The options are as follows:
1070
+ help or h Display help text
1071
+
1072
+ get-access-token or gat Get access token
1073
+ --client-id or --cid Application Client ID.
1074
+ --client-secret or --cs Application Client Secret.
1075
+ --grant-type or --gt Grant type for authentication. Default: "password"
1076
+ --authentication-type-name or --atn Authentication type name. Default: "local"
1077
+ --scope or -s Scope of the user account you want to access. gam_user_data+gam_user_roles. Default: "gam_user_data"
1078
+ --username or -u Username of the user to be authenticated.
1079
+ --password or -p Password of the user to be authenticated.
1080
+ --initial-properties or --ip User custom properties array.
1081
+ --repository or -r Only use if the IDP is multitenant.
1082
+ --request-token-type or --rtt Determines the token type to return and, based on that, the Security Policy to be applied. Default: "OAuth"
1083
+
1084
+ get-user-info or gui Get user info
1085
+ --access-token or --at The access_token obtained in the previous request.
1086
+
1087
+ refresh-access-token or rat Refresh access token
1088
+ --client-id or --cid Application Client ID.
1089
+ --client-secret or --cs Application Client Secret.
1090
+ --grant-type or --gt Grant type for authentication. Must be: "refresh_token"
1091
+ --refresh-token or --rt Refresh token.
1092
+
1093
+
1094
+ GEAI CLI - SECRETS
1095
+ ----------------
1096
+
1097
+
1098
+ SYNOPSIS
1099
+ geai secrets <subcommand> --[flag] [flag_arg]
1100
+
1101
+ DESCRIPTION
1102
+ geai secrets is a command from geai cli utility, developed to handle secrets in in GEAI.
1103
+
1104
+ The options are as follows:
1105
+ help or h Display help text
1106
+
1107
+ get-secret or gs Retrieve a secret by its ID
1108
+ --secret-id or --sid The unique identifier of the secret to retrieve (required)
1109
+
1110
+ create-secret or cs Create a new secret
1111
+ --name or -n The name of the secret (required)
1112
+ --secret-string or -ss The secret value to store (required)
1113
+ --description or -d A description of the secret (optional)
1114
+
1115
+ update-secret or us Update an existing secret by its ID
1116
+ --secret-id or --sid The unique identifier of the secret to update (required)
1117
+ --name or -n The updated name of the secret (required)
1118
+ --secret-string or -ss The updated secret value (required)
1119
+ --description or -d The updated description of the secret (optional)
1120
+
1121
+ list-secrets or ls List secrets with optional filtering and pagination
1122
+ --name or -n Filter secrets by name (optional)
1123
+ --id Filter secrets by ID (optional)
1124
+ --start Starting index for pagination (integer, default: 0)
1125
+ --count Number of secrets to return (integer, default: 10)
1126
+
1127
+
1128
+ GEAI CLI - AI LAB
1129
+ -----------------
1130
+
1131
+
1132
+ SYNOPSIS
1133
+ geai ai-lab <subcommand> --[flag] [flag_arg]
1134
+
1135
+ DESCRIPTION
1136
+ geai ai-lab is a command from geai cli utility, developed to interact with AI Lab in GEAI.
1137
+
1138
+ The options are as follows:
1139
+ help or h Display help text
1140
+
1141
+ list-agents or la List agents
1142
+ --project-id or --pid ID of the project
1143
+ --status Status of the agents to filter by. Defaults to an empty string (no filtering).
1144
+ --start Starting index for pagination. Defaults to an empty string (no offset).
1145
+ --count Number of agents to retrieve. Defaults to an empty string (no limit).
1146
+ --access-scope Access scope of the agents, either "public" or "private". Defaults to "public".
1147
+ --allow-drafts Whether to include draft agents. Defaults to 1 (True).
1148
+ --allow-external Whether to include external agents. Defaults to 0 (False).
1149
+
1150
+ create-agent or ca Create agent
1151
+ --project-id or --pid Unique identifier of the project where the agent will be created
1152
+ --name or -n Name of the agent, must be unique within the project and exclude ':' or '/'
1153
+ --access-scope or --as Access scope of the agent, either 'public' or 'private' (defaults to 'private')
1154
+ --public-name or --pn Public name of the agent, required if access_scope is 'public', must be unique and follow a domain/library convention (e.g., 'com.example.my-agent') with only alphanumeric characters, periods, dashes, or underscores
1155
+ --job-description or --jd Description of the agent's role
1156
+ --avatar-image or --aimg URL for the agent's avatar image
1157
+ --description or -d Detailed description of the agent's purpose
1158
+ --agent-data-prompt-instructions or --adp-inst Instructions defining what the agent does and how, required for publication if context is not provided
1159
+ --agent-data-prompt-input or --adp-input Agent Data prompt input: Prompt input as a list of strings (e.g., '["input1", "input2"]') or multiple single strings via repeated flags, each representing an input name
1160
+ --agent-data-prompt-output or --adp-out Prompt output in JSON format (e.g., '[{"key": "output_key", "description": "output description"}]'), as a dictionary or list of dictionaries with 'key' and 'description' fields
1161
+ --agent-data-prompt-example or --adp-ex Prompt example in JSON format (e.g., '[{"inputData": "example input", "output": "example output"}]'), as a dictionary or list of dictionaries with 'inputData' and 'output' fields
1162
+ --agent-data-llm-max-tokens or --adl-max-tokens Maximum number of tokens the LLM can generate, used to control costs
1163
+ --agent-data-llm-timeout or --adl-timeout Timeout in seconds for LLM responses
1164
+ --agent-data-llm-temperature or --adl-temperature Sampling temperature for LLM (0.0 to 1.0), lower values for focused responses, higher for more random outputs
1165
+ --agent-data-llm-top-k or --adl-top-k TopK sampling parameter for LLM (currently unused)
1166
+ --agent-data-llm-top-p or --adl-top-p TopP sampling parameter for LLM (currently unused)
1167
+ --agent-data-model-name or --adm-name Name of the LLM model (e.g., 'gpt-4o' or 'openai/gpt-4o'), at least one valid model required for publication
1168
+ --agent-data-resource-pools or --adr-pools Resource pools in JSON format (e.g., '[{"name": "pool_name", "tools": [{"name": "tool_name", "revision": int}], "agents": [{"name": "agent_name", "revision": int}]}]'), as a list of dictionaries with 'name' (required) and optional 'tools' and 'agents' lists
1169
+ --automatic-publish or --ap Whether to publish the agent after creation (0: create as draft, 1: create and publish)
1170
+
1171
+ get-agent or ga Get agent
1172
+ --project-id or --pid ID of the project
1173
+ --agent-id or --aid ID of the agent to retrieve
1174
+ --revision or -r Revision of agent.
1175
+ --version or -v Version of agent.
1176
+ --allow-drafts Whether to include draft agents. Defaults to 1 (True).
1177
+
1178
+ create-sharing-link or csl Create sharing link
1179
+ --project-id or --pid ID of the project
1180
+ --agent-id or --aid ID of the agent to retrieve
1181
+
1182
+ publish-agent-revision or par Publish agent revision
1183
+ --project-id or --pid ID of the project
1184
+ --agent-id or --aid ID of the agent to retrieve
1185
+ --revision or -r Revision of agent.
1186
+
1187
+ delete-agent or da Delete agent
1188
+ --project-id or --pid ID of the project
1189
+ --agent-id or --aid ID of the agent to retrieve
1190
+
1191
+ update-agent or ua Update agent by ID or name
1192
+ --project-id or --pid Unique identifier of the project where the agent will be created
1193
+ --agent-id or --aid Unique identifier of the agent to update
1194
+ --name or -n Name of the agent, must be unique within the project and exclude ':' or '/'
1195
+ --access-scope or --as Access scope of the agent, either 'public' or 'private' (defaults to 'private')
1196
+ --public-name or --pn Public name of the agent, required if access_scope is 'public', must be unique and follow a domain/library convention (e.g., 'com.example.my-agent') with only alphanumeric characters, periods, dashes, or underscores
1197
+ --job-description or --jd Description of the agent's role
1198
+ --avatar-image or --aimg URL for the agent's avatar image
1199
+ --description or -d Detailed description of the agent's purpose
1200
+ --agent-data-prompt-instructions or --adp-inst Instructions defining what the agent does and how, required for publication if context is not provided
1201
+ --agent-data-prompt-input or --adp-input Agent Data prompt input: Prompt input as a list of strings (e.g., '["input1", "input2"]') or multiple single strings via repeated flags, each representing an input name
1202
+ --agent-data-prompt-output or --adp-out Prompt output in JSON format (e.g., '[{"key": "output_key", "description": "output description"}]'), as a dictionary or list of dictionaries with 'key' and 'description' fields
1203
+ --agent-data-prompt-example or --adp-ex Prompt example in JSON format (e.g., '[{"inputData": "example input", "output": "example output"}]'), as a dictionary or list of dictionaries with 'inputData' and 'output' fields
1204
+ --agent-data-llm-max-tokens or --adl-max-tokens Maximum number of tokens the LLM can generate, used to control costs
1205
+ --agent-data-llm-timeout or --adl-timeout Timeout in seconds for LLM responses
1206
+ --agent-data-llm-temperature or --adl-temperature Sampling temperature for LLM (0.0 to 1.0), lower values for focused responses, higher for more random outputs
1207
+ --agent-data-llm-top-k or --adl-top-k TopK sampling parameter for LLM (currently unused)
1208
+ --agent-data-llm-top-p or --adl-top-p TopP sampling parameter for LLM (currently unused)
1209
+ --agent-data-model-name or --adm-name Name of the LLM model (e.g., 'gpt-4o' or 'openai/gpt-4o'), at least one valid model required for publication
1210
+ --agent-data-resource-pools or --adr-pools Resource pools in JSON format (e.g., '[{"name": "pool_name", "tools": [{"name": "tool_name", "revision": int}], "agents": [{"name": "agent_name", "revision": int}]}]'), as a list of dictionaries with 'name' (required) and optional 'tools' and 'agents' lists
1211
+ --automatic-publish or --ap Whether to publish the agent after creation (0: create as draft, 1: create and publish)
1212
+ --upsert Define if agent must be created if it doesn't exist (0: Update only if it exists. 1: Insert if doesn't exists)
1213
+
1214
+ create-tool or ct Create tool
1215
+ --project-id or --pid Unique identifier of the project where the tool will be created
1216
+ --name or -n Name of the tool, must be unique within the project and exclude ':' or '/'
1217
+ --description or -d Description of the tool’s purpose, helps agents decide when to use it
1218
+ --scope or -s Scope of the tool, one of 'builtin', 'external', or 'api'
1219
+ --access-scope or --as Access scope of the tool, either 'public' or 'private' (defaults to 'private')
1220
+ --public-name or --pn Public name of the tool, required if access_scope is 'public', must be unique and follow a domain/library convention (e.g., 'com.globant.geai.web-search') with only alphanumeric characters, periods, dashes, or underscores
1221
+ --icon or -i URL for the tool’s icon or avatar image
1222
+ --open-api or --oa URL where the OpenAPI specification can be loaded, required for 'api' scope if open_api_json is not provided
1223
+ --open-api-json or --oaj OpenAPI specification in JSON format (e.g., '{"openapi": "3.0.0", "info": {"title": "example", "version": "1.0.0"}, ...}'), required for 'api' scope if open_api is not provided
1224
+ --report-events or --re Event reporting mode for tool progress, one of 'None', 'All', 'Start', 'Finish', 'Progress' (defaults to 'None')
1225
+ --parameter or -p Tool parameter in JSON format (e.g., '{"key": "param_name", "description": "param description", "isRequired": true, "type": "app"}' or for config parameters: '{"key": "config_name", "description": "config description", "isRequired": true, "type": "config", "value": "config_value", "fromSecret": false}'). Multiple parameters can be specified by using this option multiple times
1226
+ --automatic-publish or --ap Whether to publish the tool after creation (0: create as draft, 1: create and publish)
1227
+
1228
+ list-tools or lt List tools
1229
+ --project-id or --pid ID of the project
1230
+ --id ID of the tool to filter by. Defaults to an empty string (no filtering).
1231
+ --count Number of tools to retrieve. Defaults to '100'.
1232
+ --access-scope Access scope of the tools, either "public" or "private". Defaults to "public".
1233
+ --allow-drafts Whether to include draft tools. Defaults to 1 (True).
1234
+ --scope Scope of the tools, must be 'builtin', 'external', or 'api'. Defaults to 'api'.
1235
+ --allow-external Whether to include external tools. Defaults to 1 (True).
1236
+
1237
+ get-tool or gt Get tool
1238
+ --project-id or --pid ID of the project
1239
+ --tool-id or --tid ID of the tool to retrieve
1240
+ --revision or -r Revision of agent.
1241
+ --version or -v Version of agent.
1242
+ --allow-drafts Whether to include draft agents. Defaults to 1 (True).
1243
+
1244
+ delete-tool or dt Delete tool
1245
+ --project-id or --pid ID of the project
1246
+ --tool-id or --tid ID of the tool to delete
1247
+ --tool-name or --tname Name of the tool to delete
1248
+
1249
+ update-tool or ut Update tool
1250
+ --project-id or --pid Unique identifier of the project containing the tool
1251
+ --tool-id or --tid Unique identifier of the tool to update
1252
+ --name or -n Updated name of the tool, must be unique within the project and exclude ':' or '/' if provided
1253
+ --description or -d Updated description of the tool’s purpose, helps agents decide when to use it
1254
+ --scope or -s Updated scope of the tool, one of 'builtin', 'external', or 'api'
1255
+ --access-scope or --as Updated access scope of the tool, either 'public' or 'private'
1256
+ --public-name or --pn Updated public name of the tool, required if access_scope is 'public', must be unique and follow a domain/library convention (e.g., 'com.globant.geai.web-search') with only alphanumeric characters, periods, dashes, or underscores
1257
+ --icon or -i Updated URL for the tool’s icon or avatar image
1258
+ --open-api or --oa Updated URL where the OpenAPI specification can be loaded, required for 'api' scope in upsert mode if open_api_json is not provided
1259
+ --open-api-json or --oaj Updated OpenAPI specification in JSON format (e.g., '{"openapi": "3.0.0", "info": {"title": "example", "version": "1.0.0"}, ...}'), required for 'api' scope in upsert mode if open_api is not provided
1260
+ --report-events or --re Updated event reporting mode for tool progress, one of 'None', 'All', 'Start', 'Finish', 'Progress'
1261
+ --parameter or -p Updated tool parameter in JSON format (e.g., '{"key": "param_name", "description": "param description", "isRequired": true, "type": "app"}' or for config parameters: '{"key": "config_name", "description": "config description", "isRequired": true, "type": "config", "value": "config_value", "fromSecret": false}'). Multiple parameters can be specified by using this option multiple times
1262
+ --automatic-publish or --ap Whether to publish the tool after updating (0: update as draft, 1: update and publish)
1263
+ --upsert Whether to create the tool if it doesn’t exist (0: update only if exists, 1: insert if doesn’t exist)
1264
+
1265
+ publish-tool-revision or ptr Publish tool revision
1266
+ --project-id or --pid ID of the project
1267
+ --tool-id or --tid ID of the tool to retrieve
1268
+ --revision or -r Revision of tool. Use 0 to retrieve the latest revision.
1269
+
1270
+ get-parameter or gp Get tool parameter
1271
+ --project-id or --pid ID of the project
1272
+ --tool-id or --tid ID of the tool to set parameters for
1273
+ --tool-public-name or --tpn Public name of the tool
1274
+ --revision or -r Revision of the parameter. Use 0 to retrieve the latest revision.
1275
+ --version or -v Version of the parameter. Use 0 to retrieve the latest version.
1276
+ --allow-drafts Whether to include draft parameters. Defaults to 1 (True).
1277
+
1278
+ set-parameter or sp Set tool parameter
1279
+ --project-id or --pid ID of the project
1280
+ --tool-id or --tid ID of the tool to set parameters for
1281
+ --tool-public-name or --tpn Public name of the tool
1282
+ --parameter or -p Tool parameter in JSON format. For regular parameters: '{"key": "param_name", "dataType": "String", "description": "param description", "isRequired": true}' For config parameters: '{"key": "config_name", "dataType": "String", "description": "config description", "isRequired": true, "type": "config", "fromSecret": false, "value": "config_value"}' Multiple parameters can be specified by using this option multiple times.
1283
+
1284
+ list-reasoning-strategies or lrs List reasoning strategies
1285
+ --name or -n Name of the reasoning strategy to filter by. Defaults to an empty string (no filtering).
1286
+ --start Starting index for pagination. Defaults to '0'.
1287
+ --count Number of reasoning strategies to retrieve. Defaults to '100'.
1288
+ --allow-external Whether to include external reasoning strategies. Defaults to 1 (True).
1289
+ --access-scope Access scope of the reasoning strategies, either 'public' or 'private'. Defaults to 'public'.
1290
+
1291
+ create-reasoning-strategy or crs Create reasoning strategy
1292
+ --project-id or --pid ID of the project
1293
+ --name or -n Name of the reasoning strategy
1294
+ --system-prompt or --sp System prompt for the reasoning strategy
1295
+ --access-scope or --as Access scope of the reasoning strategy, either 'public' or 'private'. Defaults to 'public'.
1296
+ --type or -t Type of the reasoning strategy, e.g., 'addendum'. Defaults to 'addendum'.
1297
+ --localized-description or --ld Localized description in JSON format: '{"language": "english", "description": "description text"}'. Multiple descriptions can be specified by using this option multiple times.
1298
+ --automatic-publish or --ap Define if reasoning strategy must be published besides being created. 0: Create as draft. 1: Create and publish.
1299
+
1300
+ update-reasoning-strategy or urs Update reasoning strategy
1301
+ --project-id or --pid ID of the project
1302
+ --reasoning-strategy-id or --rsid ID of the reasoning strategy to update
1303
+ --name or -n Name of the reasoning strategy (optional for update)
1304
+ --system-prompt or --sp System prompt for the reasoning strategy (optional for update)
1305
+ --access-scope or --as Access scope of the reasoning strategy, either 'public' or 'private' (optional for update)
1306
+ --type or -t Type of the reasoning strategy, e.g., 'addendum' (optional for update)
1307
+ --localized-description or --ld Localized description in JSON format: '{"language": "english", "description": "description text"}'. Multiple descriptions can be specified by using this option multiple times (optional for update).
1308
+ --automatic-publish or --ap Define if reasoning strategy must be published after being updated. 0: Update as draft. 1: Update and publish. Defaults to 0.
1309
+ --upsert Define if reasoning strategy must be created if it doesn't exist. 0: Update only if it exists. 1: Insert if it doesn't exist. Defaults to 0.
1310
+
1311
+ get-reasoning-strategy or grs Get reasoning strategy
1312
+ --project-id or --pid ID of the project
1313
+ --reasoning-strategy-id or --rsid ID of the reasoning strategy to retrieve (optional if name is provided)
1314
+ --reasoning-strategy-name or --rsn Name of the reasoning strategy to retrieve (optional if ID is provided)
1315
+
1316
+ create-process or cp Create process
1317
+ --project-id or --pid ID of the project
1318
+ --key or -k Unique key for the process
1319
+ --name or -n Name of the process
1320
+ --description or -d Description of the process (optional)
1321
+ --kb Knowledge base in JSON format: '{"name": "basic-sample", "artifactTypeName": ["sample-artifact"]}' (optional)
1322
+ --agentic-activity or --aa Agentic activity in JSON format: '{"key": "activityOne", "name": "First Step", "taskName": "basic-task", "agentName": "sample-translator", "agentRevisionId": 0}' or '[]' to clear all activities. Multiple activities can be specified by using this option multiple times.
1323
+ --artifact-signal or --as Artifact signal in JSON format: '{"key": "artifact.upload.1", "name": "artifact.upload", "handlingType": "C", "artifactTypeName": ["sample-artifact"]}'. Multiple signals can be specified by using this option multiple times (optional).
1324
+ --user-signal or --us User signal in JSON format: '{"key": "signal_done", "name": "process-completed"}'. Multiple signals can be specified by using this option multiple times (optional).
1325
+ --start-event or --se Start event in JSON format: '{"key": "artifact.upload.1", "name": "artifact.upload"}' (optional)
1326
+ --end-event or --ee End event in JSON format: '{"key": "end", "name": "Done"}' (optional)
1327
+ --sequence-flow or --sf Sequence flow in JSON format: '{"key": "step1", "sourceKey": "artifact.upload.1", "targetKey": "activityOne"}'. Multiple flows can be specified by using this option multiple times (optional).
1328
+ --automatic-publish or --ap Define if process must be published after being created. 0: Create as draft. 1: Create and publish. Defaults to 0.
1329
+
1330
+ update-process or up Update process
1331
+ --project-id or --pid ID of the project
1332
+ --process-id or --pid ID of the process to update (optional if name is provided)
1333
+ --name or -n Name of the process to update (optional if process_id is provided)
1334
+ --key or -k Unique key for the process (optional for update)
1335
+ --description or -d Description of the process (optional for update)
1336
+ --kb Knowledge base in JSON format: '{"name": "basic-sample", "artifactTypeName": ["sample-artifact"]}' (optional for update)
1337
+ --agentic-activity or --aa Agentic activity in JSON format: '{"key": "activityOne", "name": "First Step", "taskName": "basic-task", "agentName": "sample-translator", "agentRevisionId": 0}' or '[]' to clear all activities. Multiple activities can be specified by using this option multiple times (optional for update).
1338
+ --artifact-signal or --as Artifact signal in JSON format: '{"key": "artifact.upload.1", "name": "artifact.upload", "handlingType": "C", "artifactTypeName": ["sample-artifact"]}'. Multiple signals can be specified by using this option multiple times (optional for update).
1339
+ --user-signal or --us User signal in JSON format: '{"key": "signal_done", "name": "process-completed"}'. Multiple signals can be specified by using this option multiple times (optional for update).
1340
+ --start-event or --se Start event in JSON format: '{"key": "artifact.upload.1", "name": "artifact.upload"}' (optional for update)
1341
+ --end-event or --ee End event in JSON format: '{"key": "end", "name": "Done"}' (optional for update)
1342
+ --sequence-flow or --sf Sequence flow in JSON format: '{"key": "step1", "sourceKey": "artifact.upload.1", "targetKey": "activityOne"}'. Multiple flows can be specified by using this option multiple times (optional for update).
1343
+ --automatic-publish or --ap Define if process must be published after being updated. 0: Update as draft. 1: Update and publish. Defaults to 0.
1344
+ --upsert Define if process must be created if it doesn't exist. 0: Update only if it exists. 1: Insert if it doesn't exist. Defaults to 0.
1345
+
1346
+ get-process or gp Get process
1347
+ --project-id or --pid ID of the project
1348
+ --process-id or --pid ID of the process to retrieve (optional if process_name is provided)
1349
+ --process-name or --pn Name of the process to retrieve (optional if process_id is provided)
1350
+ --revision or -r Revision of the process to retrieve. Defaults to '0' (latest revision).
1351
+ --version or -v Version of the process to retrieve. Defaults to 0 (latest version).
1352
+ --allow-drafts or --ad Whether to include draft processes in the retrieval. Defaults to 1 (True).
1353
+
1354
+ list-processes or lp List processes
1355
+ --project-id or --pid ID of the project
1356
+ --id ID of the process to filter by (optional)
1357
+ --name or -n Name of the process to filter by (optional)
1358
+ --status or -s Status of the processes to filter by (e.g., 'active', 'inactive') (optional)
1359
+ --start Starting index for pagination. Defaults to '0'.
1360
+ --count Number of processes to retrieve. Defaults to '100'.
1361
+ --allow-draft or --ad Whether to include draft processes in the list. Defaults to 1 (True).
1362
+
1363
+ list-processes-instances or lpi List processes instances
1364
+ --project-id or --pid ID of the project
1365
+ --process-id or --pid ID of the process to list instances for
1366
+ --is-active or --ia Whether to list only active process instances. Defaults to 1 (True).
1367
+ --start Starting index for pagination. Defaults to '0'.
1368
+ --count Number of process instances to retrieve. Defaults to '10'.
1369
+
1370
+ delete-process or dp Delete process
1371
+ --project-id or --pid ID of the project
1372
+ --process-id or --pid ID of the process to delete (optional if process_name is provided)
1373
+ --process-name or --pn Name of the process to delete (optional if process_id is provided)
1374
+
1375
+ publish-process-revision or ppr Publish process revision
1376
+ --project-id or --pid ID of the project
1377
+ --process-id or --pid ID of the process to publish (optional if process_name is provided)
1378
+ --process-name or --pn Name of the process to publish (optional if process_id is provided)
1379
+ --revision or -r Revision of the process to publish
1380
+
1381
+ create-task or ctsk Create task
1382
+ --project-id or --pid ID of the project
1383
+ --name or -n Name of the task (required, must be unique within the project, no ':' or '/')
1384
+ --description or -d Description of what the task does (optional)
1385
+ --title-template or --tt Title template for task instances (optional, e.g., 'specs for {{issue}}')
1386
+ --id Custom ID for the task (optional, used instead of system-assigned ID)
1387
+ --prompt-data or --pd Prompt configuration as JSON (optional, e.g., '{"instructions": "Do this", "inputs": ["x"]}')
1388
+ --artifact-types or --at Artifact types as JSON array (optional, e.g., '[{"name": "doc", "description": "Docs", "isRequired": true, "usageType": "output", "artifactVariableKey": "doc_prefix"}]')
1389
+ --automatic-publish or --ap Define if task must be published after creation. 0: Create as draft. 1: Create and publish. Defaults to 0.
1390
+
1391
+ get-task or gtsk Get task
1392
+ --project-id or --pid ID of the project
1393
+ --task-id or --tid ID of the task to retrieve
1394
+ --task-name or --tn Name of the task to retrieve (optional if task_id is provided)
1395
+
1396
+ list-tasks or ltsk List tasks
1397
+ --project-id or --pid ID of the project
1398
+ --id ID of the task to filter by (optional)
1399
+ --start Starting index for pagination. Defaults to '0'.
1400
+ --count Number of tasks to retrieve. Defaults to '100'.
1401
+ --allow-drafts or --ad Whether to include draft tasks in the list. Defaults to 1 (True).
1402
+
1403
+ update-task or utsk Update task
1404
+ --project-id or --pid ID of the project
1405
+ --task-id or --tid ID of the task to update
1406
+ --name or -n Updated name of the task (optional, must be unique within the project, no ':' or '/' if provided)
1407
+ --description or -d Updated description of what the task does (optional)
1408
+ --title-template or --tt Updated title template for task instances (optional, e.g., 'specs for {{issue}}')
1409
+ --id Custom ID for the task (optional, used in upsert mode if creating a new task)
1410
+ --prompt-data or --pd Updated prompt configuration as JSON (optional, e.g., '{"instructions": "Do this", "inputs": ["x"]}')
1411
+ --artifact-types or --at Updated artifact types as JSON array (optional, e.g., '[{"name": "doc", "description": "Docs", "isRequired": true, "usageType": "output", "artifactVariableKey": "doc_prefix"}]')
1412
+ --automatic-publish or --ap Define if task must be published after update. 0: Update as draft. 1: Update and publish. Defaults to 0.
1413
+ --upsert Define if task must be created if it doesn't exist. 0: Update only if exists. 1: Insert if doesn't exist. Defaults to 0.
1414
+
1415
+ delete-task or dtsk Delete task
1416
+ --project-id or --pid ID of the project
1417
+ --task-id or --tid ID of the task to delete
1418
+ --task-name or --tn Name of the task to delete (optional if task_id is provided)
1419
+
1420
+ publish-task-revision or ptskr Publish task revision
1421
+ --project-id or --pid ID of the project
1422
+ --task-id or --tid ID of the task to publish
1423
+ --task-name or --tn Name of the task to publish (optional if task_id is provided)
1424
+ --revision or -r Revision of the task to publish
1425
+
1426
+ start-instance or si Start process instance
1427
+ --project-id or --pid ID of the project
1428
+ --process-name or --pn Name of the process to start an instance for
1429
+ --subject or -s Subject of the process instance (optional)
1430
+ --variables or -v Variables for the process instance in JSON list format: '[{"key": "location", "value": "Paris"}]' (optional)
1431
+
1432
+ abort-instance or ai Abort process instance
1433
+ --project-id or --pid ID of the project
1434
+ --instance-id or --iid ID of the instance to abort
1435
+
1436
+ get-instance or gi Get process instance
1437
+ --project-id or --pid ID of the project
1438
+ --instance-id or --iid ID of the instance to retrieve
1439
+
1440
+ get-instance-history or gih Get process instance history
1441
+ --project-id or --pid ID of the project
1442
+ --instance-id or --iid ID of the instance to retrieve history for
1443
+
1444
+ get-thread-information or gti Get thread information
1445
+ --project-id or --pid ID of the project
1446
+ --thread-id or --tid ID of the thread to retrieve information for
1447
+
1448
+ send-user-signal or sus Send user signal to process instance
1449
+ --project-id or --pid ID of the project
1450
+ --instance-id or --iid ID of the instance to send the signal to
1451
+ --signal-name or --sn Name of the user signal to send (e.g., 'approval')
1452
+
1453
+ create-kb or ckb Create knowledge base
1454
+ --project-id or --pid ID of the project
1455
+ --name or -n Name of the knowledge base
1456
+ --artifacts or -a List of artifact names in JSON format: '["artifact1", "artifact2"]'. Optional.
1457
+ --metadata or -m List of metadata fields in JSON format: '["meta1", "meta2"]'. Optional.
1458
+
1459
+ get-kb or gkb Get knowledge base
1460
+ --project-id or --pid ID of the project
1461
+ --kb-id or --kid ID of the knowledge base to retrieve (optional if kb_name is provided)
1462
+ --kb-name or --kn Name of the knowledge base to retrieve (optional if kb_id is provided)
1463
+
1464
+ list-kbs or lkb List knowledge bases
1465
+ --project-id or --pid ID of the project
1466
+ --name or -n Name of the knowledge base to filter by (optional)
1467
+ --start Starting index for pagination. Defaults to '0'.
1468
+ --count Number of knowledge bases to retrieve. Defaults to '100'.
1469
+
1470
+ delete-kb or dkb Delete knowledge base
1471
+ --project-id or --pid ID of the project
1472
+ --kb-id or --kid ID of the knowledge base to delete (optional if kb_name is provided)
1473
+ --kb-name or --kn Name of the knowledge base to delete (optional if kb_id is provided)
1474
+
1475
+ list-jobs or lj List runtime jobs
1476
+ --project-id or --pid ID of the project
1477
+ --start or -s Starting index for pagination. Defaults to '0'.
1478
+ --count or -c Number of jobs to retrieve. Defaults to '100'.
1479
+ --topic Topic of the jobs to filter by (optional).
1480
+ --token or -t Token of the jobs to filter by (optional).
1481
+ --name or -n Name of the jobs to filter by (optional).
1482
+
1483
+ GEAI CLI - AI LAB - SPEC
1484
+ ------------------------
1485
+
1486
+
1487
+ SYNOPSIS
1488
+ geai spec <subcommand> --[flag] [flag_arg]
1489
+
1490
+ DESCRIPTION
1491
+ geai spec is a command from geai cli utility, developed to load components to the AI Lab in GEAI from json specifications.
1492
+
1493
+ The options are as follows:
1494
+ help or h Display help text
1495
+
1496
+ load-agent or la Load agent from JSON specification
1497
+ --project-id or --pid ID of the project
1498
+ --file or -f Path to the file containing agent definition in JSON format.
1499
+ --automatic-publish or --ap Define if reasoning strategy must be published besides being created. 0: Create as draft. 1: Create and publish.
1500
+
1501
+ load-tool or lt Load tool from JSON specification
1502
+ --project-id or --pid ID of the project
1503
+ --file or -f Path to the file containing tool definition in JSON format.
1504
+ --automatic-publish or --ap Define if tool must be published besides being created. 0: Create as draft. 1: Create and publish.
1505
+
1506
+ load-task Load task from JSON specification
1507
+ --project-id or --pid ID of the project
1508
+ --file or -f Path to the file containing task definition in JSON format.
1509
+ --automatic-publish or --ap Define if task must be published besides being created. 0: Create as draft. 1: Create and publish.
1510
+
1511
+ load-agentic-process or lap Load agentic process from JSON specification
1512
+ --project-id or --pid ID of the project
1513
+ --file or -f Path to the file containing agentic process definition in JSON format.
1514
+ --automatic-publish or --ap Define if agentic process must be published besides being created. 0: Create as draft. 1: Create and publish.
1515
+
1516
+ GEAI CLI - MIGRATE
1517
+ ------------------
1518
+ SYNOPSIS
1519
+ geai migrate <subcommand> --[flag] [flag_arg]
1520
+
1521
+ DESCRIPTION
1522
+ geai migrate is a command from geai cli utility, developed to migrate data between organizations and instances of GEAI.
1523
+
1524
+ The options are as follows:
1525
+ help or h Display help text
1526
+
1527
+ clone-project Clone project from instance
1528
+ --from-api-key or --fak API key for the source instance
1529
+ --from-project-id or --fpid ID of the source project to migrate from
1530
+ --from-instance or --fi URL from the source instance to migrate from
1531
+ --to-api-key or --tak API key for the destination instance. If not specified, the same instance's API key will be used
1532
+ --to-project-name or --tpn Name of the destination project to migrate to
1533
+ --to-instance or --ti URL from the destination instance to migrate to. If not specified, the same instance's URL will be used
1534
+ --admin-email or --ae Email from destination project's administrator
1535
+
1536
+ clone-agent Clone agentt from instance
1537
+ --from-api-key or --fak API key for the source instance
1538
+ --from-project-id or --fpid ID of the source project to migrate from
1539
+ --from-instance or --fi URL from the source instance to migrate from
1540
+ --to-api-key or --tak API key for the destination instance. If not specified, the same instance's API key will be used
1541
+ --to-project-id or --tpid ID of the destination project to migrate to
1542
+ --to-instance or --ti URL from the destination instance to migrate to. If not specified, the same instance's URL will be used
1543
+ --agent-id or --aid Unique identifier from the agent to be migrated
1544
+
1545
+ clone-tool Clone tool from instance
1546
+ --from-api-key or --fak API key for the source instance
1547
+ --from-project-id or --fpid ID of the source project to migrate from
1548
+ --from-instance or --fi URL from the source instance to migrate from
1549
+ --to-api-key or --tak API key for the destination instance. If not specified, the same instance's API key will be used
1550
+ --to-project-id or --tpid ID of the destination project to migrate to
1551
+ --to-instance or --ti URL from the destination instance to migrate to. If not specified, the same instance's URL will be used
1552
+ --tool-id or --tid Unique identifier from the tool to be migrated
1553
+
1554
+ clone-process Clone process from instance
1555
+ --from-api-key or --fak API key for the source instance
1556
+ --from-project-id or --fpid ID of the source project to migrate from
1557
+ --from-instance or --fi URL from the source instance to migrate from
1558
+ --to-api-key or --tak API key for the destination instance. If not specified, the same instance's API key will be used
1559
+ --to-project-id or --tpid ID of the destination project to migrate to
1560
+ --to-instance or --ti URL from the destination instance to migrate to. If not specified, the same instance's URL will be used
1561
+ --process-id or --pid Unique identifier from the process to be migrated
1562
+
1563
+
1564
+ PyGEAI Debugger
1565
+ Overview
1566
+ geai-dbg is a command-line debugger for the geai CLI tool, part of the pygeai package. It allows developers to pause execution at specified points (breakpoints) in the geai codebase, inspect local variables, execute arbitrary Python code in the current context, and control program flow interactively. Breakpoints can be set by module or function name, providing flexibility for debugging complex CLI workflows.
1567
+
1568
+ The debugger is invoked by running the geai-dbg command, typically with the same arguments as the geai CLI. It pauses execution at predefined or user-specified breakpoints, presenting an interactive prompt (geai-dbg) for issuing commands.
1569
+
1570
+ Installation and Setup
1571
+ geai-dbg is included in the pygeai package. Ensure pygeai is installed in your Python environment:
1572
+
1573
+ pip install pygeai
1574
+ No additional setup is required. The debugger script (debugger.py) is located in the pygeai.dbg module and can be invoked via the geai-dbg command.
1575
+
1576
+ Usage
1577
+ To use geai-dbg, run it with the same arguments you would pass to the geai CLI. For example:
1578
+
1579
+ geai-dbg ail lrs
1580
+ This command runs the geai CLI with the arguments ail lrs under the debugger. The debugger automatically sets a breakpoint at the main function in the pygeai.cli.geai module, pausing execution before the geai command processes the arguments.
1581
+
1582
+ Upon hitting a breakpoint, the debugger displays:
1583
+
1584
+ The location (module and function) where execution is paused.
1585
+
1586
+ Local variables in the current context.
1587
+
1588
+ An interactive prompt (geai-dbg) for entering commands.
1589
+
1590
+ You can then inspect variables, add breakpoints, execute code, or control execution using the available commands.
1591
+
1592
+ Commands
1593
+ At the (geai-dbg) prompt, the following commands are available:
1594
+
1595
+ continue, c
1596
+ Resume execution until the next breakpoint is hit or the program completes.
1597
+
1598
+ quit, q, Ctrl+D
1599
+ Exit the debugger, terminating the program with a clean exit status (0).
1600
+
1601
+ run, r
1602
+ Run the program to completion, disabling all breakpoints and skipping further pauses.
1603
+
1604
+ breakpoint-module, bm
1605
+ Add a breakpoint for a specific module. Prompts for a module name (e.g., pygeai.cli.commands). Press Enter to set a wildcard breakpoint (any module).
1606
+
1607
+ breakpoint-function, bf
1608
+ Add a breakpoint for a specific function, optionally scoped to a module. Prompts for a function name (e.g., main) and an optional module name. Press Enter for wildcards (any function or module).
1609
+
1610
+ list-modules, lm
1611
+ List all loaded modules starting with pygeai, useful for identifying valid module names for breakpoints.
1612
+
1613
+ help, h
1614
+ Display a list of available commands and their descriptions.
1615
+
1616
+ <Python code>
1617
+ Execute arbitrary Python code in the current context. For example, print(sys.argv) displays the command-line arguments. Errors are caught and logged without crashing the debugger.
1618
+
1619
+ Ctrl+C
1620
+ Interrupt the current command input and resume execution, equivalent to continue.
1621
+
1622
+ Examples
1623
+ Example 1: Debugging a geai Command
1624
+
1625
+ Suppose you want to debug the geai ail lrs command to inspect its execution. Run:
1626
+
1627
+ geai-dbg ail lrs
1628
+ Output:
1629
+
1630
+ 2025-05-12 15:04:57,263 - geai - INFO - GEAI debugger started.
1631
+ 2025-05-12 15:04:57,263 - geai - INFO - geai module: pygeai.cli.geai
1632
+ 2025-05-12 15:04:57,263 - geai - INFO - Breakpoint added: pygeai.cli.geai:main
1633
+ 2025-05-12 15:04:57,264 - geai - INFO - Setting trace and running geai
1634
+ 2025-05-12 15:04:57,264 - geai - INFO - Breakpoint hit at pygeai.cli.geai.main
1635
+ 2025-05-12 15:04:57,264 - geai - INFO - Local variables: {}
1636
+
1637
+ Paused at pygeai.cli.geai.main
1638
+ Enter commands to execute in the current context (type 'continue' to resume, 'quit' to exit, 'help' to display available commands):
1639
+ (geai-dbg)
1640
+ List available commands:
1641
+
1642
+ (geai-dbg) h
1643
+ Available commands:
1644
+ continue, c: Resume execution until next breakpoint
1645
+ quit, q: Exit the debugger
1646
+ run, r: Run program without further pauses
1647
+ breakpoint-module, bm: Add a module breakpoint
1648
+ breakpoint-function, bf: Add a function breakpoint
1649
+ list-modules, lm: List available modules
1650
+ <Python code>: Execute arbitrary Python code in the current context
1651
+ List modules to find valid breakpoint targets:
1652
+
1653
+ (geai-dbg) lm
1654
+ 2025-05-12 15:05:03,595 - geai - INFO - Listing available modules
1655
+ Available modules: ['pygeai', 'pygeai.dbg', 'pygeai.cli', ...]
1656
+ Continue to the next breakpoint (e.g., another hit on main in a different context):
1657
+
1658
+ (geai-dbg) c
1659
+ 2025-05-12 15:05:18,424 - geai - DEBUG - Alias: default
1660
+ 2025-05-12 15:05:18,424 - geai - DEBUG - Base URL: api.beta.saia.ai/
1661
+ 2025-05-12 15:05:18,425 - geai - INFO - Breakpoint hit at pygeai.cli.geai.main
1662
+ 2025-05-12 15:05:18,425 - geai - INFO - Local variables: {'self': <pygeai.cli.geai.CLIDriver object at 0x100f34080>, 'args': None}
1663
+
1664
+ Paused at pygeai.cli.geai.main
1665
+ Enter commands to execute in the current context (type 'continue' to resume, 'quit' to exit, 'help' to display available commands):
1666
+ (geai-dbg)
1667
+ Run the program to completion:
1668
+
1669
+ (geai-dbg) run
1670
+ 2025-05-12 15:05:21,221 - geai - INFO - Running program without further pauses.
1671
+ 2025-05-12 15:05:21,222 - geai - DEBUG - Running geai with: /Users/alejandro.trinidad/globant/genexus/sdk/venv/bin/geai-dbg ail lrs
1672
+ 2025-05-12 15:05:21,222 - geai - DEBUG - Listing reasoning strategies
1673
+ [geai output listing reasoning strategies]
1674
+ 2025-05-12 15:05:21,878 - geai - INFO - Cleaning up trace
1675
+ Example 2: Inspecting Variables
1676
+
1677
+ At a breakpoint, inspect command-line arguments:
1678
+
1679
+ (geai-dbg) print(sys.argv)
1680
+ 2025-05-12 15:05:21,300 - geai - INFO - Executing interactive command: print(sys.argv)
1681
+ ['/Users/alejandro.trinidad/globant/genexus/sdk/venv/bin/geai-dbg', 'ail', 'lrs']
1682
+ Example 3: Adding a Breakpoint
1683
+
1684
+ Add a breakpoint for the pygeai.cli.commands module:
1685
+
1686
+ (geai-dbg) bm
1687
+ 2025-05-12 15:05:21,400 - geai - INFO - Adding breakpoint on module
1688
+ (geai-dbg) Enter module name (or press Enter for any module): pygeai.cli.commands
1689
+ 2025-05-12 15:05:21,500 - geai - INFO - Breakpoint added: pygeai.cli.commands:*
1690
+ Notes
1691
+ Ctrl+D and Ctrl+C: - Pressing Ctrl+D at the (geai-dbg) prompt terminates the debugger gracefully, logging “Debugger terminated by user (EOF).” and exiting with status 0. - Pressing Ctrl+C resumes execution, equivalent to the continue command.
1692
+
1693
+ Python Code Execution: - Arbitrary Python code executed at the prompt runs in the context of the paused frame, with access to local and global variables. Use with caution, as it can modify program state.
1694
+
1695
+ Breakpoint Wildcards: - Use bm or bf with empty inputs to set wildcard breakpoints, pausing on any module or function. This is useful for exploratory debugging.
1696
+
1697
+ Logging: - The debugger logs to stdout with timestamps, including breakpoint hits, local variables, and command execution. Errors in Python code execution are logged without crashing the debugger.
1698
+
1699
+ For issues or feature requests, contact the pygeai development team.
1700
+
1701
+ See also
1702
+
1703
+ geai CLI documentation for details on the underlying command-line tool.
1704
+
1705
+ Python’s sys.settrace documentation for technical details on the debugging mechanism.
1706
+ """
1707
+
1708
+ agent_id = "79c78da6-3d11-4fde-ac01-05bbc0817fd0" # Existing Agent
1709
+
1710
+ agent = Agent(
1711
+ id=agent_id,
1712
+ status="active",
1713
+ name="PyGEAI CLI Expert",
1714
+ access_scope="public",
1715
+ public_name="com.globant.geai.pygeai_cli_expert",
1716
+ job_description="Assists with PyGEAI CLI queries",
1717
+ avatar_image="https://www.shareicon.net/data/128x128/2016/11/09/851447_logo_512x512.png",
1718
+ description="Agent that provides guidance on using the PyGEAI command-line interface, including commands, subcommands, options, and error handling, based on comprehensive CLI documentation.",
1719
+ is_draft=False,
1720
+ is_readonly=False,
1721
+ revision=1,
1722
+ version=None,
1723
+ agent_data=AgentData(
1724
+ prompt=Prompt(
1725
+ instructions=f"""\
1726
+ You are an expert assistant for the PyGEAI CLI, designed to answer queries about its commands, subcommands, options, and error codes. Use the following GEAI CLI documentation as your knowledge base to provide accurate, clear, and concise responses in plain text. Tailor the response tone based on the 'style' input (formal or informal). If the query is unclear, ask for clarification. Provide examples where relevant. If an error code is mentioned, explain its meaning and suggest solutions.
1727
+ IMPORTANT: Answers should be short, clear and concise.
1728
+
1729
+ The documentation is provided below for reference:
1730
+
1731
+ {GEAI_CLI_HELP}
1732
+
1733
+ Respond with a detailed answer to the query and a brief summary. Ensure responses are accurate and aligned with the documentation.
1734
+ """,
1735
+ inputs=["query", "style"],
1736
+ outputs=[
1737
+ PromptOutput(key="response", description="Answer to the user's query about PyGEAI CLI, in plain text."),
1738
+ ],
1739
+ examples=[
1740
+ PromptExample(
1741
+ input_data="How do I create a new project in PyGEAI CLI? [formal]",
1742
+ output='Use `geai organization create-project` with required flags like --name and --email.'
1743
+ ),
1744
+ PromptExample(
1745
+ input_data="What does error code 401 mean? [informal]",
1746
+ output='Error code 401 in PyGEAI CLI means \'Unauthorized\'. It happens when your API key or token is missing or invalid. Double-check your API key with `geai configure --key <your_key>` or verify your token with `geai admin validate-token`'
1747
+ ),
1748
+ PromptExample(
1749
+ input_data="How to list all assistants in a project? [formal]",
1750
+ output='To list all assistants in a project, use the command: `geai organization list-assistants --organization-id <org_id> --project-id <project_id>`. Example: `geai organization list-assistants --organization-id org123 --project-id proj456`. Ensure you have configured the API key using `geai configure`.'
1751
+ )
1752
+ ]
1753
+ ),
1754
+ llm_config=LlmConfig(
1755
+ max_tokens=5000,
1756
+ timeout=0,
1757
+ sampling=Sampling(temperature=0.7, top_k=0, top_p=0)
1758
+ ),
1759
+ models=[Model(name="openai/gpt-4.1")]
1760
+ )
1761
+ )
1762
+
1763
+ manager = AILabManager()
1764
+ result = manager.update_agent(
1765
+ project_id="2ca6883f-6778-40bb-bcc1-85451fb11107",
1766
+ agent=agent,
1767
+ automatic_publish=True
1768
+ )
1769
+
1770
+ if isinstance(result, Agent):
1771
+ print(f"Agent updated successfully: {agent.to_dict()}")
1772
+ else:
1773
+ print("Errors:", result.errors)