pygeai 0.1.6__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.
Files changed (788) hide show
  1. pygeai/__init__.py +11 -2
  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 +48 -57
  146. pygeai/assistant/data/__init__.py +0 -0
  147. pygeai/assistant/data/clients.py +15 -0
  148. pygeai/assistant/data_analyst/__init__.py +0 -0
  149. pygeai/assistant/data_analyst/clients.py +75 -0
  150. pygeai/assistant/data_analyst/endpoints.py +2 -0
  151. pygeai/assistant/endpoints.py +0 -2
  152. pygeai/assistant/managers.py +738 -0
  153. pygeai/assistant/mappers.py +153 -0
  154. pygeai/assistant/rag/clients.py +132 -21
  155. pygeai/assistant/rag/mappers.py +228 -0
  156. pygeai/assistant/rag/models.py +396 -0
  157. pygeai/assistant/rag/responses.py +10 -0
  158. pygeai/auth/__init__.py +0 -0
  159. pygeai/auth/clients.py +129 -0
  160. pygeai/auth/endpoints.py +6 -0
  161. pygeai/chat/clients.py +406 -31
  162. pygeai/chat/endpoints.py +3 -0
  163. pygeai/chat/iris.py +17 -0
  164. pygeai/chat/managers.py +64 -0
  165. pygeai/chat/session.py +38 -0
  166. pygeai/chat/settings.py +6 -0
  167. pygeai/chat/ui.py +678 -0
  168. pygeai/cli/__init__.py +0 -1
  169. pygeai/cli/commands/admin.py +9 -12
  170. pygeai/cli/commands/analytics.py +533 -0
  171. pygeai/cli/commands/assistant.py +11 -11
  172. pygeai/cli/commands/auth.py +299 -0
  173. pygeai/cli/commands/base.py +201 -7
  174. pygeai/cli/commands/chat.py +875 -14
  175. pygeai/cli/commands/common.py +30 -26
  176. pygeai/cli/commands/configuration.py +84 -9
  177. pygeai/cli/commands/docs.py +105 -0
  178. pygeai/cli/commands/embeddings.py +187 -0
  179. pygeai/cli/commands/evaluation.py +2069 -0
  180. pygeai/cli/commands/feedback.py +93 -0
  181. pygeai/cli/commands/files.py +312 -0
  182. pygeai/cli/commands/flows/__init__.py +0 -0
  183. pygeai/cli/commands/gam.py +349 -0
  184. pygeai/cli/commands/lab/__init__.py +0 -0
  185. pygeai/cli/commands/lab/ai_lab.py +4110 -0
  186. pygeai/cli/commands/lab/common.py +135 -0
  187. pygeai/cli/commands/lab/options.py +8 -0
  188. pygeai/cli/commands/lab/spec.py +273 -0
  189. pygeai/cli/commands/lab/utils.py +13 -0
  190. pygeai/cli/commands/llm.py +164 -0
  191. pygeai/cli/commands/migrate.py +1198 -0
  192. pygeai/cli/commands/options.py +86 -0
  193. pygeai/cli/commands/organization.py +560 -98
  194. pygeai/cli/commands/rag.py +306 -10
  195. pygeai/cli/commands/rerank.py +108 -0
  196. pygeai/cli/commands/secrets.py +357 -0
  197. pygeai/cli/commands/usage_limits.py +583 -0
  198. pygeai/cli/commands/validators.py +209 -0
  199. pygeai/cli/commands/version.py +44 -0
  200. pygeai/cli/error_handler.py +151 -0
  201. pygeai/cli/geai.py +171 -30
  202. pygeai/cli/geai_proxy.py +318 -0
  203. pygeai/cli/install_man.py +107 -0
  204. pygeai/cli/parsers.py +78 -25
  205. pygeai/cli/texts/help.py +712 -55
  206. pygeai/core/__init__.py +9 -1
  207. pygeai/core/base/clients.py +61 -10
  208. pygeai/core/base/mappers.py +208 -30
  209. pygeai/core/base/models.py +8 -308
  210. pygeai/core/base/responses.py +18 -1
  211. pygeai/core/base/session.py +110 -17
  212. pygeai/core/common/config.py +98 -16
  213. pygeai/core/common/decorators.py +44 -0
  214. pygeai/core/common/exceptions.py +104 -4
  215. pygeai/core/embeddings/__init__.py +19 -0
  216. pygeai/core/embeddings/clients.py +93 -0
  217. pygeai/core/embeddings/endpoints.py +1 -0
  218. pygeai/core/embeddings/managers.py +62 -0
  219. pygeai/core/embeddings/mappers.py +52 -0
  220. pygeai/core/embeddings/models.py +14 -0
  221. pygeai/core/embeddings/responses.py +31 -0
  222. pygeai/core/feedback/__init__.py +0 -0
  223. pygeai/core/feedback/clients.py +50 -0
  224. pygeai/core/feedback/endpoints.py +1 -0
  225. pygeai/core/feedback/models.py +10 -0
  226. pygeai/core/files/__init__.py +0 -0
  227. pygeai/core/files/clients.py +156 -0
  228. pygeai/core/files/endpoints.py +5 -0
  229. pygeai/core/files/managers.py +224 -0
  230. pygeai/core/files/mappers.py +44 -0
  231. pygeai/core/files/models.py +24 -0
  232. pygeai/core/files/responses.py +19 -0
  233. pygeai/core/handlers.py +32 -0
  234. pygeai/core/llm/__init__.py +0 -0
  235. pygeai/core/llm/clients.py +53 -0
  236. pygeai/core/llm/endpoints.py +4 -0
  237. pygeai/core/models.py +799 -0
  238. pygeai/core/plugins/__init__.py +0 -0
  239. pygeai/core/plugins/clients.py +32 -0
  240. pygeai/core/plugins/endpoints.py +1 -0
  241. pygeai/core/plugins/models.py +86 -0
  242. pygeai/core/rerank/__init__.py +0 -0
  243. pygeai/core/rerank/clients.py +35 -0
  244. pygeai/core/rerank/endpoints.py +1 -0
  245. pygeai/core/rerank/managers.py +47 -0
  246. pygeai/core/rerank/mappers.py +23 -0
  247. pygeai/core/rerank/models.py +27 -0
  248. pygeai/core/responses.py +104 -0
  249. pygeai/core/secrets/__init__.py +0 -0
  250. pygeai/core/secrets/clients.py +212 -0
  251. pygeai/core/secrets/endpoints.py +7 -0
  252. pygeai/core/services/llm/__init__.py +0 -0
  253. pygeai/core/services/llm/model.py +186 -0
  254. pygeai/core/services/llm/providers.py +15 -0
  255. pygeai/core/services/response.py +18 -0
  256. pygeai/core/services/rest.py +311 -89
  257. pygeai/core/utils/__init__.py +0 -0
  258. pygeai/core/utils/console.py +83 -0
  259. pygeai/core/utils/parsers.py +32 -0
  260. pygeai/core/utils/validators.py +10 -0
  261. pygeai/dbg/__init__.py +3 -0
  262. pygeai/dbg/debugger.py +870 -0
  263. pygeai/evaluation/__init__.py +0 -0
  264. pygeai/evaluation/clients.py +19 -0
  265. pygeai/evaluation/dataset/__init__.py +0 -0
  266. pygeai/evaluation/dataset/clients.py +514 -0
  267. pygeai/evaluation/dataset/endpoints.py +26 -0
  268. pygeai/evaluation/plan/__init__.py +0 -0
  269. pygeai/evaluation/plan/clients.py +302 -0
  270. pygeai/evaluation/plan/endpoints.py +16 -0
  271. pygeai/evaluation/result/__init__.py +0 -0
  272. pygeai/evaluation/result/clients.py +70 -0
  273. pygeai/evaluation/result/endpoints.py +2 -0
  274. pygeai/flows/__init__.py +0 -0
  275. pygeai/flows/endpoints.py +362 -0
  276. pygeai/flows/models.py +1304 -0
  277. pygeai/gam/__init__.py +0 -0
  278. pygeai/gam/clients.py +178 -0
  279. pygeai/gam/endpoints.py +4 -0
  280. pygeai/health/__init__.py +0 -0
  281. pygeai/health/clients.py +24 -0
  282. pygeai/health/endpoints.py +1 -0
  283. pygeai/lab/__init__.py +0 -0
  284. pygeai/lab/agents/__init__.py +0 -0
  285. pygeai/lab/agents/clients.py +426 -0
  286. pygeai/lab/agents/endpoints.py +12 -0
  287. pygeai/lab/agents/mappers.py +319 -0
  288. pygeai/lab/clients.py +24 -0
  289. pygeai/lab/constants.py +3 -0
  290. pygeai/lab/managers.py +1558 -0
  291. pygeai/lab/models.py +1719 -0
  292. pygeai/lab/processes/__init__.py +0 -0
  293. pygeai/lab/processes/clients.py +1051 -0
  294. pygeai/lab/processes/endpoints.py +26 -0
  295. pygeai/lab/processes/mappers.py +395 -0
  296. pygeai/lab/runners.py +90 -0
  297. pygeai/lab/spec/__init__.py +0 -0
  298. pygeai/lab/spec/loader.py +24 -0
  299. pygeai/lab/spec/parsers.py +39 -0
  300. pygeai/lab/strategies/__init__.py +0 -0
  301. pygeai/lab/strategies/clients.py +212 -0
  302. pygeai/lab/strategies/endpoints.py +5 -0
  303. pygeai/lab/strategies/mappers.py +58 -0
  304. pygeai/lab/tools/__init__.py +0 -0
  305. pygeai/lab/tools/clients.py +465 -0
  306. pygeai/lab/tools/endpoints.py +13 -0
  307. pygeai/lab/tools/mappers.py +131 -0
  308. pygeai/man/__init__.py +1 -0
  309. pygeai/man/man1/__init__.py +1 -0
  310. pygeai/man/man1/geai-proxy.1 +246 -0
  311. pygeai/man/man1/geai.1 +2615 -0
  312. pygeai/migration/__init__.py +33 -0
  313. pygeai/migration/strategies.py +603 -0
  314. pygeai/migration/tools.py +180 -0
  315. pygeai/organization/clients.py +246 -18
  316. pygeai/organization/endpoints.py +17 -8
  317. pygeai/organization/limits/__init__.py +0 -0
  318. pygeai/organization/limits/clients.py +281 -0
  319. pygeai/organization/limits/endpoints.py +15 -0
  320. pygeai/organization/limits/managers.py +331 -0
  321. pygeai/organization/limits/mappers.py +21 -0
  322. pygeai/organization/managers.py +537 -0
  323. pygeai/organization/mappers.py +111 -46
  324. pygeai/organization/responses.py +61 -11
  325. pygeai/proxy/__init__.py +0 -0
  326. pygeai/proxy/clients.py +216 -0
  327. pygeai/proxy/config.py +128 -0
  328. pygeai/proxy/managers.py +232 -0
  329. pygeai/proxy/servers.py +304 -0
  330. pygeai/proxy/tool.py +69 -0
  331. pygeai/tests/admin/__init__.py +0 -0
  332. pygeai/tests/admin/test_clients.py +148 -0
  333. pygeai/tests/analytics/__init__.py +0 -0
  334. pygeai/tests/analytics/test_clients.py +86 -0
  335. pygeai/tests/analytics/test_managers.py +94 -0
  336. pygeai/tests/analytics/test_mappers.py +84 -0
  337. pygeai/tests/analytics/test_responses.py +73 -0
  338. pygeai/tests/assistants/rag/__init__.py +0 -0
  339. pygeai/tests/assistants/rag/test_clients.py +346 -0
  340. pygeai/tests/assistants/rag/test_mappers.py +189 -0
  341. pygeai/tests/assistants/rag/test_models.py +292 -0
  342. pygeai/tests/assistants/test_clients.py +176 -80
  343. pygeai/tests/assistants/test_managers.py +198 -0
  344. pygeai/tests/assistants/test_mappers.py +111 -0
  345. pygeai/tests/auth/__init__.py +0 -0
  346. pygeai/tests/auth/test_clients.py +289 -0
  347. pygeai/tests/auth/test_oauth.py +172 -0
  348. pygeai/tests/auth/test_session_logging.py +150 -0
  349. pygeai/tests/chat/__init__.py +0 -0
  350. pygeai/tests/chat/test_clients.py +393 -0
  351. pygeai/tests/chat/test_iris.py +38 -0
  352. pygeai/tests/chat/test_session.py +62 -0
  353. pygeai/tests/chat/test_ui.py +224 -0
  354. pygeai/tests/cli/__init__.py +0 -0
  355. pygeai/tests/cli/commands/__init__.py +0 -0
  356. pygeai/tests/cli/commands/lab/__init__.py +0 -0
  357. pygeai/tests/cli/commands/lab/test_ai_lab.py +786 -0
  358. pygeai/tests/cli/commands/lab/test_common.py +208 -0
  359. pygeai/tests/cli/commands/lab/test_spec.py +246 -0
  360. pygeai/tests/cli/commands/test_assistant.py +202 -0
  361. pygeai/tests/cli/commands/test_chat.py +130 -0
  362. pygeai/tests/cli/commands/test_common.py +350 -0
  363. pygeai/tests/cli/commands/test_embeddings.py +132 -0
  364. pygeai/tests/cli/commands/test_evaluation.py +656 -0
  365. pygeai/tests/cli/commands/test_feedback.py +65 -0
  366. pygeai/tests/cli/commands/test_files.py +161 -0
  367. pygeai/tests/cli/commands/test_gam.py +201 -0
  368. pygeai/tests/cli/commands/test_llm.py +114 -0
  369. pygeai/tests/cli/commands/test_migrate.py +176 -0
  370. pygeai/tests/cli/commands/test_organization.py +276 -0
  371. pygeai/tests/cli/commands/test_rag.py +266 -0
  372. pygeai/tests/cli/commands/test_rerank.py +110 -0
  373. pygeai/tests/cli/commands/test_secrets.py +171 -0
  374. pygeai/tests/cli/commands/test_show_help.py +41 -0
  375. pygeai/tests/cli/commands/test_usage_limits.py +412 -0
  376. pygeai/tests/cli/commands/test_validators.py +160 -0
  377. pygeai/tests/cli/commands/test_version.py +81 -0
  378. pygeai/tests/cli/docker/__init__.py +0 -0
  379. pygeai/tests/cli/test_credentials_flag.py +316 -0
  380. pygeai/tests/cli/test_error_handler.py +225 -0
  381. pygeai/tests/cli/test_geai_driver.py +154 -0
  382. pygeai/tests/cli/test_parsers.py +154 -0
  383. pygeai/tests/core/base/__init__.py +0 -0
  384. pygeai/tests/core/base/data/__init__.py +0 -0
  385. pygeai/tests/core/base/data/mappers.py +117 -0
  386. pygeai/tests/core/base/data/models.py +312 -0
  387. pygeai/tests/core/base/test_mappers.py +569 -0
  388. pygeai/tests/core/base/test_models.py +261 -0
  389. pygeai/tests/core/base/test_responses.py +53 -0
  390. pygeai/tests/core/common/__init__.py +0 -0
  391. pygeai/tests/core/common/data/__init__.py +0 -0
  392. pygeai/tests/core/common/test_config.py +186 -0
  393. pygeai/tests/core/common/test_decorators.py +69 -0
  394. pygeai/tests/core/embeddings/__init__.py +0 -0
  395. pygeai/tests/core/embeddings/test_clients.py +225 -0
  396. pygeai/tests/core/embeddings/test_managers.py +171 -0
  397. pygeai/tests/core/embeddings/test_mappers.py +142 -0
  398. pygeai/tests/core/feedback/__init__.py +0 -0
  399. pygeai/tests/core/feedback/test_clients.py +64 -0
  400. pygeai/tests/core/files/__init__.py +0 -0
  401. pygeai/tests/core/files/test_clients.py +128 -0
  402. pygeai/tests/core/files/test_managers.py +219 -0
  403. pygeai/tests/core/files/test_mappers.py +137 -0
  404. pygeai/tests/core/files/test_models.py +103 -0
  405. pygeai/tests/core/files/test_responses.py +122 -0
  406. pygeai/tests/core/llm/__init__.py +0 -0
  407. pygeai/tests/core/llm/test_clients.py +142 -0
  408. pygeai/tests/core/plugins/__init__.py +0 -0
  409. pygeai/tests/core/plugins/test_clients.py +66 -0
  410. pygeai/tests/core/rerank/__init__.py +0 -0
  411. pygeai/tests/core/rerank/test_clients.py +76 -0
  412. pygeai/tests/core/rerank/test_managers.py +99 -0
  413. pygeai/tests/core/rerank/test_mappers.py +54 -0
  414. pygeai/tests/core/secrets/__init__.py +0 -0
  415. pygeai/tests/core/secrets/test_clients.py +264 -0
  416. pygeai/tests/core/services/__init__.py +0 -0
  417. pygeai/tests/core/services/test_rest.py +273 -0
  418. pygeai/tests/core/test_handlers.py +66 -0
  419. pygeai/tests/core/utils/__init__.py +0 -0
  420. pygeai/tests/core/utils/test_console.py +80 -0
  421. pygeai/tests/dbg/__init__.py +0 -0
  422. pygeai/tests/dbg/test_debugger.py +591 -0
  423. pygeai/tests/evaluation/__init__.py +0 -0
  424. pygeai/tests/evaluation/dataset/__init__.py +0 -0
  425. pygeai/tests/evaluation/dataset/test_clients.py +265 -0
  426. pygeai/tests/evaluation/plan/__init__.py +0 -0
  427. pygeai/tests/evaluation/plan/test_clients.py +195 -0
  428. pygeai/tests/evaluation/result/__init__.py +0 -0
  429. pygeai/tests/evaluation/result/test_clients.py +66 -0
  430. pygeai/tests/gam/__init__.py +0 -0
  431. pygeai/tests/gam/test_clients.py +195 -0
  432. pygeai/tests/health/__init__.py +0 -0
  433. pygeai/tests/health/test_clients.py +41 -0
  434. pygeai/tests/integration/__init__.py +0 -0
  435. pygeai/tests/integration/assistants/__init__.py +0 -0
  436. pygeai/tests/integration/assistants/rag/__init__.py +0 -0
  437. pygeai/tests/integration/assistants/rag/test_create_rag.py +91 -0
  438. pygeai/tests/integration/chat/__init__.py +0 -0
  439. pygeai/tests/integration/chat/test_generate_image.py +158 -0
  440. pygeai/tests/integration/lab/__init__.py +0 -0
  441. pygeai/tests/integration/lab/agents/__init__.py +0 -0
  442. pygeai/tests/integration/lab/agents/test_agents_list.py +106 -0
  443. pygeai/tests/integration/lab/agents/test_create_agent.py +319 -0
  444. pygeai/tests/integration/lab/agents/test_create_sharing_link.py +70 -0
  445. pygeai/tests/integration/lab/agents/test_delete_agent.py +75 -0
  446. pygeai/tests/integration/lab/agents/test_get_agent.py +94 -0
  447. pygeai/tests/integration/lab/agents/test_publish_agent_revision.py +127 -0
  448. pygeai/tests/integration/lab/agents/test_update_agent.py +250 -0
  449. pygeai/tests/integration/lab/processes/__init__.py +0 -0
  450. pygeai/tests/integration/lab/processes/test_create_process.py +345 -0
  451. pygeai/tests/integration/lab/processes/test_create_task.py +211 -0
  452. pygeai/tests/integration/lab/processes/test_delete_process.py +111 -0
  453. pygeai/tests/integration/lab/processes/test_get_process.py +201 -0
  454. pygeai/tests/integration/lab/processes/test_list_process_instances.py +91 -0
  455. pygeai/tests/integration/lab/processes/test_list_processes.py +138 -0
  456. pygeai/tests/integration/lab/processes/test_publish_process_revision.py +232 -0
  457. pygeai/tests/integration/lab/processes/test_update_process.py +289 -0
  458. pygeai/tests/integration/lab/reasoning_strategies/__init__.py +0 -0
  459. pygeai/tests/integration/lab/reasoning_strategies/test_get_reasoning_strategy.py +70 -0
  460. pygeai/tests/integration/lab/reasoning_strategies/test_list_reasoning_strategies.py +93 -0
  461. pygeai/tests/integration/lab/reasoning_strategies/test_update_reasoning_strategy.py +149 -0
  462. pygeai/tests/integration/lab/tools/__init__.py +0 -0
  463. pygeai/tests/integration/lab/tools/test_create_tool.py +288 -0
  464. pygeai/tests/integration/lab/tools/test_delete_tool.py +87 -0
  465. pygeai/tests/integration/lab/tools/test_get_parameter.py +98 -0
  466. pygeai/tests/integration/lab/tools/test_get_tool.py +91 -0
  467. pygeai/tests/integration/lab/tools/test_list_tools.py +106 -0
  468. pygeai/tests/integration/lab/tools/test_publish_tool_revision.py +119 -0
  469. pygeai/tests/integration/lab/tools/test_set_parameter.py +114 -0
  470. pygeai/tests/integration/lab/tools/test_update_tool.py +267 -0
  471. pygeai/tests/lab/__init__.py +0 -0
  472. pygeai/tests/lab/agents/__init__.py +0 -0
  473. pygeai/tests/lab/agents/test_clients.py +481 -0
  474. pygeai/tests/lab/agents/test_mappers.py +440 -0
  475. pygeai/tests/lab/processes/__init__.py +0 -0
  476. pygeai/tests/lab/processes/test_clients.py +1416 -0
  477. pygeai/tests/lab/processes/test_mappers.py +1092 -0
  478. pygeai/tests/lab/spec/__init__.py +0 -0
  479. pygeai/tests/lab/spec/test_loader.py +59 -0
  480. pygeai/tests/lab/spec/test_parsers.py +182 -0
  481. pygeai/tests/lab/strategies/__init__.py +0 -0
  482. pygeai/tests/lab/strategies/test_clients.py +241 -0
  483. pygeai/tests/lab/strategies/test_mappers.py +132 -0
  484. pygeai/tests/lab/test_managers.py +553 -0
  485. pygeai/tests/lab/test_mappers.py +245 -0
  486. pygeai/tests/lab/test_models.py +1154 -0
  487. pygeai/tests/lab/tools/__init__.py +0 -0
  488. pygeai/tests/lab/tools/test_clients.py +521 -0
  489. pygeai/tests/lab/tools/test_mappers.py +198 -0
  490. pygeai/tests/migration/__init__.py +0 -0
  491. pygeai/tests/migration/test_strategies.py +405 -0
  492. pygeai/tests/migration/test_tools.py +159 -0
  493. pygeai/tests/organization/limits/__init__.py +0 -0
  494. pygeai/tests/organization/limits/test_clients.py +567 -0
  495. pygeai/tests/organization/limits/test_managers.py +402 -0
  496. pygeai/tests/organization/test_clients.py +615 -64
  497. pygeai/tests/organization/test_managers.py +424 -0
  498. pygeai/tests/organization/test_mappers.py +153 -0
  499. pygeai/tests/organization/test_responses.py +137 -0
  500. pygeai/tests/proxy/__init__.py +1 -0
  501. pygeai/tests/proxy/test_clients.py +397 -0
  502. pygeai/tests/proxy/test_config.py +171 -0
  503. pygeai/tests/proxy/test_integration.py +305 -0
  504. pygeai/tests/proxy/test_managers.py +312 -0
  505. pygeai/tests/proxy/test_servers.py +387 -0
  506. pygeai/tests/proxy/test_tool.py +176 -0
  507. pygeai/tests/snippets/__init__.py +0 -0
  508. pygeai/tests/snippets/analytics/__init__.py +0 -0
  509. pygeai/tests/snippets/analytics/get_agent_usage_per_user.py +16 -0
  510. pygeai/tests/snippets/analytics/get_agents_created_and_modified.py +11 -0
  511. pygeai/tests/snippets/analytics/get_average_cost_per_request.py +10 -0
  512. pygeai/tests/snippets/analytics/get_overall_error_rate.py +10 -0
  513. pygeai/tests/snippets/analytics/get_top_10_agents_by_requests.py +12 -0
  514. pygeai/tests/snippets/analytics/get_total_active_users.py +10 -0
  515. pygeai/tests/snippets/analytics/get_total_cost.py +10 -0
  516. pygeai/tests/snippets/analytics/get_total_requests_per_day.py +12 -0
  517. pygeai/tests/snippets/analytics/get_total_tokens.py +12 -0
  518. pygeai/tests/snippets/assistants/__init__.py +0 -0
  519. pygeai/tests/snippets/assistants/create_chat_assistant.py +54 -0
  520. pygeai/tests/snippets/assistants/create_text_assistant.py +51 -0
  521. pygeai/tests/snippets/assistants/data_analyst/__init__.py +0 -0
  522. pygeai/tests/snippets/assistants/data_analyst/extend_and_check.py +100 -0
  523. pygeai/tests/snippets/assistants/data_analyst/extend_dataset.py +9 -0
  524. pygeai/tests/snippets/assistants/data_analyst/get_status.py +9 -0
  525. pygeai/tests/snippets/assistants/file_summarizer_assistant.py +149 -0
  526. pygeai/tests/snippets/assistants/get_assistant_data.py +8 -0
  527. pygeai/tests/snippets/assistants/get_assistant_list.py +7 -0
  528. pygeai/tests/snippets/assistants/rag/__init__.py +0 -0
  529. pygeai/tests/snippets/assistants/rag/create_rag_assistant.py +65 -0
  530. pygeai/tests/snippets/assistants/rag/delete_al_documents.py +7 -0
  531. pygeai/tests/snippets/assistants/rag/delete_document.py +10 -0
  532. pygeai/tests/snippets/assistants/rag/delete_rag_assistant.py +8 -0
  533. pygeai/tests/snippets/assistants/rag/get_document.py +10 -0
  534. pygeai/tests/snippets/assistants/rag/get_documents.py +7 -0
  535. pygeai/tests/snippets/assistants/rag/get_rag_assistant_data.py +8 -0
  536. pygeai/tests/snippets/assistants/rag/update_rag_assistant.py +48 -0
  537. pygeai/tests/snippets/assistants/rag/upload_document.py +19 -0
  538. pygeai/tests/snippets/assistants/send_feedback.py +14 -0
  539. pygeai/tests/snippets/assistants/update_chat_assistant.py +63 -0
  540. pygeai/tests/snippets/auth/__init__.py +0 -0
  541. pygeai/tests/snippets/chat/__init__.py +0 -0
  542. pygeai/tests/snippets/chat/cancel_request.py +7 -0
  543. pygeai/tests/snippets/chat/chat_completion.py +28 -0
  544. pygeai/tests/snippets/chat/chat_completion_1.py +40 -0
  545. pygeai/tests/snippets/chat/chat_completion_2.py +60 -0
  546. pygeai/tests/snippets/chat/chat_completion_3.py +27 -0
  547. pygeai/tests/snippets/chat/chat_completion_4.py +67 -0
  548. pygeai/tests/snippets/chat/chat_completion_streaming.py +63 -0
  549. pygeai/tests/snippets/chat/chat_completion_with_reasoning_effort.py +18 -0
  550. pygeai/tests/snippets/chat/get_request_status.py +7 -0
  551. pygeai/tests/snippets/chat/get_response.py +15 -0
  552. pygeai/tests/snippets/chat/get_response_complete_example.py +67 -0
  553. pygeai/tests/snippets/chat/get_response_streaming.py +20 -0
  554. pygeai/tests/snippets/chat/get_response_with_files.py +16 -0
  555. pygeai/tests/snippets/chat/get_response_with_instructions.py +19 -0
  556. pygeai/tests/snippets/chat/get_response_with_metadata.py +24 -0
  557. pygeai/tests/snippets/chat/get_response_with_parallel_tools.py +58 -0
  558. pygeai/tests/snippets/chat/get_response_with_reasoning.py +21 -0
  559. pygeai/tests/snippets/chat/get_response_with_store.py +38 -0
  560. pygeai/tests/snippets/chat/get_response_with_tools.py +36 -0
  561. pygeai/tests/snippets/chat/get_response_with_truncation.py +24 -0
  562. pygeai/tests/snippets/chat/send_chat_request.py +33 -0
  563. pygeai/tests/snippets/dbg/__init__.py +0 -0
  564. pygeai/tests/snippets/dbg/basic_debugging.py +32 -0
  565. pygeai/tests/snippets/dbg/breakpoint_management.py +48 -0
  566. pygeai/tests/snippets/dbg/file_debugging.py +72 -0
  567. pygeai/tests/snippets/dbg/module_debugging.py +61 -0
  568. pygeai/tests/snippets/dbg/stack_navigation.py +45 -0
  569. pygeai/tests/snippets/dbg/stepping_example.py +40 -0
  570. pygeai/tests/snippets/embeddings/__init__.py +0 -0
  571. pygeai/tests/snippets/embeddings/cache_example.py +31 -0
  572. pygeai/tests/snippets/embeddings/cohere_example.py +41 -0
  573. pygeai/tests/snippets/embeddings/generate_embeddings.py +26 -0
  574. pygeai/tests/snippets/embeddings/openai_base64_example.py +27 -0
  575. pygeai/tests/snippets/embeddings/openai_example.py +30 -0
  576. pygeai/tests/snippets/embeddings/similarity_example.py +42 -0
  577. pygeai/tests/snippets/evaluation/__init__.py +0 -0
  578. pygeai/tests/snippets/evaluation/dataset/__init__.py +0 -0
  579. pygeai/tests/snippets/evaluation/dataset/complete_workflow_example.py +195 -0
  580. pygeai/tests/snippets/evaluation/dataset/create_dataset.py +26 -0
  581. pygeai/tests/snippets/evaluation/dataset/create_dataset_from_file.py +11 -0
  582. pygeai/tests/snippets/evaluation/dataset/create_dataset_row.py +17 -0
  583. pygeai/tests/snippets/evaluation/dataset/create_expected_source.py +18 -0
  584. pygeai/tests/snippets/evaluation/dataset/create_filter_variable.py +19 -0
  585. pygeai/tests/snippets/evaluation/dataset/delete_dataset.py +9 -0
  586. pygeai/tests/snippets/evaluation/dataset/delete_dataset_row.py +10 -0
  587. pygeai/tests/snippets/evaluation/dataset/delete_expected_source.py +15 -0
  588. pygeai/tests/snippets/evaluation/dataset/delete_filter_variable.py +15 -0
  589. pygeai/tests/snippets/evaluation/dataset/get_dataset.py +9 -0
  590. pygeai/tests/snippets/evaluation/dataset/get_dataset_row.py +10 -0
  591. pygeai/tests/snippets/evaluation/dataset/get_expected_source.py +15 -0
  592. pygeai/tests/snippets/evaluation/dataset/get_filter_variable.py +15 -0
  593. pygeai/tests/snippets/evaluation/dataset/list_dataset_rows.py +9 -0
  594. pygeai/tests/snippets/evaluation/dataset/list_datasets.py +6 -0
  595. pygeai/tests/snippets/evaluation/dataset/list_expected_sources.py +10 -0
  596. pygeai/tests/snippets/evaluation/dataset/list_filter_variables.py +10 -0
  597. pygeai/tests/snippets/evaluation/dataset/update_dataset.py +15 -0
  598. pygeai/tests/snippets/evaluation/dataset/update_dataset_row.py +20 -0
  599. pygeai/tests/snippets/evaluation/dataset/update_expected_source.py +18 -0
  600. pygeai/tests/snippets/evaluation/dataset/update_filter_variable.py +19 -0
  601. pygeai/tests/snippets/evaluation/dataset/upload_dataset_rows_file.py +10 -0
  602. pygeai/tests/snippets/evaluation/plan/__init__.py +0 -0
  603. pygeai/tests/snippets/evaluation/plan/add_plan_system_metric.py +13 -0
  604. pygeai/tests/snippets/evaluation/plan/complete_workflow_example.py +136 -0
  605. pygeai/tests/snippets/evaluation/plan/create_evaluation_plan.py +24 -0
  606. pygeai/tests/snippets/evaluation/plan/create_rag_evaluation_plan.py +22 -0
  607. pygeai/tests/snippets/evaluation/plan/delete_evaluation_plan.py +9 -0
  608. pygeai/tests/snippets/evaluation/plan/delete_plan_system_metric.py +13 -0
  609. pygeai/tests/snippets/evaluation/plan/execute_evaluation_plan.py +11 -0
  610. pygeai/tests/snippets/evaluation/plan/get_evaluation_plan.py +9 -0
  611. pygeai/tests/snippets/evaluation/plan/get_plan_system_metric.py +13 -0
  612. pygeai/tests/snippets/evaluation/plan/get_system_metric.py +9 -0
  613. pygeai/tests/snippets/evaluation/plan/list_evaluation_plans.py +7 -0
  614. pygeai/tests/snippets/evaluation/plan/list_plan_system_metrics.py +9 -0
  615. pygeai/tests/snippets/evaluation/plan/list_system_metrics.py +7 -0
  616. pygeai/tests/snippets/evaluation/plan/update_evaluation_plan.py +22 -0
  617. pygeai/tests/snippets/evaluation/plan/update_plan_system_metric.py +14 -0
  618. pygeai/tests/snippets/evaluation/result/__init__.py +0 -0
  619. pygeai/tests/snippets/evaluation/result/complete_workflow_example.py +150 -0
  620. pygeai/tests/snippets/evaluation/result/get_evaluation_result.py +26 -0
  621. pygeai/tests/snippets/evaluation/result/list_evaluation_results.py +17 -0
  622. pygeai/tests/snippets/files/__init__.py +0 -0
  623. pygeai/tests/snippets/files/delete_file.py +9 -0
  624. pygeai/tests/snippets/files/get_file_content.py +10 -0
  625. pygeai/tests/snippets/files/get_file_data.py +9 -0
  626. pygeai/tests/snippets/files/get_file_list.py +6 -0
  627. pygeai/tests/snippets/files/upload_file.py +13 -0
  628. pygeai/tests/snippets/gam/__init__.py +0 -0
  629. pygeai/tests/snippets/gam/gam_access_token.py +87 -0
  630. pygeai/tests/snippets/lab/__init__.py +0 -0
  631. pygeai/tests/snippets/lab/agentic_flow_example_1.py +326 -0
  632. pygeai/tests/snippets/lab/agentic_flow_example_2.py +206 -0
  633. pygeai/tests/snippets/lab/agentic_flow_example_3.py +486 -0
  634. pygeai/tests/snippets/lab/agentic_flow_example_4.py +446 -0
  635. pygeai/tests/snippets/lab/agents/__init__.py +0 -0
  636. pygeai/tests/snippets/lab/agents/create_agent.py +48 -0
  637. pygeai/tests/snippets/lab/agents/create_agent_2.py +48 -0
  638. pygeai/tests/snippets/lab/agents/create_agent_edge_case.py +48 -0
  639. pygeai/tests/snippets/lab/agents/create_agent_with_permissions.py +39 -0
  640. pygeai/tests/snippets/lab/agents/create_agent_with_properties.py +46 -0
  641. pygeai/tests/snippets/lab/agents/create_agent_without_instructions.py +48 -0
  642. pygeai/tests/snippets/lab/agents/delete_agent.py +12 -0
  643. pygeai/tests/snippets/lab/agents/get_agent.py +24 -0
  644. pygeai/tests/snippets/lab/agents/get_agent_with_new_fields.py +62 -0
  645. pygeai/tests/snippets/lab/agents/get_sharing_link.py +13 -0
  646. pygeai/tests/snippets/lab/agents/list_agents.py +18 -0
  647. pygeai/tests/snippets/lab/agents/publish_agent_revision.py +12 -0
  648. pygeai/tests/snippets/lab/agents/update_agent.py +50 -0
  649. pygeai/tests/snippets/lab/agents/update_agent_properties.py +50 -0
  650. pygeai/tests/snippets/lab/assistant_to_agent.py +191 -0
  651. pygeai/tests/snippets/lab/crud_ui.py +462 -0
  652. pygeai/tests/snippets/lab/processes/__init__.py +0 -0
  653. pygeai/tests/snippets/lab/processes/create_process.py +24 -0
  654. pygeai/tests/snippets/lab/processes/create_task.py +8 -0
  655. pygeai/tests/snippets/lab/processes/jobs/__init__.py +0 -0
  656. pygeai/tests/snippets/lab/processes/jobs/list_jobs.py +21 -0
  657. pygeai/tests/snippets/lab/processes/kbs/__init__.py +0 -0
  658. pygeai/tests/snippets/lab/processes/kbs/create_kb.py +18 -0
  659. pygeai/tests/snippets/lab/processes/kbs/get_kb.py +26 -0
  660. pygeai/tests/snippets/lab/processes/kbs/list_kbs.py +30 -0
  661. pygeai/tests/snippets/lab/processes/kbs/try_all.py +73 -0
  662. pygeai/tests/snippets/lab/processes/list_processes.py +10 -0
  663. pygeai/tests/snippets/lab/runner_1.py +212 -0
  664. pygeai/tests/snippets/lab/samples/__init__.py +0 -0
  665. pygeai/tests/snippets/lab/samples/summarize_files.py +162 -0
  666. pygeai/tests/snippets/lab/strategies/__init__.py +0 -0
  667. pygeai/tests/snippets/lab/strategies/create_reasoning_strategy.py +22 -0
  668. pygeai/tests/snippets/lab/strategies/get_reasoning_strategy.py +10 -0
  669. pygeai/tests/snippets/lab/strategies/list_reasoning_strategies.py +16 -0
  670. pygeai/tests/snippets/lab/strategies/update_reasoning_strategy.py +26 -0
  671. pygeai/tests/snippets/lab/tools/__init__.py +0 -0
  672. pygeai/tests/snippets/lab/tools/create_tool.py +48 -0
  673. pygeai/tests/snippets/lab/tools/create_tool_edge_case.py +50 -0
  674. pygeai/tests/snippets/lab/tools/delete_tool.py +21 -0
  675. pygeai/tests/snippets/lab/tools/get_parameter.py +21 -0
  676. pygeai/tests/snippets/lab/tools/get_tool.py +22 -0
  677. pygeai/tests/snippets/lab/tools/list_tools.py +23 -0
  678. pygeai/tests/snippets/lab/tools/publish_tool_revision.py +13 -0
  679. pygeai/tests/snippets/lab/tools/set_parameters.py +33 -0
  680. pygeai/tests/snippets/lab/tools/update_tool.py +52 -0
  681. pygeai/tests/snippets/lab/use_cases/__init__.py +0 -0
  682. pygeai/tests/snippets/lab/use_cases/c_code_fixer_agent_flow.py +238 -0
  683. pygeai/tests/snippets/lab/use_cases/create_cli_expert.py +1640 -0
  684. pygeai/tests/snippets/lab/use_cases/create_lab_expert.py +4541 -0
  685. pygeai/tests/snippets/lab/use_cases/create_tool_headless_web_browser.py +133 -0
  686. pygeai/tests/snippets/lab/use_cases/create_web_designer.py +189 -0
  687. pygeai/tests/snippets/lab/use_cases/create_web_reader.py +185 -0
  688. pygeai/tests/snippets/lab/use_cases/file_summarizer_example.py +157 -0
  689. pygeai/tests/snippets/lab/use_cases/file_summarizer_example_2.py +157 -0
  690. pygeai/tests/snippets/lab/use_cases/update_cli_expert.py +1773 -0
  691. pygeai/tests/snippets/lab/use_cases/update_lab_expert.py +4541 -0
  692. pygeai/tests/snippets/lab/use_cases/update_web_designer.py +188 -0
  693. pygeai/tests/snippets/lab/use_cases/update_web_reader.py +195 -0
  694. pygeai/tests/snippets/lab/use_cases/update_web_reader_with_tool.py +210 -0
  695. pygeai/tests/snippets/migrate/__init__.py +45 -0
  696. pygeai/tests/snippets/migrate/agent_migration.py +110 -0
  697. pygeai/tests/snippets/migrate/assistant_migration.py +64 -0
  698. pygeai/tests/snippets/migrate/orchestrator_examples.py +179 -0
  699. pygeai/tests/snippets/migrate/process_migration.py +64 -0
  700. pygeai/tests/snippets/migrate/project_migration.py +42 -0
  701. pygeai/tests/snippets/migrate/tool_migration.py +64 -0
  702. pygeai/tests/snippets/organization/__init__.py +0 -0
  703. pygeai/tests/snippets/organization/add_project_member.py +10 -0
  704. pygeai/tests/snippets/organization/add_project_member_batch.py +44 -0
  705. pygeai/tests/snippets/organization/create_project.py +23 -0
  706. pygeai/tests/snippets/organization/delete_project.py +7 -0
  707. pygeai/tests/snippets/organization/export_request_data.py +7 -0
  708. pygeai/tests/snippets/organization/get_memberships.py +12 -0
  709. pygeai/tests/snippets/organization/get_organization_members.py +6 -0
  710. pygeai/tests/snippets/organization/get_project_data.py +7 -0
  711. pygeai/tests/snippets/organization/get_project_list.py +8 -0
  712. pygeai/tests/snippets/organization/get_project_members.py +6 -0
  713. pygeai/tests/snippets/organization/get_project_memberships.py +12 -0
  714. pygeai/tests/snippets/organization/get_project_roles.py +6 -0
  715. pygeai/tests/snippets/organization/get_project_tokens.py +7 -0
  716. pygeai/tests/snippets/organization/update_project.py +14 -0
  717. pygeai/tests/snippets/rerank/__init__.py +0 -0
  718. pygeai/tests/snippets/rerank/rerank_chunks.py +19 -0
  719. pygeai/tests/snippets/secrets/__init__.py +0 -0
  720. pygeai/tests/snippets/usage_limit/__init__.py +0 -0
  721. pygeai/tests/snippets/usage_limit/delete_usage_limit.py +16 -0
  722. pygeai/tests/snippets/usage_limit/get_all_usage_limit_from_organization.py +12 -0
  723. pygeai/tests/snippets/usage_limit/get_usage_limit_from_organization.py +11 -0
  724. pygeai/tests/snippets/usage_limit/get_usage_limit_from_project.py +13 -0
  725. pygeai/tests/snippets/usage_limit/set_usage_limit_organization.py +22 -0
  726. pygeai/tests/snippets/usage_limit/set_usage_limit_project.py +23 -0
  727. pygeai/tests/snippets/usage_limit/update_usage_limit_organization.py +23 -0
  728. pygeai/tests/snippets/usage_limit/update_usage_limit_project.py +24 -0
  729. pygeai/vendor/a2a/__init__.py +1 -0
  730. pygeai/vendor/a2a/auth/__init__.py +0 -0
  731. pygeai/vendor/a2a/auth/user.py +31 -0
  732. pygeai/vendor/a2a/client/__init__.py +19 -0
  733. pygeai/vendor/a2a/client/client.py +425 -0
  734. pygeai/vendor/a2a/client/errors.py +33 -0
  735. pygeai/vendor/a2a/client/helpers.py +22 -0
  736. pygeai/vendor/a2a/py.typed +0 -0
  737. pygeai/vendor/a2a/server/__init__.py +1 -0
  738. pygeai/vendor/a2a/server/agent_execution/__init__.py +18 -0
  739. pygeai/vendor/a2a/server/agent_execution/agent_executor.py +44 -0
  740. pygeai/vendor/a2a/server/agent_execution/context.py +155 -0
  741. pygeai/vendor/a2a/server/agent_execution/request_context_builder.py +20 -0
  742. pygeai/vendor/a2a/server/agent_execution/simple_request_context_builder.py +77 -0
  743. pygeai/vendor/a2a/server/apps/__init__.py +16 -0
  744. pygeai/vendor/a2a/server/apps/jsonrpc/__init__.py +16 -0
  745. pygeai/vendor/a2a/server/apps/jsonrpc/fastapi_app.py +88 -0
  746. pygeai/vendor/a2a/server/apps/jsonrpc/jsonrpc_app.py +426 -0
  747. pygeai/vendor/a2a/server/apps/jsonrpc/starlette_app.py +123 -0
  748. pygeai/vendor/a2a/server/context.py +23 -0
  749. pygeai/vendor/a2a/server/events/__init__.py +21 -0
  750. pygeai/vendor/a2a/server/events/event_consumer.py +149 -0
  751. pygeai/vendor/a2a/server/events/event_queue.py +156 -0
  752. pygeai/vendor/a2a/server/events/in_memory_queue_manager.py +85 -0
  753. pygeai/vendor/a2a/server/events/queue_manager.py +35 -0
  754. pygeai/vendor/a2a/server/request_handlers/__init__.py +20 -0
  755. pygeai/vendor/a2a/server/request_handlers/default_request_handler.py +435 -0
  756. pygeai/vendor/a2a/server/request_handlers/jsonrpc_handler.py +327 -0
  757. pygeai/vendor/a2a/server/request_handlers/request_handler.py +161 -0
  758. pygeai/vendor/a2a/server/request_handlers/response_helpers.py +133 -0
  759. pygeai/vendor/a2a/server/tasks/__init__.py +20 -0
  760. pygeai/vendor/a2a/server/tasks/inmemory_push_notifier.py +62 -0
  761. pygeai/vendor/a2a/server/tasks/inmemory_task_store.py +51 -0
  762. pygeai/vendor/a2a/server/tasks/push_notifier.py +25 -0
  763. pygeai/vendor/a2a/server/tasks/result_aggregator.py +151 -0
  764. pygeai/vendor/a2a/server/tasks/task_manager.py +253 -0
  765. pygeai/vendor/a2a/server/tasks/task_store.py +22 -0
  766. pygeai/vendor/a2a/server/tasks/task_updater.py +155 -0
  767. pygeai/vendor/a2a/types.py +1624 -0
  768. pygeai/vendor/a2a/utils/__init__.py +40 -0
  769. pygeai/vendor/a2a/utils/artifact.py +72 -0
  770. pygeai/vendor/a2a/utils/errors.py +69 -0
  771. pygeai/vendor/a2a/utils/helpers.py +176 -0
  772. pygeai/vendor/a2a/utils/message.py +83 -0
  773. pygeai/vendor/a2a/utils/task.py +57 -0
  774. pygeai/vendor/a2a/utils/telemetry.py +299 -0
  775. pygeai-0.6.0b15.dist-info/METADATA +205 -0
  776. pygeai-0.6.0b15.dist-info/RECORD +799 -0
  777. {pygeai-0.1.6.dist-info → pygeai-0.6.0b15.dist-info}/WHEEL +1 -1
  778. pygeai-0.6.0b15.dist-info/entry_points.txt +5 -0
  779. {pygeai-0.1.6.dist-info → pygeai-0.6.0b15.dist-info/licenses}/LICENSE +13 -1
  780. {pygeai-0.1.6.dist-info → pygeai-0.6.0b15.dist-info}/top_level.txt +0 -1
  781. docs/source/conf.py +0 -45
  782. pygeai/core/clients.py +0 -240
  783. pygeai/tests/core/test_clients.py +0 -49
  784. pygeai-0.1.6.dist-info/METADATA +0 -92
  785. pygeai-0.1.6.dist-info/RECORD +0 -65
  786. pygeai-0.1.6.dist-info/SOURCES.sync-conflict-20241223-145950-3QD4F42.txt +0 -41
  787. pygeai-0.1.6.dist-info/entry_points.txt +0 -2
  788. /pygeai/{agent → analytics}/__init__.py +0 -0
@@ -0,0 +1,2069 @@
1
+ import json
2
+
3
+ from pygeai.cli.commands import Command, Option, ArgumentsEnum
4
+ from pygeai.cli.commands.builders import build_help_text
5
+ from pygeai.cli.commands.common import get_boolean_value
6
+ from pygeai.cli.commands.validators import validate_row_structure, validate_system_metric
7
+ from pygeai.cli.texts.help import EVALUATION_HELP_TEXT
8
+ from pygeai.core.common.exceptions import MissingRequirementException, WrongArgumentError
9
+ from pygeai.core.utils.console import Console
10
+ from pygeai.evaluation.dataset.clients import EvaluationDatasetClient
11
+ from pygeai.evaluation.plan.clients import EvaluationPlanClient
12
+ from pygeai.evaluation.result.clients import EvaluationResultClient
13
+
14
+
15
+ def show_help():
16
+ """
17
+ Displays help text in stdout
18
+ """
19
+ help_text = build_help_text(evaluation_commands, EVALUATION_HELP_TEXT)
20
+ Console.write_stdout(help_text)
21
+
22
+
23
+ """
24
+ DATASETS COMMANDS
25
+ """
26
+
27
+
28
+ def list_datasets():
29
+ client = EvaluationDatasetClient()
30
+ result = client.list_datasets()
31
+ Console.write_stdout(f"Feedback detail: \n{result}")
32
+
33
+
34
+ def create_dataset(option_list: list):
35
+ dataset_file = None
36
+ dataset_name = None
37
+ dataset_description = None
38
+ dataset_type = None
39
+ dataset_active = True
40
+ rows = list()
41
+
42
+ for option_flag, option_arg in option_list:
43
+ if option_flag.name == "dataset_file":
44
+ dataset_file = option_arg
45
+ if option_flag.name == "dataset_name":
46
+ dataset_name = option_arg
47
+ if option_flag.name == "dataset_description":
48
+ dataset_description = option_arg
49
+ if option_flag.name == "dataset_type":
50
+ dataset_type = option_arg
51
+ if option_flag.name == "dataset_type":
52
+ dataset_type = option_arg
53
+ if option_flag.name == "dataset_active":
54
+ dataset_active = get_boolean_value(option_arg)
55
+ if option_flag.name == "row":
56
+ try:
57
+ row_json = json.loads(option_arg)
58
+ if isinstance(row_json, dict):
59
+ rows.append(row_json)
60
+ elif isinstance(row_json, list):
61
+ rows = row_json
62
+ except Exception:
63
+ raise WrongArgumentError(
64
+ 'Each dataset row must be in JSON format: '
65
+ '\'{"dataSetRowExpectedAnswer": "string", "dataSetRowContextDocument": "string", '
66
+ '"dataSetRowInput": "string", "expectedSources": [ {...} ], "filterVariables": [ {...} ]}\' '
67
+ 'It must be a dictionary containing dataSetRowExpectedAnswer, dataSetRowContextDocument, '
68
+ 'and dataSetRowInput as strings. The expectedSources array, if present, must contain dictionaries with '
69
+ 'dataSetExpectedSourceId, dataSetExpectedSourceName, dataSetExpectedSourceValue, and dataSetExpectedSourceExtension as strings. '
70
+ 'The filterVariables array, if present, must contain dictionaries with dataSetMetadataType, dataSetRowFilterKey, '
71
+ 'dataSetRowFilterOperator, dataSetRowFilterValue, and dataSetRowFilterVarId as strings.'
72
+ )
73
+
74
+ client = EvaluationDatasetClient()
75
+
76
+ if dataset_file:
77
+ result = client.create_dataset_from_file(
78
+ file_path=dataset_file
79
+ )
80
+ elif not dataset_name:
81
+ raise MissingRequirementException("Cannot create dataset without specifying dataset name")
82
+ else:
83
+ for row in rows:
84
+ validate_row_structure(row)
85
+
86
+ result = client.create_dataset(
87
+ dataset_name=dataset_name,
88
+ dataset_description=dataset_description,
89
+ dataset_type=dataset_type,
90
+ dataset_active=dataset_active,
91
+ rows=rows
92
+ )
93
+
94
+ Console.write_stdout(f"New dataset detail: \n{result}")
95
+
96
+
97
+ create_dataset_options = [
98
+ Option(
99
+ "dataset_name",
100
+ ["--dataset-name", "--dn"],
101
+ "dataSetName: string",
102
+ True
103
+ ),
104
+ Option(
105
+ "dataset_description",
106
+ ["--dataset-description", "--dd"],
107
+ "dataSetDescription: string",
108
+ True
109
+ ),
110
+ Option(
111
+ "dataset_type",
112
+ ["--dataset-type", "--dt"],
113
+ "dataSetType: string //e.g., 'T' for test, 'E' for evaluation, etc.",
114
+ True
115
+ ),
116
+ Option(
117
+ "dataset_active",
118
+ ["--dataset-active", "--da"],
119
+ "dataSetActive: boolean. 0: False; 1: True",
120
+ True
121
+ ),
122
+ Option(
123
+ "row",
124
+ ["--row", "-r"],
125
+ "JSON object containing row data",
126
+ True
127
+ ),
128
+ Option(
129
+ "dataset_file",
130
+ ["--dataset-file", "--df"],
131
+ "dataSetActive: Creates a new dataset from a JSON file. The file must contain the complete "
132
+ "dataset structure, including header information and rows.",
133
+ True
134
+ ),
135
+ ]
136
+
137
+
138
+ def get_dataset(option_list: list):
139
+ dataset_id = None
140
+
141
+ for option_flag, option_arg in option_list:
142
+ if option_flag.name == "dataset_id":
143
+ dataset_id = option_arg
144
+
145
+ if not dataset_id:
146
+ raise MissingRequirementException("Cannot retrieve dataset without specifying id.")
147
+
148
+ client = EvaluationDatasetClient()
149
+ result = client.get_dataset(
150
+ dataset_id=dataset_id
151
+ )
152
+ Console.write_stdout(f"Dataset detail: \n{result}")
153
+
154
+
155
+ get_dataset_options = [
156
+ Option(
157
+ "dataset_id",
158
+ ["--dataset-id", "--did"],
159
+ "UUID representing the dataset to retrieve",
160
+ True
161
+ ),
162
+ ]
163
+
164
+
165
+ def update_dataset(option_list: list):
166
+ dataset_id = None
167
+ dataset_name = None
168
+ dataset_description = None
169
+ dataset_type = None
170
+ dataset_active = True
171
+ rows = list()
172
+
173
+ for option_flag, option_arg in option_list:
174
+ if option_flag.name == "dataset_id":
175
+ dataset_id = option_arg
176
+ if option_flag.name == "dataset_name":
177
+ dataset_name = option_arg
178
+ if option_flag.name == "dataset_description":
179
+ dataset_description = option_arg
180
+ if option_flag.name == "dataset_type":
181
+ dataset_type = option_arg
182
+ if option_flag.name == "dataset_type":
183
+ dataset_type = option_arg
184
+ if option_flag.name == "dataset_active":
185
+ dataset_active = get_boolean_value(option_arg)
186
+ if option_flag.name == "row":
187
+ try:
188
+ row_json = json.loads(option_arg)
189
+ if isinstance(row_json, dict):
190
+ rows.append(row_json)
191
+ elif isinstance(row_json, list):
192
+ rows = row_json
193
+ except Exception:
194
+ raise WrongArgumentError(
195
+ 'Each dataset row must be in JSON format: '
196
+ '\'{"dataSetRowExpectedAnswer": "string", "dataSetRowContextDocument": "string", '
197
+ '"dataSetRowInput": "string", "expectedSources": [ {...} ], "filterVariables": [ {...} ]}\' '
198
+ 'It must be a dictionary containing dataSetRowExpectedAnswer, dataSetRowContextDocument, '
199
+ 'and dataSetRowInput as strings. The expectedSources array, if present, must contain dictionaries with '
200
+ 'dataSetExpectedSourceId, dataSetExpectedSourceName, dataSetExpectedSourceValue, and dataSetExpectedSourceExtension as strings. '
201
+ 'The filterVariables array, if present, must contain dictionaries with dataSetMetadataType, dataSetRowFilterKey, '
202
+ 'dataSetRowFilterOperator, dataSetRowFilterValue, and dataSetRowFilterVarId as strings.'
203
+ )
204
+
205
+ if not dataset_id:
206
+ raise MissingRequirementException("Cannot update dataset without specifying id.")
207
+
208
+ for row in rows:
209
+ validate_row_structure(row)
210
+
211
+ client = EvaluationDatasetClient()
212
+ result = client.update_dataset(
213
+ dataset_id=dataset_id,
214
+ dataset_name=dataset_name,
215
+ dataset_description=dataset_description,
216
+ dataset_type=dataset_type,
217
+ dataset_active=dataset_active,
218
+ rows=rows,
219
+ )
220
+ Console.write_stdout(f"Updated dataset detail: \n{result}")
221
+
222
+
223
+ update_dataset_options = [
224
+ Option(
225
+ "dataset_id",
226
+ ["--dataset-id", "--did"],
227
+ "UUID representing the dataset to retrieve",
228
+ True
229
+ ),
230
+ Option(
231
+ "dataset_name",
232
+ ["--dataset-name", "--dn"],
233
+ "dataSetName: string",
234
+ True
235
+ ),
236
+ Option(
237
+ "dataset_description",
238
+ ["--dataset-description", "--dd"],
239
+ "dataSetDescription: string",
240
+ True
241
+ ),
242
+ Option(
243
+ "dataset_type",
244
+ ["--dataset-type", "--dt"],
245
+ "dataSetType: string //e.g., 'T' for test, 'E' for evaluation, etc.",
246
+ True
247
+ ),
248
+ Option(
249
+ "dataset_active",
250
+ ["--dataset-active", "--da"],
251
+ "dataSetActive: boolean. 0: False; 1: True",
252
+ True
253
+ ),
254
+ Option(
255
+ "row",
256
+ ["--row", "-r"],
257
+ "JSON object containing row data",
258
+ True
259
+ ),
260
+ ]
261
+
262
+
263
+ def delete_dataset(option_list: list):
264
+ dataset_id = None
265
+
266
+ for option_flag, option_arg in option_list:
267
+ if option_flag.name == "dataset_id":
268
+ dataset_id = option_arg
269
+
270
+ if not dataset_id:
271
+ raise MissingRequirementException("Cannot delete dataset without specifying id.")
272
+
273
+ client = EvaluationDatasetClient()
274
+ result = client.delete_dataset(
275
+ dataset_id=dataset_id
276
+ )
277
+ Console.write_stdout(f"Deleted dataset detail: \n{result}")
278
+
279
+
280
+ delete_dataset_options = [
281
+ Option(
282
+ "dataset_id",
283
+ ["--dataset-id", "--did"],
284
+ "UUID representing the dataset to retrieve",
285
+ True
286
+ ),
287
+ ]
288
+
289
+
290
+ def create_dataset_row(option_list: list):
291
+ dataset_id = None
292
+ row = None
293
+
294
+ for option_flag, option_arg in option_list:
295
+ if option_flag.name == "dataset_id":
296
+ dataset_id = option_arg
297
+ if option_flag.name == "row":
298
+ try:
299
+ row_json = json.loads(option_arg)
300
+ if not isinstance(row_json, dict):
301
+ raise ValueError
302
+
303
+ row = row_json
304
+ except Exception:
305
+ raise WrongArgumentError(
306
+ 'Each dataset row must be in JSON format: '
307
+ '\'{"dataSetRowExpectedAnswer": "string", "dataSetRowContextDocument": "string", '
308
+ '"dataSetRowInput": "string", "expectedSources": [ {...} ], "filterVariables": [ {...} ]}\' '
309
+ 'It must be a dictionary containing dataSetRowExpectedAnswer, dataSetRowContextDocument, '
310
+ 'and dataSetRowInput as strings. The expectedSources array, if present, must contain dictionaries with '
311
+ 'dataSetExpectedSourceId, dataSetExpectedSourceName, dataSetExpectedSourceValue, and dataSetExpectedSourceExtension as strings. '
312
+ 'The filterVariables array, if present, must contain dictionaries with dataSetMetadataType, dataSetRowFilterKey, '
313
+ 'dataSetRowFilterOperator, dataSetRowFilterValue, and dataSetRowFilterVarId as strings.'
314
+ )
315
+
316
+ if not dataset_id:
317
+ raise MissingRequirementException("Cannot create dataset row without specifying id.")
318
+
319
+ validate_row_structure(row)
320
+
321
+ client = EvaluationDatasetClient()
322
+ result = client.create_dataset_row(
323
+ dataset_id=dataset_id,
324
+ row=row
325
+ )
326
+ Console.write_stdout(f"Deleted dataset detail: \n{result}")
327
+
328
+
329
+ create_dataset_row_options = [
330
+ Option(
331
+ "dataset_id",
332
+ ["--dataset-id", "--did"],
333
+ "UUID representing the dataset to retrieve",
334
+ True
335
+ ),
336
+ Option(
337
+ "row",
338
+ ["--row", "-r"],
339
+ "JSON object containing row data",
340
+ True
341
+ ),
342
+ ]
343
+
344
+
345
+ def list_dataset_rows(option_list: list):
346
+ dataset_id = None
347
+
348
+ for option_flag, option_arg in option_list:
349
+ if option_flag.name == "dataset_id":
350
+ dataset_id = option_arg
351
+
352
+ if not dataset_id:
353
+ raise MissingRequirementException("Cannot list dataset rows without specifying id.")
354
+
355
+ client = EvaluationDatasetClient()
356
+ result = client.list_dataset_rows(
357
+ dataset_id=dataset_id
358
+ )
359
+ Console.write_stdout(f"Dataset rows: \n{result}")
360
+
361
+
362
+ list_dataset_rows_options = [
363
+ Option(
364
+ "dataset_id",
365
+ ["--dataset-id", "--did"],
366
+ "UUID representing the dataset to retrieve",
367
+ True
368
+ ),
369
+ ]
370
+
371
+
372
+ def get_dataset_row(option_list: list):
373
+ dataset_id = None
374
+ row_id = None
375
+
376
+ for option_flag, option_arg in option_list:
377
+ if option_flag.name == "dataset_id":
378
+ dataset_id = option_arg
379
+ if option_flag.name == "row_id":
380
+ row_id = option_arg
381
+
382
+ if not (dataset_id and row_id):
383
+ raise MissingRequirementException("Cannot get dataset row without specifying id of dataset and row.")
384
+
385
+ client = EvaluationDatasetClient()
386
+ result = client.get_dataset_row(
387
+ dataset_id=dataset_id,
388
+ dataset_row_id=row_id
389
+ )
390
+ Console.write_stdout(f"Row detail: \n{result}")
391
+
392
+
393
+ get_dataset_row_options = [
394
+ Option(
395
+ "dataset_id",
396
+ ["--dataset-id", "--did"],
397
+ "UUID representing the dataset to retrieve",
398
+ True
399
+ ),
400
+ Option(
401
+ "row_id",
402
+ ["--row-id", "--rid"],
403
+ "UUID representing the row dataset to retrieve",
404
+ True
405
+ ),
406
+ ]
407
+
408
+
409
+ def update_dataset_row(option_list: list):
410
+ dataset_id = None
411
+ row_id = None
412
+ row = None
413
+
414
+ for option_flag, option_arg in option_list:
415
+ if option_flag.name == "dataset_id":
416
+ dataset_id = option_arg
417
+ if option_flag.name == "row_id":
418
+ row_id = option_arg
419
+ if option_flag.name == "row":
420
+ try:
421
+ row_json = json.loads(option_arg)
422
+ if not isinstance(row_json, dict):
423
+ raise ValueError
424
+
425
+ row = row_json
426
+ except Exception:
427
+ raise WrongArgumentError(
428
+ 'Each dataset row must be in JSON format: '
429
+ '\'{"dataSetRowExpectedAnswer": "string", "dataSetRowContextDocument": "string", '
430
+ '"dataSetRowInput": "string", "expectedSources": [ {...} ], "filterVariables": [ {...} ]}\' '
431
+ 'It must be a dictionary containing dataSetRowExpectedAnswer, dataSetRowContextDocument, '
432
+ 'and dataSetRowInput as strings. The expectedSources array, if present, must contain dictionaries with '
433
+ 'dataSetExpectedSourceId, dataSetExpectedSourceName, dataSetExpectedSourceValue, and dataSetExpectedSourceExtension as strings. '
434
+ 'The filterVariables array, if present, must contain dictionaries with dataSetMetadataType, dataSetRowFilterKey, '
435
+ 'dataSetRowFilterOperator, dataSetRowFilterValue, and dataSetRowFilterVarId as strings.'
436
+ )
437
+
438
+ if not (dataset_id and row_id):
439
+ raise MissingRequirementException("Cannot update dataset row without specifying id of dataset and row.")
440
+
441
+ validate_row_structure(row)
442
+
443
+ client = EvaluationDatasetClient()
444
+ result = client.update_dataset_row(
445
+ dataset_id=dataset_id,
446
+ dataset_row_id=row_id,
447
+ row=row
448
+ )
449
+ Console.write_stdout(f"Row detail: \n{result}")
450
+
451
+
452
+ update_dataset_row_options = [
453
+ Option(
454
+ "dataset_id",
455
+ ["--dataset-id", "--did"],
456
+ "UUID representing the dataset to retrieve",
457
+ True
458
+ ),
459
+ Option(
460
+ "row_id",
461
+ ["--row-id", "--rid"],
462
+ "UUID representing the row dataset to retrieve",
463
+ True
464
+ ),
465
+ Option(
466
+ "row",
467
+ ["--row", "-r"],
468
+ "JSON object containing row data",
469
+ True
470
+ ),
471
+ ]
472
+
473
+
474
+ def delete_dataset_row(option_list: list):
475
+ dataset_id = None
476
+ row_id = None
477
+
478
+ for option_flag, option_arg in option_list:
479
+ if option_flag.name == "dataset_id":
480
+ dataset_id = option_arg
481
+ if option_flag.name == "row_id":
482
+ row_id = option_arg
483
+
484
+ if not (dataset_id and row_id):
485
+ raise MissingRequirementException("Cannot delete dataset row without specifying id of dataset and row.")
486
+
487
+ client = EvaluationDatasetClient()
488
+ result = client.delete_dataset_row(
489
+ dataset_id=dataset_id,
490
+ dataset_row_id=row_id
491
+ )
492
+ Console.write_stdout(f"Deleted row detail: \n{result}")
493
+
494
+
495
+ delete_dataset_row_options = [
496
+ Option(
497
+ "dataset_id",
498
+ ["--dataset-id", "--did"],
499
+ "UUID representing the dataset to retrieve",
500
+ True
501
+ ),
502
+ Option(
503
+ "row_id",
504
+ ["--row-id", "--rid"],
505
+ "UUID representing the row dataset to retrieve",
506
+ True
507
+ ),
508
+ ]
509
+
510
+
511
+ def create_dataset_row_expected_source(option_list: list):
512
+ dataset_id = None
513
+ row_id = None
514
+ name = None
515
+ value = None
516
+ extension = None
517
+
518
+ for option_flag, option_arg in option_list:
519
+ if option_flag.name == "dataset_id":
520
+ dataset_id = option_arg
521
+ if option_flag.name == "row_id":
522
+ row_id = option_arg
523
+ if option_flag.name == "name":
524
+ name = option_arg
525
+ if option_flag.name == "value":
526
+ value = option_arg
527
+ if option_flag.name == "extension":
528
+ extension = option_arg
529
+
530
+ if not (dataset_id and row_id):
531
+ raise MissingRequirementException("Cannot create dataset row expected source without specifying id of dataset and row.")
532
+
533
+ client = EvaluationDatasetClient()
534
+ result = client.create_expected_source(
535
+ dataset_id=dataset_id,
536
+ dataset_row_id=row_id,
537
+ expected_source_name=name,
538
+ expected_source_value=value,
539
+ expected_source_extension=extension,
540
+ )
541
+ Console.write_stdout(f"Extended source detail: \n{result}")
542
+
543
+
544
+ create_dataset_row_expected_source_options = [
545
+ Option(
546
+ "dataset_id",
547
+ ["--dataset-id", "--did"],
548
+ "UUID representing the dataset to retrieve",
549
+ True
550
+ ),
551
+ Option(
552
+ "row_id",
553
+ ["--row-id", "--rid"],
554
+ "UUID representing the row dataset to retrieve",
555
+ True
556
+ ),
557
+ Option(
558
+ "dataset_expected_source_name",
559
+ ["--name", "-n"],
560
+ "dataSetExpectedSourceName: string",
561
+ True
562
+ ),
563
+ Option(
564
+ "dataset_expected_source_value",
565
+ ["--value", "-v"],
566
+ "dataSetExpectedSourceValue: string",
567
+ True
568
+ ),
569
+ Option(
570
+ "dataset_expected_source_extension",
571
+ ["--extension", "-e"],
572
+ "dataSetExpectedSourceExtension: string //e.g., 'txt', 'pdf', 'json'",
573
+ True
574
+ ),
575
+ ]
576
+
577
+
578
+ def list_dataset_row_expected_sources(option_list: list):
579
+ dataset_id = None
580
+ row_id = None
581
+
582
+ for option_flag, option_arg in option_list:
583
+ if option_flag.name == "dataset_id":
584
+ dataset_id = option_arg
585
+ if option_flag.name == "row_id":
586
+ row_id = option_arg
587
+
588
+ if not (dataset_id and row_id):
589
+ raise MissingRequirementException("Cannot list dataset row expected sources without specifying id of dataset and row.")
590
+
591
+ client = EvaluationDatasetClient()
592
+ result = client.list_expected_sources(
593
+ dataset_id=dataset_id,
594
+ dataset_row_id=row_id
595
+ )
596
+ Console.write_stdout(f"Expected sources: \n{result}")
597
+
598
+
599
+ list_dataset_row_expected_sources_options = [
600
+ Option(
601
+ "dataset_id",
602
+ ["--dataset-id", "--did"],
603
+ "UUID representing the dataset to retrieve",
604
+ True
605
+ ),
606
+ Option(
607
+ "row_id",
608
+ ["--row-id", "--rid"],
609
+ "UUID representing the row dataset to retrieve",
610
+ True
611
+ ),
612
+ ]
613
+
614
+
615
+ def get_dataset_row_expected_source(option_list: list):
616
+ dataset_id = None
617
+ row_id = None
618
+ expected_source_id = None
619
+
620
+ for option_flag, option_arg in option_list:
621
+ if option_flag.name == "dataset_id":
622
+ dataset_id = option_arg
623
+ if option_flag.name == "row_id":
624
+ row_id = option_arg
625
+ if option_flag.name == "expected_source_id":
626
+ expected_source_id = option_arg
627
+
628
+ if not (dataset_id and row_id and expected_source_id):
629
+ raise MissingRequirementException("Cannot get expected sources without specifying id of dataset, row and expected source.")
630
+
631
+ client = EvaluationDatasetClient()
632
+ result = client.get_expected_source(
633
+ dataset_id=dataset_id,
634
+ dataset_row_id=row_id,
635
+ expected_source_id=expected_source_id
636
+ )
637
+ Console.write_stdout(f"Expected source detail: \n{result}")
638
+
639
+
640
+ get_dataset_row_expected_source_options = [
641
+ Option(
642
+ "dataset_id",
643
+ ["--dataset-id", "--did"],
644
+ "UUID representing the dataset to retrieve",
645
+ True
646
+ ),
647
+ Option(
648
+ "row_id",
649
+ ["--row-id", "--rid"],
650
+ "UUID representing the row dataset to retrieve",
651
+ True
652
+ ),
653
+ Option(
654
+ "expected_source_id",
655
+ ["--expected-source-id", "--esid"],
656
+ "UUID representing the expected source to retrieve",
657
+ True
658
+ ),
659
+ ]
660
+
661
+
662
+ def update_dataset_row_expected_source(option_list: list):
663
+ dataset_id = None
664
+ row_id = None
665
+ expected_source_id = None
666
+ name = None
667
+ value = None
668
+ extension = None
669
+
670
+ for option_flag, option_arg in option_list:
671
+ if option_flag.name == "dataset_id":
672
+ dataset_id = option_arg
673
+ if option_flag.name == "row_id":
674
+ row_id = option_arg
675
+ if option_flag.name == "expected_source_id":
676
+ expected_source_id = option_arg
677
+ if option_flag.name == "name":
678
+ name = option_arg
679
+ if option_flag.name == "value":
680
+ value = option_arg
681
+ if option_flag.name == "extension":
682
+ extension = option_arg
683
+
684
+ if not (dataset_id and row_id and expected_source_id):
685
+ raise MissingRequirementException("Cannot update expected sources without specifying id of dataset, row and expected source.")
686
+
687
+ client = EvaluationDatasetClient()
688
+ result = client.update_expected_source(
689
+ dataset_id=dataset_id,
690
+ dataset_row_id=row_id,
691
+ expected_source_id=expected_source_id,
692
+ expected_source_name=name,
693
+ expected_source_value=value,
694
+ expected_source_extension=extension,
695
+
696
+ )
697
+ Console.write_stdout(f"Updated expected source detail: \n{result}")
698
+
699
+
700
+ update_dataset_row_expected_source_options = [
701
+ Option(
702
+ "dataset_id",
703
+ ["--dataset-id", "--did"],
704
+ "UUID representing the dataset to retrieve",
705
+ True
706
+ ),
707
+ Option(
708
+ "row_id",
709
+ ["--row-id", "--rid"],
710
+ "UUID representing the row dataset to retrieve",
711
+ True
712
+ ),
713
+ Option(
714
+ "expected_source_id",
715
+ ["--expected-source-id", "--esid"],
716
+ "UUID representing the expected source to retrieve",
717
+ True
718
+ ),
719
+ Option(
720
+ "dataset_expected_source_name",
721
+ ["--name", "-n"],
722
+ "dataSetExpectedSourceName: string",
723
+ True
724
+ ),
725
+ Option(
726
+ "dataset_expected_source_value",
727
+ ["--value", "-v"],
728
+ "dataSetExpectedSourceValue: string",
729
+ True
730
+ ),
731
+ Option(
732
+ "dataset_expected_source_extension",
733
+ ["--extension", "-e"],
734
+ "dataSetExpectedSourceExtension: string //e.g., 'txt', 'pdf', 'json'",
735
+ True
736
+ ),
737
+ ]
738
+
739
+
740
+ def delete_dataset_row_expected_source(option_list: list):
741
+ dataset_id = None
742
+ row_id = None
743
+ expected_source_id = None
744
+
745
+ for option_flag, option_arg in option_list:
746
+ if option_flag.name == "dataset_id":
747
+ dataset_id = option_arg
748
+ if option_flag.name == "row_id":
749
+ row_id = option_arg
750
+ if option_flag.name == "expected_source_id":
751
+ expected_source_id = option_arg
752
+
753
+ if not (dataset_id and row_id and expected_source_id):
754
+ raise MissingRequirementException("Cannot delete expected sources without specifying id of dataset, row and expected source.")
755
+
756
+ client = EvaluationDatasetClient()
757
+ result = client.delete_expected_source(
758
+ dataset_id=dataset_id,
759
+ dataset_row_id=row_id,
760
+ expected_source_id=expected_source_id
761
+ )
762
+ Console.write_stdout(f"Deleted expected source detail: \n{result}")
763
+
764
+
765
+ delete_dataset_row_expected_source_options = [
766
+ Option(
767
+ "dataset_id",
768
+ ["--dataset-id", "--did"],
769
+ "UUID representing the dataset to retrieve",
770
+ True
771
+ ),
772
+ Option(
773
+ "row_id",
774
+ ["--row-id", "--rid"],
775
+ "UUID representing the row dataset to retrieve",
776
+ True
777
+ ),
778
+ Option(
779
+ "expected_source_id",
780
+ ["--expected-source-id", "--esid"],
781
+ "UUID representing the expected source to retrieve",
782
+ True
783
+ ),
784
+ ]
785
+
786
+
787
+ def create_dataset_row_filter_variable(option_list: list):
788
+ dataset_id = None
789
+ row_id = None
790
+ metadata_type = None
791
+ key = None
792
+ value = None
793
+ operator = None
794
+
795
+ for option_flag, option_arg in option_list:
796
+ if option_flag.name == "dataset_id":
797
+ dataset_id = option_arg
798
+ if option_flag.name == "row_id":
799
+ row_id = option_arg
800
+ if option_flag.name == "metadata_type":
801
+ metadata_type = option_arg
802
+ if option_flag.name == "key":
803
+ key = option_arg
804
+ if option_flag.name == "value":
805
+ value = option_arg
806
+ if option_flag.name == "operator":
807
+ operator = option_arg
808
+
809
+ if not (dataset_id and row_id):
810
+ raise MissingRequirementException("Cannot create dataset row filter variable without specifying id of dataset and row.")
811
+
812
+ client = EvaluationDatasetClient()
813
+ result = client.create_filter_variable(
814
+ dataset_id=dataset_id,
815
+ dataset_row_id=row_id,
816
+ metadata_type=metadata_type,
817
+ filter_variable_key=key,
818
+ filter_variable_value=value,
819
+ filter_variable_operator=operator,
820
+ )
821
+ Console.write_stdout(f"Filter variable detail: \n{result}")
822
+
823
+
824
+ create_dataset_row_filter_variable_options = [
825
+ Option(
826
+ "dataset_id",
827
+ ["--dataset-id", "--did"],
828
+ "UUID representing the dataset to retrieve",
829
+ True
830
+ ),
831
+ Option(
832
+ "row_id",
833
+ ["--row-id", "--rid"],
834
+ "UUID representing the row dataset to retrieve",
835
+ True
836
+ ),
837
+ Option(
838
+ "dataset_metadata_type",
839
+ ["--metadata-type", "--mt"],
840
+ "dataSetMetadataType: string //e.g., 'V' for variable, 'F' for flag, etc.",
841
+ True
842
+ ),
843
+ Option(
844
+ "dataset_filter_variable_key",
845
+ ["--key", "-k"],
846
+ "dataSetRowFilterKey: string. The name of the filter key",
847
+ True
848
+ ),
849
+ Option(
850
+ "dataset_filter_variable_value",
851
+ ["--value", "-v"],
852
+ "dataSetRowFilterValue: string. The value to filter by",
853
+ True
854
+ ),
855
+ Option(
856
+ "dataset_filter_variable_operator",
857
+ ["--operator", "-o"],
858
+ "dataSetRowFilterOperator: string ///e.g., '=', '!=', '>', '<', 'contains', etc.",
859
+ True
860
+ ),
861
+ ]
862
+
863
+
864
+ def list_dataset_row_filter_variables(option_list: list):
865
+ dataset_id = None
866
+ row_id = None
867
+
868
+ for option_flag, option_arg in option_list:
869
+ if option_flag.name == "dataset_id":
870
+ dataset_id = option_arg
871
+ if option_flag.name == "row_id":
872
+ row_id = option_arg
873
+
874
+ if not (dataset_id and row_id):
875
+ raise MissingRequirementException("Cannot list dataset row filter variables without specifying id of dataset and row.")
876
+
877
+ client = EvaluationDatasetClient()
878
+ result = client.list_filter_variables(
879
+ dataset_id=dataset_id,
880
+ dataset_row_id=row_id
881
+ )
882
+ Console.write_stdout(f"Filter variables: \n{result}")
883
+
884
+
885
+ list_dataset_row_filter_variables_options = [
886
+ Option(
887
+ "dataset_id",
888
+ ["--dataset-id", "--did"],
889
+ "UUID representing the dataset to retrieve",
890
+ True
891
+ ),
892
+ Option(
893
+ "row_id",
894
+ ["--row-id", "--rid"],
895
+ "UUID representing the row dataset to retrieve",
896
+ True
897
+ ),
898
+ ]
899
+
900
+
901
+ def get_dataset_row_filter_variable(option_list: list):
902
+ dataset_id = None
903
+ row_id = None
904
+ filter_variable_id = None
905
+
906
+ for option_flag, option_arg in option_list:
907
+ if option_flag.name == "dataset_id":
908
+ dataset_id = option_arg
909
+ if option_flag.name == "row_id":
910
+ row_id = option_arg
911
+ if option_flag.name == "filter_variable_id":
912
+ filter_variable_id = option_arg
913
+
914
+ if not (dataset_id and row_id and filter_variable_id):
915
+ raise MissingRequirementException("Cannot get filter variables without specifying id of dataset, row and filter variable.")
916
+
917
+ client = EvaluationDatasetClient()
918
+ result = client.get_filter_variable(
919
+ dataset_id=dataset_id,
920
+ dataset_row_id=row_id,
921
+ filter_variable_id=filter_variable_id
922
+ )
923
+ Console.write_stdout(f"Filter variable detail: \n{result}")
924
+
925
+
926
+ get_dataset_row_filter_variable_options = [
927
+ Option(
928
+ "dataset_id",
929
+ ["--dataset-id", "--did"],
930
+ "UUID representing the dataset to retrieve",
931
+ True
932
+ ),
933
+ Option(
934
+ "row_id",
935
+ ["--row-id", "--rid"],
936
+ "UUID representing the row dataset to retrieve",
937
+ True
938
+ ),
939
+ Option(
940
+ "filter_variable_id",
941
+ ["--filter-variable-id", "--fvid"],
942
+ "UUID representing the filter variable to retrieve",
943
+ True
944
+ ),
945
+ ]
946
+
947
+
948
+ def update_dataset_row_filter_variable(option_list: list):
949
+ dataset_id = None
950
+ row_id = None
951
+ filter_variable_id = None
952
+ metadata_type = None
953
+ key = None
954
+ value = None
955
+ operator = None
956
+
957
+ for option_flag, option_arg in option_list:
958
+ if option_flag.name == "dataset_id":
959
+ dataset_id = option_arg
960
+ if option_flag.name == "row_id":
961
+ row_id = option_arg
962
+ if option_flag.name == "filter_variable_id":
963
+ filter_variable_id = option_arg
964
+ if option_flag.name == "metadata_type":
965
+ metadata_type = option_arg
966
+ if option_flag.name == "key":
967
+ key = option_arg
968
+ if option_flag.name == "value":
969
+ value = option_arg
970
+ if option_flag.name == "operator":
971
+ operator = option_arg
972
+
973
+ if not (dataset_id and row_id and filter_variable_id):
974
+ raise MissingRequirementException("Cannot update filter variables without specifying id of dataset, row and filter variable.")
975
+
976
+ client = EvaluationDatasetClient()
977
+ result = client.update_filter_variable(
978
+ dataset_id=dataset_id,
979
+ dataset_row_id=row_id,
980
+ filter_variable_id=filter_variable_id,
981
+ metadata_type=metadata_type,
982
+ filter_variable_key=key,
983
+ filter_variable_value=value,
984
+ filter_variable_operator=operator,
985
+ )
986
+ Console.write_stdout(f"Updated filter variable detail: \n{result}")
987
+
988
+
989
+ update_dataset_row_filter_variable_options = [
990
+ Option(
991
+ "dataset_id",
992
+ ["--dataset-id", "--did"],
993
+ "UUID representing the dataset to retrieve",
994
+ True
995
+ ),
996
+ Option(
997
+ "row_id",
998
+ ["--row-id", "--rid"],
999
+ "UUID representing the row dataset to retrieve",
1000
+ True
1001
+ ),
1002
+ Option(
1003
+ "filter_variable_id",
1004
+ ["--filter-variable-id", "--fvid"],
1005
+ "UUID representing the filter variable to retrieve",
1006
+ True
1007
+ ),
1008
+ Option(
1009
+ "dataset_metadata_type",
1010
+ ["--metadata-type", "--mt"],
1011
+ "dataSetMetadataType: string //e.g., 'V' for variable, 'F' for flag, etc.",
1012
+ True
1013
+ ),
1014
+ Option(
1015
+ "dataset_filter_variable_key",
1016
+ ["--key", "-k"],
1017
+ "dataSetRowFilterKey: string. The name of the filter key",
1018
+ True
1019
+ ),
1020
+ Option(
1021
+ "dataset_filter_variable_value",
1022
+ ["--value", "-v"],
1023
+ "dataSetRowFilterValue: string. The value to filter by",
1024
+ True
1025
+ ),
1026
+ Option(
1027
+ "dataset_filter_variable_operator",
1028
+ ["--operator", "-o"],
1029
+ "dataSetRowFilterOperator: string ///e.g., '=', '!=', '>', '<', 'contains', etc.",
1030
+ True
1031
+ ),
1032
+ ]
1033
+
1034
+
1035
+ def delete_dataset_row_filter_variable(option_list: list):
1036
+ dataset_id = None
1037
+ row_id = None
1038
+ filter_variable_id = None
1039
+
1040
+ for option_flag, option_arg in option_list:
1041
+ if option_flag.name == "dataset_id":
1042
+ dataset_id = option_arg
1043
+ if option_flag.name == "row_id":
1044
+ row_id = option_arg
1045
+ if option_flag.name == "filter_variable_id":
1046
+ filter_variable_id = option_arg
1047
+
1048
+ if not (dataset_id and row_id and filter_variable_id):
1049
+ raise MissingRequirementException("Cannot delete filter variables without specifying id of dataset, row and filter variable.")
1050
+
1051
+ client = EvaluationDatasetClient()
1052
+ result = client.delete_filter_variable(
1053
+ dataset_id=dataset_id,
1054
+ dataset_row_id=row_id,
1055
+ filter_variable_id=filter_variable_id
1056
+ )
1057
+ Console.write_stdout(f"Deleted filter variable detail: \n{result}")
1058
+
1059
+
1060
+ delete_dataset_row_filter_variable_options = [
1061
+ Option(
1062
+ "dataset_id",
1063
+ ["--dataset-id", "--did"],
1064
+ "UUID representing the dataset to retrieve",
1065
+ True
1066
+ ),
1067
+ Option(
1068
+ "row_id",
1069
+ ["--row-id", "--rid"],
1070
+ "UUID representing the row dataset to retrieve",
1071
+ True
1072
+ ),
1073
+ Option(
1074
+ "filter_variable_id",
1075
+ ["--filter-variable-id", "--fvid"],
1076
+ "UUID representing the filter variable to retrieve",
1077
+ True
1078
+ ),
1079
+ ]
1080
+
1081
+
1082
+ def update_dataset_rows_file(option_list: list):
1083
+ dataset_id = None
1084
+ dataset_rows_file = None
1085
+
1086
+ for option_flag, option_arg in option_list:
1087
+ if option_flag.name == "dataset_id":
1088
+ dataset_id = option_arg
1089
+ if option_flag.name == "dataset_rows_file":
1090
+ dataset_rows_file = option_arg
1091
+
1092
+ if not (dataset_id and dataset_rows_file):
1093
+ raise MissingRequirementException("Cannot upload dataset rows file without specifying id of dataset, rows file")
1094
+
1095
+ client = EvaluationDatasetClient()
1096
+ result = client.upload_dataset_rows_file(
1097
+ dataset_id=dataset_id,
1098
+ file_path=dataset_rows_file
1099
+ )
1100
+ Console.write_stdout(f"Dataset rows file detail: \n{result}")
1101
+
1102
+
1103
+ update_dataset_rows_file_options = [
1104
+ Option(
1105
+ "dataset_id",
1106
+ ["--dataset-id", "--did"],
1107
+ "UUID representing the dataset to retrieve",
1108
+ True
1109
+ ),
1110
+ Option(
1111
+ "dataset_rows_file",
1112
+ ["--rows-file", "--rf"],
1113
+ "The JSON file should contain an array of DatasetRow objects",
1114
+ True
1115
+ ),
1116
+ ]
1117
+
1118
+
1119
+ """
1120
+ EVALUATION PLANS COMMANDS
1121
+ """
1122
+
1123
+
1124
+ def list_evaluation_plans():
1125
+ client = EvaluationPlanClient()
1126
+ result = client.list_evaluation_plans()
1127
+ Console.write_stdout(f"Evaluation plans: \n{result}")
1128
+
1129
+
1130
+ def create_evaluation_plan(option_list: list):
1131
+ evaluation_plan_name = None
1132
+ evaluation_plan_type = None
1133
+ evaluation_plan_assistant_id = None
1134
+ evaluation_plan_assistant_name = None
1135
+ evaluation_plan_assistant_revision = None
1136
+ evaluation_plan_profile_name = None
1137
+ dataset_id = None
1138
+ system_metrics = list()
1139
+
1140
+ for option_flag, option_arg in option_list:
1141
+ if option_flag.name == "evaluation_plan_name":
1142
+ evaluation_plan_name = option_arg
1143
+ if option_flag.name == "evaluation_plan_type":
1144
+ evaluation_plan_type = option_arg
1145
+ if option_flag.name == "evaluation_plan_assistant_id":
1146
+ evaluation_plan_assistant_id = option_arg
1147
+ if option_flag.name == "evaluation_plan_assistant_name":
1148
+ evaluation_plan_assistant_name = option_arg
1149
+ if option_flag.name == "evaluation_plan_assistant_revision":
1150
+ evaluation_plan_assistant_revision = option_arg
1151
+ if option_flag.name == "evaluation_plan_profile_name":
1152
+ evaluation_plan_profile_name = option_arg
1153
+ if option_flag.name == "dataset_id":
1154
+ dataset_id = option_arg
1155
+ if option_flag.name == "system_metrics":
1156
+ try:
1157
+ metrics_json = json.loads(option_arg)
1158
+ if isinstance(metrics_json, dict):
1159
+ system_metrics.append(metrics_json)
1160
+ elif isinstance(metrics_json, list):
1161
+ system_metrics = metrics_json
1162
+ except Exception:
1163
+ raise WrongArgumentError(
1164
+ 'Each system metric must be in JSON format: '
1165
+ '\'{"systemMetricId": "string", "systemMetricWeight": 0.0}\' '
1166
+ 'It must be a dictionary containing systemMetricId as a string and systemMetricWeight as a float between 0 and 1.'
1167
+ )
1168
+
1169
+ if not (evaluation_plan_name and evaluation_plan_type):
1170
+ # TODO -> Review required fields
1171
+ raise MissingRequirementException("Cannot create evaluation plan without specifying evaluation plan name and type")
1172
+
1173
+ for metric in system_metrics:
1174
+ validate_system_metric(metric)
1175
+
1176
+ client = EvaluationPlanClient()
1177
+ result = client.create_evaluation_plan(
1178
+ name=evaluation_plan_name,
1179
+ type=evaluation_plan_type,
1180
+ assistant_id=evaluation_plan_assistant_id,
1181
+ assistant_name=evaluation_plan_assistant_name,
1182
+ assistant_revision=evaluation_plan_assistant_revision,
1183
+ profile_name=evaluation_plan_profile_name,
1184
+ dataset_id=dataset_id,
1185
+ system_metrics=system_metrics,
1186
+ )
1187
+ Console.write_stdout(f"New evaluation plan detail: \n{result}")
1188
+
1189
+
1190
+ create_evaluation_plan_options = [
1191
+ Option(
1192
+ "evaluation_plan_name",
1193
+ ["--name", "--epn"],
1194
+ "Name of the evaluation plan",
1195
+ True
1196
+ ),
1197
+ Option(
1198
+ "evaluation_plan_type",
1199
+ ["--assistant-type", "--epat"],
1200
+ "Type of assistant (e.g., 'TextPromptAssistant', 'RAG Assistant')",
1201
+ True
1202
+ ),
1203
+ Option(
1204
+ "evaluation_plan_assistant_id",
1205
+ ["--assistant-id", "--epai"],
1206
+ "UUID of the assistant (optional, required for TextPromptAssistant)",
1207
+ True
1208
+ ),
1209
+ Option(
1210
+ "evaluation_plan_assistant_name",
1211
+ ["--assistant-name", "--epan"],
1212
+ "Name of the assistant (optional, required for TextPromptAssistant)",
1213
+ True
1214
+ ),
1215
+ Option(
1216
+ "evaluation_plan_assistant_revision",
1217
+ ["--assistant-revision", "--epar"],
1218
+ "Revision of the assistant (optional, required for TextPromptAssistant)",
1219
+ True
1220
+ ),
1221
+ Option(
1222
+ "evaluation_plan_profile_name",
1223
+ ["--profile-name", "--eppn"],
1224
+ "Name of the RAG profile (optional, required for RAG Assistant)",
1225
+ True
1226
+ ),
1227
+ Option(
1228
+ "dataset_id",
1229
+ ["--dataset-id", "--did"],
1230
+ "ID of the dataset (optional)",
1231
+ True
1232
+ ),
1233
+ Option(
1234
+ "system_metrics",
1235
+ ["--system-metrics", "--sm"],
1236
+ "Array of system metrics (each with 'systemMetricId' and 'systemMetricWeight')"
1237
+ "Alternatively, multiple instances of --sm can be passes as arguments for a single list.",
1238
+ True
1239
+ )
1240
+ ]
1241
+
1242
+
1243
+ def get_evaluation_plan(option_list: list):
1244
+ evaluation_plan_id = None
1245
+
1246
+ for option_flag, option_arg in option_list:
1247
+ if option_flag.name == "evaluation_plan_id":
1248
+ evaluation_plan_id = option_arg
1249
+
1250
+ if not evaluation_plan_id:
1251
+ raise MissingRequirementException("Cannot get evaluation plan without specifying id")
1252
+
1253
+ client = EvaluationPlanClient()
1254
+ result = client.get_evaluation_plan(
1255
+ evaluation_plan_id=evaluation_plan_id
1256
+ )
1257
+ Console.write_stdout(f"Evaluation plan detail: \n{result}")
1258
+
1259
+
1260
+ get_evaluation_plan_options = [
1261
+ Option(
1262
+ "evaluation_plan_id",
1263
+ ["--evaluation-plan-id", "--epid"],
1264
+ "UUID representing the evaluation plan to retrieve",
1265
+ True
1266
+ ),
1267
+ ]
1268
+
1269
+
1270
+ def update_evaluation_plan(option_list: list):
1271
+ evaluation_plan_id = None
1272
+ evaluation_plan_name = None
1273
+ evaluation_plan_type = None
1274
+ evaluation_plan_assistant_id = None
1275
+ evaluation_plan_assistant_name = None
1276
+ evaluation_plan_assistant_revision = None
1277
+ evaluation_plan_profile_name = None
1278
+ dataset_id = None
1279
+ system_metrics = list()
1280
+
1281
+ for option_flag, option_arg in option_list:
1282
+ if option_flag.name == "evaluation_plan_id":
1283
+ evaluation_plan_id = option_arg
1284
+ if option_flag.name == "evaluation_plan_name":
1285
+ evaluation_plan_name = option_arg
1286
+ if option_flag.name == "evaluation_plan_type":
1287
+ evaluation_plan_type = option_arg
1288
+ if option_flag.name == "evaluation_plan_assistant_id":
1289
+ evaluation_plan_assistant_id = option_arg
1290
+ if option_flag.name == "evaluation_plan_assistant_name":
1291
+ evaluation_plan_assistant_name = option_arg
1292
+ if option_flag.name == "evaluation_plan_assistant_revision":
1293
+ evaluation_plan_assistant_revision = option_arg
1294
+ if option_flag.name == "evaluation_plan_profile_name":
1295
+ evaluation_plan_profile_name = option_arg
1296
+ if option_flag.name == "dataset_id":
1297
+ dataset_id = option_arg
1298
+ if option_flag.name == "system_metrics":
1299
+ try:
1300
+ metrics_json = json.loads(option_arg)
1301
+ if isinstance(metrics_json, dict):
1302
+ system_metrics.append(metrics_json)
1303
+ elif isinstance(metrics_json, list):
1304
+ system_metrics = metrics_json
1305
+ except Exception:
1306
+ raise WrongArgumentError(
1307
+ 'Each system metric must be in JSON format: '
1308
+ '\'{"systemMetricId": "string", "systemMetricWeight": 0.0}\' '
1309
+ 'It must be a dictionary containing systemMetricId as a string and systemMetricWeight as a float between 0 and 1.'
1310
+ )
1311
+
1312
+ if not evaluation_plan_id:
1313
+ raise MissingRequirementException("Cannot update evaluation plan without specifying id")
1314
+
1315
+ for metric in system_metrics:
1316
+ validate_system_metric(metric)
1317
+
1318
+ client = EvaluationPlanClient()
1319
+ result = client.update_evaluation_plan(
1320
+ evaluation_plan_id=evaluation_plan_id,
1321
+ name=evaluation_plan_name,
1322
+ type=evaluation_plan_type,
1323
+ assistant_id=evaluation_plan_assistant_id,
1324
+ assistant_name=evaluation_plan_assistant_name,
1325
+ assistant_revision=evaluation_plan_assistant_revision,
1326
+ profile_name=evaluation_plan_profile_name,
1327
+ dataset_id=dataset_id,
1328
+ system_metrics=system_metrics,
1329
+ )
1330
+ Console.write_stdout(f"Updated evaluation plan: \n{result}")
1331
+
1332
+
1333
+ update_evaluation_plan_options = [
1334
+ Option(
1335
+ "evaluation_plan_id",
1336
+ ["--evaluation-plan-id", "--epid"],
1337
+ "UUID representing the evaluation plan to retrieve",
1338
+ True
1339
+ ),
1340
+ Option(
1341
+ "evaluation_plan_name",
1342
+ ["--name", "--epn"],
1343
+ "Name of the evaluation plan",
1344
+ True
1345
+ ),
1346
+ Option(
1347
+ "evaluation_plan_type",
1348
+ ["--assistant-type", "--epat"],
1349
+ "Type of assistant (e.g., 'TextPromptAssistant', 'RAG Assistant')",
1350
+ True
1351
+ ),
1352
+ Option(
1353
+ "evaluation_plan_assistant_id",
1354
+ ["--assistant-id", "--epai"],
1355
+ "UUID of the assistant (optional, required for TextPromptAssistant)",
1356
+ True
1357
+ ),
1358
+ Option(
1359
+ "evaluation_plan_assistant_name",
1360
+ ["--assistant-name", "--epan"],
1361
+ "Name of the assistant (optional, required for TextPromptAssistant)",
1362
+ True
1363
+ ),
1364
+ Option(
1365
+ "evaluation_plan_assistant_revision",
1366
+ ["--assistant-revision", "--epar"],
1367
+ "Revision of the assistant (optional, required for TextPromptAssistant)",
1368
+ True
1369
+ ),
1370
+ Option(
1371
+ "evaluation_plan_profile_name",
1372
+ ["--profile-name", "--eppn"],
1373
+ "Name of the RAG profile (optional, required for RAG Assistant)",
1374
+ True
1375
+ ),
1376
+ Option(
1377
+ "dataset_id",
1378
+ ["--dataset-id", "--did"],
1379
+ "ID of the dataset (optional)",
1380
+ True
1381
+ ),
1382
+ Option(
1383
+ "system_metrics",
1384
+ ["--system-metrics", "--sm"],
1385
+ "Array of system metrics (each with 'systemMetricId' and 'systemMetricWeight')"
1386
+ "Alternatively, multiple instances of --sm can be passes as arguments for a single list.",
1387
+ True
1388
+ )
1389
+ ]
1390
+
1391
+
1392
+ def delete_evaluation_plan(option_list: list):
1393
+ evaluation_plan_id = None
1394
+
1395
+ for option_flag, option_arg in option_list:
1396
+ if option_flag.name == "evaluation_plan_id":
1397
+ evaluation_plan_id = option_arg
1398
+
1399
+ if not evaluation_plan_id:
1400
+ raise MissingRequirementException("Cannot delete evaluation plan without specifying id")
1401
+
1402
+ client = EvaluationPlanClient()
1403
+ result = client.delete_evaluation_plan(
1404
+ evaluation_plan_id=evaluation_plan_id
1405
+ )
1406
+ Console.write_stdout(f"Deleted evaluation plan: \n{result}")
1407
+
1408
+
1409
+ delete_evaluation_plan_options = [
1410
+ Option(
1411
+ "evaluation_plan_id",
1412
+ ["--evaluation-plan-id", "--epid"],
1413
+ "UUID representing the evaluation plan to retrieve",
1414
+ True
1415
+ ),
1416
+ ]
1417
+
1418
+
1419
+ def list_evaluation_plan_system_metrics(option_list: list):
1420
+ evaluation_plan_id = None
1421
+
1422
+ for option_flag, option_arg in option_list:
1423
+ if option_flag.name == "evaluation_plan_id":
1424
+ evaluation_plan_id = option_arg
1425
+
1426
+ if not evaluation_plan_id:
1427
+ raise MissingRequirementException("Cannot list evaluation plan's system metrics without specifying id")
1428
+
1429
+ client = EvaluationPlanClient()
1430
+ result = client.list_evaluation_plan_system_metrics(
1431
+ evaluation_plan_id=evaluation_plan_id
1432
+ )
1433
+ Console.write_stdout(f"Evaluation plan's system metrics: \n{result}")
1434
+
1435
+
1436
+ list_evaluation_plan_system_metrics_options = [
1437
+ Option(
1438
+ "evaluation_plan_id",
1439
+ ["--evaluation-plan-id", "--epid"],
1440
+ "UUID representing the evaluation plan to retrieve",
1441
+ True
1442
+ ),
1443
+ ]
1444
+
1445
+
1446
+ def add_evaluation_plan_system_metric(option_list: list):
1447
+ evaluation_plan_id = None
1448
+ system_metric_id = None
1449
+ system_metric_weight = None
1450
+
1451
+ for option_flag, option_arg in option_list:
1452
+ if option_flag.name == "evaluation_plan_id":
1453
+ evaluation_plan_id = option_arg
1454
+ if option_flag.name == "system_metric_id":
1455
+ system_metric_id = option_arg
1456
+ if option_flag.name == "system_metric_weight":
1457
+ system_metric_weight = option_arg
1458
+
1459
+ if not evaluation_plan_id:
1460
+ raise MissingRequirementException("Cannot add evaluation plan's system metrics without specifying id")
1461
+
1462
+ client = EvaluationPlanClient()
1463
+ result = client.add_evaluation_plan_system_metric(
1464
+ evaluation_plan_id=evaluation_plan_id,
1465
+ system_metric_id=system_metric_id,
1466
+ system_metric_weight=system_metric_weight
1467
+
1468
+ )
1469
+ Console.write_stdout(f"Evaluation plan's system metrics: \n{result}")
1470
+
1471
+
1472
+ add_evaluation_plan_system_metric_options = [
1473
+ Option(
1474
+ "evaluation_plan_id",
1475
+ ["--evaluation-plan-id", "--epid"],
1476
+ "UUID representing the evaluation plan to retrieve",
1477
+ True
1478
+ ),
1479
+ Option(
1480
+ "system_metric_id",
1481
+ ["--system-metric-id", "--smid"],
1482
+ "systemMetricId: string. ID of the system metric",
1483
+ True
1484
+ ),
1485
+ Option(
1486
+ "system_metric_weight",
1487
+ ["--system-metric-weight", "--smw"],
1488
+ "systemMetricWeight: number. Weight of the system metric (between 0 and 1)",
1489
+ True
1490
+ ),
1491
+ ]
1492
+
1493
+
1494
+ def get_evaluation_plan_system_metric(option_list: list):
1495
+ evaluation_plan_id = None
1496
+ system_metric_id = None
1497
+
1498
+ for option_flag, option_arg in option_list:
1499
+ if option_flag.name == "evaluation_plan_id":
1500
+ evaluation_plan_id = option_arg
1501
+ if option_flag.name == "system_metric_id":
1502
+ system_metric_id = option_arg
1503
+
1504
+ if not (evaluation_plan_id and system_metric_id):
1505
+ raise MissingRequirementException("Cannot retrieve evaluation plan's system metric without specifying both ids")
1506
+
1507
+ client = EvaluationPlanClient()
1508
+ result = client.get_evaluation_plan_system_metric(
1509
+ evaluation_plan_id=evaluation_plan_id,
1510
+ system_metric_id=system_metric_id
1511
+ )
1512
+ Console.write_stdout(f"Evaluation plan's system metric: \n{result}")
1513
+
1514
+
1515
+ get_evaluation_plan_system_metric_options = [
1516
+ Option(
1517
+ "evaluation_plan_id",
1518
+ ["--evaluation-plan-id", "--epid"],
1519
+ "UUID representing the evaluation plan to retrieve",
1520
+ True
1521
+ ),
1522
+ Option(
1523
+ "system_metric_id",
1524
+ ["--system-metric-id", "--smid"],
1525
+ "ID of the system metric",
1526
+ True
1527
+ ),
1528
+ ]
1529
+
1530
+
1531
+ def update_evaluation_plan_system_metric(option_list: list):
1532
+ evaluation_plan_id = None
1533
+ system_metric_id = None
1534
+ system_metric_weight = None
1535
+
1536
+ for option_flag, option_arg in option_list:
1537
+ if option_flag.name == "evaluation_plan_id":
1538
+ evaluation_plan_id = option_arg
1539
+ if option_flag.name == "system_metric_id":
1540
+ system_metric_id = option_arg
1541
+ if option_flag.name == "system_metric_weight":
1542
+ system_metric_weight = option_arg
1543
+
1544
+ if not evaluation_plan_id:
1545
+ raise MissingRequirementException("Cannot update evaluation plan's system metrics without specifying both ids and weight")
1546
+
1547
+ client = EvaluationPlanClient()
1548
+ result = client.update_evaluation_plan_system_metric(
1549
+ evaluation_plan_id=evaluation_plan_id,
1550
+ system_metric_id=system_metric_id,
1551
+ system_metric_weight=system_metric_weight
1552
+
1553
+ )
1554
+ Console.write_stdout(f"Evaluation plan's system metrics: \n{result}")
1555
+
1556
+
1557
+ update_evaluation_plan_system_metric_options = [
1558
+ Option(
1559
+ "evaluation_plan_id",
1560
+ ["--evaluation-plan-id", "--epid"],
1561
+ "UUID representing the evaluation plan to retrieve",
1562
+ True
1563
+ ),
1564
+ Option(
1565
+ "system_metric_id",
1566
+ ["--system-metric-id", "--smid"],
1567
+ "systemMetricId: string. ID of the system metric",
1568
+ True
1569
+ ),
1570
+ Option(
1571
+ "system_metric_weight",
1572
+ ["--system-metric-weight", "--smw"],
1573
+ "systemMetricWeight: number. Weight of the system metric (between 0 and 1)",
1574
+ True
1575
+ ),
1576
+ ]
1577
+
1578
+
1579
+ def delete_evaluation_plan_system_metric(option_list: list):
1580
+ evaluation_plan_id = None
1581
+ system_metric_id = None
1582
+
1583
+ for option_flag, option_arg in option_list:
1584
+ if option_flag.name == "evaluation_plan_id":
1585
+ evaluation_plan_id = option_arg
1586
+ if option_flag.name == "system_metric_id":
1587
+ system_metric_id = option_arg
1588
+
1589
+ if not (evaluation_plan_id and system_metric_id):
1590
+ raise MissingRequirementException("Cannot delete evaluation plan's system metric without specifying both ids")
1591
+
1592
+ client = EvaluationPlanClient()
1593
+ result = client.delete_evaluation_plan_system_metric(
1594
+ evaluation_plan_id=evaluation_plan_id,
1595
+ system_metric_id=system_metric_id
1596
+ )
1597
+ Console.write_stdout(f"Evaluation plan's system metric: \n{result}")
1598
+
1599
+
1600
+ delete_evaluation_plan_system_metric_options = [
1601
+ Option(
1602
+ "evaluation_plan_id",
1603
+ ["--evaluation-plan-id", "--epid"],
1604
+ "UUID representing the evaluation plan to retrieve",
1605
+ True
1606
+ ),
1607
+ Option(
1608
+ "system_metric_id",
1609
+ ["--system-metric-id", "--smid"],
1610
+ "ID of the system metric",
1611
+ True
1612
+ ),
1613
+ ]
1614
+
1615
+
1616
+ def list_system_metrics():
1617
+ client = EvaluationPlanClient()
1618
+ result = client.list_system_metrics()
1619
+ Console.write_stdout(f"Available system metrics: \n{result}")
1620
+
1621
+
1622
+ def get_system_metric(option_list: list):
1623
+ system_metric_id = None
1624
+
1625
+ for option_flag, option_arg in option_list:
1626
+ if option_flag.name == "system_metric_id":
1627
+ system_metric_id = option_arg
1628
+
1629
+ if not system_metric_id:
1630
+ raise MissingRequirementException("Cannot retrieve system metric without specifying id")
1631
+
1632
+ client = EvaluationPlanClient()
1633
+ result = client.get_system_metric(
1634
+ system_metric_id=system_metric_id
1635
+ )
1636
+ Console.write_stdout(f"System metric: \n{result}")
1637
+
1638
+
1639
+ get_system_metric_options = [
1640
+ Option(
1641
+ "system_metric_id",
1642
+ ["--system-metric-id", "--smid"],
1643
+ "ID of the system metric",
1644
+ True
1645
+ ),
1646
+ ]
1647
+
1648
+
1649
+ def execute_evaluation_plan(option_list: list):
1650
+ evaluation_plan_id = None
1651
+
1652
+ for option_flag, option_arg in option_list:
1653
+ if option_flag.name == "evaluation_plan_id":
1654
+ evaluation_plan_id = option_arg
1655
+
1656
+ if not evaluation_plan_id:
1657
+ raise MissingRequirementException("Cannot execute evaluation plan without specifying id")
1658
+
1659
+ client = EvaluationPlanClient()
1660
+ result = client.execute_evaluation_plan(
1661
+ evaluation_plan_id=evaluation_plan_id,
1662
+ )
1663
+ Console.write_stdout(f"Evaluation plan execution: \n{result}")
1664
+
1665
+
1666
+ execute_evaluation_plan_options = [
1667
+ Option(
1668
+ "evaluation_plan_id",
1669
+ ["--evaluation-plan-id", "--epid"],
1670
+ "UUID representing the evaluation plan to retrieve",
1671
+ True
1672
+ ),
1673
+ ]
1674
+
1675
+ """
1676
+ DATASETS COMMANDS
1677
+ """
1678
+
1679
+
1680
+ def list_evaluation_results(option_list: list):
1681
+ evaluation_plan_id = None
1682
+
1683
+ for option_flag, option_arg in option_list:
1684
+ if option_flag.name == "evaluation_plan_id":
1685
+ evaluation_plan_id = option_arg
1686
+
1687
+ if not evaluation_plan_id:
1688
+ raise MissingRequirementException("Cannot list evaluation results without specifying id")
1689
+
1690
+ client = EvaluationResultClient()
1691
+ result = client.list_evaluation_results(
1692
+ evaluation_plan_id=evaluation_plan_id,
1693
+ )
1694
+ Console.write_stdout(f"Evaluation results: \n{result}")
1695
+
1696
+
1697
+ list_evaluation_results_options = [
1698
+ Option(
1699
+ "evaluation_plan_id",
1700
+ ["--evaluation-plan-id", "--epid"],
1701
+ "UUID representing the evaluation plan to retrieve",
1702
+ True
1703
+ ),
1704
+ ]
1705
+
1706
+
1707
+ def get_evaluation_result(option_list: list):
1708
+ evaluation_result_id = None
1709
+
1710
+ for option_flag, option_arg in option_list:
1711
+ if option_flag.name == "evaluation_result_id":
1712
+ evaluation_result_id = option_arg
1713
+
1714
+ if not evaluation_result_id:
1715
+ raise MissingRequirementException("Cannot get evaluation results without specifying id")
1716
+
1717
+ client = EvaluationResultClient()
1718
+ result = client.get_evaluation_result(
1719
+ evaluation_result_id=evaluation_result_id,
1720
+ )
1721
+ Console.write_stdout(f"Evaluation result: \n{result}")
1722
+
1723
+
1724
+ get_evaluation_result_options = [
1725
+ Option(
1726
+ "evaluation_result_id",
1727
+ ["--evaluation-result-id", "--erid"],
1728
+ "UUID representing the evaluation result to retrieve",
1729
+ True
1730
+ ),
1731
+ ]
1732
+
1733
+
1734
+ evaluation_commands = [
1735
+ Command(
1736
+ "help",
1737
+ ["help", "h"],
1738
+ "Display help text",
1739
+ show_help,
1740
+ ArgumentsEnum.NOT_AVAILABLE,
1741
+ [],
1742
+ []
1743
+ ),
1744
+ Command(
1745
+ "list_datasets",
1746
+ ["list-datasets", "ld"],
1747
+ "List all datasets",
1748
+ list_datasets,
1749
+ ArgumentsEnum.NOT_AVAILABLE,
1750
+ [],
1751
+ []
1752
+ ),
1753
+ Command(
1754
+ "create_dataset",
1755
+ ["create-dataset", "cd"],
1756
+ "Create dataset",
1757
+ create_dataset,
1758
+ ArgumentsEnum.REQUIRED,
1759
+ [],
1760
+ create_dataset_options
1761
+ ),
1762
+ Command(
1763
+ "get_dataset",
1764
+ ["get-dataset", "gd"],
1765
+ "Get dataset by ID",
1766
+ get_dataset,
1767
+ ArgumentsEnum.REQUIRED,
1768
+ [],
1769
+ get_dataset_options
1770
+ ),
1771
+ Command(
1772
+ "update_dataset",
1773
+ ["update-dataset", "ud"],
1774
+ "Update dataset by ID",
1775
+ update_dataset,
1776
+ ArgumentsEnum.REQUIRED,
1777
+ [],
1778
+ update_dataset_options
1779
+ ),
1780
+ Command(
1781
+ "delete_dataset",
1782
+ ["delete-dataset", "dd"],
1783
+ "Delete dataset by ID",
1784
+ delete_dataset,
1785
+ ArgumentsEnum.REQUIRED,
1786
+ [],
1787
+ delete_dataset_options
1788
+ ),
1789
+ Command(
1790
+ "create_dataset_row",
1791
+ ["create-dataset-row", "cdr"],
1792
+ "Create dataset row",
1793
+ create_dataset_row,
1794
+ ArgumentsEnum.REQUIRED,
1795
+ [],
1796
+ create_dataset_row_options
1797
+ ),
1798
+ Command(
1799
+ "list_dataset_rows",
1800
+ ["list-dataset-rows", "ldr"],
1801
+ "List dataset rows",
1802
+ list_dataset_rows,
1803
+ ArgumentsEnum.REQUIRED,
1804
+ [],
1805
+ list_dataset_rows_options
1806
+ ),
1807
+ Command(
1808
+ "get_dataset_row",
1809
+ ["get-dataset-row", "gdr"],
1810
+ "Get dataset row",
1811
+ get_dataset_row,
1812
+ ArgumentsEnum.REQUIRED,
1813
+ [],
1814
+ get_dataset_row_options
1815
+ ),
1816
+ Command(
1817
+ "update_dataset_row",
1818
+ ["update-dataset-row", "udr"],
1819
+ "Update dataset row",
1820
+ update_dataset_row,
1821
+ ArgumentsEnum.REQUIRED,
1822
+ [],
1823
+ update_dataset_row_options
1824
+ ),
1825
+ Command(
1826
+ "delete_dataset_row",
1827
+ ["delete-dataset-row", "ddr"],
1828
+ "Delete dataset row",
1829
+ delete_dataset_row,
1830
+ ArgumentsEnum.REQUIRED,
1831
+ [],
1832
+ delete_dataset_row_options
1833
+ ),
1834
+ Command(
1835
+ "create_dataset_row_expected_source",
1836
+ ["create-expected-source", "ces"],
1837
+ "Create dataset row expected source",
1838
+ create_dataset_row_expected_source,
1839
+ ArgumentsEnum.REQUIRED,
1840
+ [],
1841
+ create_dataset_row_expected_source_options
1842
+ ),
1843
+ Command(
1844
+ "list_dataset_row_expected_sources",
1845
+ ["list-expected-sources", "les"],
1846
+ "List dataset row expected sources",
1847
+ list_dataset_row_expected_sources,
1848
+ ArgumentsEnum.REQUIRED,
1849
+ [],
1850
+ list_dataset_row_expected_sources_options
1851
+ ),
1852
+ Command(
1853
+ "get_dataset_row_expected_source",
1854
+ ["get-expected-source", "ges"],
1855
+ "Get dataset row expected source",
1856
+ get_dataset_row_expected_source,
1857
+ ArgumentsEnum.REQUIRED,
1858
+ [],
1859
+ get_dataset_row_expected_source_options
1860
+ ),
1861
+ Command(
1862
+ "update_dataset_row_expected_source",
1863
+ ["update-expected-source", "ues"],
1864
+ "Update dataset row expected source",
1865
+ update_dataset_row_expected_source,
1866
+ ArgumentsEnum.REQUIRED,
1867
+ [],
1868
+ update_dataset_row_expected_source_options
1869
+ ),
1870
+ Command(
1871
+ "delete_dataset_row_expected_source",
1872
+ ["delete-expected-source", "des"],
1873
+ "Delete dataset row expected source",
1874
+ delete_dataset_row_expected_source,
1875
+ ArgumentsEnum.REQUIRED,
1876
+ [],
1877
+ delete_dataset_row_expected_source_options
1878
+ ),
1879
+ Command(
1880
+ "create_dataset_row_filter_variable",
1881
+ ["create-filter-variable", "cfv"],
1882
+ "Create dataset row filter variable",
1883
+ create_dataset_row_filter_variable,
1884
+ ArgumentsEnum.REQUIRED,
1885
+ [],
1886
+ create_dataset_row_filter_variable_options
1887
+ ),
1888
+ Command(
1889
+ "list_dataset_row_filter_variables",
1890
+ ["list-filter-variables", "lfv"],
1891
+ "List dataset row filter variables",
1892
+ list_dataset_row_filter_variables,
1893
+ ArgumentsEnum.REQUIRED,
1894
+ [],
1895
+ list_dataset_row_filter_variables_options
1896
+ ),
1897
+ Command(
1898
+ "get_dataset_row_filter_variable",
1899
+ ["get-filter-variable", "gfv"],
1900
+ "Get dataset row filter variable",
1901
+ get_dataset_row_filter_variable,
1902
+ ArgumentsEnum.REQUIRED,
1903
+ [],
1904
+ get_dataset_row_filter_variable_options
1905
+ ),
1906
+ Command(
1907
+ "update_dataset_row_filter_variable",
1908
+ ["update-filter-variable", "ufv"],
1909
+ "Update dataset row filter variable",
1910
+ update_dataset_row_filter_variable,
1911
+ ArgumentsEnum.REQUIRED,
1912
+ [],
1913
+ update_dataset_row_filter_variable_options
1914
+ ),
1915
+ Command(
1916
+ "delete_dataset_row_filter_variable",
1917
+ ["delete-filter-variable", "dfv"],
1918
+ "Delete dataset row filter variable",
1919
+ delete_dataset_row_filter_variable,
1920
+ ArgumentsEnum.REQUIRED,
1921
+ [],
1922
+ delete_dataset_row_filter_variable_options
1923
+ ),
1924
+ Command(
1925
+ "update_dataset_rows_file",
1926
+ ["upload-dataset-rows", "udrf"],
1927
+ "Upload dataset rows file",
1928
+ update_dataset_rows_file,
1929
+ ArgumentsEnum.REQUIRED,
1930
+ [],
1931
+ update_dataset_rows_file_options
1932
+ ),
1933
+ Command(
1934
+ "list_evaluation_plans",
1935
+ ["list-evaluation-plans", "lep"],
1936
+ "Retrieves a list of all evaluation plans.",
1937
+ list_evaluation_plans,
1938
+ ArgumentsEnum.NOT_AVAILABLE,
1939
+ [],
1940
+ []
1941
+ ),
1942
+ Command(
1943
+ "create_evaluation_plan",
1944
+ ["create-evaluation-plan", "cep"],
1945
+ "Creates a new evaluation plan.",
1946
+ create_evaluation_plan,
1947
+ ArgumentsEnum.REQUIRED,
1948
+ [],
1949
+ create_evaluation_plan_options
1950
+ ),
1951
+ Command(
1952
+ "get_evaluation_plan",
1953
+ ["get-evaluation-plan", "gep"],
1954
+ "Retrieve evaluation plan by ID.",
1955
+ get_evaluation_plan,
1956
+ ArgumentsEnum.REQUIRED,
1957
+ [],
1958
+ get_evaluation_plan_options
1959
+ ),
1960
+ Command(
1961
+ "update_evaluation_plan",
1962
+ ["update-evaluation-plan", "uep"],
1963
+ "Update evaluation plan by ID.",
1964
+ update_evaluation_plan,
1965
+ ArgumentsEnum.REQUIRED,
1966
+ [],
1967
+ update_evaluation_plan_options
1968
+ ),
1969
+ Command(
1970
+ "delete_evaluation_plan",
1971
+ ["delete-evaluation-plan", "dep"],
1972
+ "Delete evaluation plan by ID.",
1973
+ delete_evaluation_plan,
1974
+ ArgumentsEnum.REQUIRED,
1975
+ [],
1976
+ delete_evaluation_plan_options
1977
+ ),
1978
+ Command(
1979
+ "list_evaluation_plan_system_metrics",
1980
+ ["list-evaluation-plan-system-metrics", "lepsm"],
1981
+ "List system metrics for evaluation plan by ID.",
1982
+ list_evaluation_plan_system_metrics,
1983
+ ArgumentsEnum.REQUIRED,
1984
+ [],
1985
+ list_evaluation_plan_system_metrics_options
1986
+ ),
1987
+ Command(
1988
+ "add_evaluation_plan_system_metric",
1989
+ ["add-evaluation-plan-system-metric", "aepsm"],
1990
+ "Adds a new system metric to an existing evaluation plan.",
1991
+ add_evaluation_plan_system_metric,
1992
+ ArgumentsEnum.REQUIRED,
1993
+ [],
1994
+ add_evaluation_plan_system_metric_options
1995
+ ),
1996
+ Command(
1997
+ "get_evaluation_plan_system_metric",
1998
+ ["get-evaluation-plan-system-metric", "gepsm"],
1999
+ "Retrieves a specific system metric from a given evaluation plan.",
2000
+ get_evaluation_plan_system_metric,
2001
+ ArgumentsEnum.REQUIRED,
2002
+ [],
2003
+ get_evaluation_plan_system_metric_options
2004
+ ),
2005
+ Command(
2006
+ "update_evaluation_plan_system_metric",
2007
+ ["update-evaluation-plan-system-metric", "uepsm"],
2008
+ "Updates a specific system metric within an existing evaluation plan.",
2009
+ update_evaluation_plan_system_metric,
2010
+ ArgumentsEnum.REQUIRED,
2011
+ [],
2012
+ update_evaluation_plan_system_metric_options
2013
+ ),
2014
+ Command(
2015
+ "delete_evaluation_plan_system_metric",
2016
+ ["delete-evaluation-plan-system-metric", "depsm"],
2017
+ "Delete a specific system metric within an existing evaluation plan.",
2018
+ delete_evaluation_plan_system_metric,
2019
+ ArgumentsEnum.REQUIRED,
2020
+ [],
2021
+ delete_evaluation_plan_system_metric_options
2022
+ ),
2023
+ Command(
2024
+ "list_system_metrics",
2025
+ ["list-available-system-metrics", "lsm"],
2026
+ "Retrieves a list of all available system metrics that can be used in evaluation plans",
2027
+ list_system_metrics,
2028
+ ArgumentsEnum.NOT_AVAILABLE,
2029
+ [],
2030
+ []
2031
+ ),
2032
+ Command(
2033
+ "get_system_metric",
2034
+ ["get-system-metrics", "gsm"],
2035
+ "Retrieves a specific system metric using its ID.",
2036
+ get_system_metric,
2037
+ ArgumentsEnum.REQUIRED,
2038
+ [],
2039
+ get_system_metric_options
2040
+ ),
2041
+ Command(
2042
+ "execute_evaluation_plan",
2043
+ ["execute-evaluation-plan", "xep"],
2044
+ "Initiates the execution of a previously defined evaluation plan. The evaluation plan's configuration "
2045
+ "(assistant, dataset, metrics, and weights) determines how the assessment is performed.",
2046
+ execute_evaluation_plan,
2047
+ ArgumentsEnum.REQUIRED,
2048
+ [],
2049
+ execute_evaluation_plan_options
2050
+ ),
2051
+ Command(
2052
+ "list_evaluation_results",
2053
+ ["list-evaluation-results", "ler"],
2054
+ "Retrieves a list of evaluation results associated with a specific evaluation plan.",
2055
+ list_evaluation_results,
2056
+ ArgumentsEnum.REQUIRED,
2057
+ [],
2058
+ list_evaluation_results_options
2059
+ ),
2060
+ Command(
2061
+ "get_evaluation_result",
2062
+ ["get-evaluation-result", "ger"],
2063
+ "Retrieves a specific evaluation result by its ID.",
2064
+ get_evaluation_result,
2065
+ ArgumentsEnum.REQUIRED,
2066
+ [],
2067
+ get_evaluation_result_options
2068
+ ),
2069
+ ]