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.
- pygeai/__init__.py +11 -2
- pygeai/_docs/Makefile +20 -0
- pygeai/_docs/make.bat +35 -0
- pygeai/_docs/source/conf.py +117 -0
- pygeai/_docs/source/content/ai_lab/cli.rst +747 -0
- pygeai/_docs/source/content/ai_lab/models.rst +1734 -0
- pygeai/_docs/source/content/ai_lab/runner.rst +253 -0
- pygeai/_docs/source/content/ai_lab/spec.rst +431 -0
- pygeai/_docs/source/content/ai_lab/usage.rst +1011 -0
- pygeai/_docs/source/content/ai_lab.rst +102 -0
- pygeai/_docs/source/content/analytics.rst +598 -0
- pygeai/_docs/source/content/api_reference/admin.rst +161 -0
- pygeai/_docs/source/content/api_reference/assistant.rst +326 -0
- pygeai/_docs/source/content/api_reference/auth.rst +379 -0
- pygeai/_docs/source/content/api_reference/chat.rst +754 -0
- pygeai/_docs/source/content/api_reference/embeddings.rst +154 -0
- pygeai/_docs/source/content/api_reference/evaluation.rst +590 -0
- pygeai/_docs/source/content/api_reference/feedback.rst +237 -0
- pygeai/_docs/source/content/api_reference/files.rst +592 -0
- pygeai/_docs/source/content/api_reference/gam.rst +401 -0
- pygeai/_docs/source/content/api_reference/health.rst +58 -0
- pygeai/_docs/source/content/api_reference/project.rst +738 -0
- pygeai/_docs/source/content/api_reference/proxy.rst +318 -0
- pygeai/_docs/source/content/api_reference/rag.rst +710 -0
- pygeai/_docs/source/content/api_reference/rerank.rst +94 -0
- pygeai/_docs/source/content/api_reference/secrets.rst +495 -0
- pygeai/_docs/source/content/api_reference/usage_limits.rst +390 -0
- pygeai/_docs/source/content/api_reference.rst +58 -0
- pygeai/_docs/source/content/authentication.rst +295 -0
- pygeai/_docs/source/content/chat_gui.rst +121 -0
- pygeai/_docs/source/content/cli.rst +203 -0
- pygeai/_docs/source/content/debugger.rst +651 -0
- pygeai/_docs/source/content/intro.rst +67 -0
- pygeai/_docs/source/content/migration.rst +929 -0
- pygeai/_docs/source/content/modules.rst +7 -0
- pygeai/_docs/source/content/quickstart.rst +143 -0
- pygeai/_docs/source/content/samples.rst +394 -0
- pygeai/_docs/source/index.rst +75 -0
- pygeai/_docs/source/modules.rst +7 -0
- pygeai/_docs/source/pygeai.admin.rst +29 -0
- pygeai/_docs/source/pygeai.analytics.rst +53 -0
- pygeai/_docs/source/pygeai.assistant.data.rst +21 -0
- pygeai/_docs/source/pygeai.assistant.data_analyst.rst +29 -0
- pygeai/_docs/source/pygeai.assistant.rag.rst +53 -0
- pygeai/_docs/source/pygeai.assistant.rst +55 -0
- pygeai/_docs/source/pygeai.auth.rst +29 -0
- pygeai/_docs/source/pygeai.chat.rst +69 -0
- pygeai/_docs/source/pygeai.cli.commands.flows.rst +10 -0
- pygeai/_docs/source/pygeai.cli.commands.lab.rst +53 -0
- pygeai/_docs/source/pygeai.cli.commands.rst +222 -0
- pygeai/_docs/source/pygeai.cli.rst +62 -0
- pygeai/_docs/source/pygeai.cli.texts.rst +21 -0
- pygeai/_docs/source/pygeai.core.base.rst +53 -0
- pygeai/_docs/source/pygeai.core.common.rst +37 -0
- pygeai/_docs/source/pygeai.core.embeddings.rst +61 -0
- pygeai/_docs/source/pygeai.core.feedback.rst +37 -0
- pygeai/_docs/source/pygeai.core.files.rst +61 -0
- pygeai/_docs/source/pygeai.core.llm.rst +29 -0
- pygeai/_docs/source/pygeai.core.plugins.rst +37 -0
- pygeai/_docs/source/pygeai.core.rerank.rst +53 -0
- pygeai/_docs/source/pygeai.core.rst +63 -0
- pygeai/_docs/source/pygeai.core.secrets.rst +29 -0
- pygeai/_docs/source/pygeai.core.services.llm.rst +29 -0
- pygeai/_docs/source/pygeai.core.services.rst +37 -0
- pygeai/_docs/source/pygeai.core.utils.rst +37 -0
- pygeai/_docs/source/pygeai.dbg.rst +21 -0
- pygeai/_docs/source/pygeai.evaluation.dataset.rst +29 -0
- pygeai/_docs/source/pygeai.evaluation.plan.rst +29 -0
- pygeai/_docs/source/pygeai.evaluation.result.rst +29 -0
- pygeai/_docs/source/pygeai.evaluation.rst +31 -0
- pygeai/_docs/source/pygeai.flows.rst +29 -0
- pygeai/_docs/source/pygeai.gam.rst +29 -0
- pygeai/_docs/source/pygeai.health.rst +29 -0
- pygeai/_docs/source/pygeai.lab.agents.rst +37 -0
- pygeai/_docs/source/pygeai.lab.processes.rst +37 -0
- pygeai/_docs/source/pygeai.lab.rst +65 -0
- pygeai/_docs/source/pygeai.lab.spec.rst +29 -0
- pygeai/_docs/source/pygeai.lab.strategies.rst +37 -0
- pygeai/_docs/source/pygeai.lab.tools.rst +37 -0
- pygeai/_docs/source/pygeai.man.man1.rst +10 -0
- pygeai/_docs/source/pygeai.man.rst +18 -0
- pygeai/_docs/source/pygeai.migration.rst +29 -0
- pygeai/_docs/source/pygeai.organization.limits.rst +45 -0
- pygeai/_docs/source/pygeai.organization.rst +61 -0
- pygeai/_docs/source/pygeai.proxy.rst +53 -0
- pygeai/_docs/source/pygeai.rst +35 -0
- pygeai/_docs/source/pygeai.tests.admin.rst +21 -0
- pygeai/_docs/source/pygeai.tests.analytics.rst +45 -0
- pygeai/_docs/source/pygeai.tests.assistants.rag.rst +37 -0
- pygeai/_docs/source/pygeai.tests.assistants.rst +45 -0
- pygeai/_docs/source/pygeai.tests.auth.rst +29 -0
- pygeai/_docs/source/pygeai.tests.chat.rst +45 -0
- pygeai/_docs/source/pygeai.tests.cli.commands.lab.rst +37 -0
- pygeai/_docs/source/pygeai.tests.cli.commands.rst +165 -0
- pygeai/_docs/source/pygeai.tests.cli.docker.rst +10 -0
- pygeai/_docs/source/pygeai.tests.cli.rst +46 -0
- pygeai/_docs/source/pygeai.tests.core.base.data.rst +29 -0
- pygeai/_docs/source/pygeai.tests.core.base.rst +45 -0
- pygeai/_docs/source/pygeai.tests.core.common.data.rst +10 -0
- pygeai/_docs/source/pygeai.tests.core.common.rst +37 -0
- pygeai/_docs/source/pygeai.tests.core.embeddings.rst +37 -0
- pygeai/_docs/source/pygeai.tests.core.feedback.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.files.rst +53 -0
- pygeai/_docs/source/pygeai.tests.core.llm.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.plugins.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.rerank.rst +37 -0
- pygeai/_docs/source/pygeai.tests.core.rst +39 -0
- pygeai/_docs/source/pygeai.tests.core.secrets.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.services.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.utils.rst +21 -0
- pygeai/_docs/source/pygeai.tests.dbg.rst +21 -0
- pygeai/_docs/source/pygeai.tests.evaluation.dataset.rst +21 -0
- pygeai/_docs/source/pygeai.tests.evaluation.plan.rst +21 -0
- pygeai/_docs/source/pygeai.tests.evaluation.result.rst +21 -0
- pygeai/_docs/source/pygeai.tests.evaluation.rst +20 -0
- pygeai/_docs/source/pygeai.tests.gam.rst +21 -0
- pygeai/_docs/source/pygeai.tests.health.rst +21 -0
- pygeai/_docs/source/pygeai.tests.integration.assistants.rag.rst +21 -0
- pygeai/_docs/source/pygeai.tests.integration.assistants.rst +18 -0
- pygeai/_docs/source/pygeai.tests.integration.chat.rst +21 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.agents.rst +69 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.processes.rst +77 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.reasoning_strategies.rst +37 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.rst +21 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.tools.rst +77 -0
- pygeai/_docs/source/pygeai.tests.integration.rst +20 -0
- pygeai/_docs/source/pygeai.tests.lab.agents.rst +29 -0
- pygeai/_docs/source/pygeai.tests.lab.processes.rst +29 -0
- pygeai/_docs/source/pygeai.tests.lab.rst +49 -0
- pygeai/_docs/source/pygeai.tests.lab.spec.rst +29 -0
- pygeai/_docs/source/pygeai.tests.lab.strategies.rst +29 -0
- pygeai/_docs/source/pygeai.tests.lab.tools.rst +29 -0
- pygeai/_docs/source/pygeai.tests.migration.rst +29 -0
- pygeai/_docs/source/pygeai.tests.organization.limits.rst +29 -0
- pygeai/_docs/source/pygeai.tests.organization.rst +53 -0
- pygeai/_docs/source/pygeai.tests.proxy.rst +61 -0
- pygeai/_docs/source/pygeai.tests.rst +33 -0
- pygeai/admin/clients.py +14 -11
- pygeai/admin/endpoints.py +2 -2
- pygeai/analytics/clients.py +505 -0
- pygeai/analytics/endpoints.py +35 -0
- pygeai/analytics/managers.py +606 -0
- pygeai/analytics/mappers.py +207 -0
- pygeai/analytics/responses.py +240 -0
- pygeai/assistant/clients.py +48 -57
- pygeai/assistant/data/__init__.py +0 -0
- pygeai/assistant/data/clients.py +15 -0
- pygeai/assistant/data_analyst/__init__.py +0 -0
- pygeai/assistant/data_analyst/clients.py +75 -0
- pygeai/assistant/data_analyst/endpoints.py +2 -0
- pygeai/assistant/endpoints.py +0 -2
- pygeai/assistant/managers.py +738 -0
- pygeai/assistant/mappers.py +153 -0
- pygeai/assistant/rag/clients.py +132 -21
- pygeai/assistant/rag/mappers.py +228 -0
- pygeai/assistant/rag/models.py +396 -0
- pygeai/assistant/rag/responses.py +10 -0
- pygeai/auth/__init__.py +0 -0
- pygeai/auth/clients.py +129 -0
- pygeai/auth/endpoints.py +6 -0
- pygeai/chat/clients.py +406 -31
- pygeai/chat/endpoints.py +3 -0
- pygeai/chat/iris.py +17 -0
- pygeai/chat/managers.py +64 -0
- pygeai/chat/session.py +38 -0
- pygeai/chat/settings.py +6 -0
- pygeai/chat/ui.py +678 -0
- pygeai/cli/__init__.py +0 -1
- pygeai/cli/commands/admin.py +9 -12
- pygeai/cli/commands/analytics.py +533 -0
- pygeai/cli/commands/assistant.py +11 -11
- pygeai/cli/commands/auth.py +299 -0
- pygeai/cli/commands/base.py +201 -7
- pygeai/cli/commands/chat.py +875 -14
- pygeai/cli/commands/common.py +30 -26
- pygeai/cli/commands/configuration.py +84 -9
- pygeai/cli/commands/docs.py +105 -0
- pygeai/cli/commands/embeddings.py +187 -0
- pygeai/cli/commands/evaluation.py +2069 -0
- pygeai/cli/commands/feedback.py +93 -0
- pygeai/cli/commands/files.py +312 -0
- pygeai/cli/commands/flows/__init__.py +0 -0
- pygeai/cli/commands/gam.py +349 -0
- pygeai/cli/commands/lab/__init__.py +0 -0
- pygeai/cli/commands/lab/ai_lab.py +4110 -0
- pygeai/cli/commands/lab/common.py +135 -0
- pygeai/cli/commands/lab/options.py +8 -0
- pygeai/cli/commands/lab/spec.py +273 -0
- pygeai/cli/commands/lab/utils.py +13 -0
- pygeai/cli/commands/llm.py +164 -0
- pygeai/cli/commands/migrate.py +1198 -0
- pygeai/cli/commands/options.py +86 -0
- pygeai/cli/commands/organization.py +560 -98
- pygeai/cli/commands/rag.py +306 -10
- pygeai/cli/commands/rerank.py +108 -0
- pygeai/cli/commands/secrets.py +357 -0
- pygeai/cli/commands/usage_limits.py +583 -0
- pygeai/cli/commands/validators.py +209 -0
- pygeai/cli/commands/version.py +44 -0
- pygeai/cli/error_handler.py +151 -0
- pygeai/cli/geai.py +171 -30
- pygeai/cli/geai_proxy.py +318 -0
- pygeai/cli/install_man.py +107 -0
- pygeai/cli/parsers.py +78 -25
- pygeai/cli/texts/help.py +712 -55
- pygeai/core/__init__.py +9 -1
- pygeai/core/base/clients.py +61 -10
- pygeai/core/base/mappers.py +208 -30
- pygeai/core/base/models.py +8 -308
- pygeai/core/base/responses.py +18 -1
- pygeai/core/base/session.py +110 -17
- pygeai/core/common/config.py +98 -16
- pygeai/core/common/decorators.py +44 -0
- pygeai/core/common/exceptions.py +104 -4
- pygeai/core/embeddings/__init__.py +19 -0
- pygeai/core/embeddings/clients.py +93 -0
- pygeai/core/embeddings/endpoints.py +1 -0
- pygeai/core/embeddings/managers.py +62 -0
- pygeai/core/embeddings/mappers.py +52 -0
- pygeai/core/embeddings/models.py +14 -0
- pygeai/core/embeddings/responses.py +31 -0
- pygeai/core/feedback/__init__.py +0 -0
- pygeai/core/feedback/clients.py +50 -0
- pygeai/core/feedback/endpoints.py +1 -0
- pygeai/core/feedback/models.py +10 -0
- pygeai/core/files/__init__.py +0 -0
- pygeai/core/files/clients.py +156 -0
- pygeai/core/files/endpoints.py +5 -0
- pygeai/core/files/managers.py +224 -0
- pygeai/core/files/mappers.py +44 -0
- pygeai/core/files/models.py +24 -0
- pygeai/core/files/responses.py +19 -0
- pygeai/core/handlers.py +32 -0
- pygeai/core/llm/__init__.py +0 -0
- pygeai/core/llm/clients.py +53 -0
- pygeai/core/llm/endpoints.py +4 -0
- pygeai/core/models.py +799 -0
- pygeai/core/plugins/__init__.py +0 -0
- pygeai/core/plugins/clients.py +32 -0
- pygeai/core/plugins/endpoints.py +1 -0
- pygeai/core/plugins/models.py +86 -0
- pygeai/core/rerank/__init__.py +0 -0
- pygeai/core/rerank/clients.py +35 -0
- pygeai/core/rerank/endpoints.py +1 -0
- pygeai/core/rerank/managers.py +47 -0
- pygeai/core/rerank/mappers.py +23 -0
- pygeai/core/rerank/models.py +27 -0
- pygeai/core/responses.py +104 -0
- pygeai/core/secrets/__init__.py +0 -0
- pygeai/core/secrets/clients.py +212 -0
- pygeai/core/secrets/endpoints.py +7 -0
- pygeai/core/services/llm/__init__.py +0 -0
- pygeai/core/services/llm/model.py +186 -0
- pygeai/core/services/llm/providers.py +15 -0
- pygeai/core/services/response.py +18 -0
- pygeai/core/services/rest.py +311 -89
- pygeai/core/utils/__init__.py +0 -0
- pygeai/core/utils/console.py +83 -0
- pygeai/core/utils/parsers.py +32 -0
- pygeai/core/utils/validators.py +10 -0
- pygeai/dbg/__init__.py +3 -0
- pygeai/dbg/debugger.py +870 -0
- pygeai/evaluation/__init__.py +0 -0
- pygeai/evaluation/clients.py +19 -0
- pygeai/evaluation/dataset/__init__.py +0 -0
- pygeai/evaluation/dataset/clients.py +514 -0
- pygeai/evaluation/dataset/endpoints.py +26 -0
- pygeai/evaluation/plan/__init__.py +0 -0
- pygeai/evaluation/plan/clients.py +302 -0
- pygeai/evaluation/plan/endpoints.py +16 -0
- pygeai/evaluation/result/__init__.py +0 -0
- pygeai/evaluation/result/clients.py +70 -0
- pygeai/evaluation/result/endpoints.py +2 -0
- pygeai/flows/__init__.py +0 -0
- pygeai/flows/endpoints.py +362 -0
- pygeai/flows/models.py +1304 -0
- pygeai/gam/__init__.py +0 -0
- pygeai/gam/clients.py +178 -0
- pygeai/gam/endpoints.py +4 -0
- pygeai/health/__init__.py +0 -0
- pygeai/health/clients.py +24 -0
- pygeai/health/endpoints.py +1 -0
- pygeai/lab/__init__.py +0 -0
- pygeai/lab/agents/__init__.py +0 -0
- pygeai/lab/agents/clients.py +426 -0
- pygeai/lab/agents/endpoints.py +12 -0
- pygeai/lab/agents/mappers.py +319 -0
- pygeai/lab/clients.py +24 -0
- pygeai/lab/constants.py +3 -0
- pygeai/lab/managers.py +1558 -0
- pygeai/lab/models.py +1719 -0
- pygeai/lab/processes/__init__.py +0 -0
- pygeai/lab/processes/clients.py +1051 -0
- pygeai/lab/processes/endpoints.py +26 -0
- pygeai/lab/processes/mappers.py +395 -0
- pygeai/lab/runners.py +90 -0
- pygeai/lab/spec/__init__.py +0 -0
- pygeai/lab/spec/loader.py +24 -0
- pygeai/lab/spec/parsers.py +39 -0
- pygeai/lab/strategies/__init__.py +0 -0
- pygeai/lab/strategies/clients.py +212 -0
- pygeai/lab/strategies/endpoints.py +5 -0
- pygeai/lab/strategies/mappers.py +58 -0
- pygeai/lab/tools/__init__.py +0 -0
- pygeai/lab/tools/clients.py +465 -0
- pygeai/lab/tools/endpoints.py +13 -0
- pygeai/lab/tools/mappers.py +131 -0
- pygeai/man/__init__.py +1 -0
- pygeai/man/man1/__init__.py +1 -0
- pygeai/man/man1/geai-proxy.1 +246 -0
- pygeai/man/man1/geai.1 +2615 -0
- pygeai/migration/__init__.py +33 -0
- pygeai/migration/strategies.py +603 -0
- pygeai/migration/tools.py +180 -0
- pygeai/organization/clients.py +246 -18
- pygeai/organization/endpoints.py +17 -8
- pygeai/organization/limits/__init__.py +0 -0
- pygeai/organization/limits/clients.py +281 -0
- pygeai/organization/limits/endpoints.py +15 -0
- pygeai/organization/limits/managers.py +331 -0
- pygeai/organization/limits/mappers.py +21 -0
- pygeai/organization/managers.py +537 -0
- pygeai/organization/mappers.py +111 -46
- pygeai/organization/responses.py +61 -11
- pygeai/proxy/__init__.py +0 -0
- pygeai/proxy/clients.py +216 -0
- pygeai/proxy/config.py +128 -0
- pygeai/proxy/managers.py +232 -0
- pygeai/proxy/servers.py +304 -0
- pygeai/proxy/tool.py +69 -0
- pygeai/tests/admin/__init__.py +0 -0
- pygeai/tests/admin/test_clients.py +148 -0
- pygeai/tests/analytics/__init__.py +0 -0
- pygeai/tests/analytics/test_clients.py +86 -0
- pygeai/tests/analytics/test_managers.py +94 -0
- pygeai/tests/analytics/test_mappers.py +84 -0
- pygeai/tests/analytics/test_responses.py +73 -0
- pygeai/tests/assistants/rag/__init__.py +0 -0
- pygeai/tests/assistants/rag/test_clients.py +346 -0
- pygeai/tests/assistants/rag/test_mappers.py +189 -0
- pygeai/tests/assistants/rag/test_models.py +292 -0
- pygeai/tests/assistants/test_clients.py +176 -80
- pygeai/tests/assistants/test_managers.py +198 -0
- pygeai/tests/assistants/test_mappers.py +111 -0
- pygeai/tests/auth/__init__.py +0 -0
- pygeai/tests/auth/test_clients.py +289 -0
- pygeai/tests/auth/test_oauth.py +172 -0
- pygeai/tests/auth/test_session_logging.py +150 -0
- pygeai/tests/chat/__init__.py +0 -0
- pygeai/tests/chat/test_clients.py +393 -0
- pygeai/tests/chat/test_iris.py +38 -0
- pygeai/tests/chat/test_session.py +62 -0
- pygeai/tests/chat/test_ui.py +224 -0
- pygeai/tests/cli/__init__.py +0 -0
- pygeai/tests/cli/commands/__init__.py +0 -0
- pygeai/tests/cli/commands/lab/__init__.py +0 -0
- pygeai/tests/cli/commands/lab/test_ai_lab.py +786 -0
- pygeai/tests/cli/commands/lab/test_common.py +208 -0
- pygeai/tests/cli/commands/lab/test_spec.py +246 -0
- pygeai/tests/cli/commands/test_assistant.py +202 -0
- pygeai/tests/cli/commands/test_chat.py +130 -0
- pygeai/tests/cli/commands/test_common.py +350 -0
- pygeai/tests/cli/commands/test_embeddings.py +132 -0
- pygeai/tests/cli/commands/test_evaluation.py +656 -0
- pygeai/tests/cli/commands/test_feedback.py +65 -0
- pygeai/tests/cli/commands/test_files.py +161 -0
- pygeai/tests/cli/commands/test_gam.py +201 -0
- pygeai/tests/cli/commands/test_llm.py +114 -0
- pygeai/tests/cli/commands/test_migrate.py +176 -0
- pygeai/tests/cli/commands/test_organization.py +276 -0
- pygeai/tests/cli/commands/test_rag.py +266 -0
- pygeai/tests/cli/commands/test_rerank.py +110 -0
- pygeai/tests/cli/commands/test_secrets.py +171 -0
- pygeai/tests/cli/commands/test_show_help.py +41 -0
- pygeai/tests/cli/commands/test_usage_limits.py +412 -0
- pygeai/tests/cli/commands/test_validators.py +160 -0
- pygeai/tests/cli/commands/test_version.py +81 -0
- pygeai/tests/cli/docker/__init__.py +0 -0
- pygeai/tests/cli/test_credentials_flag.py +316 -0
- pygeai/tests/cli/test_error_handler.py +225 -0
- pygeai/tests/cli/test_geai_driver.py +154 -0
- pygeai/tests/cli/test_parsers.py +154 -0
- pygeai/tests/core/base/__init__.py +0 -0
- pygeai/tests/core/base/data/__init__.py +0 -0
- pygeai/tests/core/base/data/mappers.py +117 -0
- pygeai/tests/core/base/data/models.py +312 -0
- pygeai/tests/core/base/test_mappers.py +569 -0
- pygeai/tests/core/base/test_models.py +261 -0
- pygeai/tests/core/base/test_responses.py +53 -0
- pygeai/tests/core/common/__init__.py +0 -0
- pygeai/tests/core/common/data/__init__.py +0 -0
- pygeai/tests/core/common/test_config.py +186 -0
- pygeai/tests/core/common/test_decorators.py +69 -0
- pygeai/tests/core/embeddings/__init__.py +0 -0
- pygeai/tests/core/embeddings/test_clients.py +225 -0
- pygeai/tests/core/embeddings/test_managers.py +171 -0
- pygeai/tests/core/embeddings/test_mappers.py +142 -0
- pygeai/tests/core/feedback/__init__.py +0 -0
- pygeai/tests/core/feedback/test_clients.py +64 -0
- pygeai/tests/core/files/__init__.py +0 -0
- pygeai/tests/core/files/test_clients.py +128 -0
- pygeai/tests/core/files/test_managers.py +219 -0
- pygeai/tests/core/files/test_mappers.py +137 -0
- pygeai/tests/core/files/test_models.py +103 -0
- pygeai/tests/core/files/test_responses.py +122 -0
- pygeai/tests/core/llm/__init__.py +0 -0
- pygeai/tests/core/llm/test_clients.py +142 -0
- pygeai/tests/core/plugins/__init__.py +0 -0
- pygeai/tests/core/plugins/test_clients.py +66 -0
- pygeai/tests/core/rerank/__init__.py +0 -0
- pygeai/tests/core/rerank/test_clients.py +76 -0
- pygeai/tests/core/rerank/test_managers.py +99 -0
- pygeai/tests/core/rerank/test_mappers.py +54 -0
- pygeai/tests/core/secrets/__init__.py +0 -0
- pygeai/tests/core/secrets/test_clients.py +264 -0
- pygeai/tests/core/services/__init__.py +0 -0
- pygeai/tests/core/services/test_rest.py +273 -0
- pygeai/tests/core/test_handlers.py +66 -0
- pygeai/tests/core/utils/__init__.py +0 -0
- pygeai/tests/core/utils/test_console.py +80 -0
- pygeai/tests/dbg/__init__.py +0 -0
- pygeai/tests/dbg/test_debugger.py +591 -0
- pygeai/tests/evaluation/__init__.py +0 -0
- pygeai/tests/evaluation/dataset/__init__.py +0 -0
- pygeai/tests/evaluation/dataset/test_clients.py +265 -0
- pygeai/tests/evaluation/plan/__init__.py +0 -0
- pygeai/tests/evaluation/plan/test_clients.py +195 -0
- pygeai/tests/evaluation/result/__init__.py +0 -0
- pygeai/tests/evaluation/result/test_clients.py +66 -0
- pygeai/tests/gam/__init__.py +0 -0
- pygeai/tests/gam/test_clients.py +195 -0
- pygeai/tests/health/__init__.py +0 -0
- pygeai/tests/health/test_clients.py +41 -0
- pygeai/tests/integration/__init__.py +0 -0
- pygeai/tests/integration/assistants/__init__.py +0 -0
- pygeai/tests/integration/assistants/rag/__init__.py +0 -0
- pygeai/tests/integration/assistants/rag/test_create_rag.py +91 -0
- pygeai/tests/integration/chat/__init__.py +0 -0
- pygeai/tests/integration/chat/test_generate_image.py +158 -0
- pygeai/tests/integration/lab/__init__.py +0 -0
- pygeai/tests/integration/lab/agents/__init__.py +0 -0
- pygeai/tests/integration/lab/agents/test_agents_list.py +106 -0
- pygeai/tests/integration/lab/agents/test_create_agent.py +319 -0
- pygeai/tests/integration/lab/agents/test_create_sharing_link.py +70 -0
- pygeai/tests/integration/lab/agents/test_delete_agent.py +75 -0
- pygeai/tests/integration/lab/agents/test_get_agent.py +94 -0
- pygeai/tests/integration/lab/agents/test_publish_agent_revision.py +127 -0
- pygeai/tests/integration/lab/agents/test_update_agent.py +250 -0
- pygeai/tests/integration/lab/processes/__init__.py +0 -0
- pygeai/tests/integration/lab/processes/test_create_process.py +345 -0
- pygeai/tests/integration/lab/processes/test_create_task.py +211 -0
- pygeai/tests/integration/lab/processes/test_delete_process.py +111 -0
- pygeai/tests/integration/lab/processes/test_get_process.py +201 -0
- pygeai/tests/integration/lab/processes/test_list_process_instances.py +91 -0
- pygeai/tests/integration/lab/processes/test_list_processes.py +138 -0
- pygeai/tests/integration/lab/processes/test_publish_process_revision.py +232 -0
- pygeai/tests/integration/lab/processes/test_update_process.py +289 -0
- pygeai/tests/integration/lab/reasoning_strategies/__init__.py +0 -0
- pygeai/tests/integration/lab/reasoning_strategies/test_get_reasoning_strategy.py +70 -0
- pygeai/tests/integration/lab/reasoning_strategies/test_list_reasoning_strategies.py +93 -0
- pygeai/tests/integration/lab/reasoning_strategies/test_update_reasoning_strategy.py +149 -0
- pygeai/tests/integration/lab/tools/__init__.py +0 -0
- pygeai/tests/integration/lab/tools/test_create_tool.py +288 -0
- pygeai/tests/integration/lab/tools/test_delete_tool.py +87 -0
- pygeai/tests/integration/lab/tools/test_get_parameter.py +98 -0
- pygeai/tests/integration/lab/tools/test_get_tool.py +91 -0
- pygeai/tests/integration/lab/tools/test_list_tools.py +106 -0
- pygeai/tests/integration/lab/tools/test_publish_tool_revision.py +119 -0
- pygeai/tests/integration/lab/tools/test_set_parameter.py +114 -0
- pygeai/tests/integration/lab/tools/test_update_tool.py +267 -0
- pygeai/tests/lab/__init__.py +0 -0
- pygeai/tests/lab/agents/__init__.py +0 -0
- pygeai/tests/lab/agents/test_clients.py +481 -0
- pygeai/tests/lab/agents/test_mappers.py +440 -0
- pygeai/tests/lab/processes/__init__.py +0 -0
- pygeai/tests/lab/processes/test_clients.py +1416 -0
- pygeai/tests/lab/processes/test_mappers.py +1092 -0
- pygeai/tests/lab/spec/__init__.py +0 -0
- pygeai/tests/lab/spec/test_loader.py +59 -0
- pygeai/tests/lab/spec/test_parsers.py +182 -0
- pygeai/tests/lab/strategies/__init__.py +0 -0
- pygeai/tests/lab/strategies/test_clients.py +241 -0
- pygeai/tests/lab/strategies/test_mappers.py +132 -0
- pygeai/tests/lab/test_managers.py +553 -0
- pygeai/tests/lab/test_mappers.py +245 -0
- pygeai/tests/lab/test_models.py +1154 -0
- pygeai/tests/lab/tools/__init__.py +0 -0
- pygeai/tests/lab/tools/test_clients.py +521 -0
- pygeai/tests/lab/tools/test_mappers.py +198 -0
- pygeai/tests/migration/__init__.py +0 -0
- pygeai/tests/migration/test_strategies.py +405 -0
- pygeai/tests/migration/test_tools.py +159 -0
- pygeai/tests/organization/limits/__init__.py +0 -0
- pygeai/tests/organization/limits/test_clients.py +567 -0
- pygeai/tests/organization/limits/test_managers.py +402 -0
- pygeai/tests/organization/test_clients.py +615 -64
- pygeai/tests/organization/test_managers.py +424 -0
- pygeai/tests/organization/test_mappers.py +153 -0
- pygeai/tests/organization/test_responses.py +137 -0
- pygeai/tests/proxy/__init__.py +1 -0
- pygeai/tests/proxy/test_clients.py +397 -0
- pygeai/tests/proxy/test_config.py +171 -0
- pygeai/tests/proxy/test_integration.py +305 -0
- pygeai/tests/proxy/test_managers.py +312 -0
- pygeai/tests/proxy/test_servers.py +387 -0
- pygeai/tests/proxy/test_tool.py +176 -0
- pygeai/tests/snippets/__init__.py +0 -0
- pygeai/tests/snippets/analytics/__init__.py +0 -0
- pygeai/tests/snippets/analytics/get_agent_usage_per_user.py +16 -0
- pygeai/tests/snippets/analytics/get_agents_created_and_modified.py +11 -0
- pygeai/tests/snippets/analytics/get_average_cost_per_request.py +10 -0
- pygeai/tests/snippets/analytics/get_overall_error_rate.py +10 -0
- pygeai/tests/snippets/analytics/get_top_10_agents_by_requests.py +12 -0
- pygeai/tests/snippets/analytics/get_total_active_users.py +10 -0
- pygeai/tests/snippets/analytics/get_total_cost.py +10 -0
- pygeai/tests/snippets/analytics/get_total_requests_per_day.py +12 -0
- pygeai/tests/snippets/analytics/get_total_tokens.py +12 -0
- pygeai/tests/snippets/assistants/__init__.py +0 -0
- pygeai/tests/snippets/assistants/create_chat_assistant.py +54 -0
- pygeai/tests/snippets/assistants/create_text_assistant.py +51 -0
- pygeai/tests/snippets/assistants/data_analyst/__init__.py +0 -0
- pygeai/tests/snippets/assistants/data_analyst/extend_and_check.py +100 -0
- pygeai/tests/snippets/assistants/data_analyst/extend_dataset.py +9 -0
- pygeai/tests/snippets/assistants/data_analyst/get_status.py +9 -0
- pygeai/tests/snippets/assistants/file_summarizer_assistant.py +149 -0
- pygeai/tests/snippets/assistants/get_assistant_data.py +8 -0
- pygeai/tests/snippets/assistants/get_assistant_list.py +7 -0
- pygeai/tests/snippets/assistants/rag/__init__.py +0 -0
- pygeai/tests/snippets/assistants/rag/create_rag_assistant.py +65 -0
- pygeai/tests/snippets/assistants/rag/delete_al_documents.py +7 -0
- pygeai/tests/snippets/assistants/rag/delete_document.py +10 -0
- pygeai/tests/snippets/assistants/rag/delete_rag_assistant.py +8 -0
- pygeai/tests/snippets/assistants/rag/get_document.py +10 -0
- pygeai/tests/snippets/assistants/rag/get_documents.py +7 -0
- pygeai/tests/snippets/assistants/rag/get_rag_assistant_data.py +8 -0
- pygeai/tests/snippets/assistants/rag/update_rag_assistant.py +48 -0
- pygeai/tests/snippets/assistants/rag/upload_document.py +19 -0
- pygeai/tests/snippets/assistants/send_feedback.py +14 -0
- pygeai/tests/snippets/assistants/update_chat_assistant.py +63 -0
- pygeai/tests/snippets/auth/__init__.py +0 -0
- pygeai/tests/snippets/chat/__init__.py +0 -0
- pygeai/tests/snippets/chat/cancel_request.py +7 -0
- pygeai/tests/snippets/chat/chat_completion.py +28 -0
- pygeai/tests/snippets/chat/chat_completion_1.py +40 -0
- pygeai/tests/snippets/chat/chat_completion_2.py +60 -0
- pygeai/tests/snippets/chat/chat_completion_3.py +27 -0
- pygeai/tests/snippets/chat/chat_completion_4.py +67 -0
- pygeai/tests/snippets/chat/chat_completion_streaming.py +63 -0
- pygeai/tests/snippets/chat/chat_completion_with_reasoning_effort.py +18 -0
- pygeai/tests/snippets/chat/get_request_status.py +7 -0
- pygeai/tests/snippets/chat/get_response.py +15 -0
- pygeai/tests/snippets/chat/get_response_complete_example.py +67 -0
- pygeai/tests/snippets/chat/get_response_streaming.py +20 -0
- pygeai/tests/snippets/chat/get_response_with_files.py +16 -0
- pygeai/tests/snippets/chat/get_response_with_instructions.py +19 -0
- pygeai/tests/snippets/chat/get_response_with_metadata.py +24 -0
- pygeai/tests/snippets/chat/get_response_with_parallel_tools.py +58 -0
- pygeai/tests/snippets/chat/get_response_with_reasoning.py +21 -0
- pygeai/tests/snippets/chat/get_response_with_store.py +38 -0
- pygeai/tests/snippets/chat/get_response_with_tools.py +36 -0
- pygeai/tests/snippets/chat/get_response_with_truncation.py +24 -0
- pygeai/tests/snippets/chat/send_chat_request.py +33 -0
- pygeai/tests/snippets/dbg/__init__.py +0 -0
- pygeai/tests/snippets/dbg/basic_debugging.py +32 -0
- pygeai/tests/snippets/dbg/breakpoint_management.py +48 -0
- pygeai/tests/snippets/dbg/file_debugging.py +72 -0
- pygeai/tests/snippets/dbg/module_debugging.py +61 -0
- pygeai/tests/snippets/dbg/stack_navigation.py +45 -0
- pygeai/tests/snippets/dbg/stepping_example.py +40 -0
- pygeai/tests/snippets/embeddings/__init__.py +0 -0
- pygeai/tests/snippets/embeddings/cache_example.py +31 -0
- pygeai/tests/snippets/embeddings/cohere_example.py +41 -0
- pygeai/tests/snippets/embeddings/generate_embeddings.py +26 -0
- pygeai/tests/snippets/embeddings/openai_base64_example.py +27 -0
- pygeai/tests/snippets/embeddings/openai_example.py +30 -0
- pygeai/tests/snippets/embeddings/similarity_example.py +42 -0
- pygeai/tests/snippets/evaluation/__init__.py +0 -0
- pygeai/tests/snippets/evaluation/dataset/__init__.py +0 -0
- pygeai/tests/snippets/evaluation/dataset/complete_workflow_example.py +195 -0
- pygeai/tests/snippets/evaluation/dataset/create_dataset.py +26 -0
- pygeai/tests/snippets/evaluation/dataset/create_dataset_from_file.py +11 -0
- pygeai/tests/snippets/evaluation/dataset/create_dataset_row.py +17 -0
- pygeai/tests/snippets/evaluation/dataset/create_expected_source.py +18 -0
- pygeai/tests/snippets/evaluation/dataset/create_filter_variable.py +19 -0
- pygeai/tests/snippets/evaluation/dataset/delete_dataset.py +9 -0
- pygeai/tests/snippets/evaluation/dataset/delete_dataset_row.py +10 -0
- pygeai/tests/snippets/evaluation/dataset/delete_expected_source.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/delete_filter_variable.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/get_dataset.py +9 -0
- pygeai/tests/snippets/evaluation/dataset/get_dataset_row.py +10 -0
- pygeai/tests/snippets/evaluation/dataset/get_expected_source.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/get_filter_variable.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/list_dataset_rows.py +9 -0
- pygeai/tests/snippets/evaluation/dataset/list_datasets.py +6 -0
- pygeai/tests/snippets/evaluation/dataset/list_expected_sources.py +10 -0
- pygeai/tests/snippets/evaluation/dataset/list_filter_variables.py +10 -0
- pygeai/tests/snippets/evaluation/dataset/update_dataset.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/update_dataset_row.py +20 -0
- pygeai/tests/snippets/evaluation/dataset/update_expected_source.py +18 -0
- pygeai/tests/snippets/evaluation/dataset/update_filter_variable.py +19 -0
- pygeai/tests/snippets/evaluation/dataset/upload_dataset_rows_file.py +10 -0
- pygeai/tests/snippets/evaluation/plan/__init__.py +0 -0
- pygeai/tests/snippets/evaluation/plan/add_plan_system_metric.py +13 -0
- pygeai/tests/snippets/evaluation/plan/complete_workflow_example.py +136 -0
- pygeai/tests/snippets/evaluation/plan/create_evaluation_plan.py +24 -0
- pygeai/tests/snippets/evaluation/plan/create_rag_evaluation_plan.py +22 -0
- pygeai/tests/snippets/evaluation/plan/delete_evaluation_plan.py +9 -0
- pygeai/tests/snippets/evaluation/plan/delete_plan_system_metric.py +13 -0
- pygeai/tests/snippets/evaluation/plan/execute_evaluation_plan.py +11 -0
- pygeai/tests/snippets/evaluation/plan/get_evaluation_plan.py +9 -0
- pygeai/tests/snippets/evaluation/plan/get_plan_system_metric.py +13 -0
- pygeai/tests/snippets/evaluation/plan/get_system_metric.py +9 -0
- pygeai/tests/snippets/evaluation/plan/list_evaluation_plans.py +7 -0
- pygeai/tests/snippets/evaluation/plan/list_plan_system_metrics.py +9 -0
- pygeai/tests/snippets/evaluation/plan/list_system_metrics.py +7 -0
- pygeai/tests/snippets/evaluation/plan/update_evaluation_plan.py +22 -0
- pygeai/tests/snippets/evaluation/plan/update_plan_system_metric.py +14 -0
- pygeai/tests/snippets/evaluation/result/__init__.py +0 -0
- pygeai/tests/snippets/evaluation/result/complete_workflow_example.py +150 -0
- pygeai/tests/snippets/evaluation/result/get_evaluation_result.py +26 -0
- pygeai/tests/snippets/evaluation/result/list_evaluation_results.py +17 -0
- pygeai/tests/snippets/files/__init__.py +0 -0
- pygeai/tests/snippets/files/delete_file.py +9 -0
- pygeai/tests/snippets/files/get_file_content.py +10 -0
- pygeai/tests/snippets/files/get_file_data.py +9 -0
- pygeai/tests/snippets/files/get_file_list.py +6 -0
- pygeai/tests/snippets/files/upload_file.py +13 -0
- pygeai/tests/snippets/gam/__init__.py +0 -0
- pygeai/tests/snippets/gam/gam_access_token.py +87 -0
- pygeai/tests/snippets/lab/__init__.py +0 -0
- pygeai/tests/snippets/lab/agentic_flow_example_1.py +326 -0
- pygeai/tests/snippets/lab/agentic_flow_example_2.py +206 -0
- pygeai/tests/snippets/lab/agentic_flow_example_3.py +486 -0
- pygeai/tests/snippets/lab/agentic_flow_example_4.py +446 -0
- pygeai/tests/snippets/lab/agents/__init__.py +0 -0
- pygeai/tests/snippets/lab/agents/create_agent.py +48 -0
- pygeai/tests/snippets/lab/agents/create_agent_2.py +48 -0
- pygeai/tests/snippets/lab/agents/create_agent_edge_case.py +48 -0
- pygeai/tests/snippets/lab/agents/create_agent_with_permissions.py +39 -0
- pygeai/tests/snippets/lab/agents/create_agent_with_properties.py +46 -0
- pygeai/tests/snippets/lab/agents/create_agent_without_instructions.py +48 -0
- pygeai/tests/snippets/lab/agents/delete_agent.py +12 -0
- pygeai/tests/snippets/lab/agents/get_agent.py +24 -0
- pygeai/tests/snippets/lab/agents/get_agent_with_new_fields.py +62 -0
- pygeai/tests/snippets/lab/agents/get_sharing_link.py +13 -0
- pygeai/tests/snippets/lab/agents/list_agents.py +18 -0
- pygeai/tests/snippets/lab/agents/publish_agent_revision.py +12 -0
- pygeai/tests/snippets/lab/agents/update_agent.py +50 -0
- pygeai/tests/snippets/lab/agents/update_agent_properties.py +50 -0
- pygeai/tests/snippets/lab/assistant_to_agent.py +191 -0
- pygeai/tests/snippets/lab/crud_ui.py +462 -0
- pygeai/tests/snippets/lab/processes/__init__.py +0 -0
- pygeai/tests/snippets/lab/processes/create_process.py +24 -0
- pygeai/tests/snippets/lab/processes/create_task.py +8 -0
- pygeai/tests/snippets/lab/processes/jobs/__init__.py +0 -0
- pygeai/tests/snippets/lab/processes/jobs/list_jobs.py +21 -0
- pygeai/tests/snippets/lab/processes/kbs/__init__.py +0 -0
- pygeai/tests/snippets/lab/processes/kbs/create_kb.py +18 -0
- pygeai/tests/snippets/lab/processes/kbs/get_kb.py +26 -0
- pygeai/tests/snippets/lab/processes/kbs/list_kbs.py +30 -0
- pygeai/tests/snippets/lab/processes/kbs/try_all.py +73 -0
- pygeai/tests/snippets/lab/processes/list_processes.py +10 -0
- pygeai/tests/snippets/lab/runner_1.py +212 -0
- pygeai/tests/snippets/lab/samples/__init__.py +0 -0
- pygeai/tests/snippets/lab/samples/summarize_files.py +162 -0
- pygeai/tests/snippets/lab/strategies/__init__.py +0 -0
- pygeai/tests/snippets/lab/strategies/create_reasoning_strategy.py +22 -0
- pygeai/tests/snippets/lab/strategies/get_reasoning_strategy.py +10 -0
- pygeai/tests/snippets/lab/strategies/list_reasoning_strategies.py +16 -0
- pygeai/tests/snippets/lab/strategies/update_reasoning_strategy.py +26 -0
- pygeai/tests/snippets/lab/tools/__init__.py +0 -0
- pygeai/tests/snippets/lab/tools/create_tool.py +48 -0
- pygeai/tests/snippets/lab/tools/create_tool_edge_case.py +50 -0
- pygeai/tests/snippets/lab/tools/delete_tool.py +21 -0
- pygeai/tests/snippets/lab/tools/get_parameter.py +21 -0
- pygeai/tests/snippets/lab/tools/get_tool.py +22 -0
- pygeai/tests/snippets/lab/tools/list_tools.py +23 -0
- pygeai/tests/snippets/lab/tools/publish_tool_revision.py +13 -0
- pygeai/tests/snippets/lab/tools/set_parameters.py +33 -0
- pygeai/tests/snippets/lab/tools/update_tool.py +52 -0
- pygeai/tests/snippets/lab/use_cases/__init__.py +0 -0
- pygeai/tests/snippets/lab/use_cases/c_code_fixer_agent_flow.py +238 -0
- pygeai/tests/snippets/lab/use_cases/create_cli_expert.py +1640 -0
- pygeai/tests/snippets/lab/use_cases/create_lab_expert.py +4541 -0
- pygeai/tests/snippets/lab/use_cases/create_tool_headless_web_browser.py +133 -0
- pygeai/tests/snippets/lab/use_cases/create_web_designer.py +189 -0
- pygeai/tests/snippets/lab/use_cases/create_web_reader.py +185 -0
- pygeai/tests/snippets/lab/use_cases/file_summarizer_example.py +157 -0
- pygeai/tests/snippets/lab/use_cases/file_summarizer_example_2.py +157 -0
- pygeai/tests/snippets/lab/use_cases/update_cli_expert.py +1773 -0
- pygeai/tests/snippets/lab/use_cases/update_lab_expert.py +4541 -0
- pygeai/tests/snippets/lab/use_cases/update_web_designer.py +188 -0
- pygeai/tests/snippets/lab/use_cases/update_web_reader.py +195 -0
- pygeai/tests/snippets/lab/use_cases/update_web_reader_with_tool.py +210 -0
- pygeai/tests/snippets/migrate/__init__.py +45 -0
- pygeai/tests/snippets/migrate/agent_migration.py +110 -0
- pygeai/tests/snippets/migrate/assistant_migration.py +64 -0
- pygeai/tests/snippets/migrate/orchestrator_examples.py +179 -0
- pygeai/tests/snippets/migrate/process_migration.py +64 -0
- pygeai/tests/snippets/migrate/project_migration.py +42 -0
- pygeai/tests/snippets/migrate/tool_migration.py +64 -0
- pygeai/tests/snippets/organization/__init__.py +0 -0
- pygeai/tests/snippets/organization/add_project_member.py +10 -0
- pygeai/tests/snippets/organization/add_project_member_batch.py +44 -0
- pygeai/tests/snippets/organization/create_project.py +23 -0
- pygeai/tests/snippets/organization/delete_project.py +7 -0
- pygeai/tests/snippets/organization/export_request_data.py +7 -0
- pygeai/tests/snippets/organization/get_memberships.py +12 -0
- pygeai/tests/snippets/organization/get_organization_members.py +6 -0
- pygeai/tests/snippets/organization/get_project_data.py +7 -0
- pygeai/tests/snippets/organization/get_project_list.py +8 -0
- pygeai/tests/snippets/organization/get_project_members.py +6 -0
- pygeai/tests/snippets/organization/get_project_memberships.py +12 -0
- pygeai/tests/snippets/organization/get_project_roles.py +6 -0
- pygeai/tests/snippets/organization/get_project_tokens.py +7 -0
- pygeai/tests/snippets/organization/update_project.py +14 -0
- pygeai/tests/snippets/rerank/__init__.py +0 -0
- pygeai/tests/snippets/rerank/rerank_chunks.py +19 -0
- pygeai/tests/snippets/secrets/__init__.py +0 -0
- pygeai/tests/snippets/usage_limit/__init__.py +0 -0
- pygeai/tests/snippets/usage_limit/delete_usage_limit.py +16 -0
- pygeai/tests/snippets/usage_limit/get_all_usage_limit_from_organization.py +12 -0
- pygeai/tests/snippets/usage_limit/get_usage_limit_from_organization.py +11 -0
- pygeai/tests/snippets/usage_limit/get_usage_limit_from_project.py +13 -0
- pygeai/tests/snippets/usage_limit/set_usage_limit_organization.py +22 -0
- pygeai/tests/snippets/usage_limit/set_usage_limit_project.py +23 -0
- pygeai/tests/snippets/usage_limit/update_usage_limit_organization.py +23 -0
- pygeai/tests/snippets/usage_limit/update_usage_limit_project.py +24 -0
- pygeai/vendor/a2a/__init__.py +1 -0
- pygeai/vendor/a2a/auth/__init__.py +0 -0
- pygeai/vendor/a2a/auth/user.py +31 -0
- pygeai/vendor/a2a/client/__init__.py +19 -0
- pygeai/vendor/a2a/client/client.py +425 -0
- pygeai/vendor/a2a/client/errors.py +33 -0
- pygeai/vendor/a2a/client/helpers.py +22 -0
- pygeai/vendor/a2a/py.typed +0 -0
- pygeai/vendor/a2a/server/__init__.py +1 -0
- pygeai/vendor/a2a/server/agent_execution/__init__.py +18 -0
- pygeai/vendor/a2a/server/agent_execution/agent_executor.py +44 -0
- pygeai/vendor/a2a/server/agent_execution/context.py +155 -0
- pygeai/vendor/a2a/server/agent_execution/request_context_builder.py +20 -0
- pygeai/vendor/a2a/server/agent_execution/simple_request_context_builder.py +77 -0
- pygeai/vendor/a2a/server/apps/__init__.py +16 -0
- pygeai/vendor/a2a/server/apps/jsonrpc/__init__.py +16 -0
- pygeai/vendor/a2a/server/apps/jsonrpc/fastapi_app.py +88 -0
- pygeai/vendor/a2a/server/apps/jsonrpc/jsonrpc_app.py +426 -0
- pygeai/vendor/a2a/server/apps/jsonrpc/starlette_app.py +123 -0
- pygeai/vendor/a2a/server/context.py +23 -0
- pygeai/vendor/a2a/server/events/__init__.py +21 -0
- pygeai/vendor/a2a/server/events/event_consumer.py +149 -0
- pygeai/vendor/a2a/server/events/event_queue.py +156 -0
- pygeai/vendor/a2a/server/events/in_memory_queue_manager.py +85 -0
- pygeai/vendor/a2a/server/events/queue_manager.py +35 -0
- pygeai/vendor/a2a/server/request_handlers/__init__.py +20 -0
- pygeai/vendor/a2a/server/request_handlers/default_request_handler.py +435 -0
- pygeai/vendor/a2a/server/request_handlers/jsonrpc_handler.py +327 -0
- pygeai/vendor/a2a/server/request_handlers/request_handler.py +161 -0
- pygeai/vendor/a2a/server/request_handlers/response_helpers.py +133 -0
- pygeai/vendor/a2a/server/tasks/__init__.py +20 -0
- pygeai/vendor/a2a/server/tasks/inmemory_push_notifier.py +62 -0
- pygeai/vendor/a2a/server/tasks/inmemory_task_store.py +51 -0
- pygeai/vendor/a2a/server/tasks/push_notifier.py +25 -0
- pygeai/vendor/a2a/server/tasks/result_aggregator.py +151 -0
- pygeai/vendor/a2a/server/tasks/task_manager.py +253 -0
- pygeai/vendor/a2a/server/tasks/task_store.py +22 -0
- pygeai/vendor/a2a/server/tasks/task_updater.py +155 -0
- pygeai/vendor/a2a/types.py +1624 -0
- pygeai/vendor/a2a/utils/__init__.py +40 -0
- pygeai/vendor/a2a/utils/artifact.py +72 -0
- pygeai/vendor/a2a/utils/errors.py +69 -0
- pygeai/vendor/a2a/utils/helpers.py +176 -0
- pygeai/vendor/a2a/utils/message.py +83 -0
- pygeai/vendor/a2a/utils/task.py +57 -0
- pygeai/vendor/a2a/utils/telemetry.py +299 -0
- pygeai-0.6.0b15.dist-info/METADATA +205 -0
- pygeai-0.6.0b15.dist-info/RECORD +799 -0
- {pygeai-0.1.6.dist-info → pygeai-0.6.0b15.dist-info}/WHEEL +1 -1
- pygeai-0.6.0b15.dist-info/entry_points.txt +5 -0
- {pygeai-0.1.6.dist-info → pygeai-0.6.0b15.dist-info/licenses}/LICENSE +13 -1
- {pygeai-0.1.6.dist-info → pygeai-0.6.0b15.dist-info}/top_level.txt +0 -1
- docs/source/conf.py +0 -45
- pygeai/core/clients.py +0 -240
- pygeai/tests/core/test_clients.py +0 -49
- pygeai-0.1.6.dist-info/METADATA +0 -92
- pygeai-0.1.6.dist-info/RECORD +0 -65
- pygeai-0.1.6.dist-info/SOURCES.sync-conflict-20241223-145950-3QD4F42.txt +0 -41
- pygeai-0.1.6.dist-info/entry_points.txt +0 -2
- /pygeai/{agent → analytics}/__init__.py +0 -0
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
Authentication
|
|
2
|
+
==============
|
|
3
|
+
|
|
4
|
+
The PyGEAI SDK supports two authentication methods: **API Key** authentication and **OAuth 2.0** authentication. Both methods provide secure access to Globant Enterprise AI services, with OAuth offering enhanced security through token-based authentication and project-level access control.
|
|
5
|
+
|
|
6
|
+
API Key Authentication
|
|
7
|
+
----------------------
|
|
8
|
+
|
|
9
|
+
API Key authentication is the traditional method that uses a project-specific API token. This is the simplest authentication method and is suitable for most use cases.
|
|
10
|
+
|
|
11
|
+
Configuration
|
|
12
|
+
~~~~~~~~~~~~~
|
|
13
|
+
|
|
14
|
+
You can configure API Key authentication using the CLI:
|
|
15
|
+
|
|
16
|
+
.. code-block:: shell
|
|
17
|
+
|
|
18
|
+
geai configure
|
|
19
|
+
|
|
20
|
+
When prompted, enter your API key and base URL:
|
|
21
|
+
|
|
22
|
+
.. code-block:: shell
|
|
23
|
+
|
|
24
|
+
-> Select an alias (Leave empty to use 'default'): default
|
|
25
|
+
-> Insert your GEAI_API_KEY: your_api_key_here
|
|
26
|
+
GEAI API KEY for alias 'default' saved successfully!
|
|
27
|
+
-> Insert your GEAI API BASE URL: https://api.saia.ai
|
|
28
|
+
GEAI API BASE URL for alias 'default' saved successfully!
|
|
29
|
+
|
|
30
|
+
Usage in Code
|
|
31
|
+
~~~~~~~~~~~~~
|
|
32
|
+
|
|
33
|
+
**Using Configured Credentials:**
|
|
34
|
+
|
|
35
|
+
.. code-block:: python
|
|
36
|
+
|
|
37
|
+
from pygeai.lab.clients import AILabClient
|
|
38
|
+
|
|
39
|
+
# Uses credentials from configuration file
|
|
40
|
+
client = AILabClient()
|
|
41
|
+
|
|
42
|
+
**Explicit API Key:**
|
|
43
|
+
|
|
44
|
+
.. code-block:: python
|
|
45
|
+
|
|
46
|
+
from pygeai.lab.clients import AILabClient
|
|
47
|
+
|
|
48
|
+
client = AILabClient(
|
|
49
|
+
api_key="your_api_key_here",
|
|
50
|
+
base_url="https://api.saia.ai"
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
**With Project ID:**
|
|
54
|
+
|
|
55
|
+
.. code-block:: python
|
|
56
|
+
|
|
57
|
+
from pygeai.lab.clients import AILabClient
|
|
58
|
+
|
|
59
|
+
client = AILabClient(
|
|
60
|
+
api_key="your_api_key_here",
|
|
61
|
+
base_url="https://api.saia.ai",
|
|
62
|
+
project_id="your-project-id"
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
OAuth 2.0 Authentication
|
|
66
|
+
------------------------
|
|
67
|
+
|
|
68
|
+
OAuth 2.0 provides enhanced security by using temporary access tokens instead of long-lived API keys. This method requires both an ``access_token`` and a ``project_id``.
|
|
69
|
+
|
|
70
|
+
Prerequisites
|
|
71
|
+
~~~~~~~~~~~~~
|
|
72
|
+
|
|
73
|
+
Before using OAuth authentication, you need to:
|
|
74
|
+
|
|
75
|
+
1. Obtain OAuth credentials (client ID, username, password)
|
|
76
|
+
2. Get an access token
|
|
77
|
+
3. Know your project ID
|
|
78
|
+
|
|
79
|
+
Getting an Access Token
|
|
80
|
+
~~~~~~~~~~~~~~~~~~~~~~~
|
|
81
|
+
|
|
82
|
+
Use the Auth client to obtain an OAuth 2.0 access token:
|
|
83
|
+
|
|
84
|
+
.. code-block:: python
|
|
85
|
+
|
|
86
|
+
from pygeai.auth.clients import AuthClient
|
|
87
|
+
|
|
88
|
+
auth_client = AuthClient()
|
|
89
|
+
|
|
90
|
+
# Get OAuth 2.0 access token
|
|
91
|
+
response = auth_client.get_oauth2_access_token(
|
|
92
|
+
client_id="your-client-id",
|
|
93
|
+
username="your-username",
|
|
94
|
+
password="your-password"
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
access_token = response["access_token"]
|
|
98
|
+
project_id = "your-project-id"
|
|
99
|
+
|
|
100
|
+
Usage in Code
|
|
101
|
+
~~~~~~~~~~~~~
|
|
102
|
+
|
|
103
|
+
**Basic OAuth Authentication:**
|
|
104
|
+
|
|
105
|
+
.. code-block:: python
|
|
106
|
+
|
|
107
|
+
from pygeai.lab.clients import AILabClient
|
|
108
|
+
|
|
109
|
+
client = AILabClient(
|
|
110
|
+
base_url="https://api.saia.ai",
|
|
111
|
+
access_token="your_oauth_access_token",
|
|
112
|
+
project_id="your-project-id"
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
**With Other Clients:**
|
|
116
|
+
|
|
117
|
+
.. code-block:: python
|
|
118
|
+
|
|
119
|
+
from pygeai.core.secrets.clients import SecretClient
|
|
120
|
+
from pygeai.evaluation.clients import EvaluationClient
|
|
121
|
+
|
|
122
|
+
# Secret Client with OAuth
|
|
123
|
+
secret_client = SecretClient(
|
|
124
|
+
base_url="https://api.saia.ai",
|
|
125
|
+
access_token="your_oauth_access_token",
|
|
126
|
+
project_id="your-project-id"
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
# Evaluation Client with OAuth
|
|
130
|
+
eval_client = EvaluationClient(
|
|
131
|
+
base_url="https://api.saia.ai",
|
|
132
|
+
eval_url="https://eval.saia.ai",
|
|
133
|
+
access_token="your_oauth_access_token",
|
|
134
|
+
project_id="your-project-id"
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
Complete OAuth Flow Example
|
|
138
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
139
|
+
|
|
140
|
+
.. code-block:: python
|
|
141
|
+
|
|
142
|
+
from pygeai.auth.clients import AuthClient
|
|
143
|
+
from pygeai.lab.clients import AILabClient
|
|
144
|
+
from pygeai.lab.agents.clients import AgentClient
|
|
145
|
+
|
|
146
|
+
# Step 1: Obtain OAuth access token
|
|
147
|
+
auth_client = AuthClient()
|
|
148
|
+
token_response = auth_client.get_oauth2_access_token(
|
|
149
|
+
client_id="your-client-id",
|
|
150
|
+
username="user@example.com",
|
|
151
|
+
password="your-password"
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
access_token = token_response["access_token"]
|
|
155
|
+
project_id = "your-project-id"
|
|
156
|
+
|
|
157
|
+
# Step 2: Use OAuth token with clients
|
|
158
|
+
lab_client = AILabClient(
|
|
159
|
+
base_url="https://api.saia.ai",
|
|
160
|
+
access_token=access_token,
|
|
161
|
+
project_id=project_id
|
|
162
|
+
)
|
|
163
|
+
|
|
164
|
+
# Step 3: Use the client
|
|
165
|
+
agents = lab_client.list_agents()
|
|
166
|
+
print(f"Found {len(agents)} agents")
|
|
167
|
+
|
|
168
|
+
Authentication Comparison
|
|
169
|
+
-------------------------
|
|
170
|
+
|
|
171
|
+
.. list-table::
|
|
172
|
+
:header-rows: 1
|
|
173
|
+
:widths: 30 35 35
|
|
174
|
+
|
|
175
|
+
* - Feature
|
|
176
|
+
- API Key
|
|
177
|
+
- OAuth 2.0
|
|
178
|
+
* - **Security**
|
|
179
|
+
- Long-lived key
|
|
180
|
+
- Temporary access token
|
|
181
|
+
* - **Setup Complexity**
|
|
182
|
+
- Simple
|
|
183
|
+
- Moderate
|
|
184
|
+
* - **Project Isolation**
|
|
185
|
+
- Optional
|
|
186
|
+
- Required
|
|
187
|
+
* - **Token Expiration**
|
|
188
|
+
- Never (until revoked)
|
|
189
|
+
- Yes (requires refresh)
|
|
190
|
+
* - **Header Format**
|
|
191
|
+
- ``Bearer {api_key}``
|
|
192
|
+
- ``Bearer {access_token}``
|
|
193
|
+
* - **Additional Headers**
|
|
194
|
+
- None (ProjectId optional)
|
|
195
|
+
- ``ProjectId`` header required
|
|
196
|
+
* - **Use Case**
|
|
197
|
+
- Development, testing
|
|
198
|
+
- Production, multi-project
|
|
199
|
+
|
|
200
|
+
Implementation Details
|
|
201
|
+
----------------------
|
|
202
|
+
|
|
203
|
+
Header Injection
|
|
204
|
+
~~~~~~~~~~~~~~~~
|
|
205
|
+
|
|
206
|
+
The SDK automatically injects authentication headers:
|
|
207
|
+
|
|
208
|
+
**API Key:**
|
|
209
|
+
|
|
210
|
+
.. code-block:: python
|
|
211
|
+
|
|
212
|
+
Authorization: Bearer your_api_key_here
|
|
213
|
+
|
|
214
|
+
**OAuth 2.0:**
|
|
215
|
+
|
|
216
|
+
.. code-block:: python
|
|
217
|
+
|
|
218
|
+
Authorization: Bearer your_oauth_access_token
|
|
219
|
+
ProjectId: your-project-id
|
|
220
|
+
|
|
221
|
+
Backward Compatibility
|
|
222
|
+
~~~~~~~~~~~~~~~~~~~~~~
|
|
223
|
+
|
|
224
|
+
OAuth parameters (``access_token`` and ``project_id``) are **keyword-only** parameters to maintain backward compatibility with existing code:
|
|
225
|
+
|
|
226
|
+
.. code-block:: python
|
|
227
|
+
|
|
228
|
+
# Correct - keyword arguments
|
|
229
|
+
client = AILabClient(
|
|
230
|
+
base_url="https://api.saia.ai",
|
|
231
|
+
access_token="token",
|
|
232
|
+
project_id="project-123"
|
|
233
|
+
)
|
|
234
|
+
|
|
235
|
+
# Error - cannot pass as positional
|
|
236
|
+
client = AILabClient("https://api.saia.ai", "token", "project-123")
|
|
237
|
+
|
|
238
|
+
Validation
|
|
239
|
+
~~~~~~~~~~
|
|
240
|
+
|
|
241
|
+
The SDK validates authentication parameters:
|
|
242
|
+
|
|
243
|
+
- **Missing OAuth parameters**: If ``access_token`` is provided without ``project_id``, a ``MissingRequirementException`` is raised.
|
|
244
|
+
- **Complete OAuth**: Both ``access_token`` and ``project_id`` must be provided together.
|
|
245
|
+
|
|
246
|
+
.. code-block:: python
|
|
247
|
+
|
|
248
|
+
# Raises MissingRequirementException
|
|
249
|
+
client = AILabClient(
|
|
250
|
+
base_url="https://api.saia.ai",
|
|
251
|
+
access_token="token_without_project"
|
|
252
|
+
)
|
|
253
|
+
|
|
254
|
+
# Correct
|
|
255
|
+
client = AILabClient(
|
|
256
|
+
base_url="https://api.saia.ai",
|
|
257
|
+
access_token="token",
|
|
258
|
+
project_id="project-123"
|
|
259
|
+
)
|
|
260
|
+
|
|
261
|
+
Best Practices
|
|
262
|
+
--------------
|
|
263
|
+
|
|
264
|
+
1. **Use OAuth for Production**: OAuth provides better security through temporary tokens and project isolation.
|
|
265
|
+
|
|
266
|
+
2. **Store Credentials Securely**: Never hardcode API keys or access tokens in your source code. Use environment variables or secure credential storage.
|
|
267
|
+
|
|
268
|
+
3. **Token Refresh**: Implement token refresh logic when using OAuth to handle token expiration.
|
|
269
|
+
|
|
270
|
+
4. **Project Isolation**: Use ``project_id`` to ensure requests are scoped to the correct project, even when using API keys.
|
|
271
|
+
|
|
272
|
+
5. **Error Handling**: Implement proper error handling for authentication failures:
|
|
273
|
+
|
|
274
|
+
.. code-block:: python
|
|
275
|
+
|
|
276
|
+
from pygeai.core.common.exceptions import MissingRequirementException, APIResponseError
|
|
277
|
+
|
|
278
|
+
try:
|
|
279
|
+
client = AILabClient(
|
|
280
|
+
base_url="https://api.saia.ai",
|
|
281
|
+
access_token=access_token,
|
|
282
|
+
project_id=project_id
|
|
283
|
+
)
|
|
284
|
+
agents = client.list_agents()
|
|
285
|
+
except MissingRequirementException as e:
|
|
286
|
+
print(f"Configuration error: {e}")
|
|
287
|
+
except APIResponseError as e:
|
|
288
|
+
print(f"Authentication failed: {e}")
|
|
289
|
+
|
|
290
|
+
Related Resources
|
|
291
|
+
-----------------
|
|
292
|
+
|
|
293
|
+
- :doc:`quickstart` - Getting started with PyGEAI
|
|
294
|
+
- :doc:`api_reference/auth` - Auth client API reference
|
|
295
|
+
- :doc:`ai_lab` - AI Lab documentation
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
GEAI Chat GUI Documentation
|
|
2
|
+
===========================
|
|
3
|
+
|
|
4
|
+
Overview
|
|
5
|
+
--------
|
|
6
|
+
|
|
7
|
+
The GEAI Chat GUI is a Streamlit-based graphical user interface (GUI) for interacting with AI agents provided by the Globant Enterprise AI (GEAI) platform. This interface is launched via the `geai chat agent` command with the `--gui` or `-g` flag. It allows users to chat with specified agents, manage chat sessions, switch between agents, and customize session storage settings.
|
|
8
|
+
|
|
9
|
+
This documentation provides an overview of the GUI's features, usage instructions, and command-line invocation.
|
|
10
|
+
|
|
11
|
+
Command-Line Invocation
|
|
12
|
+
-----------------------
|
|
13
|
+
|
|
14
|
+
The Streamlit GUI is not run as a standalone Streamlit app but is invoked through the GEAI CLI. The relevant command and options are as follows:
|
|
15
|
+
|
|
16
|
+
.. code-block:: bash
|
|
17
|
+
|
|
18
|
+
geai chat agent --agent-name <agent_name> --gui
|
|
19
|
+
|
|
20
|
+
**Options:**
|
|
21
|
+
|
|
22
|
+
- ``--agent-name`` or ``-n``: Specifies the name or ID of the agent to interact with. This is a required argument.
|
|
23
|
+
- ``--gui`` or ``-g``: Launches the Streamlit GUI for an interactive chat experience. No additional argument is needed for this flag.
|
|
24
|
+
|
|
25
|
+
**Example:**
|
|
26
|
+
|
|
27
|
+
.. code-block:: bash
|
|
28
|
+
|
|
29
|
+
geai chat agent --agent-name "MyAgent" --gui
|
|
30
|
+
|
|
31
|
+
This command launches the Streamlit GUI for chatting with the agent named "MyAgent".
|
|
32
|
+
|
|
33
|
+
Features of the Streamlit GUI
|
|
34
|
+
-----------------------------
|
|
35
|
+
|
|
36
|
+
The GEAI Chat GUI provides a user-friendly interface for interacting with AI agents. Below are the key features, organized by their location in the interface (main area and sidebar).
|
|
37
|
+
|
|
38
|
+
Main Interface
|
|
39
|
+
~~~~~~~~~~~~~~
|
|
40
|
+
|
|
41
|
+
1. **Chat Window:**
|
|
42
|
+
- Displays the conversation history with the selected agent.
|
|
43
|
+
- Supports real-time message streaming for agent responses.
|
|
44
|
+
- Allows searching through chat history using a keyword filter.
|
|
45
|
+
- Provides options to edit the last user message and regenerate the agent's response if needed.
|
|
46
|
+
- Includes a "Complete Answer" button to prompt the agent to continue an incomplete response.
|
|
47
|
+
|
|
48
|
+
2. **Chat Input:**
|
|
49
|
+
- Located at the bottom of the main window, allowing users to type and send messages to the agent.
|
|
50
|
+
|
|
51
|
+
3. **Session Information:**
|
|
52
|
+
- Displays the path where the current session will be saved (e.g., ``chats/chat_session_<agent_name>_<date>.json``).
|
|
53
|
+
|
|
54
|
+
4. **Reset Chat:**
|
|
55
|
+
- A button to clear the current chat history and start a fresh session with the agent's introductory message.
|
|
56
|
+
|
|
57
|
+
Sidebar Features
|
|
58
|
+
~~~~~~~~~~~~~~~~
|
|
59
|
+
|
|
60
|
+
The sidebar contains controls for session management and agent switching.
|
|
61
|
+
|
|
62
|
+
1. **Session Management:**
|
|
63
|
+
- **Auto-Save Session:** A toggle to enable or disable automatic saving of chat history to a server-side file after each message or action.
|
|
64
|
+
- **Custom Session Filename:** An input field to specify a custom filename for saving the session (stored in the ``chats`` directory).
|
|
65
|
+
- **Save Session (JSON):** A download button to save the current chat history as a JSON file locally.
|
|
66
|
+
- **Restore Session (JSON):** A file uploader to load a previously saved JSON session file into the current chat.
|
|
67
|
+
- **Available Sessions:** A list of saved session files in the ``chats`` directory, with options to load or delete them. Note: The active session file cannot be deleted.
|
|
68
|
+
- **Help Section:** An expandable section explaining session saving and restoring functionalities.
|
|
69
|
+
|
|
70
|
+
2. **Agent Switching:**
|
|
71
|
+
- **Select Alias:** A dropdown to choose a profile (alias) for accessing specific API configurations.
|
|
72
|
+
- **Enter Project ID:** An input field for specifying the project ID to list available agents.
|
|
73
|
+
- **Select Agent:** A dropdown to pick an agent from the list retrieved based on the alias and project ID.
|
|
74
|
+
- **Agent Description Preview:** Displays a brief description of the selected agent (if available).
|
|
75
|
+
- **Recent Agents:** A list of recently used agents for quick switching.
|
|
76
|
+
- **Confirmation for Switching:** Prompts the user to confirm before switching to a new agent, which starts a fresh session in a new tab.
|
|
77
|
+
- **Help Section:** An expandable section explaining the agent switching process.
|
|
78
|
+
|
|
79
|
+
Usage Instructions
|
|
80
|
+
------------------
|
|
81
|
+
|
|
82
|
+
1. **Launching the GUI:**
|
|
83
|
+
- Run the command ``geai chat agent --agent-name <agent_name> --gui`` to start the Streamlit interface for the specified agent.
|
|
84
|
+
- The browser will open automatically (if configured) or provide a URL to access the interface.
|
|
85
|
+
|
|
86
|
+
2. **Chatting with an Agent:**
|
|
87
|
+
- Type your message in the chat input field at the bottom of the main window and press Enter.
|
|
88
|
+
- The agent's response will stream in real-time in the chat window.
|
|
89
|
+
- Use the "Complete Answer" button if the agent's response seems incomplete.
|
|
90
|
+
- Search through the chat history using the search bar above the chat window.
|
|
91
|
+
- Edit your last message by clicking the edit button (✏️) next to it, modify the content, and save to regenerate the agent's response.
|
|
92
|
+
|
|
93
|
+
3. **Managing Sessions:**
|
|
94
|
+
- Enable "Auto-Save Session" in the sidebar to automatically save chat history to a server-side file.
|
|
95
|
+
- Specify a custom filename for the session if desired.
|
|
96
|
+
- Download the current session as a JSON file using the "Save Session (JSON)" button.
|
|
97
|
+
- Upload a previously saved JSON file to restore a session using the file uploader.
|
|
98
|
+
- View and manage saved sessions under "Available Sessions" (load or delete files as needed).
|
|
99
|
+
|
|
100
|
+
4. **Switching Agents:**
|
|
101
|
+
- In the sidebar under "Switch Agent", select an alias and enter a project ID to list available agents.
|
|
102
|
+
- Choose an agent from the dropdown and review its description (if available).
|
|
103
|
+
- Confirm the switch to start a new session with the selected agent in a new tab.
|
|
104
|
+
- Alternatively, switch to a recently used agent directly from the "Recent Agents" list.
|
|
105
|
+
|
|
106
|
+
5. **Resetting the Chat:**
|
|
107
|
+
- Click the "Reset Chat" button in the main interface to clear the current session and start fresh with the agent's introduction.
|
|
108
|
+
|
|
109
|
+
File Storage
|
|
110
|
+
------------
|
|
111
|
+
|
|
112
|
+
- **Default Session Files:** Chat sessions are saved by default in the ``chats`` directory with filenames in the format ``chat_session_<agent_name>_<YYYY-MM-DD>.json``.
|
|
113
|
+
- **Custom Filenames:** Users can specify custom filenames via the sidebar, which are also stored in the ``chats`` directory.
|
|
114
|
+
- **Recent Agents:** A list of recently used agents is saved in ``recent_agents.json`` for quick access across sessions.
|
|
115
|
+
|
|
116
|
+
Troubleshooting
|
|
117
|
+
---------------
|
|
118
|
+
|
|
119
|
+
- **Agent Not Found:** If the specified agent does not exist, an error message will be displayed. Verify the agent name or ID and try again.
|
|
120
|
+
- **Session File Errors:** Errors during saving or loading session files are logged and displayed as Streamlit error messages. Ensure the ``chats`` directory has appropriate read/write permissions.
|
|
121
|
+
- **Unexpected Errors:** Any unhandled exceptions are logged and displayed in the GUI. Contact support at ``geai-sdk@globant.com`` for assistance.
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
geai - CLI Reference
|
|
2
|
+
====================
|
|
3
|
+
|
|
4
|
+
In this section, you can find examples of commands using the geai utility to perform basic tasks in GEAI.
|
|
5
|
+
|
|
6
|
+
CLI Architecture
|
|
7
|
+
----------------
|
|
8
|
+
|
|
9
|
+
The PyGEAI CLI provides a comprehensive command-line interface with the following features:
|
|
10
|
+
|
|
11
|
+
- **Type-Safe**: Full type hints for better IDE support and error detection
|
|
12
|
+
- **Fuzzy Matching**: Suggests similar commands when typos are detected
|
|
13
|
+
- **Enhanced Validation**: Detailed error messages with examples and suggestions
|
|
14
|
+
- **Multi-Profile Support**: Manage multiple GEAI instances via ``--alias`` flag
|
|
15
|
+
- **Consistent Error Handling**: Standardized exit codes and error formats
|
|
16
|
+
- **Verbose Mode**: Detailed logging for debugging and troubleshooting
|
|
17
|
+
|
|
18
|
+
Error Handling
|
|
19
|
+
--------------
|
|
20
|
+
|
|
21
|
+
The CLI provides clear, actionable error messages:
|
|
22
|
+
|
|
23
|
+
Exit Codes
|
|
24
|
+
^^^^^^^^^^
|
|
25
|
+
|
|
26
|
+
- ``0``: Success
|
|
27
|
+
- ``1``: User input error (invalid command, option, or argument)
|
|
28
|
+
- ``2``: Missing required parameter
|
|
29
|
+
- ``3``: Service error (API or agent issues)
|
|
30
|
+
- ``130``: Keyboard interrupt (Ctrl+C)
|
|
31
|
+
- ``255``: Unexpected error
|
|
32
|
+
|
|
33
|
+
Error Message Format
|
|
34
|
+
^^^^^^^^^^^^^^^^^^^
|
|
35
|
+
|
|
36
|
+
.. code-block:: text
|
|
37
|
+
|
|
38
|
+
ERROR: <error description>
|
|
39
|
+
→ <suggestion for fixing>
|
|
40
|
+
|
|
41
|
+
Example:
|
|
42
|
+
<example of correct usage>
|
|
43
|
+
|
|
44
|
+
Run 'geai help' for usage information.
|
|
45
|
+
|
|
46
|
+
Global Options
|
|
47
|
+
--------------
|
|
48
|
+
|
|
49
|
+
Verbose Mode
|
|
50
|
+
^^^^^^^^^^^^
|
|
51
|
+
|
|
52
|
+
Enable detailed logging output to debug issues or understand command execution flow:
|
|
53
|
+
|
|
54
|
+
.. code-block:: shell
|
|
55
|
+
|
|
56
|
+
geai --verbose <command> [options]
|
|
57
|
+
geai -v <command> [options]
|
|
58
|
+
|
|
59
|
+
Example output with verbose mode:
|
|
60
|
+
|
|
61
|
+
.. code-block:: text
|
|
62
|
+
|
|
63
|
+
2026-01-13 09:45:04 - geai - DEBUG - Verbose mode enabled
|
|
64
|
+
2026-01-13 09:45:04 - geai - DEBUG - Running geai with: geai help
|
|
65
|
+
2026-01-13 09:45:04 - geai - DEBUG - Session: default
|
|
66
|
+
2026-01-13 09:45:04 - geai - DEBUG - Identifying command for argument: help
|
|
67
|
+
2026-01-13 09:45:04 - geai - DEBUG - Searching for command matching: help
|
|
68
|
+
2026-01-13 09:45:04 - geai - DEBUG - Command found: help (identifiers: ['help', 'h'])
|
|
69
|
+
2026-01-13 09:45:04 - geai - DEBUG - Command identified: help
|
|
70
|
+
2026-01-13 09:45:04 - geai - DEBUG - Processing command: help, arguments: []
|
|
71
|
+
|
|
72
|
+
**When to use verbose mode:**
|
|
73
|
+
|
|
74
|
+
- Troubleshooting configuration issues
|
|
75
|
+
- Understanding which session/alias is being used
|
|
76
|
+
- Debugging command parsing or option validation
|
|
77
|
+
- Reporting issues to support with detailed context
|
|
78
|
+
- Tracking API calls and responses
|
|
79
|
+
|
|
80
|
+
Basic Usage
|
|
81
|
+
-----------
|
|
82
|
+
|
|
83
|
+
# Display help
|
|
84
|
+
|
|
85
|
+
.. code-block:: shell
|
|
86
|
+
|
|
87
|
+
geai h
|
|
88
|
+
|
|
89
|
+
.. code-block:: shell
|
|
90
|
+
|
|
91
|
+
geai org h
|
|
92
|
+
|
|
93
|
+
.. code-block:: shell
|
|
94
|
+
|
|
95
|
+
geai ast h
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
.. code-block:: shell
|
|
99
|
+
|
|
100
|
+
geai chat h
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
# Create project
|
|
104
|
+
|
|
105
|
+
.. code-block:: shell
|
|
106
|
+
|
|
107
|
+
geai org create-project \
|
|
108
|
+
-n "SDKTest2" \
|
|
109
|
+
-e "geai-sdk@globant.com" \
|
|
110
|
+
-d "Test project for SDK"
|
|
111
|
+
|
|
112
|
+
# Update project
|
|
113
|
+
|
|
114
|
+
.. code-block:: shell
|
|
115
|
+
|
|
116
|
+
geai org update-project \
|
|
117
|
+
--id 12345678-1234-1234-1234-123456789abc \
|
|
118
|
+
--name "SDK Test 3" \
|
|
119
|
+
--description "Test description"
|
|
120
|
+
|
|
121
|
+
# List projects
|
|
122
|
+
|
|
123
|
+
.. code-block:: shell
|
|
124
|
+
|
|
125
|
+
geai org list-projects
|
|
126
|
+
|
|
127
|
+
.. code-block:: shell
|
|
128
|
+
|
|
129
|
+
geai org list-projects -d full
|
|
130
|
+
|
|
131
|
+
# Get tokens from organization
|
|
132
|
+
|
|
133
|
+
.. code-block:: shell
|
|
134
|
+
|
|
135
|
+
geai org get-tokens --id aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
|
|
136
|
+
|
|
137
|
+
# List assistants
|
|
138
|
+
|
|
139
|
+
.. code-block:: shell
|
|
140
|
+
|
|
141
|
+
geai org list-assistants
|
|
142
|
+
|
|
143
|
+
# Get assistant information
|
|
144
|
+
|
|
145
|
+
.. code-block:: shell
|
|
146
|
+
|
|
147
|
+
geai ast get-assistant --id 11111111-2222-3333-4444-555555555555
|
|
148
|
+
|
|
149
|
+
# Chat with assistant
|
|
150
|
+
|
|
151
|
+
.. code-block:: shell
|
|
152
|
+
|
|
153
|
+
geai ast chat \
|
|
154
|
+
--name "Welcome data Assistant" \
|
|
155
|
+
--msg '[{"role": "user", "content": "Translate the phrase free software is the software that protects users freedoms"}, {"role": "user", "content": "now translate to french"]'
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
# Create assistant
|
|
159
|
+
|
|
160
|
+
.. code-block:: shell
|
|
161
|
+
|
|
162
|
+
geai ast create-assistant \
|
|
163
|
+
--type chat \
|
|
164
|
+
--name "Welcome data Assistant 3" \
|
|
165
|
+
--prompt "Translate to French" \
|
|
166
|
+
--wd-title "Assistant with WelcomeData" \
|
|
167
|
+
--wd-description "It is to test WelcomeData" \
|
|
168
|
+
--wd-feature '[{"title": "First Feature", "description": "First Feature Description"}, {"title": "Second Feature", "description": "Second Feature Description"}]' \
|
|
169
|
+
--wd-example-prompt '{"title": "First Prompt Example", "description": "First Prompt Example Description", "prompt_text": "You are an assistant specialized in translating"}'
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
# Update assistant
|
|
173
|
+
|
|
174
|
+
.. code-block:: shell
|
|
175
|
+
|
|
176
|
+
geai ast update-assistant \
|
|
177
|
+
--assistant-id 99999999-8888-7777-6666-555555555555 \
|
|
178
|
+
--action savePublishNewRevision \
|
|
179
|
+
--prompt "translate the following text to Latin" \
|
|
180
|
+
--provider-name "openai" \
|
|
181
|
+
--model-name "gpt-3.5-turbo" \
|
|
182
|
+
--temperature 0.0 \\n --wd-title "Assistant with WelcomeData" \
|
|
183
|
+
--wd-description "It is to test WelcomeData" \
|
|
184
|
+
--wd-feature "Second Feature: Second Feature Description" \
|
|
185
|
+
--wd-feature "First Feature: First Feature Description" \
|
|
186
|
+
--wd-example-prompt "First Prompt Example: First Prompt Example Description: You are an assistant specialized in translating"
|
|
187
|
+
|
|
188
|
+
# Delete assistant
|
|
189
|
+
|
|
190
|
+
.. code-block:: shell
|
|
191
|
+
|
|
192
|
+
geai ast delete-assistant --id 99999999-8888-7777-6666-555555555555
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
# Chat completion
|
|
196
|
+
|
|
197
|
+
.. code-block:: shell
|
|
198
|
+
|
|
199
|
+
geai chat completion \
|
|
200
|
+
--model "saia:assistant:Welcome data Assistant 3" \
|
|
201
|
+
--msg '[{"role": "user", "content": "Translate the phrase free software is the software that protects users freedoms"}, {"role": "user", "content": "now translate to french and italian"}]' \
|
|
202
|
+
--stream 0
|
|
203
|
+
|