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.

Potentially problematic release.


This version of pygeai might be problematic. Click here for more details.

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,505 @@
1
+ from pygeai import logger
2
+ from pygeai.admin.clients import AdminClient
3
+ from pygeai.analytics.endpoints import (
4
+ GET_AGENTS_CREATED_AND_MODIFIED_V1, GET_AGENTS_CREATED_AND_MODIFIED_PER_DAY_V1,
5
+ GET_FLOWS_CREATED_AND_MODIFIED_V1, GET_FLOWS_CREATED_AND_MODIFIED_PER_DAY_V1,
6
+ GET_PROCESSES_CREATED_AND_MODIFIED_V1, GET_AGENT_USAGE_PER_USER_V1,
7
+ GET_AVERAGE_COST_PER_REQUEST_V1, GET_AVERAGE_COST_PER_USER_V1,
8
+ GET_AVERAGE_COST_PER_USER_PER_DATE_V1, GET_AVERAGE_REQUEST_TIME_V1,
9
+ GET_AVERAGE_REQUESTS_PER_DAY_V1, GET_AVERAGE_REQUESTS_PER_USER_V1,
10
+ GET_AVERAGE_REQUESTS_PER_USER_PER_DATE_V1, GET_AVERAGE_TOKENS_PER_REQUEST_V1,
11
+ GET_AVERAGE_USERS_PER_AGENT_V1, GET_AVERAGE_USERS_PER_PROJECT_V1,
12
+ GET_NUMBER_OF_TOKENS_V1, GET_NUMBER_OF_TOKENS_PER_AGENT_V1,
13
+ GET_NUMBER_OF_TOKENS_PER_DAY_V1, GET_OVERALL_ERROR_RATE_V1,
14
+ GET_TOP_10_AGENTS_BY_REQUESTS_V1, GET_TOP_10_AGENTS_BY_TOKENS_V1,
15
+ GET_TOP_10_USERS_BY_COST_V1, GET_TOP_10_USERS_BY_REQUESTS_V1,
16
+ GET_TOTAL_ACTIVE_AGENTS_V1, GET_TOTAL_ACTIVE_PROJECTS_V1,
17
+ GET_TOTAL_ACTIVE_USERS_V1, GET_TOTAL_COST_V1, GET_TOTAL_COST_PER_DAY_V1,
18
+ GET_TOTAL_REQUEST_TIME_V1, GET_TOTAL_REQUESTS_V1, GET_TOTAL_REQUESTS_PER_DAY_V1,
19
+ GET_TOTAL_REQUESTS_WITH_ERROR_V1, GET_TOTAL_TOKENS_V1
20
+ )
21
+ from pygeai.core.base.clients import BaseClient
22
+ from pygeai.core.common.exceptions import APIError
23
+ from pygeai.core.utils.validators import validate_status_code
24
+ from pygeai.core.utils.parsers import parse_json_response
25
+
26
+
27
+ class AnalyticsClient(BaseClient):
28
+
29
+ def __init__(self, api_key: str = None, base_url: str = None, alias: str = None, *,
30
+ access_token: str = None, project_id: str = None, organization_id: str = None):
31
+ super().__init__(api_key, base_url, alias, access_token=access_token, project_id=project_id)
32
+ ids = self.__get_project_and_organization_ids(api_key, base_url, alias, project_id, organization_id)
33
+ self.project_id = ids.get("projectId")
34
+ self.organization_id = ids.get("organizationId")
35
+ if self.project_id and not self.api_service.project_id:
36
+ self.api_service.project_id = self.project_id
37
+
38
+ def __get_project_and_organization_ids(self, api_key: str = None, base_url: str = None, alias: str = None,
39
+ project_id: str = None, organization_id: str = None):
40
+ if project_id and organization_id:
41
+ return {"projectId": project_id, "organizationId": organization_id}
42
+
43
+ response = None
44
+ try:
45
+ response = AdminClient(api_key=api_key, base_url=base_url, alias=alias).validate_api_token()
46
+ return {
47
+ "projectId": project_id if project_id else response.get("projectId"),
48
+ "organizationId": organization_id if organization_id else response.get("organizationId")
49
+ }
50
+ except Exception as e:
51
+ logger.error(f"Error retrieving project_id and organization_id from GEAI. Response: {response}: {e}")
52
+ raise APIError(f"Error retrieving project_id and organization_id from GEAI: {e}")
53
+
54
+ def __build_headers(self):
55
+ return {
56
+ "Authorization": self.api_service.token,
57
+ "OrganizationId": self.organization_id,
58
+ "ProjectId": self.project_id
59
+ }
60
+
61
+ def get_agents_created_and_modified(
62
+ self,
63
+ start_date: str,
64
+ end_date: str
65
+ ) -> dict:
66
+ response = self.api_service.get(
67
+ endpoint=GET_AGENTS_CREATED_AND_MODIFIED_V1,
68
+ headers=self.__build_headers(),
69
+ params={"startDate": start_date, "endDate": end_date}
70
+ )
71
+ validate_status_code(response)
72
+ return parse_json_response(response, "get agents created and modified")
73
+
74
+ def get_agents_created_and_modified_per_day(
75
+ self,
76
+ start_date: str,
77
+ end_date: str
78
+ ) -> dict:
79
+ response = self.api_service.get(
80
+ endpoint=GET_AGENTS_CREATED_AND_MODIFIED_PER_DAY_V1,
81
+ headers=self.__build_headers(),
82
+ params={"startDate": start_date, "endDate": end_date}
83
+ )
84
+ validate_status_code(response)
85
+ return parse_json_response(response, "get agents created and modified per day")
86
+
87
+ def get_flows_created_and_modified(
88
+ self,
89
+ start_date: str,
90
+ end_date: str
91
+ ) -> dict:
92
+ response = self.api_service.get(
93
+ endpoint=GET_FLOWS_CREATED_AND_MODIFIED_V1,
94
+ headers=self.__build_headers(),
95
+ params={"startDate": start_date, "endDate": end_date}
96
+ )
97
+ validate_status_code(response)
98
+ return parse_json_response(response, "get flows created and modified")
99
+
100
+ def get_flows_created_and_modified_per_day(
101
+ self,
102
+ start_date: str,
103
+ end_date: str
104
+ ) -> dict:
105
+ response = self.api_service.get(
106
+ endpoint=GET_FLOWS_CREATED_AND_MODIFIED_PER_DAY_V1,
107
+ headers=self.__build_headers(),
108
+ params={"startDate": start_date, "endDate": end_date}
109
+ )
110
+ validate_status_code(response)
111
+ return parse_json_response(response, "get flows created and modified per day")
112
+
113
+ def get_processes_created_and_modified(
114
+ self,
115
+ start_date: str,
116
+ end_date: str
117
+ ) -> dict:
118
+ response = self.api_service.get(
119
+ endpoint=GET_PROCESSES_CREATED_AND_MODIFIED_V1,
120
+ headers=self.__build_headers(),
121
+ params={"startDate": start_date, "endDate": end_date}
122
+ )
123
+ validate_status_code(response)
124
+ return parse_json_response(response, "get processes created and modified")
125
+
126
+ def get_agent_usage_per_user(
127
+ self,
128
+ start_date: str,
129
+ end_date: str
130
+ ) -> dict:
131
+ response = self.api_service.get(
132
+ endpoint=GET_AGENT_USAGE_PER_USER_V1,
133
+ headers=self.__build_headers(),
134
+ params={"startDate": start_date, "endDate": end_date}
135
+ )
136
+ validate_status_code(response)
137
+ return parse_json_response(response, "get agent usage per user")
138
+
139
+ def get_average_cost_per_request(
140
+ self,
141
+ start_date: str,
142
+ end_date: str
143
+ ) -> dict:
144
+ response = self.api_service.get(
145
+ endpoint=GET_AVERAGE_COST_PER_REQUEST_V1,
146
+ headers=self.__build_headers(),
147
+ params={"startDate": start_date, "endDate": end_date}
148
+ )
149
+ validate_status_code(response)
150
+ return parse_json_response(response, "get average cost per request")
151
+
152
+ def get_average_cost_per_user(
153
+ self,
154
+ start_date: str,
155
+ end_date: str
156
+ ) -> dict:
157
+ response = self.api_service.get(
158
+ endpoint=GET_AVERAGE_COST_PER_USER_V1,
159
+ headers=self.__build_headers(),
160
+ params={"startDate": start_date, "endDate": end_date}
161
+ )
162
+ validate_status_code(response)
163
+ return parse_json_response(response, "get average cost per user")
164
+
165
+ def get_average_cost_per_user_per_date(
166
+ self,
167
+ start_date: str,
168
+ end_date: str
169
+ ) -> dict:
170
+ response = self.api_service.get(
171
+ endpoint=GET_AVERAGE_COST_PER_USER_PER_DATE_V1,
172
+ headers=self.__build_headers(),
173
+ params={"startDate": start_date, "endDate": end_date}
174
+ )
175
+ validate_status_code(response)
176
+ return parse_json_response(response, "get average cost per user per date")
177
+
178
+ def get_average_request_time(
179
+ self,
180
+ start_date: str,
181
+ end_date: str
182
+ ) -> dict:
183
+ response = self.api_service.get(
184
+ endpoint=GET_AVERAGE_REQUEST_TIME_V1,
185
+ headers=self.__build_headers(),
186
+ params={"startDate": start_date, "endDate": end_date}
187
+ )
188
+ validate_status_code(response)
189
+ return parse_json_response(response, "get average request time")
190
+
191
+ def get_average_requests_per_day(
192
+ self,
193
+ start_date: str,
194
+ end_date: str
195
+ ) -> dict:
196
+ response = self.api_service.get(
197
+ endpoint=GET_AVERAGE_REQUESTS_PER_DAY_V1,
198
+ headers=self.__build_headers(),
199
+ params={"startDate": start_date, "endDate": end_date}
200
+ )
201
+ validate_status_code(response)
202
+ return parse_json_response(response, "get average requests per day")
203
+
204
+ def get_average_requests_per_user(
205
+ self,
206
+ start_date: str,
207
+ end_date: str
208
+ ) -> dict:
209
+ response = self.api_service.get(
210
+ endpoint=GET_AVERAGE_REQUESTS_PER_USER_V1,
211
+ headers=self.__build_headers(),
212
+ params={"startDate": start_date, "endDate": end_date}
213
+ )
214
+ validate_status_code(response)
215
+ return parse_json_response(response, "get average requests per user")
216
+
217
+ def get_average_requests_per_user_per_date(
218
+ self,
219
+ start_date: str,
220
+ end_date: str
221
+ ) -> dict:
222
+ response = self.api_service.get(
223
+ endpoint=GET_AVERAGE_REQUESTS_PER_USER_PER_DATE_V1,
224
+ headers=self.__build_headers(),
225
+ params={"startDate": start_date, "endDate": end_date}
226
+ )
227
+ validate_status_code(response)
228
+ return parse_json_response(response, "get average requests per user per date")
229
+
230
+ def get_average_tokens_per_request(
231
+ self,
232
+ start_date: str,
233
+ end_date: str
234
+ ) -> dict:
235
+ response = self.api_service.get(
236
+ endpoint=GET_AVERAGE_TOKENS_PER_REQUEST_V1,
237
+ headers=self.__build_headers(),
238
+ params={"startDate": start_date, "endDate": end_date}
239
+ )
240
+ validate_status_code(response)
241
+ return parse_json_response(response, "get average tokens per request")
242
+
243
+ def get_average_users_per_agent(
244
+ self,
245
+ start_date: str,
246
+ end_date: str
247
+ ) -> dict:
248
+ response = self.api_service.get(
249
+ endpoint=GET_AVERAGE_USERS_PER_AGENT_V1,
250
+ headers=self.__build_headers(),
251
+ params={"startDate": start_date, "endDate": end_date}
252
+ )
253
+ validate_status_code(response)
254
+ return parse_json_response(response, "get average users per agent")
255
+
256
+ def get_average_users_per_project(
257
+ self,
258
+ start_date: str,
259
+ end_date: str
260
+ ) -> dict:
261
+ response = self.api_service.get(
262
+ endpoint=GET_AVERAGE_USERS_PER_PROJECT_V1,
263
+ headers=self.__build_headers(),
264
+ params={"startDate": start_date, "endDate": end_date}
265
+ )
266
+ validate_status_code(response)
267
+ return parse_json_response(response, "get average users per project")
268
+
269
+ def get_number_of_tokens(
270
+ self,
271
+ start_date: str,
272
+ end_date: str
273
+ ) -> dict:
274
+ response = self.api_service.get(
275
+ endpoint=GET_NUMBER_OF_TOKENS_V1,
276
+ headers=self.__build_headers(),
277
+ params={"startDate": start_date, "endDate": end_date}
278
+ )
279
+ validate_status_code(response)
280
+ return parse_json_response(response, "get number of tokens")
281
+
282
+ def get_number_of_tokens_per_agent(
283
+ self,
284
+ start_date: str,
285
+ end_date: str
286
+ ) -> dict:
287
+ response = self.api_service.get(
288
+ endpoint=GET_NUMBER_OF_TOKENS_PER_AGENT_V1,
289
+ headers=self.__build_headers(),
290
+ params={"startDate": start_date, "endDate": end_date}
291
+ )
292
+ validate_status_code(response)
293
+ return parse_json_response(response, "get number of tokens per agent")
294
+
295
+ def get_number_of_tokens_per_day(
296
+ self,
297
+ start_date: str,
298
+ end_date: str
299
+ ) -> dict:
300
+ response = self.api_service.get(
301
+ endpoint=GET_NUMBER_OF_TOKENS_PER_DAY_V1,
302
+ headers=self.__build_headers(),
303
+ params={"startDate": start_date, "endDate": end_date}
304
+ )
305
+ validate_status_code(response)
306
+ return parse_json_response(response, "get number of tokens per day")
307
+
308
+ def get_overall_error_rate(
309
+ self,
310
+ start_date: str,
311
+ end_date: str
312
+ ) -> dict:
313
+ response = self.api_service.get(
314
+ endpoint=GET_OVERALL_ERROR_RATE_V1,
315
+ headers=self.__build_headers(),
316
+ params={"startDate": start_date, "endDate": end_date}
317
+ )
318
+ validate_status_code(response)
319
+ return parse_json_response(response, "get overall error rate")
320
+
321
+ def get_top_10_agents_by_requests(
322
+ self,
323
+ start_date: str,
324
+ end_date: str
325
+ ) -> dict:
326
+ response = self.api_service.get(
327
+ endpoint=GET_TOP_10_AGENTS_BY_REQUESTS_V1,
328
+ headers=self.__build_headers(),
329
+ params={"startDate": start_date, "endDate": end_date}
330
+ )
331
+ validate_status_code(response)
332
+ return parse_json_response(response, "get top 10 agents by requests")
333
+
334
+ def get_top_10_agents_by_tokens(
335
+ self,
336
+ start_date: str,
337
+ end_date: str
338
+ ) -> dict:
339
+ response = self.api_service.get(
340
+ endpoint=GET_TOP_10_AGENTS_BY_TOKENS_V1,
341
+ headers=self.__build_headers(),
342
+ params={"startDate": start_date, "endDate": end_date}
343
+ )
344
+ validate_status_code(response)
345
+ return parse_json_response(response, "get top 10 agents by tokens")
346
+
347
+ def get_top_10_users_by_cost(
348
+ self,
349
+ start_date: str,
350
+ end_date: str
351
+ ) -> dict:
352
+ response = self.api_service.get(
353
+ endpoint=GET_TOP_10_USERS_BY_COST_V1,
354
+ headers=self.__build_headers(),
355
+ params={"startDate": start_date, "endDate": end_date}
356
+ )
357
+ validate_status_code(response)
358
+ return parse_json_response(response, "get top 10 users by cost")
359
+
360
+ def get_top_10_users_by_requests(
361
+ self,
362
+ start_date: str,
363
+ end_date: str
364
+ ) -> dict:
365
+ response = self.api_service.get(
366
+ endpoint=GET_TOP_10_USERS_BY_REQUESTS_V1,
367
+ headers=self.__build_headers(),
368
+ params={"startDate": start_date, "endDate": end_date}
369
+ )
370
+ validate_status_code(response)
371
+ return parse_json_response(response, "get top 10 users by requests")
372
+
373
+ def get_total_active_agents(
374
+ self,
375
+ start_date: str,
376
+ end_date: str
377
+ ) -> dict:
378
+ response = self.api_service.get(
379
+ endpoint=GET_TOTAL_ACTIVE_AGENTS_V1,
380
+ headers=self.__build_headers(),
381
+ params={"startDate": start_date, "endDate": end_date}
382
+ )
383
+ validate_status_code(response)
384
+ return parse_json_response(response, "get total active agents")
385
+
386
+ def get_total_active_projects(
387
+ self,
388
+ start_date: str,
389
+ end_date: str
390
+ ) -> dict:
391
+ response = self.api_service.get(
392
+ endpoint=GET_TOTAL_ACTIVE_PROJECTS_V1,
393
+ headers=self.__build_headers(),
394
+ params={"startDate": start_date, "endDate": end_date}
395
+ )
396
+ validate_status_code(response)
397
+ return parse_json_response(response, "get total active projects")
398
+
399
+ def get_total_active_users(
400
+ self,
401
+ start_date: str,
402
+ end_date: str
403
+ ) -> dict:
404
+ response = self.api_service.get(
405
+ endpoint=GET_TOTAL_ACTIVE_USERS_V1,
406
+ headers=self.__build_headers(),
407
+ params={"startDate": start_date, "endDate": end_date}
408
+ )
409
+ validate_status_code(response)
410
+ return parse_json_response(response, "get total active users")
411
+
412
+ def get_total_cost(
413
+ self,
414
+ start_date: str,
415
+ end_date: str
416
+ ) -> dict:
417
+ response = self.api_service.get(
418
+ endpoint=GET_TOTAL_COST_V1,
419
+ headers=self.__build_headers(),
420
+ params={"startDate": start_date, "endDate": end_date}
421
+ )
422
+ validate_status_code(response)
423
+ return parse_json_response(response, "get total cost")
424
+
425
+ def get_total_cost_per_day(
426
+ self,
427
+ start_date: str,
428
+ end_date: str
429
+ ) -> dict:
430
+ response = self.api_service.get(
431
+ endpoint=GET_TOTAL_COST_PER_DAY_V1,
432
+ headers=self.__build_headers(),
433
+ params={"startDate": start_date, "endDate": end_date}
434
+ )
435
+ validate_status_code(response)
436
+ return parse_json_response(response, "get total cost per day")
437
+
438
+ def get_total_request_time(
439
+ self,
440
+ start_date: str,
441
+ end_date: str
442
+ ) -> dict:
443
+ response = self.api_service.get(
444
+ endpoint=GET_TOTAL_REQUEST_TIME_V1,
445
+ headers=self.__build_headers(),
446
+ params={"startDate": start_date, "endDate": end_date}
447
+ )
448
+ validate_status_code(response)
449
+ return parse_json_response(response, "get total request time")
450
+
451
+ def get_total_requests(
452
+ self,
453
+ start_date: str,
454
+ end_date: str
455
+ ) -> dict:
456
+ response = self.api_service.get(
457
+ endpoint=GET_TOTAL_REQUESTS_V1,
458
+ headers=self.__build_headers(),
459
+ params={"startDate": start_date, "endDate": end_date}
460
+ )
461
+ validate_status_code(response)
462
+ return parse_json_response(response, "get total requests")
463
+
464
+ def get_total_requests_per_day(
465
+ self,
466
+ start_date: str,
467
+ end_date: str,
468
+ agent_name: str = None
469
+ ) -> dict:
470
+ params = {"startDate": start_date, "endDate": end_date}
471
+ if agent_name:
472
+ params["agentName"] = agent_name
473
+ response = self.api_service.get(
474
+ endpoint=GET_TOTAL_REQUESTS_PER_DAY_V1,
475
+ headers=self.__build_headers(),
476
+ params=params
477
+ )
478
+ validate_status_code(response)
479
+ return parse_json_response(response, "get total requests per day")
480
+
481
+ def get_total_requests_with_error(
482
+ self,
483
+ start_date: str,
484
+ end_date: str
485
+ ) -> dict:
486
+ response = self.api_service.get(
487
+ endpoint=GET_TOTAL_REQUESTS_WITH_ERROR_V1,
488
+ headers=self.__build_headers(),
489
+ params={"startDate": start_date, "endDate": end_date}
490
+ )
491
+ validate_status_code(response)
492
+ return parse_json_response(response, "get total requests with error")
493
+
494
+ def get_total_tokens(
495
+ self,
496
+ start_date: str,
497
+ end_date: str
498
+ ) -> dict:
499
+ response = self.api_service.get(
500
+ endpoint=GET_TOTAL_TOKENS_V1,
501
+ headers=self.__build_headers(),
502
+ params={"startDate": start_date, "endDate": end_date}
503
+ )
504
+ validate_status_code(response)
505
+ return parse_json_response(response, "get total tokens")
@@ -0,0 +1,35 @@
1
+ GET_AGENTS_CREATED_AND_MODIFIED_V1 = "v1/analytics/lab/agents-created-and-modified" # GET - Returns the total number of agents created or modified within a specified date range
2
+ GET_AGENTS_CREATED_AND_MODIFIED_PER_DAY_V1 = "v1/analytics/lab/agents-created-and-modified-per-day" # GET - Provides daily counts of agents created and modified within a specified date range
3
+ GET_FLOWS_CREATED_AND_MODIFIED_V1 = "v1/analytics/lab/flows-created-and-modified" # GET - Returns the total number of flows created or modified within a specified date range
4
+ GET_FLOWS_CREATED_AND_MODIFIED_PER_DAY_V1 = "v1/analytics/lab/flows-created-and-modified-per-day" # GET - Provides daily counts of flows created and modified within a specified date range
5
+ GET_PROCESSES_CREATED_AND_MODIFIED_V1 = "v1/analytics/lab/processes-created-and-modified" # GET - Returns the total number of processes created or modified within a specified date range
6
+
7
+ GET_AGENT_USAGE_PER_USER_V1 = "v1/analytics/requests/agent-usage-per-user" # GET - Returns the usage of agents per user within a specified date range
8
+ GET_AVERAGE_COST_PER_REQUEST_V1 = "v1/analytics/requests/average-cost-per-request" # GET - Returns the average cost incurred per request during the specified period, expressed in USD
9
+ GET_AVERAGE_COST_PER_USER_V1 = "v1/analytics/requests/average-cost-per-user" # GET - Returns the average cost incurred per user during the specified period
10
+ GET_AVERAGE_COST_PER_USER_PER_DATE_V1 = "v1/analytics/requests/average-cost-per-user-per-date" # GET - Returns the average cost incurred per user per date during the specified period
11
+ GET_AVERAGE_REQUEST_TIME_V1 = "v1/analytics/requests/average-request-time" # GET - Returns the average processing time per request in milliseconds
12
+ GET_AVERAGE_REQUESTS_PER_DAY_V1 = "v1/analytics/requests/average-requests-per-day" # GET - Returns the average number of requests per day during the specified period
13
+ GET_AVERAGE_REQUESTS_PER_USER_V1 = "v1/analytics/requests/average-requests-per-user" # GET - Returns the average number of requests per user during the specified period
14
+ GET_AVERAGE_REQUESTS_PER_USER_PER_DATE_V1 = "v1/analytics/requests/average-requests-per-user-per-date" # GET - Returns the average number of requests per user per date during the specified period
15
+ GET_AVERAGE_TOKENS_PER_REQUEST_V1 = "v1/analytics/requests/average-tokens-per-request" # GET - Provides the average number of input, output, and total tokens per request
16
+ GET_AVERAGE_USERS_PER_AGENT_V1 = "v1/analytics/requests/average-users-per-agent" # GET - Returns the average number of users per agent during the specified period
17
+ GET_AVERAGE_USERS_PER_PROJECT_V1 = "v1/analytics/requests/average-users-per-project" # GET - Returns the average number of users per project during the specified period
18
+ GET_NUMBER_OF_TOKENS_V1 = "v1/analytics/requests/number-of-tokens" # GET - Returns the total number of input, output, and total tokens consumed during the specified period
19
+ GET_NUMBER_OF_TOKENS_PER_AGENT_V1 = "v1/analytics/requests/number-of-tokens-per-agent" # GET - Returns the total number of tokens consumed per agent during the specified period
20
+ GET_NUMBER_OF_TOKENS_PER_DAY_V1 = "v1/analytics/requests/number-of-tokens-per-day" # GET - Returns the total number of tokens consumed per day during the specified period
21
+ GET_OVERALL_ERROR_RATE_V1 = "v1/analytics/requests/overall-error-rate" # GET - Returns the overall error rate calculated as (total errors / total requests) * 100
22
+ GET_TOP_10_AGENTS_BY_REQUESTS_V1 = "v1/analytics/requests/top-10-agents-by-requests" # GET - Retrieves the top 10 agents ranked by the number of requests received
23
+ GET_TOP_10_AGENTS_BY_TOKENS_V1 = "v1/analytics/requests/top-10-agents-by-tokens" # GET - Lists the top 10 agents ranked by the number of tokens processed
24
+ GET_TOP_10_USERS_BY_COST_V1 = "v1/analytics/requests/top-10-users-by-cost" # GET - Lists the top 10 users ranked by total cost incurred in USD
25
+ GET_TOP_10_USERS_BY_REQUESTS_V1 = "v1/analytics/requests/top-10-users-by-requests" # GET - Retrieves the top 10 users ranked by the number of requests made
26
+ GET_TOTAL_ACTIVE_AGENTS_V1 = "v1/analytics/requests/total-active-agents" # GET - Provides the total number of agents that have been active within the specified date range
27
+ GET_TOTAL_ACTIVE_PROJECTS_V1 = "v1/analytics/requests/total-active-projects" # GET - Returns the total number of projects with activity in the selected period
28
+ GET_TOTAL_ACTIVE_USERS_V1 = "v1/analytics/requests/total-active-users" # GET - Returns the total number of users who have been active within the selected period
29
+ GET_TOTAL_COST_V1 = "v1/analytics/requests/total-cost" # GET - Returns the total cost in USD incurred over the specified period
30
+ GET_TOTAL_COST_PER_DAY_V1 = "v1/analytics/requests/total-cost-per-day" # GET - Returns the total cost per day during the specified period
31
+ GET_TOTAL_REQUEST_TIME_V1 = "v1/analytics/requests/total-request-time" # GET - Returns the total processing time for all requests during the specified period
32
+ GET_TOTAL_REQUESTS_V1 = "v1/analytics/requests/total-requests" # GET - Returns the total number of requests made during the specified period
33
+ GET_TOTAL_REQUESTS_PER_DAY_V1 = "v1/analytics/requests/total-requests-per-day" # GET - Returns the total number of requests per day during the specified period
34
+ GET_TOTAL_REQUESTS_WITH_ERROR_V1 = "v1/analytics/requests/total-requests-with-error" # GET - Returns the total number of requests with errors during the specified period
35
+ GET_TOTAL_TOKENS_V1 = "v1/analytics/requests/total-tokens" # GET - Returns the total number of tokens consumed during the specified period