pygeai 0.1.51b3__py3-none-any.whl → 0.6.0b15__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (648) hide show
  1. pygeai/__init__.py +9 -1
  2. pygeai/_docs/Makefile +20 -0
  3. pygeai/_docs/make.bat +35 -0
  4. pygeai/_docs/source/conf.py +117 -0
  5. pygeai/_docs/source/content/ai_lab/cli.rst +747 -0
  6. pygeai/_docs/source/content/ai_lab/models.rst +1734 -0
  7. pygeai/_docs/source/content/ai_lab/runner.rst +253 -0
  8. pygeai/_docs/source/content/ai_lab/spec.rst +431 -0
  9. pygeai/_docs/source/content/ai_lab/usage.rst +1011 -0
  10. pygeai/_docs/source/content/ai_lab.rst +102 -0
  11. pygeai/_docs/source/content/analytics.rst +598 -0
  12. pygeai/_docs/source/content/api_reference/admin.rst +161 -0
  13. pygeai/_docs/source/content/api_reference/assistant.rst +326 -0
  14. pygeai/_docs/source/content/api_reference/auth.rst +379 -0
  15. pygeai/_docs/source/content/api_reference/chat.rst +754 -0
  16. pygeai/_docs/source/content/api_reference/embeddings.rst +154 -0
  17. pygeai/_docs/source/content/api_reference/evaluation.rst +590 -0
  18. pygeai/_docs/source/content/api_reference/feedback.rst +237 -0
  19. pygeai/_docs/source/content/api_reference/files.rst +592 -0
  20. pygeai/_docs/source/content/api_reference/gam.rst +401 -0
  21. pygeai/_docs/source/content/api_reference/health.rst +58 -0
  22. pygeai/_docs/source/content/api_reference/project.rst +738 -0
  23. pygeai/_docs/source/content/api_reference/proxy.rst +318 -0
  24. pygeai/_docs/source/content/api_reference/rag.rst +710 -0
  25. pygeai/_docs/source/content/api_reference/rerank.rst +94 -0
  26. pygeai/_docs/source/content/api_reference/secrets.rst +495 -0
  27. pygeai/_docs/source/content/api_reference/usage_limits.rst +390 -0
  28. pygeai/_docs/source/content/api_reference.rst +58 -0
  29. pygeai/_docs/source/content/authentication.rst +295 -0
  30. pygeai/_docs/source/content/chat_gui.rst +121 -0
  31. pygeai/_docs/source/content/cli.rst +203 -0
  32. pygeai/_docs/source/content/debugger.rst +651 -0
  33. pygeai/_docs/source/content/intro.rst +67 -0
  34. pygeai/_docs/source/content/migration.rst +929 -0
  35. pygeai/_docs/source/content/modules.rst +7 -0
  36. pygeai/_docs/source/content/quickstart.rst +143 -0
  37. pygeai/_docs/source/content/samples.rst +394 -0
  38. pygeai/_docs/source/index.rst +75 -0
  39. pygeai/_docs/source/modules.rst +7 -0
  40. pygeai/_docs/source/pygeai.admin.rst +29 -0
  41. pygeai/_docs/source/pygeai.analytics.rst +53 -0
  42. pygeai/_docs/source/pygeai.assistant.data.rst +21 -0
  43. pygeai/_docs/source/pygeai.assistant.data_analyst.rst +29 -0
  44. pygeai/_docs/source/pygeai.assistant.rag.rst +53 -0
  45. pygeai/_docs/source/pygeai.assistant.rst +55 -0
  46. pygeai/_docs/source/pygeai.auth.rst +29 -0
  47. pygeai/_docs/source/pygeai.chat.rst +69 -0
  48. pygeai/_docs/source/pygeai.cli.commands.flows.rst +10 -0
  49. pygeai/_docs/source/pygeai.cli.commands.lab.rst +53 -0
  50. pygeai/_docs/source/pygeai.cli.commands.rst +222 -0
  51. pygeai/_docs/source/pygeai.cli.rst +62 -0
  52. pygeai/_docs/source/pygeai.cli.texts.rst +21 -0
  53. pygeai/_docs/source/pygeai.core.base.rst +53 -0
  54. pygeai/_docs/source/pygeai.core.common.rst +37 -0
  55. pygeai/_docs/source/pygeai.core.embeddings.rst +61 -0
  56. pygeai/_docs/source/pygeai.core.feedback.rst +37 -0
  57. pygeai/_docs/source/pygeai.core.files.rst +61 -0
  58. pygeai/_docs/source/pygeai.core.llm.rst +29 -0
  59. pygeai/_docs/source/pygeai.core.plugins.rst +37 -0
  60. pygeai/_docs/source/pygeai.core.rerank.rst +53 -0
  61. pygeai/_docs/source/pygeai.core.rst +63 -0
  62. pygeai/_docs/source/pygeai.core.secrets.rst +29 -0
  63. pygeai/_docs/source/pygeai.core.services.llm.rst +29 -0
  64. pygeai/_docs/source/pygeai.core.services.rst +37 -0
  65. pygeai/_docs/source/pygeai.core.utils.rst +37 -0
  66. pygeai/_docs/source/pygeai.dbg.rst +21 -0
  67. pygeai/_docs/source/pygeai.evaluation.dataset.rst +29 -0
  68. pygeai/_docs/source/pygeai.evaluation.plan.rst +29 -0
  69. pygeai/_docs/source/pygeai.evaluation.result.rst +29 -0
  70. pygeai/_docs/source/pygeai.evaluation.rst +31 -0
  71. pygeai/_docs/source/pygeai.flows.rst +29 -0
  72. pygeai/_docs/source/pygeai.gam.rst +29 -0
  73. pygeai/_docs/source/pygeai.health.rst +29 -0
  74. pygeai/_docs/source/pygeai.lab.agents.rst +37 -0
  75. pygeai/_docs/source/pygeai.lab.processes.rst +37 -0
  76. pygeai/_docs/source/pygeai.lab.rst +65 -0
  77. pygeai/_docs/source/pygeai.lab.spec.rst +29 -0
  78. pygeai/_docs/source/pygeai.lab.strategies.rst +37 -0
  79. pygeai/_docs/source/pygeai.lab.tools.rst +37 -0
  80. pygeai/_docs/source/pygeai.man.man1.rst +10 -0
  81. pygeai/_docs/source/pygeai.man.rst +18 -0
  82. pygeai/_docs/source/pygeai.migration.rst +29 -0
  83. pygeai/_docs/source/pygeai.organization.limits.rst +45 -0
  84. pygeai/_docs/source/pygeai.organization.rst +61 -0
  85. pygeai/_docs/source/pygeai.proxy.rst +53 -0
  86. pygeai/_docs/source/pygeai.rst +35 -0
  87. pygeai/_docs/source/pygeai.tests.admin.rst +21 -0
  88. pygeai/_docs/source/pygeai.tests.analytics.rst +45 -0
  89. pygeai/_docs/source/pygeai.tests.assistants.rag.rst +37 -0
  90. pygeai/_docs/source/pygeai.tests.assistants.rst +45 -0
  91. pygeai/_docs/source/pygeai.tests.auth.rst +29 -0
  92. pygeai/_docs/source/pygeai.tests.chat.rst +45 -0
  93. pygeai/_docs/source/pygeai.tests.cli.commands.lab.rst +37 -0
  94. pygeai/_docs/source/pygeai.tests.cli.commands.rst +165 -0
  95. pygeai/_docs/source/pygeai.tests.cli.docker.rst +10 -0
  96. pygeai/_docs/source/pygeai.tests.cli.rst +46 -0
  97. pygeai/_docs/source/pygeai.tests.core.base.data.rst +29 -0
  98. pygeai/_docs/source/pygeai.tests.core.base.rst +45 -0
  99. pygeai/_docs/source/pygeai.tests.core.common.data.rst +10 -0
  100. pygeai/_docs/source/pygeai.tests.core.common.rst +37 -0
  101. pygeai/_docs/source/pygeai.tests.core.embeddings.rst +37 -0
  102. pygeai/_docs/source/pygeai.tests.core.feedback.rst +21 -0
  103. pygeai/_docs/source/pygeai.tests.core.files.rst +53 -0
  104. pygeai/_docs/source/pygeai.tests.core.llm.rst +21 -0
  105. pygeai/_docs/source/pygeai.tests.core.plugins.rst +21 -0
  106. pygeai/_docs/source/pygeai.tests.core.rerank.rst +37 -0
  107. pygeai/_docs/source/pygeai.tests.core.rst +39 -0
  108. pygeai/_docs/source/pygeai.tests.core.secrets.rst +21 -0
  109. pygeai/_docs/source/pygeai.tests.core.services.rst +21 -0
  110. pygeai/_docs/source/pygeai.tests.core.utils.rst +21 -0
  111. pygeai/_docs/source/pygeai.tests.dbg.rst +21 -0
  112. pygeai/_docs/source/pygeai.tests.evaluation.dataset.rst +21 -0
  113. pygeai/_docs/source/pygeai.tests.evaluation.plan.rst +21 -0
  114. pygeai/_docs/source/pygeai.tests.evaluation.result.rst +21 -0
  115. pygeai/_docs/source/pygeai.tests.evaluation.rst +20 -0
  116. pygeai/_docs/source/pygeai.tests.gam.rst +21 -0
  117. pygeai/_docs/source/pygeai.tests.health.rst +21 -0
  118. pygeai/_docs/source/pygeai.tests.integration.assistants.rag.rst +21 -0
  119. pygeai/_docs/source/pygeai.tests.integration.assistants.rst +18 -0
  120. pygeai/_docs/source/pygeai.tests.integration.chat.rst +21 -0
  121. pygeai/_docs/source/pygeai.tests.integration.lab.agents.rst +69 -0
  122. pygeai/_docs/source/pygeai.tests.integration.lab.processes.rst +77 -0
  123. pygeai/_docs/source/pygeai.tests.integration.lab.reasoning_strategies.rst +37 -0
  124. pygeai/_docs/source/pygeai.tests.integration.lab.rst +21 -0
  125. pygeai/_docs/source/pygeai.tests.integration.lab.tools.rst +77 -0
  126. pygeai/_docs/source/pygeai.tests.integration.rst +20 -0
  127. pygeai/_docs/source/pygeai.tests.lab.agents.rst +29 -0
  128. pygeai/_docs/source/pygeai.tests.lab.processes.rst +29 -0
  129. pygeai/_docs/source/pygeai.tests.lab.rst +49 -0
  130. pygeai/_docs/source/pygeai.tests.lab.spec.rst +29 -0
  131. pygeai/_docs/source/pygeai.tests.lab.strategies.rst +29 -0
  132. pygeai/_docs/source/pygeai.tests.lab.tools.rst +29 -0
  133. pygeai/_docs/source/pygeai.tests.migration.rst +29 -0
  134. pygeai/_docs/source/pygeai.tests.organization.limits.rst +29 -0
  135. pygeai/_docs/source/pygeai.tests.organization.rst +53 -0
  136. pygeai/_docs/source/pygeai.tests.proxy.rst +61 -0
  137. pygeai/_docs/source/pygeai.tests.rst +33 -0
  138. pygeai/admin/clients.py +14 -11
  139. pygeai/admin/endpoints.py +2 -2
  140. pygeai/analytics/clients.py +505 -0
  141. pygeai/analytics/endpoints.py +35 -0
  142. pygeai/analytics/managers.py +606 -0
  143. pygeai/analytics/mappers.py +207 -0
  144. pygeai/analytics/responses.py +240 -0
  145. pygeai/assistant/clients.py +18 -45
  146. pygeai/assistant/data/clients.py +1 -0
  147. pygeai/assistant/data_analyst/clients.py +8 -12
  148. pygeai/assistant/managers.py +195 -157
  149. pygeai/assistant/mappers.py +4 -2
  150. pygeai/assistant/rag/clients.py +27 -67
  151. pygeai/assistant/rag/mappers.py +12 -6
  152. pygeai/assistant/rag/models.py +301 -159
  153. pygeai/auth/__init__.py +0 -0
  154. pygeai/auth/clients.py +129 -0
  155. pygeai/auth/endpoints.py +6 -0
  156. pygeai/chat/clients.py +308 -37
  157. pygeai/chat/endpoints.py +3 -0
  158. pygeai/chat/iris.py +2 -8
  159. pygeai/chat/managers.py +9 -6
  160. pygeai/chat/session.py +38 -0
  161. pygeai/chat/settings.py +6 -0
  162. pygeai/chat/ui.py +678 -0
  163. pygeai/cli/__init__.py +0 -1
  164. pygeai/cli/commands/admin.py +7 -10
  165. pygeai/cli/commands/analytics.py +533 -0
  166. pygeai/cli/commands/assistant.py +9 -9
  167. pygeai/cli/commands/auth.py +299 -0
  168. pygeai/cli/commands/base.py +71 -9
  169. pygeai/cli/commands/chat.py +676 -19
  170. pygeai/cli/commands/common.py +28 -24
  171. pygeai/cli/commands/configuration.py +66 -13
  172. pygeai/cli/commands/docs.py +105 -0
  173. pygeai/cli/commands/embeddings.py +58 -11
  174. pygeai/cli/commands/evaluation.py +38 -38
  175. pygeai/cli/commands/feedback.py +3 -4
  176. pygeai/cli/commands/files.py +7 -8
  177. pygeai/cli/commands/gam.py +85 -10
  178. pygeai/cli/commands/lab/ai_lab.py +340 -484
  179. pygeai/cli/commands/lab/options.py +8 -0
  180. pygeai/cli/commands/lab/spec.py +273 -0
  181. pygeai/cli/commands/lab/utils.py +13 -0
  182. pygeai/cli/commands/llm.py +6 -7
  183. pygeai/cli/commands/migrate.py +1064 -436
  184. pygeai/cli/commands/organization.py +516 -11
  185. pygeai/cli/commands/rag.py +13 -14
  186. pygeai/cli/commands/rerank.py +3 -5
  187. pygeai/cli/commands/secrets.py +8 -9
  188. pygeai/cli/commands/usage_limits.py +18 -20
  189. pygeai/cli/commands/validators.py +144 -1
  190. pygeai/cli/commands/version.py +4 -5
  191. pygeai/cli/error_handler.py +151 -0
  192. pygeai/cli/geai.py +170 -31
  193. pygeai/cli/geai_proxy.py +86 -25
  194. pygeai/cli/install_man.py +93 -22
  195. pygeai/cli/parsers.py +75 -25
  196. pygeai/cli/texts/help.py +265 -28
  197. pygeai/core/base/clients.py +53 -12
  198. pygeai/core/base/mappers.py +11 -2
  199. pygeai/core/base/session.py +95 -11
  200. pygeai/core/common/config.py +78 -14
  201. pygeai/core/common/exceptions.py +96 -6
  202. pygeai/core/embeddings/__init__.py +19 -0
  203. pygeai/core/embeddings/clients.py +23 -5
  204. pygeai/core/embeddings/managers.py +9 -4
  205. pygeai/core/embeddings/mappers.py +16 -2
  206. pygeai/core/embeddings/responses.py +9 -2
  207. pygeai/core/feedback/clients.py +8 -3
  208. pygeai/core/files/clients.py +23 -24
  209. pygeai/core/files/managers.py +121 -30
  210. pygeai/core/files/responses.py +4 -3
  211. pygeai/core/handlers.py +10 -1
  212. pygeai/core/llm/clients.py +22 -29
  213. pygeai/core/models.py +127 -11
  214. pygeai/core/plugins/clients.py +6 -6
  215. pygeai/core/rerank/clients.py +9 -3
  216. pygeai/core/rerank/managers.py +22 -5
  217. pygeai/core/secrets/clients.py +16 -37
  218. pygeai/core/services/response.py +18 -0
  219. pygeai/core/services/rest.py +159 -49
  220. pygeai/core/utils/__init__.py +0 -0
  221. pygeai/core/utils/console.py +83 -0
  222. pygeai/core/utils/parsers.py +32 -0
  223. pygeai/core/utils/validators.py +10 -0
  224. pygeai/dbg/__init__.py +3 -0
  225. pygeai/dbg/debugger.py +854 -14
  226. pygeai/evaluation/clients.py +7 -4
  227. pygeai/evaluation/dataset/clients.py +46 -44
  228. pygeai/evaluation/plan/clients.py +28 -26
  229. pygeai/evaluation/result/clients.py +38 -5
  230. pygeai/gam/clients.py +50 -28
  231. pygeai/gam/endpoints.py +2 -1
  232. pygeai/health/__init__.py +0 -0
  233. pygeai/health/clients.py +24 -0
  234. pygeai/health/endpoints.py +1 -0
  235. pygeai/lab/__init__.py +0 -90
  236. pygeai/lab/agents/clients.py +203 -162
  237. pygeai/lab/agents/endpoints.py +4 -0
  238. pygeai/lab/agents/mappers.py +57 -7
  239. pygeai/lab/clients.py +24 -0
  240. pygeai/lab/constants.py +3 -0
  241. pygeai/lab/managers.py +571 -541
  242. pygeai/lab/models.py +108 -19
  243. pygeai/lab/processes/clients.py +332 -340
  244. pygeai/lab/processes/mappers.py +3 -3
  245. pygeai/lab/runners.py +90 -0
  246. pygeai/lab/spec/__init__.py +0 -0
  247. pygeai/lab/spec/loader.py +24 -0
  248. pygeai/lab/spec/parsers.py +39 -0
  249. pygeai/lab/strategies/clients.py +67 -63
  250. pygeai/lab/strategies/mappers.py +1 -1
  251. pygeai/lab/tools/clients.py +85 -118
  252. pygeai/lab/tools/endpoints.py +4 -0
  253. pygeai/lab/tools/mappers.py +5 -5
  254. pygeai/man/man1/geai-proxy.1 +116 -0
  255. pygeai/man/man1/geai.1 +2580 -66
  256. pygeai/migration/__init__.py +33 -0
  257. pygeai/migration/strategies.py +468 -146
  258. pygeai/migration/tools.py +170 -3
  259. pygeai/organization/clients.py +245 -50
  260. pygeai/organization/endpoints.py +17 -8
  261. pygeai/organization/limits/clients.py +34 -32
  262. pygeai/organization/limits/managers.py +108 -49
  263. pygeai/organization/managers.py +347 -53
  264. pygeai/organization/mappers.py +102 -2
  265. pygeai/organization/responses.py +58 -1
  266. pygeai/proxy/clients.py +6 -3
  267. pygeai/proxy/config.py +14 -1
  268. pygeai/proxy/managers.py +61 -33
  269. pygeai/proxy/servers.py +196 -51
  270. pygeai/proxy/tool.py +33 -16
  271. pygeai/tests/admin/__init__.py +0 -0
  272. pygeai/tests/admin/test_clients.py +148 -0
  273. pygeai/tests/analytics/__init__.py +0 -0
  274. pygeai/tests/analytics/test_clients.py +86 -0
  275. pygeai/tests/analytics/test_managers.py +94 -0
  276. pygeai/tests/analytics/test_mappers.py +84 -0
  277. pygeai/tests/analytics/test_responses.py +73 -0
  278. pygeai/tests/assistants/rag/test_clients.py +346 -0
  279. pygeai/tests/assistants/rag/test_models.py +292 -0
  280. pygeai/tests/assistants/test_clients.py +176 -82
  281. pygeai/tests/assistants/test_managers.py +191 -57
  282. pygeai/tests/auth/__init__.py +0 -0
  283. pygeai/tests/auth/test_clients.py +289 -0
  284. pygeai/tests/auth/test_oauth.py +172 -0
  285. pygeai/tests/auth/test_session_logging.py +150 -0
  286. pygeai/tests/chat/__init__.py +0 -0
  287. pygeai/tests/chat/test_clients.py +393 -0
  288. pygeai/tests/chat/test_iris.py +38 -0
  289. pygeai/tests/chat/test_session.py +62 -0
  290. pygeai/tests/chat/test_ui.py +224 -0
  291. pygeai/tests/cli/commands/__init__.py +0 -0
  292. pygeai/tests/cli/commands/lab/__init__.py +0 -0
  293. pygeai/tests/cli/commands/lab/test_ai_lab.py +786 -0
  294. pygeai/tests/cli/commands/lab/test_common.py +208 -0
  295. pygeai/tests/cli/commands/lab/test_spec.py +246 -0
  296. pygeai/tests/cli/commands/test_assistant.py +202 -0
  297. pygeai/tests/cli/commands/test_chat.py +130 -0
  298. pygeai/tests/cli/commands/test_common.py +350 -0
  299. pygeai/tests/cli/commands/test_embeddings.py +132 -0
  300. pygeai/tests/cli/commands/test_evaluation.py +656 -0
  301. pygeai/tests/cli/commands/test_feedback.py +65 -0
  302. pygeai/tests/cli/commands/test_files.py +161 -0
  303. pygeai/tests/cli/commands/test_gam.py +201 -0
  304. pygeai/tests/cli/commands/test_llm.py +114 -0
  305. pygeai/tests/cli/commands/test_migrate.py +176 -0
  306. pygeai/tests/cli/commands/test_organization.py +276 -0
  307. pygeai/tests/cli/commands/test_rag.py +266 -0
  308. pygeai/tests/cli/commands/test_rerank.py +110 -0
  309. pygeai/tests/cli/commands/test_secrets.py +171 -0
  310. pygeai/tests/cli/commands/test_show_help.py +41 -0
  311. pygeai/tests/cli/commands/test_usage_limits.py +412 -0
  312. pygeai/tests/cli/commands/test_validators.py +160 -0
  313. pygeai/tests/cli/commands/test_version.py +81 -0
  314. pygeai/tests/cli/docker/__init__.py +0 -0
  315. pygeai/tests/cli/test_credentials_flag.py +316 -0
  316. pygeai/tests/cli/test_error_handler.py +225 -0
  317. pygeai/tests/cli/test_geai_driver.py +154 -0
  318. pygeai/tests/cli/test_parsers.py +5 -5
  319. pygeai/tests/core/base/data/models.py +7 -0
  320. pygeai/tests/core/base/test_mappers.py +43 -11
  321. pygeai/tests/core/base/test_models.py +3 -1
  322. pygeai/tests/core/base/test_responses.py +53 -0
  323. pygeai/tests/core/common/__init__.py +0 -0
  324. pygeai/tests/core/common/data/__init__.py +0 -0
  325. pygeai/tests/core/common/test_config.py +186 -0
  326. pygeai/tests/core/common/test_decorators.py +69 -0
  327. pygeai/tests/core/embeddings/__init__.py +0 -0
  328. pygeai/tests/core/embeddings/test_clients.py +225 -0
  329. pygeai/tests/core/embeddings/test_managers.py +171 -0
  330. pygeai/tests/core/embeddings/test_mappers.py +142 -0
  331. pygeai/tests/core/feedback/__init__.py +0 -0
  332. pygeai/tests/core/feedback/test_clients.py +64 -0
  333. pygeai/tests/core/files/test_clients.py +128 -0
  334. pygeai/tests/core/files/test_managers.py +124 -78
  335. pygeai/tests/core/files/test_mappers.py +137 -0
  336. pygeai/tests/core/files/test_models.py +103 -0
  337. pygeai/tests/core/files/test_responses.py +122 -0
  338. pygeai/tests/core/llm/__init__.py +0 -0
  339. pygeai/tests/core/llm/test_clients.py +142 -0
  340. pygeai/tests/core/plugins/__init__.py +0 -0
  341. pygeai/tests/core/plugins/test_clients.py +66 -0
  342. pygeai/tests/core/rerank/test_clients.py +76 -0
  343. pygeai/tests/core/rerank/test_managers.py +61 -39
  344. pygeai/tests/core/secrets/__init__.py +0 -0
  345. pygeai/tests/core/secrets/test_clients.py +264 -0
  346. pygeai/tests/core/services/__init__.py +0 -0
  347. pygeai/tests/core/services/test_rest.py +273 -0
  348. pygeai/tests/core/test_handlers.py +66 -0
  349. pygeai/tests/core/utils/__init__.py +0 -0
  350. pygeai/tests/core/utils/test_console.py +80 -0
  351. pygeai/tests/dbg/__init__.py +0 -0
  352. pygeai/tests/dbg/test_debugger.py +591 -0
  353. pygeai/tests/evaluation/__init__.py +0 -0
  354. pygeai/tests/evaluation/dataset/__init__.py +0 -0
  355. pygeai/tests/evaluation/dataset/test_clients.py +265 -0
  356. pygeai/tests/evaluation/plan/__init__.py +0 -0
  357. pygeai/tests/evaluation/plan/test_clients.py +195 -0
  358. pygeai/tests/evaluation/result/__init__.py +0 -0
  359. pygeai/tests/evaluation/result/test_clients.py +66 -0
  360. pygeai/tests/gam/__init__.py +0 -0
  361. pygeai/tests/gam/test_clients.py +195 -0
  362. pygeai/tests/health/__init__.py +0 -0
  363. pygeai/tests/health/test_clients.py +41 -0
  364. pygeai/tests/integration/__init__.py +0 -0
  365. pygeai/tests/integration/assistants/__init__.py +0 -0
  366. pygeai/tests/integration/assistants/rag/__init__.py +0 -0
  367. pygeai/tests/integration/assistants/rag/test_create_rag.py +91 -0
  368. pygeai/tests/integration/chat/__init__.py +0 -0
  369. pygeai/tests/integration/chat/test_generate_image.py +158 -0
  370. pygeai/tests/integration/lab/__init__.py +0 -0
  371. pygeai/tests/integration/lab/agents/__init__.py +0 -0
  372. pygeai/tests/integration/lab/agents/test_agents_list.py +106 -0
  373. pygeai/tests/integration/lab/agents/test_create_agent.py +319 -0
  374. pygeai/tests/integration/lab/agents/test_create_sharing_link.py +70 -0
  375. pygeai/tests/integration/lab/agents/test_delete_agent.py +75 -0
  376. pygeai/tests/integration/lab/agents/test_get_agent.py +94 -0
  377. pygeai/tests/integration/lab/agents/test_publish_agent_revision.py +127 -0
  378. pygeai/tests/integration/lab/agents/test_update_agent.py +250 -0
  379. pygeai/tests/integration/lab/processes/__init__.py +0 -0
  380. pygeai/tests/integration/lab/processes/test_create_process.py +345 -0
  381. pygeai/tests/integration/lab/processes/test_create_task.py +211 -0
  382. pygeai/tests/integration/lab/processes/test_delete_process.py +111 -0
  383. pygeai/tests/integration/lab/processes/test_get_process.py +201 -0
  384. pygeai/tests/integration/lab/processes/test_list_process_instances.py +91 -0
  385. pygeai/tests/integration/lab/processes/test_list_processes.py +138 -0
  386. pygeai/tests/integration/lab/processes/test_publish_process_revision.py +232 -0
  387. pygeai/tests/integration/lab/processes/test_update_process.py +289 -0
  388. pygeai/tests/integration/lab/reasoning_strategies/__init__.py +0 -0
  389. pygeai/tests/integration/lab/reasoning_strategies/test_get_reasoning_strategy.py +70 -0
  390. pygeai/tests/integration/lab/reasoning_strategies/test_list_reasoning_strategies.py +93 -0
  391. pygeai/tests/integration/lab/reasoning_strategies/test_update_reasoning_strategy.py +149 -0
  392. pygeai/tests/integration/lab/tools/__init__.py +0 -0
  393. pygeai/tests/integration/lab/tools/test_create_tool.py +288 -0
  394. pygeai/tests/integration/lab/tools/test_delete_tool.py +87 -0
  395. pygeai/tests/integration/lab/tools/test_get_parameter.py +98 -0
  396. pygeai/tests/integration/lab/tools/test_get_tool.py +91 -0
  397. pygeai/tests/integration/lab/tools/test_list_tools.py +106 -0
  398. pygeai/tests/integration/lab/tools/test_publish_tool_revision.py +119 -0
  399. pygeai/tests/integration/lab/tools/test_set_parameter.py +114 -0
  400. pygeai/tests/integration/lab/tools/test_update_tool.py +267 -0
  401. pygeai/tests/lab/agents/__init__.py +0 -0
  402. pygeai/tests/lab/agents/test_clients.py +481 -0
  403. pygeai/tests/lab/agents/test_mappers.py +440 -0
  404. pygeai/tests/lab/processes/__init__.py +0 -0
  405. pygeai/tests/lab/processes/test_clients.py +1416 -0
  406. pygeai/tests/lab/processes/test_mappers.py +1092 -0
  407. pygeai/tests/lab/spec/__init__.py +0 -0
  408. pygeai/tests/lab/spec/test_loader.py +59 -0
  409. pygeai/tests/lab/spec/test_parsers.py +182 -0
  410. pygeai/tests/lab/strategies/__init__.py +0 -0
  411. pygeai/tests/lab/strategies/test_clients.py +241 -0
  412. pygeai/tests/lab/strategies/test_mappers.py +132 -0
  413. pygeai/tests/lab/test_managers.py +553 -0
  414. pygeai/tests/lab/test_models.py +500 -3
  415. pygeai/tests/lab/tools/__init__.py +0 -0
  416. pygeai/tests/lab/tools/test_clients.py +521 -0
  417. pygeai/tests/lab/tools/test_mappers.py +198 -0
  418. pygeai/tests/migration/__init__.py +0 -0
  419. pygeai/tests/migration/test_strategies.py +405 -0
  420. pygeai/tests/migration/test_tools.py +159 -0
  421. pygeai/tests/organization/limits/test_clients.py +567 -0
  422. pygeai/tests/organization/limits/test_managers.py +298 -56
  423. pygeai/tests/organization/test_clients.py +600 -30
  424. pygeai/tests/organization/test_managers.py +424 -0
  425. pygeai/tests/organization/test_mappers.py +153 -0
  426. pygeai/tests/organization/test_responses.py +137 -0
  427. pygeai/tests/proxy/__init__.py +1 -0
  428. pygeai/tests/proxy/test_clients.py +397 -0
  429. pygeai/tests/proxy/test_config.py +171 -0
  430. pygeai/tests/proxy/test_integration.py +305 -0
  431. pygeai/tests/proxy/test_managers.py +312 -0
  432. pygeai/tests/proxy/test_servers.py +387 -0
  433. pygeai/tests/proxy/test_tool.py +176 -0
  434. pygeai/tests/snippets/analytics/__init__.py +0 -0
  435. pygeai/tests/snippets/analytics/get_agent_usage_per_user.py +16 -0
  436. pygeai/tests/snippets/analytics/get_agents_created_and_modified.py +11 -0
  437. pygeai/tests/snippets/analytics/get_average_cost_per_request.py +10 -0
  438. pygeai/tests/snippets/analytics/get_overall_error_rate.py +10 -0
  439. pygeai/tests/snippets/analytics/get_top_10_agents_by_requests.py +12 -0
  440. pygeai/tests/snippets/analytics/get_total_active_users.py +10 -0
  441. pygeai/tests/snippets/analytics/get_total_cost.py +10 -0
  442. pygeai/tests/snippets/analytics/get_total_requests_per_day.py +12 -0
  443. pygeai/tests/snippets/analytics/get_total_tokens.py +12 -0
  444. pygeai/tests/snippets/auth/__init__.py +0 -0
  445. pygeai/tests/snippets/chat/chat_completion_with_reasoning_effort.py +18 -0
  446. pygeai/tests/snippets/chat/get_response.py +15 -0
  447. pygeai/tests/snippets/chat/get_response_complete_example.py +67 -0
  448. pygeai/tests/snippets/chat/get_response_streaming.py +20 -0
  449. pygeai/tests/snippets/chat/get_response_with_files.py +16 -0
  450. pygeai/tests/snippets/chat/get_response_with_instructions.py +19 -0
  451. pygeai/tests/snippets/chat/get_response_with_metadata.py +24 -0
  452. pygeai/tests/snippets/chat/get_response_with_parallel_tools.py +58 -0
  453. pygeai/tests/snippets/chat/get_response_with_reasoning.py +21 -0
  454. pygeai/tests/snippets/chat/get_response_with_store.py +38 -0
  455. pygeai/tests/snippets/chat/get_response_with_tools.py +36 -0
  456. pygeai/tests/snippets/chat/get_response_with_truncation.py +24 -0
  457. pygeai/tests/snippets/dbg/__init__.py +0 -0
  458. pygeai/tests/snippets/dbg/basic_debugging.py +32 -0
  459. pygeai/tests/snippets/dbg/breakpoint_management.py +48 -0
  460. pygeai/tests/snippets/dbg/file_debugging.py +72 -0
  461. pygeai/tests/snippets/dbg/module_debugging.py +61 -0
  462. pygeai/tests/snippets/dbg/stack_navigation.py +45 -0
  463. pygeai/tests/snippets/dbg/stepping_example.py +40 -0
  464. pygeai/tests/snippets/embeddings/cache_example.py +31 -0
  465. pygeai/tests/snippets/embeddings/cohere_example.py +41 -0
  466. pygeai/tests/snippets/embeddings/openai_base64_example.py +27 -0
  467. pygeai/tests/snippets/embeddings/openai_example.py +30 -0
  468. pygeai/tests/snippets/embeddings/similarity_example.py +42 -0
  469. pygeai/tests/snippets/evaluation/dataset/__init__.py +0 -0
  470. pygeai/tests/snippets/evaluation/dataset/complete_workflow_example.py +195 -0
  471. pygeai/tests/snippets/evaluation/dataset/create_dataset.py +26 -0
  472. pygeai/tests/snippets/evaluation/dataset/create_dataset_from_file.py +11 -0
  473. pygeai/tests/snippets/evaluation/dataset/create_dataset_row.py +17 -0
  474. pygeai/tests/snippets/evaluation/dataset/create_expected_source.py +18 -0
  475. pygeai/tests/snippets/evaluation/dataset/create_filter_variable.py +19 -0
  476. pygeai/tests/snippets/evaluation/dataset/delete_dataset.py +9 -0
  477. pygeai/tests/snippets/evaluation/dataset/delete_dataset_row.py +10 -0
  478. pygeai/tests/snippets/evaluation/dataset/delete_expected_source.py +15 -0
  479. pygeai/tests/snippets/evaluation/dataset/delete_filter_variable.py +15 -0
  480. pygeai/tests/snippets/evaluation/dataset/get_dataset.py +9 -0
  481. pygeai/tests/snippets/evaluation/dataset/get_dataset_row.py +10 -0
  482. pygeai/tests/snippets/evaluation/dataset/get_expected_source.py +15 -0
  483. pygeai/tests/snippets/evaluation/dataset/get_filter_variable.py +15 -0
  484. pygeai/tests/snippets/evaluation/dataset/list_dataset_rows.py +9 -0
  485. pygeai/tests/snippets/evaluation/dataset/list_datasets.py +6 -0
  486. pygeai/tests/snippets/evaluation/dataset/list_expected_sources.py +10 -0
  487. pygeai/tests/snippets/evaluation/dataset/list_filter_variables.py +10 -0
  488. pygeai/tests/snippets/evaluation/dataset/update_dataset.py +15 -0
  489. pygeai/tests/snippets/evaluation/dataset/update_dataset_row.py +20 -0
  490. pygeai/tests/snippets/evaluation/dataset/update_expected_source.py +18 -0
  491. pygeai/tests/snippets/evaluation/dataset/update_filter_variable.py +19 -0
  492. pygeai/tests/snippets/evaluation/dataset/upload_dataset_rows_file.py +10 -0
  493. pygeai/tests/snippets/evaluation/plan/__init__.py +0 -0
  494. pygeai/tests/snippets/evaluation/plan/add_plan_system_metric.py +13 -0
  495. pygeai/tests/snippets/evaluation/plan/complete_workflow_example.py +136 -0
  496. pygeai/tests/snippets/evaluation/plan/create_evaluation_plan.py +24 -0
  497. pygeai/tests/snippets/evaluation/plan/create_rag_evaluation_plan.py +22 -0
  498. pygeai/tests/snippets/evaluation/plan/delete_evaluation_plan.py +9 -0
  499. pygeai/tests/snippets/evaluation/plan/delete_plan_system_metric.py +13 -0
  500. pygeai/tests/snippets/evaluation/plan/execute_evaluation_plan.py +11 -0
  501. pygeai/tests/snippets/evaluation/plan/get_evaluation_plan.py +9 -0
  502. pygeai/tests/snippets/evaluation/plan/get_plan_system_metric.py +13 -0
  503. pygeai/tests/snippets/evaluation/plan/get_system_metric.py +9 -0
  504. pygeai/tests/snippets/evaluation/plan/list_evaluation_plans.py +7 -0
  505. pygeai/tests/snippets/evaluation/plan/list_plan_system_metrics.py +9 -0
  506. pygeai/tests/snippets/evaluation/plan/list_system_metrics.py +7 -0
  507. pygeai/tests/snippets/evaluation/plan/update_evaluation_plan.py +22 -0
  508. pygeai/tests/snippets/evaluation/plan/update_plan_system_metric.py +14 -0
  509. pygeai/tests/snippets/evaluation/result/__init__.py +0 -0
  510. pygeai/tests/snippets/evaluation/result/complete_workflow_example.py +150 -0
  511. pygeai/tests/snippets/evaluation/result/get_evaluation_result.py +26 -0
  512. pygeai/tests/snippets/evaluation/result/list_evaluation_results.py +17 -0
  513. pygeai/tests/snippets/files/delete_file.py +1 -4
  514. pygeai/tests/snippets/files/get_file_content.py +2 -4
  515. pygeai/tests/snippets/files/get_file_data.py +1 -4
  516. pygeai/tests/snippets/files/get_file_list.py +1 -6
  517. pygeai/tests/snippets/files/upload_file.py +1 -5
  518. pygeai/tests/snippets/gam/gam_access_token.py +87 -0
  519. pygeai/tests/snippets/lab/agentic_flow_example_1.py +25 -23
  520. pygeai/tests/snippets/lab/agentic_flow_example_4.py +23 -23
  521. pygeai/tests/snippets/lab/agents/create_agent.py +5 -8
  522. pygeai/tests/snippets/lab/agents/create_agent_2.py +1 -5
  523. pygeai/tests/snippets/lab/agents/create_agent_edge_case.py +48 -0
  524. pygeai/tests/snippets/lab/agents/create_agent_with_permissions.py +39 -0
  525. pygeai/tests/snippets/lab/agents/create_agent_with_properties.py +46 -0
  526. pygeai/tests/snippets/lab/agents/create_agent_without_instructions.py +48 -0
  527. pygeai/tests/snippets/lab/agents/delete_agent.py +1 -5
  528. pygeai/tests/snippets/lab/agents/get_agent.py +2 -11
  529. pygeai/tests/snippets/lab/agents/get_agent_with_new_fields.py +62 -0
  530. pygeai/tests/snippets/lab/agents/get_sharing_link.py +2 -7
  531. pygeai/tests/snippets/lab/agents/list_agents.py +4 -7
  532. pygeai/tests/snippets/lab/agents/publish_agent_revision.py +2 -6
  533. pygeai/tests/snippets/lab/agents/update_agent.py +1 -5
  534. pygeai/tests/snippets/lab/agents/update_agent_properties.py +50 -0
  535. pygeai/tests/snippets/lab/assistant_to_agent.py +191 -0
  536. pygeai/tests/snippets/lab/crud_ui.py +462 -0
  537. pygeai/tests/snippets/lab/processes/create_process.py +3 -5
  538. pygeai/tests/snippets/lab/processes/create_task.py +3 -5
  539. pygeai/tests/snippets/lab/processes/jobs/list_jobs.py +10 -19
  540. pygeai/tests/snippets/lab/processes/kbs/create_kb.py +2 -5
  541. pygeai/tests/snippets/lab/processes/kbs/get_kb.py +10 -16
  542. pygeai/tests/snippets/lab/processes/kbs/list_kbs.py +13 -20
  543. pygeai/tests/snippets/lab/processes/kbs/try_all.py +5 -7
  544. pygeai/tests/snippets/lab/processes/list_processes.py +5 -7
  545. pygeai/tests/snippets/lab/runner_1.py +1 -1
  546. pygeai/tests/snippets/lab/samples/summarize_files.py +3 -3
  547. pygeai/tests/snippets/lab/strategies/create_reasoning_strategy.py +2 -5
  548. pygeai/tests/snippets/lab/strategies/get_reasoning_strategy.py +2 -5
  549. pygeai/tests/snippets/lab/strategies/list_reasoning_strategies.py +3 -6
  550. pygeai/tests/snippets/lab/strategies/update_reasoning_strategy.py +2 -5
  551. pygeai/tests/snippets/lab/tools/create_tool.py +4 -10
  552. pygeai/tests/snippets/lab/tools/create_tool_edge_case.py +50 -0
  553. pygeai/tests/snippets/lab/tools/delete_tool.py +2 -6
  554. pygeai/tests/snippets/lab/tools/get_parameter.py +5 -7
  555. pygeai/tests/snippets/lab/tools/get_tool.py +5 -7
  556. pygeai/tests/snippets/lab/tools/list_tools.py +3 -7
  557. pygeai/tests/snippets/lab/tools/publish_tool_revision.py +3 -5
  558. pygeai/tests/snippets/lab/tools/set_parameters.py +4 -9
  559. pygeai/tests/snippets/lab/tools/update_tool.py +4 -8
  560. pygeai/tests/snippets/lab/use_cases/__init__.py +0 -0
  561. pygeai/tests/snippets/lab/use_cases/create_cli_expert.py +1640 -0
  562. pygeai/tests/snippets/lab/use_cases/create_lab_expert.py +4541 -0
  563. pygeai/tests/snippets/lab/use_cases/create_tool_headless_web_browser.py +133 -0
  564. pygeai/tests/snippets/lab/use_cases/create_web_designer.py +189 -0
  565. pygeai/tests/snippets/lab/use_cases/create_web_reader.py +185 -0
  566. pygeai/tests/snippets/lab/{file_summarizer_example.py → use_cases/file_summarizer_example.py} +3 -3
  567. pygeai/tests/snippets/lab/{file_summarizer_example_2.py → use_cases/file_summarizer_example_2.py} +12 -12
  568. pygeai/tests/snippets/lab/use_cases/update_cli_expert.py +1773 -0
  569. pygeai/tests/snippets/lab/use_cases/update_lab_expert.py +4541 -0
  570. pygeai/tests/snippets/lab/use_cases/update_web_designer.py +188 -0
  571. pygeai/tests/snippets/lab/use_cases/update_web_reader.py +195 -0
  572. pygeai/tests/snippets/lab/use_cases/update_web_reader_with_tool.py +210 -0
  573. pygeai/tests/snippets/migrate/__init__.py +45 -0
  574. pygeai/tests/snippets/migrate/agent_migration.py +110 -0
  575. pygeai/tests/snippets/migrate/assistant_migration.py +64 -0
  576. pygeai/tests/snippets/migrate/orchestrator_examples.py +179 -0
  577. pygeai/tests/snippets/migrate/process_migration.py +64 -0
  578. pygeai/tests/snippets/migrate/project_migration.py +42 -0
  579. pygeai/tests/snippets/migrate/tool_migration.py +64 -0
  580. pygeai/tests/snippets/organization/add_project_member.py +10 -0
  581. pygeai/tests/snippets/organization/add_project_member_batch.py +44 -0
  582. pygeai/tests/snippets/organization/create_project.py +2 -2
  583. pygeai/tests/snippets/organization/get_memberships.py +12 -0
  584. pygeai/tests/snippets/organization/get_organization_members.py +6 -0
  585. pygeai/tests/snippets/organization/get_project_members.py +6 -0
  586. pygeai/tests/snippets/organization/get_project_memberships.py +12 -0
  587. pygeai/tests/snippets/organization/get_project_roles.py +6 -0
  588. pygeai/vendor/a2a/__init__.py +1 -0
  589. pygeai/vendor/a2a/auth/__init__.py +0 -0
  590. pygeai/vendor/a2a/auth/user.py +31 -0
  591. pygeai/vendor/a2a/client/__init__.py +19 -0
  592. pygeai/vendor/a2a/client/client.py +425 -0
  593. pygeai/vendor/a2a/client/errors.py +33 -0
  594. pygeai/vendor/a2a/client/helpers.py +22 -0
  595. pygeai/vendor/a2a/py.typed +0 -0
  596. pygeai/vendor/a2a/server/__init__.py +1 -0
  597. pygeai/vendor/a2a/server/agent_execution/__init__.py +18 -0
  598. pygeai/vendor/a2a/server/agent_execution/agent_executor.py +44 -0
  599. pygeai/vendor/a2a/server/agent_execution/context.py +155 -0
  600. pygeai/vendor/a2a/server/agent_execution/request_context_builder.py +20 -0
  601. pygeai/vendor/a2a/server/agent_execution/simple_request_context_builder.py +77 -0
  602. pygeai/vendor/a2a/server/apps/__init__.py +16 -0
  603. pygeai/vendor/a2a/server/apps/jsonrpc/__init__.py +16 -0
  604. pygeai/vendor/a2a/server/apps/jsonrpc/fastapi_app.py +88 -0
  605. pygeai/vendor/a2a/server/apps/jsonrpc/jsonrpc_app.py +426 -0
  606. pygeai/vendor/a2a/server/apps/jsonrpc/starlette_app.py +123 -0
  607. pygeai/vendor/a2a/server/context.py +23 -0
  608. pygeai/vendor/a2a/server/events/__init__.py +21 -0
  609. pygeai/vendor/a2a/server/events/event_consumer.py +149 -0
  610. pygeai/vendor/a2a/server/events/event_queue.py +156 -0
  611. pygeai/vendor/a2a/server/events/in_memory_queue_manager.py +85 -0
  612. pygeai/vendor/a2a/server/events/queue_manager.py +35 -0
  613. pygeai/vendor/a2a/server/request_handlers/__init__.py +20 -0
  614. pygeai/vendor/a2a/server/request_handlers/default_request_handler.py +435 -0
  615. pygeai/vendor/a2a/server/request_handlers/jsonrpc_handler.py +327 -0
  616. pygeai/vendor/a2a/server/request_handlers/request_handler.py +161 -0
  617. pygeai/vendor/a2a/server/request_handlers/response_helpers.py +133 -0
  618. pygeai/vendor/a2a/server/tasks/__init__.py +20 -0
  619. pygeai/vendor/a2a/server/tasks/inmemory_push_notifier.py +62 -0
  620. pygeai/vendor/a2a/server/tasks/inmemory_task_store.py +51 -0
  621. pygeai/vendor/a2a/server/tasks/push_notifier.py +25 -0
  622. pygeai/vendor/a2a/server/tasks/result_aggregator.py +151 -0
  623. pygeai/vendor/a2a/server/tasks/task_manager.py +253 -0
  624. pygeai/vendor/a2a/server/tasks/task_store.py +22 -0
  625. pygeai/vendor/a2a/server/tasks/task_updater.py +155 -0
  626. pygeai/vendor/a2a/types.py +1624 -0
  627. pygeai/vendor/a2a/utils/__init__.py +40 -0
  628. pygeai/vendor/a2a/utils/artifact.py +72 -0
  629. pygeai/vendor/a2a/utils/errors.py +69 -0
  630. pygeai/vendor/a2a/utils/helpers.py +176 -0
  631. pygeai/vendor/a2a/utils/message.py +83 -0
  632. pygeai/vendor/a2a/utils/task.py +57 -0
  633. pygeai/vendor/a2a/utils/telemetry.py +299 -0
  634. pygeai-0.6.0b15.dist-info/METADATA +205 -0
  635. pygeai-0.6.0b15.dist-info/RECORD +799 -0
  636. {pygeai-0.1.51b3.dist-info → pygeai-0.6.0b15.dist-info}/WHEEL +1 -1
  637. {pygeai-0.1.51b3.dist-info → pygeai-0.6.0b15.dist-info}/entry_points.txt +2 -1
  638. {pygeai-0.1.51b3.dist-info → pygeai-0.6.0b15.dist-info}/licenses/LICENSE +13 -1
  639. pygeai-0.6.0b15.dist-info/top_level.txt +1 -0
  640. docs/geai-proxy/README.md +0 -145
  641. docs/source/conf.py +0 -45
  642. pygeai/tests/core/test_managers.py +0 -233
  643. pygeai-0.1.51b3.dist-info/METADATA +0 -130
  644. pygeai-0.1.51b3.dist-info/RECORD +0 -324
  645. pygeai-0.1.51b3.dist-info/top_level.txt +0 -3
  646. scripts/bump_beta_version.py +0 -56
  647. {scripts → pygeai/analytics}/__init__.py +0 -0
  648. /pygeai/tests/snippets/lab/{c_code_fixer_agent_flow.py → use_cases/c_code_fixer_agent_flow.py} +0 -0
@@ -0,0 +1,754 @@
1
+ Chat
2
+ ====
3
+
4
+ Chat Completion
5
+ ~~~~~~~~~~~~~~~
6
+
7
+ The GEAI SDK provides functionality to interact with the Globant Enterprise AI chat system, allowing users to generate chat completions using specified models and parameters. This can be achieved through the command line interface, the low-level service layer (ChatClient), or the high-level service layer (ChatManager). The `stream` parameter, which enables streaming responses, is supported in the command line and low-level service layer but not in the high-level service layer.
8
+
9
+ Command Line
10
+ ^^^^^^^^^^^^
11
+
12
+ The `geai chat completion` command generates a chat completion based on the provided model and messages. Various flags allow customization of the response, such as streaming, temperature, and maximum tokens.
13
+
14
+ .. code-block:: shell
15
+
16
+ geai chat completion \
17
+ --model "saia:assistant:Welcome data Assistant 3" \
18
+ --messages '[{"role": "user", "content": "Hi, welcome to Globant Enterprise AI!!"}]' \
19
+ --temperature 0.7 \
20
+ --max-tokens 1000 \
21
+ --stream 1
22
+
23
+ To use a different API key alias for authentication:
24
+
25
+ .. code-block:: shell
26
+
27
+ geai --alias admin chat completion \
28
+ --model "saia:assistant:Welcome data Assistant 3" \
29
+ --messages '[{"role": "user", "content": "What is Globant Enterprise AI?"}]' \
30
+ --temperature 0.5 \
31
+ --max-tokens 500
32
+
33
+ For a non-streaming response with additional parameters like frequency and presence penalties:
34
+
35
+ .. code-block:: shell
36
+
37
+ geai chat completion \
38
+ --model "saia:assistant:Welcome data Assistant 3" \
39
+ --messages '[{"role": "user", "content": "Can you explain AI solutions offered by Globant?"}]' \
40
+ --temperature 0.6 \
41
+ --max-tokens 800 \
42
+ --frequency-penalty 0.1 \
43
+ --presence-penalty 0.2 \
44
+ --stream 0
45
+
46
+ Using tools and tool choice to fetch weather data:
47
+
48
+ .. code-block:: shell
49
+
50
+ geai chat completion \
51
+ --model "saia:assistant:Welcome data Assistant 3" \
52
+ --messages '[{"role": "user", "content": "Please get the current weather for San Francisco."}]' \
53
+ --temperature 0.6 \
54
+ --max-tokens 800 \
55
+ --tools '[{"name": "get_weather", "description": "Fetches the current weather for a given location", "parameters": {"type": "object", "properties": {"location": {"type": "string", "description": "City name"}}, "required": ["location"]}, "strict": true}]' \
56
+ --tool-choice '{"type": "function", "function": {"name": "get_weather"}}' \
57
+ --stream 1
58
+
59
+ Low Level Service Layer
60
+ ^^^^^^^^^^^^^^^^^^^^^^^
61
+
62
+ The `ChatClient` class provides a low-level interface to generate chat completions. It supports both streaming and non-streaming responses and allows fine-grained control over parameters.
63
+
64
+ .. code-block:: python
65
+
66
+ from pygeai.chat.clients import ChatClient
67
+
68
+ client = ChatClient()
69
+
70
+ response = client.chat_completion(
71
+ model="saia:assistant:Welcome data Assistant 3",
72
+ messages=[{"role": "user", "content": "What is Globant Enterprise AI?"}],
73
+ temperature=0.5,
74
+ max_tokens=500,
75
+ stream=False
76
+ )
77
+ print(response)
78
+
79
+ Streaming response with tools:
80
+
81
+ .. code-block:: python
82
+
83
+ from pygeai.chat.clients import ChatClient
84
+
85
+ client = ChatClient()
86
+
87
+ llm_settings = {
88
+ "temperature": 0.6,
89
+ "max_tokens": 800,
90
+ "frequency_penalty": 0.1,
91
+ "presence_penalty": 0.2
92
+ }
93
+
94
+ messages = [{"role": "user", "content": "Please get the current weather for San Francisco."}]
95
+
96
+ tools = [
97
+ {
98
+ "name": "get_weather",
99
+ "description": "Fetches the current weather for a given location",
100
+ "parameters": {
101
+ "type": "object",
102
+ "properties": {"location": {"type": "string", "description": "City name"}},
103
+ "required": ["location"]
104
+ },
105
+ "strict": True
106
+ }
107
+ ]
108
+
109
+ tool_choice = {"type": "function", "function": {"name": "get_weather"}}
110
+
111
+ response = client.chat_completion(
112
+ model="saia:assistant:Welcome data Assistant 3",
113
+ messages=messages,
114
+ stream=True,
115
+ tools=tools,
116
+ tool_choice=tool_choice,
117
+ **llm_settings
118
+ )
119
+
120
+ for chunk in response:
121
+ print(chunk, end="")
122
+
123
+ Using variables and thread ID:
124
+
125
+ .. code-block:: python
126
+
127
+ from pygeai.chat.clients import ChatClient
128
+
129
+ client = ChatClient()
130
+
131
+ response = client.chat_completion(
132
+ model="saia:assistant:Welcome data Assistant 3",
133
+ messages=[
134
+ {"role": "system", "content": "You are a helpful assistant for Globant Enterprise AI."},
135
+ {"role": "user", "content": "What AI solutions does Globant offer?"}
136
+ ],
137
+ temperature=0.8,
138
+ max_tokens=2000,
139
+ presence_penalty=0.1,
140
+ thread_id="thread_123e4567-e89b-12d3-a456-426614174000",
141
+ variables=[{"key": "user_region", "value": "North America"}, {"key": "industry", "value": "Technology"}],
142
+ stream=False
143
+ )
144
+ print(response)
145
+
146
+ High Level Service Layer
147
+ ^^^^^^^^^^^^^^^^^^^^^^^^
148
+
149
+ The `ChatManager` class provides a high-level interface for generating chat completions. It does not support streaming responses but simplifies the process by using structured models like `ChatMessageList` and `LlmSettings`.
150
+
151
+ .. code-block:: python
152
+
153
+ from pygeai.chat.managers import ChatManager
154
+ from pygeai.core.models import LlmSettings, ChatMessageList, ChatMessage
155
+
156
+ manager = ChatManager()
157
+
158
+ llm_settings = LlmSettings(
159
+ temperature=0.5,
160
+ max_tokens=500,
161
+ frequency_penalty=0.2
162
+ )
163
+
164
+ messages = ChatMessageList(
165
+ messages=[ChatMessage(role="user", content="Can you explain what Globant Enterprise AI does?")]
166
+ )
167
+
168
+ response = manager.chat_completion(
169
+ model="saia:assistant:Welcome data Assistant 3",
170
+ messages=messages,
171
+ llm_settings=llm_settings
172
+ )
173
+ print(response)
174
+
175
+ Using tools to check weather and send an email:
176
+
177
+ .. code-block:: python
178
+
179
+ from pygeai.chat.managers import ChatManager
180
+ from pygeai.core.models import LlmSettings, ChatMessageList, ChatMessage, ChatTool, ChatToolList
181
+
182
+ manager = ChatManager()
183
+
184
+ llm_settings = LlmSettings(
185
+ temperature=0.7,
186
+ max_tokens=1000,
187
+ frequency_penalty=0.3,
188
+ presence_penalty=0.2
189
+ )
190
+
191
+ messages = ChatMessageList(
192
+ messages=[ChatMessage(role="user", content="Can you check the weather for New York and send an email summary?")]
193
+ )
194
+
195
+ tools = ChatToolList(
196
+ variables=[
197
+ ChatTool(
198
+ name="get_weather",
199
+ description="Fetches the current weather for a given location",
200
+ parameters={
201
+ "type": "object",
202
+ "properties": {"location": {"type": "string", "description": "City name"}},
203
+ "required": ["location"]
204
+ },
205
+ strict=True
206
+ ),
207
+ ChatTool(
208
+ name="send_email",
209
+ description="Sends an email to a recipient with a subject and body",
210
+ parameters={
211
+ "type": "object",
212
+ "properties": {
213
+ "recipient": {"type": "string", "description": "Email address"},
214
+ "subject": {"type": "string", "description": "Email subject"},
215
+ "body": {"type": "string", "description": "Email content"}
216
+ },
217
+ "required": ["recipient", "subject", "body"]
218
+ },
219
+ strict=False
220
+ )
221
+ ]
222
+ )
223
+
224
+ response = manager.chat_completion(
225
+ model="saia:assistant:Welcome data Assistant 3",
226
+ messages=messages,
227
+ llm_settings=llm_settings,
228
+ tools=tools
229
+ )
230
+ print(response)
231
+
232
+ With variables and thread ID:
233
+
234
+ .. code-block:: python
235
+
236
+ from pygeai.chat.managers import ChatManager
237
+ from pygeai.core.models import LlmSettings, ChatMessageList, ChatMessage, ChatVariable, ChatVariableList
238
+
239
+ manager = ChatManager()
240
+
241
+ llm_settings = LlmSettings(
242
+ temperature=0.8,
243
+ max_tokens=2000,
244
+ presence_penalty=0.1
245
+ )
246
+
247
+ messages = ChatMessageList(
248
+ messages=[
249
+ ChatMessage(role="system", content="You are a helpful assistant for Globant Enterprise AI."),
250
+ ChatMessage(role="user", content="What AI solutions does Globant offer?")
251
+ ]
252
+ )
253
+
254
+ variables = ChatVariableList(
255
+ variables=[
256
+ ChatVariable(key="user_region", value="North America"),
257
+ ChatVariable(key="industry", value="Technology")
258
+ ]
259
+ )
260
+
261
+ response = manager.chat_completion(
262
+ model="saia:assistant:Welcome data Assistant 3",
263
+ messages=messages,
264
+ llm_settings=llm_settings,
265
+ thread_id="thread_123e4567-e89b-12d3-a456-426614174000",
266
+ variables=variables
267
+ )
268
+ print(response)
269
+
270
+ With tool choice:
271
+
272
+ .. code-block:: python
273
+
274
+ from pygeai.chat.managers import ChatManager
275
+ from pygeai.core.models import LlmSettings, ChatMessageList, ChatMessage, ChatTool, ChatToolList, ToolChoice, ToolChoiceObject, ToolChoiceFunction
276
+
277
+ manager = ChatManager()
278
+
279
+ llm_settings = LlmSettings(
280
+ temperature=0.6,
281
+ max_tokens=800,
282
+ frequency_penalty=0.1,
283
+ presence_penalty=0.2
284
+ )
285
+
286
+ messages = ChatMessageList(
287
+ messages=[ChatMessage(role="user", content="Please get the current weather for San Francisco.")]
288
+ )
289
+
290
+ tools = ChatToolList(
291
+ variables=[
292
+ ChatTool(
293
+ name="get_weather",
294
+ description="Fetches the current weather for a given location",
295
+ parameters={
296
+ "type": "object",
297
+ "properties": {"location": {"type": "string", "description": "City name"}},
298
+ "required": ["location"]
299
+ },
300
+ strict=True
301
+ ),
302
+ ChatTool(
303
+ name="send_notification",
304
+ description="Sends a notification with a message",
305
+ parameters={
306
+ "type": "object",
307
+ "properties": {"message": {"type": "string", "description": "Notification content"}},
308
+ "required": ["message"]
309
+ },
310
+ strict=False
311
+ )
312
+ ]
313
+ )
314
+
315
+ tool_choice = ToolChoice(
316
+ value=ToolChoiceObject(
317
+ function=ToolChoiceFunction(name="get_weather")
318
+ )
319
+ )
320
+
321
+ response = manager.chat_completion(
322
+ model="saia:assistant:Welcome data Assistant 3",
323
+ messages=messages,
324
+ llm_settings=llm_settings,
325
+ tool_choice=tool_choice,
326
+ tools=tools
327
+ )
328
+ print(response)
329
+
330
+ Image Generation
331
+ ~~~~~~~~~~~~~~~~
332
+
333
+ The GEAI SDK provides functionality to generate images using AI models. This can be achieved through the command line interface or the low-level service layer (ChatClient).
334
+
335
+ Command Line
336
+ ^^^^^^^^^^^^
337
+
338
+ The `geai chat generate-image` command generates images based on the provided model and parameters.
339
+
340
+ .. code-block:: shell
341
+
342
+ geai chat generate-image \
343
+ --model "openai/dall-e-3" \
344
+ --prompt "A futuristic city with flying cars at sunset" \
345
+ --n 1 \
346
+ --quality "hd" \
347
+ --size "1024x1024" \
348
+ --aspect-ratio "1:1"
349
+
350
+ Generate multiple images with different aspect ratio:
351
+
352
+ .. code-block:: shell
353
+
354
+ geai chat generate-image \
355
+ --model "openai/dall-e-3" \
356
+ --prompt "A serene mountain landscape with a lake" \
357
+ --n 2 \
358
+ --quality "standard" \
359
+ --size "1792x1024" \
360
+ --aspect-ratio "16:9"
361
+
362
+ Low Level Service Layer
363
+ ^^^^^^^^^^^^^^^^^^^^^^^
364
+
365
+ The `ChatClient.generate_image` method provides a low-level interface to generate images.
366
+
367
+ .. code-block:: python
368
+
369
+ from pygeai.chat.clients import ChatClient
370
+
371
+ client = ChatClient()
372
+
373
+ response = client.generate_image(
374
+ model="openai/dall-e-3",
375
+ prompt="A futuristic city with flying cars at sunset",
376
+ n=1,
377
+ quality="hd",
378
+ size="1024x1024",
379
+ aspect_ratio="1:1"
380
+ )
381
+ print(response)
382
+
383
+ Generate images without aspect ratio specification:
384
+
385
+ .. code-block:: python
386
+
387
+ from pygeai.chat.clients import ChatClient
388
+
389
+ client = ChatClient()
390
+
391
+ response = client.generate_image(
392
+ model="openai/dall-e-3",
393
+ prompt="An abstract painting with vibrant colors",
394
+ n=1,
395
+ quality="standard",
396
+ size="1024x1024"
397
+ )
398
+ print(response)
399
+
400
+ Image Editing
401
+ ~~~~~~~~~~~~~
402
+
403
+ The GEAI SDK provides functionality to edit existing images using AI models. This can be achieved through the command line interface or the low-level service layer (ChatClient).
404
+
405
+ Command Line
406
+ ^^^^^^^^^^^^
407
+
408
+ The `geai chat edit-image` command edits an existing image based on the provided instructions.
409
+
410
+ .. code-block:: shell
411
+
412
+ geai chat edit-image \
413
+ --model "openai/dall-e-2" \
414
+ --prompt "Remove the ball from the image" \
415
+ --image "https://example.com/image.jpg" \
416
+ --size "1024x1024" \
417
+ --n 1 \
418
+ --quality "high"
419
+
420
+ Edit with multiple variations:
421
+
422
+ .. code-block:: shell
423
+
424
+ geai chat edit-image \
425
+ --model "openai/dall-e-2" \
426
+ --prompt "Change the background to a beach scene" \
427
+ --image "https://example.com/photo.jpg" \
428
+ --size "512x512" \
429
+ --n 3 \
430
+ --quality "standard"
431
+
432
+ Low Level Service Layer
433
+ ^^^^^^^^^^^^^^^^^^^^^^^
434
+
435
+ The `ChatClient.edit_image` method provides a low-level interface to edit images.
436
+
437
+ .. code-block:: python
438
+
439
+ from pygeai.chat.clients import ChatClient
440
+
441
+ client = ChatClient()
442
+
443
+ response = client.edit_image(
444
+ model="openai/dall-e-2",
445
+ prompt="Remove the ball from the image",
446
+ image="https://example.com/image.jpg",
447
+ size="1024x1024",
448
+ n=1,
449
+ quality="high"
450
+ )
451
+ print(response)
452
+
453
+ Edit with default parameters:
454
+
455
+ .. code-block:: python
456
+
457
+ from pygeai.chat.clients import ChatClient
458
+
459
+ client = ChatClient()
460
+
461
+ response = client.edit_image(
462
+ model="openai/dall-e-2",
463
+ prompt="Add a rainbow to the sky",
464
+ image="https://example.com/landscape.jpg",
465
+ size="512x512"
466
+ )
467
+ print(response)
468
+
469
+ Responses API
470
+ ~~~~~~~~~~~~~
471
+
472
+ The GEAI SDK provides a Responses API that supports processing images and PDF files alongside text input. This API is particularly useful for multi-modal applications that need to analyze documents or images.
473
+
474
+ Command Line
475
+ ^^^^^^^^^^^^
476
+
477
+ The `geai chat response` command generates a response using the Responses API with support for file uploads.
478
+
479
+ .. code-block:: shell
480
+
481
+ geai chat response \
482
+ --model "openai/gpt-4o" \
483
+ --input "What do you see in this image?" \
484
+ --files '["image.jpg"]' \
485
+ --temperature 0.7 \
486
+ --max-output-tokens 1000
487
+
488
+ Process multiple files with tools:
489
+
490
+ .. code-block:: shell
491
+
492
+ geai chat response \
493
+ --model "openai/gpt-4o" \
494
+ --input "Analyze these documents and extract key information" \
495
+ --files '["doc1.pdf", "doc2.pdf", "chart.jpg"]' \
496
+ --tools '[{"name": "extract_data", "description": "Extracts structured data", "parameters": {"type": "object"}}]' \
497
+ --tool-choice "auto" \
498
+ --temperature 0.5 \
499
+ --max-output-tokens 2000 \
500
+ --stream 1
501
+
502
+ With reasoning and metadata:
503
+
504
+ .. code-block:: shell
505
+
506
+ geai chat response \
507
+ --model "openai/o1-pro" \
508
+ --input "Solve this mathematical problem shown in the image" \
509
+ --files '["math_problem.jpg"]' \
510
+ --instructions "Show your work step by step" \
511
+ --reasoning '{"effort": "high"}' \
512
+ --metadata '{"task": "math_solving", "user_id": "123"}' \
513
+ --temperature 1.0
514
+
515
+ Low Level Service Layer
516
+ ^^^^^^^^^^^^^^^^^^^^^^^
517
+
518
+ The `ChatClient.get_response` method provides a low-level interface for the Responses API.
519
+
520
+ .. code-block:: python
521
+
522
+ from pygeai.chat.clients import ChatClient
523
+
524
+ client = ChatClient()
525
+
526
+ response = client.get_response(
527
+ model="openai/gpt-4o",
528
+ input="What do you see in this image?",
529
+ files=["image.jpg"],
530
+ temperature=0.7,
531
+ max_output_tokens=1000
532
+ )
533
+ print(response)
534
+
535
+ Streaming response with files:
536
+
537
+ .. code-block:: python
538
+
539
+ from pygeai.chat.clients import ChatClient
540
+
541
+ client = ChatClient()
542
+
543
+ response = client.get_response(
544
+ model="openai/gpt-4o",
545
+ input="Describe the content of these images",
546
+ files=["image1.jpg", "image2.jpg"],
547
+ stream=True,
548
+ temperature=0.7
549
+ )
550
+
551
+ for chunk in response:
552
+ print(chunk, end="")
553
+
554
+ With tools and advanced options:
555
+
556
+ .. code-block:: python
557
+
558
+ from pygeai.chat.clients import ChatClient
559
+
560
+ client = ChatClient()
561
+
562
+ tools = [
563
+ {
564
+ "name": "analyze_document",
565
+ "description": "Analyzes document content",
566
+ "parameters": {
567
+ "type": "object",
568
+ "properties": {
569
+ "topic": {"type": "string", "description": "Main topic"}
570
+ }
571
+ }
572
+ }
573
+ ]
574
+
575
+ response = client.get_response(
576
+ model="openai/gpt-4o",
577
+ input="Analyze this PDF and extract key topics",
578
+ files=["document.pdf"],
579
+ tools=tools,
580
+ tool_choice="auto",
581
+ temperature=0.5,
582
+ max_output_tokens=2000,
583
+ parallel_tool_calls=True,
584
+ metadata={"task": "document_analysis"},
585
+ user="user123"
586
+ )
587
+ print(response)
588
+
589
+ With reasoning configuration:
590
+
591
+ .. code-block:: python
592
+
593
+ from pygeai.chat.clients import ChatClient
594
+
595
+ client = ChatClient()
596
+
597
+ response = client.get_response(
598
+ model="openai/o1-pro",
599
+ input="Solve this complex problem from the image",
600
+ files=["problem.jpg"],
601
+ instructions="Think step by step and show your reasoning",
602
+ reasoning={"effort": "medium"},
603
+ temperature=1.0,
604
+ truncation="disabled",
605
+ store=True
606
+ )
607
+ print(response)
608
+
609
+ Interactive Chat with Iris
610
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
611
+
612
+ Iris is an AI assistant that helps guide users through the process of creating agents. The GEAI SDK provides an interactive chat interface for Iris.
613
+
614
+ Command Line
615
+ ^^^^^^^^^^^^
616
+
617
+ The `geai chat iris` command starts an interactive chat session with Iris.
618
+
619
+ .. code-block:: shell
620
+
621
+ geai chat iris
622
+
623
+ This opens an interactive prompt where you can ask Iris questions about creating and configuring agents. Type 'exit' or press Ctrl+C to close the chat.
624
+
625
+ Python API
626
+ ^^^^^^^^^^
627
+
628
+ The `Iris` class provides a programmatic interface to chat with Iris.
629
+
630
+ .. code-block:: python
631
+
632
+ from pygeai.chat.iris import Iris
633
+
634
+ iris = Iris()
635
+ messages = []
636
+
637
+ user_message = {
638
+ "role": "user",
639
+ "content": "I want to create an agent for customer support"
640
+ }
641
+ messages.append(user_message)
642
+
643
+ result = iris.stream_answer(messages)
644
+ answer = ""
645
+ for chunk in result:
646
+ answer += chunk
647
+ print(chunk, end="")
648
+
649
+ assistant_message = {
650
+ "role": "assistant",
651
+ "content": answer
652
+ }
653
+ messages.append(assistant_message)
654
+
655
+ Interactive Chat with Agents
656
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
657
+
658
+ The GEAI SDK provides functionality to have interactive chat sessions with agents. This includes both command-line and GUI interfaces, as well as session management capabilities.
659
+
660
+ Command Line
661
+ ^^^^^^^^^^^^
662
+
663
+ The `geai chat agent` command starts an interactive chat session with a specified agent.
664
+
665
+ Basic usage:
666
+
667
+ .. code-block:: shell
668
+
669
+ geai chat agent --agent-name "my-support-agent"
670
+
671
+ This opens an interactive prompt where you can chat with the agent. Type 'exit' or press Ctrl+C to close the chat.
672
+
673
+ With GUI interface:
674
+
675
+ .. code-block:: shell
676
+
677
+ geai chat agent --agent-name "my-support-agent" --gui
678
+
679
+ This launches a Streamlit-based graphical user interface for chatting with the agent. The GUI provides a more user-friendly experience with a web-based interface.
680
+
681
+ Note: The `--gui` option requires Streamlit to be installed. Install it with `pip install streamlit` if not already available.
682
+
683
+ Save conversation to a file:
684
+
685
+ .. code-block:: shell
686
+
687
+ geai chat agent --agent-name "my-support-agent" --save-session conversation.json
688
+
689
+ This saves the conversation history to `conversation.json` after each message exchange. The session is automatically saved when you exit the chat.
690
+
691
+ Restore a previous conversation:
692
+
693
+ .. code-block:: shell
694
+
695
+ geai chat agent --agent-name "my-support-agent" --restore-session conversation.json
696
+
697
+ This loads a previous conversation from `conversation.json` and continues the chat from where it left off. The conversation history is displayed before you can continue chatting.
698
+
699
+ Combine session save and restore:
700
+
701
+ .. code-block:: shell
702
+
703
+ geai chat agent --agent-name "my-support-agent" --restore-session old_conv.json --save-session new_conv.json
704
+
705
+ This restores the conversation from `old_conv.json` and saves all subsequent messages to `new_conv.json`.
706
+
707
+ Python API
708
+ ^^^^^^^^^^
709
+
710
+ The `AgentChatSession` class provides a programmatic interface to chat with agents.
711
+
712
+ .. code-block:: python
713
+
714
+ from pygeai.chat.session import AgentChatSession
715
+
716
+ session = AgentChatSession("my-support-agent")
717
+ messages = []
718
+
719
+ introduction = session.get_answer(
720
+ ["You're about to speak to a user. Introduce yourself in a clear and concise manner."]
721
+ )
722
+ print(f"Agent: {introduction}")
723
+
724
+ messages.append({"role": "assistant", "content": introduction})
725
+
726
+ user_message = {
727
+ "role": "user",
728
+ "content": "How can I reset my password?"
729
+ }
730
+ messages.append(user_message)
731
+
732
+ result = session.stream_answer(messages)
733
+ answer = ""
734
+ print("Agent: ", end="")
735
+ for chunk in result:
736
+ answer += chunk
737
+ print(chunk, end="")
738
+
739
+ messages.append({"role": "assistant", "content": answer})
740
+
741
+ Non-streaming chat:
742
+
743
+ .. code-block:: python
744
+
745
+ from pygeai.chat.session import AgentChatSession
746
+
747
+ session = AgentChatSession("my-support-agent")
748
+
749
+ user_messages = [
750
+ {"role": "user", "content": "What are your capabilities?"}
751
+ ]
752
+
753
+ answer = session.get_answer(user_messages)
754
+ print(f"Agent: {answer}")