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.
- pygeai/__init__.py +9 -1
- 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 +18 -45
- pygeai/assistant/data/clients.py +1 -0
- pygeai/assistant/data_analyst/clients.py +8 -12
- pygeai/assistant/managers.py +195 -157
- pygeai/assistant/mappers.py +4 -2
- pygeai/assistant/rag/clients.py +27 -67
- pygeai/assistant/rag/mappers.py +12 -6
- pygeai/assistant/rag/models.py +301 -159
- pygeai/auth/__init__.py +0 -0
- pygeai/auth/clients.py +129 -0
- pygeai/auth/endpoints.py +6 -0
- pygeai/chat/clients.py +308 -37
- pygeai/chat/endpoints.py +3 -0
- pygeai/chat/iris.py +2 -8
- pygeai/chat/managers.py +9 -6
- 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 +7 -10
- pygeai/cli/commands/analytics.py +533 -0
- pygeai/cli/commands/assistant.py +9 -9
- pygeai/cli/commands/auth.py +299 -0
- pygeai/cli/commands/base.py +71 -9
- pygeai/cli/commands/chat.py +676 -19
- pygeai/cli/commands/common.py +28 -24
- pygeai/cli/commands/configuration.py +66 -13
- pygeai/cli/commands/docs.py +105 -0
- pygeai/cli/commands/embeddings.py +58 -11
- pygeai/cli/commands/evaluation.py +38 -38
- pygeai/cli/commands/feedback.py +3 -4
- pygeai/cli/commands/files.py +7 -8
- pygeai/cli/commands/gam.py +85 -10
- pygeai/cli/commands/lab/ai_lab.py +340 -484
- 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 +6 -7
- pygeai/cli/commands/migrate.py +1064 -436
- pygeai/cli/commands/organization.py +516 -11
- pygeai/cli/commands/rag.py +13 -14
- pygeai/cli/commands/rerank.py +3 -5
- pygeai/cli/commands/secrets.py +8 -9
- pygeai/cli/commands/usage_limits.py +18 -20
- pygeai/cli/commands/validators.py +144 -1
- pygeai/cli/commands/version.py +4 -5
- pygeai/cli/error_handler.py +151 -0
- pygeai/cli/geai.py +170 -31
- pygeai/cli/geai_proxy.py +86 -25
- pygeai/cli/install_man.py +93 -22
- pygeai/cli/parsers.py +75 -25
- pygeai/cli/texts/help.py +265 -28
- pygeai/core/base/clients.py +53 -12
- pygeai/core/base/mappers.py +11 -2
- pygeai/core/base/session.py +95 -11
- pygeai/core/common/config.py +78 -14
- pygeai/core/common/exceptions.py +96 -6
- pygeai/core/embeddings/__init__.py +19 -0
- pygeai/core/embeddings/clients.py +23 -5
- pygeai/core/embeddings/managers.py +9 -4
- pygeai/core/embeddings/mappers.py +16 -2
- pygeai/core/embeddings/responses.py +9 -2
- pygeai/core/feedback/clients.py +8 -3
- pygeai/core/files/clients.py +23 -24
- pygeai/core/files/managers.py +121 -30
- pygeai/core/files/responses.py +4 -3
- pygeai/core/handlers.py +10 -1
- pygeai/core/llm/clients.py +22 -29
- pygeai/core/models.py +127 -11
- pygeai/core/plugins/clients.py +6 -6
- pygeai/core/rerank/clients.py +9 -3
- pygeai/core/rerank/managers.py +22 -5
- pygeai/core/secrets/clients.py +16 -37
- pygeai/core/services/response.py +18 -0
- pygeai/core/services/rest.py +159 -49
- 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 +854 -14
- pygeai/evaluation/clients.py +7 -4
- pygeai/evaluation/dataset/clients.py +46 -44
- pygeai/evaluation/plan/clients.py +28 -26
- pygeai/evaluation/result/clients.py +38 -5
- pygeai/gam/clients.py +50 -28
- pygeai/gam/endpoints.py +2 -1
- pygeai/health/__init__.py +0 -0
- pygeai/health/clients.py +24 -0
- pygeai/health/endpoints.py +1 -0
- pygeai/lab/__init__.py +0 -90
- pygeai/lab/agents/clients.py +203 -162
- pygeai/lab/agents/endpoints.py +4 -0
- pygeai/lab/agents/mappers.py +57 -7
- pygeai/lab/clients.py +24 -0
- pygeai/lab/constants.py +3 -0
- pygeai/lab/managers.py +571 -541
- pygeai/lab/models.py +108 -19
- pygeai/lab/processes/clients.py +332 -340
- pygeai/lab/processes/mappers.py +3 -3
- 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/clients.py +67 -63
- pygeai/lab/strategies/mappers.py +1 -1
- pygeai/lab/tools/clients.py +85 -118
- pygeai/lab/tools/endpoints.py +4 -0
- pygeai/lab/tools/mappers.py +5 -5
- pygeai/man/man1/geai-proxy.1 +116 -0
- pygeai/man/man1/geai.1 +2580 -66
- pygeai/migration/__init__.py +33 -0
- pygeai/migration/strategies.py +468 -146
- pygeai/migration/tools.py +170 -3
- pygeai/organization/clients.py +245 -50
- pygeai/organization/endpoints.py +17 -8
- pygeai/organization/limits/clients.py +34 -32
- pygeai/organization/limits/managers.py +108 -49
- pygeai/organization/managers.py +347 -53
- pygeai/organization/mappers.py +102 -2
- pygeai/organization/responses.py +58 -1
- pygeai/proxy/clients.py +6 -3
- pygeai/proxy/config.py +14 -1
- pygeai/proxy/managers.py +61 -33
- pygeai/proxy/servers.py +196 -51
- pygeai/proxy/tool.py +33 -16
- 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/test_clients.py +346 -0
- pygeai/tests/assistants/rag/test_models.py +292 -0
- pygeai/tests/assistants/test_clients.py +176 -82
- pygeai/tests/assistants/test_managers.py +191 -57
- 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/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 +5 -5
- pygeai/tests/core/base/data/models.py +7 -0
- pygeai/tests/core/base/test_mappers.py +43 -11
- pygeai/tests/core/base/test_models.py +3 -1
- 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/test_clients.py +128 -0
- pygeai/tests/core/files/test_managers.py +124 -78
- 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/test_clients.py +76 -0
- pygeai/tests/core/rerank/test_managers.py +61 -39
- 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/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_models.py +500 -3
- 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/test_clients.py +567 -0
- pygeai/tests/organization/limits/test_managers.py +298 -56
- pygeai/tests/organization/test_clients.py +600 -30
- 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/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/auth/__init__.py +0 -0
- pygeai/tests/snippets/chat/chat_completion_with_reasoning_effort.py +18 -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/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/cache_example.py +31 -0
- pygeai/tests/snippets/embeddings/cohere_example.py +41 -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/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/delete_file.py +1 -4
- pygeai/tests/snippets/files/get_file_content.py +2 -4
- pygeai/tests/snippets/files/get_file_data.py +1 -4
- pygeai/tests/snippets/files/get_file_list.py +1 -6
- pygeai/tests/snippets/files/upload_file.py +1 -5
- pygeai/tests/snippets/gam/gam_access_token.py +87 -0
- pygeai/tests/snippets/lab/agentic_flow_example_1.py +25 -23
- pygeai/tests/snippets/lab/agentic_flow_example_4.py +23 -23
- pygeai/tests/snippets/lab/agents/create_agent.py +5 -8
- pygeai/tests/snippets/lab/agents/create_agent_2.py +1 -5
- 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 +1 -5
- pygeai/tests/snippets/lab/agents/get_agent.py +2 -11
- pygeai/tests/snippets/lab/agents/get_agent_with_new_fields.py +62 -0
- pygeai/tests/snippets/lab/agents/get_sharing_link.py +2 -7
- pygeai/tests/snippets/lab/agents/list_agents.py +4 -7
- pygeai/tests/snippets/lab/agents/publish_agent_revision.py +2 -6
- pygeai/tests/snippets/lab/agents/update_agent.py +1 -5
- 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/create_process.py +3 -5
- pygeai/tests/snippets/lab/processes/create_task.py +3 -5
- pygeai/tests/snippets/lab/processes/jobs/list_jobs.py +10 -19
- pygeai/tests/snippets/lab/processes/kbs/create_kb.py +2 -5
- pygeai/tests/snippets/lab/processes/kbs/get_kb.py +10 -16
- pygeai/tests/snippets/lab/processes/kbs/list_kbs.py +13 -20
- pygeai/tests/snippets/lab/processes/kbs/try_all.py +5 -7
- pygeai/tests/snippets/lab/processes/list_processes.py +5 -7
- pygeai/tests/snippets/lab/runner_1.py +1 -1
- pygeai/tests/snippets/lab/samples/summarize_files.py +3 -3
- pygeai/tests/snippets/lab/strategies/create_reasoning_strategy.py +2 -5
- pygeai/tests/snippets/lab/strategies/get_reasoning_strategy.py +2 -5
- pygeai/tests/snippets/lab/strategies/list_reasoning_strategies.py +3 -6
- pygeai/tests/snippets/lab/strategies/update_reasoning_strategy.py +2 -5
- pygeai/tests/snippets/lab/tools/create_tool.py +4 -10
- pygeai/tests/snippets/lab/tools/create_tool_edge_case.py +50 -0
- pygeai/tests/snippets/lab/tools/delete_tool.py +2 -6
- pygeai/tests/snippets/lab/tools/get_parameter.py +5 -7
- pygeai/tests/snippets/lab/tools/get_tool.py +5 -7
- pygeai/tests/snippets/lab/tools/list_tools.py +3 -7
- pygeai/tests/snippets/lab/tools/publish_tool_revision.py +3 -5
- pygeai/tests/snippets/lab/tools/set_parameters.py +4 -9
- pygeai/tests/snippets/lab/tools/update_tool.py +4 -8
- pygeai/tests/snippets/lab/use_cases/__init__.py +0 -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/{file_summarizer_example.py → use_cases/file_summarizer_example.py} +3 -3
- pygeai/tests/snippets/lab/{file_summarizer_example_2.py → use_cases/file_summarizer_example_2.py} +12 -12
- 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/add_project_member.py +10 -0
- pygeai/tests/snippets/organization/add_project_member_batch.py +44 -0
- pygeai/tests/snippets/organization/create_project.py +2 -2
- 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_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/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.51b3.dist-info → pygeai-0.6.0b15.dist-info}/WHEEL +1 -1
- {pygeai-0.1.51b3.dist-info → pygeai-0.6.0b15.dist-info}/entry_points.txt +2 -1
- {pygeai-0.1.51b3.dist-info → pygeai-0.6.0b15.dist-info}/licenses/LICENSE +13 -1
- pygeai-0.6.0b15.dist-info/top_level.txt +1 -0
- docs/geai-proxy/README.md +0 -145
- docs/source/conf.py +0 -45
- pygeai/tests/core/test_managers.py +0 -233
- pygeai-0.1.51b3.dist-info/METADATA +0 -130
- pygeai-0.1.51b3.dist-info/RECORD +0 -324
- pygeai-0.1.51b3.dist-info/top_level.txt +0 -3
- scripts/bump_beta_version.py +0 -56
- {scripts → pygeai/analytics}/__init__.py +0 -0
- /pygeai/tests/snippets/lab/{c_code_fixer_agent_flow.py → use_cases/c_code_fixer_agent_flow.py} +0 -0
pygeai/cli/texts/help.py
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
AUTHORS_SECTION = """
|
|
2
2
|
AUTHORS
|
|
3
|
-
|
|
4
|
-
- Alejandro Trinidad <alejandro.trinidad@globant.com>
|
|
5
|
-
|
|
6
|
-
Copyright 2025, Globant.
|
|
3
|
+
Copyright 2026, Globant.
|
|
7
4
|
|
|
8
5
|
REPORTING BUGS
|
|
9
6
|
To report any bug, request features or make any suggestions, the following email is available:
|
|
@@ -42,7 +39,7 @@ ERROR CODES
|
|
|
42
39
|
Certain error descriptions can contain up to %n references specific to that error.
|
|
43
40
|
These references are described with %1, %2,... ,%n.
|
|
44
41
|
|
|
45
|
-
ErrorCode
|
|
42
|
+
ErrorCode Description
|
|
46
43
|
1 Assistant Not Found
|
|
47
44
|
2 Provider Type Not Found
|
|
48
45
|
3 Request Not Found
|
|
@@ -139,15 +136,20 @@ DESCRIPTION
|
|
|
139
136
|
|
|
140
137
|
EXAMPLES
|
|
141
138
|
The command:
|
|
142
|
-
geai
|
|
143
|
-
|
|
139
|
+
geai org list-projects
|
|
140
|
+
lists available projects in your organization.
|
|
144
141
|
|
|
145
142
|
The command:
|
|
146
|
-
geai
|
|
147
|
-
|
|
143
|
+
geai org list-projects -d full
|
|
144
|
+
lists all projects with full details.
|
|
148
145
|
|
|
149
146
|
The command:
|
|
150
|
-
|
|
147
|
+
geai org create-project -n "SDKTest" -e "admin@example.com" -d "Test project for SDK"
|
|
148
|
+
creates a new project with specified name, email and description.
|
|
149
|
+
|
|
150
|
+
The command:
|
|
151
|
+
geai org get-tokens --id <PROJECT_UUID>
|
|
152
|
+
retrieves API tokens for a specific project
|
|
151
153
|
|
|
152
154
|
{AUTHORS_SECTION}
|
|
153
155
|
"""
|
|
@@ -170,10 +172,16 @@ DESCRIPTION
|
|
|
170
172
|
|
|
171
173
|
EXAMPLES
|
|
172
174
|
The command:
|
|
173
|
-
|
|
175
|
+
geai ast get-assistant --id <ASSISTANT_UUID>
|
|
176
|
+
retrieves detailed information about a specific assistant.
|
|
174
177
|
|
|
175
178
|
The command:
|
|
176
|
-
|
|
179
|
+
geai ast create-assistant --type chat --name "MyAssistant" --prompt "You are a helpful assistant"
|
|
180
|
+
creates a new assistant with the specified type, name and prompt.
|
|
181
|
+
|
|
182
|
+
The command:
|
|
183
|
+
geai ast chat --name "MyAssistant" --msg '[{{{{"role": "user", "content": "Hello"}}}}]'
|
|
184
|
+
starts a chat session with the specified assistant
|
|
177
185
|
|
|
178
186
|
{AUTHORS_SECTION}
|
|
179
187
|
"""
|
|
@@ -196,10 +204,16 @@ DESCRIPTION
|
|
|
196
204
|
|
|
197
205
|
EXAMPLES
|
|
198
206
|
The command:
|
|
199
|
-
|
|
207
|
+
geai rag list-assistants
|
|
208
|
+
lists all RAG assistants in the current project.
|
|
200
209
|
|
|
201
210
|
The command:
|
|
202
|
-
|
|
211
|
+
geai rag get-assistant --name "MyRAG"
|
|
212
|
+
retrieves information about a specific RAG assistant.
|
|
213
|
+
|
|
214
|
+
The command:
|
|
215
|
+
geai rag upload-document --name "MyRAG" --file "document.pdf"
|
|
216
|
+
uploads a document to a RAG assistant's knowledge base
|
|
203
217
|
|
|
204
218
|
{AUTHORS_SECTION}
|
|
205
219
|
"""
|
|
@@ -217,15 +231,34 @@ SYNOPSIS
|
|
|
217
231
|
DESCRIPTION
|
|
218
232
|
geai chat is a command from geai cli utility, developed to chat with assistant in GEAI.
|
|
219
233
|
|
|
234
|
+
The model needs to specify an assistant_type and a specific_parameter whose format depends on that type. Its format is as follows:
|
|
235
|
+
|
|
236
|
+
"model": "saia:<assistant_type>:<specific_parameter>"
|
|
237
|
+
|
|
238
|
+
assistant_type can be:
|
|
239
|
+
- agent: Identifies a Agent.
|
|
240
|
+
- flow: Identifies a Flow.
|
|
241
|
+
- assistant: Identifies an Assistant API, Data Analyst Assistant, Chat with Data Assistant and API Assistant.
|
|
242
|
+
- search: Identifies a RAG Assistant.
|
|
243
|
+
|
|
244
|
+
For more information, refer to the GEAI Wiki: https://wiki.genexus.com/enterprise-ai/wiki?34,Chat+API
|
|
245
|
+
|
|
220
246
|
The options are as follows:
|
|
221
247
|
{{available_commands}}
|
|
222
248
|
|
|
223
249
|
EXAMPLES
|
|
224
250
|
The command:
|
|
225
251
|
|
|
252
|
+
geai chat iris
|
|
253
|
+
starts an interactive chat session with Iris assistant.
|
|
226
254
|
|
|
227
255
|
The command:
|
|
228
|
-
|
|
256
|
+
geai chat agent --name "MyAgent"
|
|
257
|
+
starts a chat session with a specific agent.
|
|
258
|
+
|
|
259
|
+
The command:
|
|
260
|
+
geai chat completion --model "saia:assistant:MyAssistant" --msg '[{{{{"role": "user", "content": "Hello"}}}}]' --stream 0
|
|
261
|
+
sends a completion request to the specified assistant
|
|
229
262
|
|
|
230
263
|
{AUTHORS_SECTION}
|
|
231
264
|
"""
|
|
@@ -249,9 +282,12 @@ DESCRIPTION
|
|
|
249
282
|
EXAMPLES
|
|
250
283
|
The command:
|
|
251
284
|
|
|
285
|
+
geai gam get-access-token
|
|
286
|
+
retrieves the current GAM access token.
|
|
252
287
|
|
|
253
288
|
The command:
|
|
254
|
-
|
|
289
|
+
geai gam get-user-info
|
|
290
|
+
retrieves user information from GAM
|
|
255
291
|
|
|
256
292
|
{AUTHORS_SECTION}
|
|
257
293
|
"""
|
|
@@ -275,9 +311,12 @@ DESCRIPTION
|
|
|
275
311
|
EXAMPLES
|
|
276
312
|
The command:
|
|
277
313
|
|
|
314
|
+
geai secrets create-secret --name "API_KEY" --value "secret_value"
|
|
315
|
+
creates a new secret in the secrets manager.
|
|
278
316
|
|
|
279
317
|
The command:
|
|
280
|
-
|
|
318
|
+
geai secrets list-secrets
|
|
319
|
+
lists all secrets stored in the project
|
|
281
320
|
|
|
282
321
|
{AUTHORS_SECTION}
|
|
283
322
|
"""
|
|
@@ -301,9 +340,30 @@ DESCRIPTION
|
|
|
301
340
|
EXAMPLES
|
|
302
341
|
The command:
|
|
303
342
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
343
|
+
geai migrate clone-project \\
|
|
344
|
+
--from-api-key "source_api_key_123abc456def789ghi012jkl345mno678pqr901stu234" \\
|
|
345
|
+
--from-organization-api-key "org_key_abc123def456ghi789jkl012mno345pqr678" \\
|
|
346
|
+
--from-project-id "1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p" \\
|
|
347
|
+
--from-instance "https://api.example.ai" \\
|
|
348
|
+
--to-project-name "Migrated Project - Complete Clone" \\
|
|
349
|
+
--admin-email "admin@example.com" \\
|
|
350
|
+
--all
|
|
351
|
+
|
|
352
|
+
will clone entire project within the same instance
|
|
353
|
+
|
|
354
|
+
The command:
|
|
355
|
+
|
|
356
|
+
geai migrate clone-project \\
|
|
357
|
+
--from-api-key "source_api_key_123abc456def789ghi012jkl345mno678pqr901stu234" \\
|
|
358
|
+
--from-organization-api-key "source_org_key_abc123def456ghi789jkl012mno345pqr678" \\
|
|
359
|
+
--from-project-id "1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p" \\
|
|
360
|
+
--from-instance "https://api.test.example.ai" \\
|
|
361
|
+
--to-organization-api-key "dest_org_key_stu901vwx234yz567abc890def123ghi456jkl789" \\
|
|
362
|
+
--to-project-name "Migrated Project - Complete Clone" \\
|
|
363
|
+
--admin-email "admin@example.com" \\
|
|
364
|
+
--all
|
|
365
|
+
|
|
366
|
+
will clone entire project with ALL resources (cross-instance)
|
|
307
367
|
|
|
308
368
|
{AUTHORS_SECTION}
|
|
309
369
|
"""
|
|
@@ -327,9 +387,12 @@ DESCRIPTION
|
|
|
327
387
|
EXAMPLES
|
|
328
388
|
The command:
|
|
329
389
|
|
|
390
|
+
geai rerank rerank-chunks --query "search term" --documents '["doc1", "doc2"]' --model "cohere/rerank-english-v3.0"
|
|
391
|
+
reranks the provided documents based on relevance to the query.
|
|
330
392
|
|
|
331
393
|
The command:
|
|
332
|
-
|
|
394
|
+
geai rerank chunks -q "my query" -d "document text" --top-n 5
|
|
395
|
+
reranks chunks and returns top 5 results
|
|
333
396
|
|
|
334
397
|
{AUTHORS_SECTION}
|
|
335
398
|
"""
|
|
@@ -354,9 +417,16 @@ DESCRIPTION
|
|
|
354
417
|
EXAMPLES
|
|
355
418
|
The command:
|
|
356
419
|
|
|
420
|
+
geai emb generate -i "Help me with Globant Enterprise AI" -m "openai/text-embedding-3-small"
|
|
421
|
+
generates embeddings for the provided text.
|
|
357
422
|
|
|
358
423
|
The command:
|
|
359
|
-
|
|
424
|
+
geai emb generate -i "Help me with" -i "Globant Enterprise AI" -m "openai/text-embedding-3-small" --cache 1
|
|
425
|
+
generates embeddings with caching enabled for multiple inputs.
|
|
426
|
+
|
|
427
|
+
The command:
|
|
428
|
+
geai emb generate -i "text" -m "vertex_ai/text-embedding-004" --input-type "SEMANTIC_SIMILARITY"
|
|
429
|
+
generates embeddings with a specific input type
|
|
360
430
|
|
|
361
431
|
{AUTHORS_SECTION}
|
|
362
432
|
"""
|
|
@@ -380,9 +450,12 @@ DESCRIPTION
|
|
|
380
450
|
EXAMPLES
|
|
381
451
|
The command:
|
|
382
452
|
|
|
453
|
+
geai feedback send --request-id "UUID" --rating 5 --comment "Great response"
|
|
454
|
+
sends positive feedback for an assistant response.
|
|
383
455
|
|
|
384
456
|
The command:
|
|
385
|
-
|
|
457
|
+
geai feedback list --assistant-id "UUID"
|
|
458
|
+
lists all feedback for a specific assistant
|
|
386
459
|
|
|
387
460
|
{AUTHORS_SECTION}
|
|
388
461
|
"""
|
|
@@ -502,9 +575,45 @@ DESCRIPTION
|
|
|
502
575
|
EXAMPLES
|
|
503
576
|
The command:
|
|
504
577
|
|
|
578
|
+
geai admin validate-token
|
|
579
|
+
validates the current API token.
|
|
505
580
|
|
|
506
581
|
The command:
|
|
507
|
-
|
|
582
|
+
geai admin list-authorized-organizations
|
|
583
|
+
lists all organizations the current user has access to.
|
|
584
|
+
|
|
585
|
+
The command:
|
|
586
|
+
geai admin project-visibility --project-id "UUID"
|
|
587
|
+
retrieves visibility settings for a specific project
|
|
588
|
+
|
|
589
|
+
{AUTHORS_SECTION}
|
|
590
|
+
"""
|
|
591
|
+
|
|
592
|
+
AUTH_HELP_TEXT = f"""
|
|
593
|
+
GEAI CLI - AUTH
|
|
594
|
+
-----------------------
|
|
595
|
+
|
|
596
|
+
NAME
|
|
597
|
+
geai - Command Line Interface for Globant Enterprise AI
|
|
598
|
+
|
|
599
|
+
SYNOPSIS
|
|
600
|
+
geai auth <subcommand> --[flag] [flag_arg]
|
|
601
|
+
|
|
602
|
+
DESCRIPTION
|
|
603
|
+
geai auth is a command from geai cli utility, developed to manage authentication access tokens instance of GEAI.
|
|
604
|
+
|
|
605
|
+
The options are as follows:
|
|
606
|
+
{{available_commands}}
|
|
607
|
+
|
|
608
|
+
EXAMPLES
|
|
609
|
+
The command:
|
|
610
|
+
|
|
611
|
+
geai auth get-access-token
|
|
612
|
+
retrieves an OAuth2 access token for authentication.
|
|
613
|
+
|
|
614
|
+
The command:
|
|
615
|
+
geai auth get-user-info
|
|
616
|
+
retrieves the current user's profile information
|
|
508
617
|
|
|
509
618
|
{AUTHORS_SECTION}
|
|
510
619
|
"""
|
|
@@ -530,9 +639,12 @@ DESCRIPTION
|
|
|
530
639
|
EXAMPLES
|
|
531
640
|
The command:
|
|
532
641
|
|
|
642
|
+
geai llm list-models
|
|
643
|
+
lists all available LLM models in GEAI.
|
|
533
644
|
|
|
534
645
|
The command:
|
|
535
|
-
|
|
646
|
+
geai llm list-providers
|
|
647
|
+
lists all available LLM providers
|
|
536
648
|
|
|
537
649
|
{AUTHORS_SECTION}
|
|
538
650
|
"""
|
|
@@ -556,9 +668,12 @@ DESCRIPTION
|
|
|
556
668
|
EXAMPLES
|
|
557
669
|
The command:
|
|
558
670
|
|
|
671
|
+
geai files upload --file "document.pdf" --purpose "assistants"
|
|
672
|
+
uploads a file to GEAI for use with assistants.
|
|
559
673
|
|
|
560
674
|
The command:
|
|
561
|
-
|
|
675
|
+
geai files list
|
|
676
|
+
lists all uploaded files in the project
|
|
562
677
|
|
|
563
678
|
{AUTHORS_SECTION}
|
|
564
679
|
"""
|
|
@@ -582,9 +697,16 @@ DESCRIPTION
|
|
|
582
697
|
EXAMPLES
|
|
583
698
|
The command:
|
|
584
699
|
|
|
700
|
+
geai -a myorg usage-limit set-organization-limit --organization <ORG_UUID> --subscription-type Monthly --usage-unit Cost --soft-limit 1000 --hard-limit 5000 --renewal-status Renewable
|
|
701
|
+
sets usage limits for an organization.
|
|
585
702
|
|
|
586
703
|
The command:
|
|
587
|
-
|
|
704
|
+
geai -a myorg usage-limit get-latest-org-lim --organization <ORG_UUID>
|
|
705
|
+
retrieves the latest usage limit for an organization.
|
|
706
|
+
|
|
707
|
+
The command:
|
|
708
|
+
geai -a myorg usage-limit up-org-lim --organization <ORG_UUID> --lid <LIMIT_UUID> --renewal-status Renewable --soft-limit 5000 --hard-limit 8000
|
|
709
|
+
updates an existing usage limit for an organization
|
|
588
710
|
|
|
589
711
|
{AUTHORS_SECTION}
|
|
590
712
|
"""
|
|
@@ -608,9 +730,124 @@ DESCRIPTION
|
|
|
608
730
|
EXAMPLES
|
|
609
731
|
The command:
|
|
610
732
|
|
|
733
|
+
geai ai-lab create-agent --name "MyAgent" --instructions "You are a helpful agent"
|
|
734
|
+
creates a new agent in the AI Lab.
|
|
611
735
|
|
|
612
736
|
The command:
|
|
613
|
-
|
|
737
|
+
geai ai-lab list-agents
|
|
738
|
+
lists all agents in the current project.
|
|
739
|
+
|
|
740
|
+
The command:
|
|
741
|
+
geai ai-lab create-process --name "MyProcess" --description "Automated workflow"
|
|
742
|
+
creates a new agentic process
|
|
743
|
+
|
|
744
|
+
{AUTHORS_SECTION}
|
|
745
|
+
"""
|
|
746
|
+
|
|
747
|
+
SPEC_HELP_TEXT = f"""
|
|
748
|
+
GEAI CLI - AI LAB - SPEC
|
|
749
|
+
------------------------
|
|
750
|
+
|
|
751
|
+
NAME
|
|
752
|
+
geai - Command Line Interface for Globant Enterprise AI
|
|
753
|
+
|
|
754
|
+
SYNOPSIS
|
|
755
|
+
geai spec <subcommand> --[flag] [flag_arg]
|
|
756
|
+
|
|
757
|
+
DESCRIPTION
|
|
758
|
+
geai spec is a command from geai cli utility, developed to load components to the AI Lab in GEAI from json specifications.
|
|
759
|
+
|
|
760
|
+
The options are as follows:
|
|
761
|
+
{{available_commands}}
|
|
762
|
+
|
|
763
|
+
EXAMPLES
|
|
764
|
+
The command:
|
|
765
|
+
|
|
766
|
+
geai spec load-agent --file "agent_spec.json"
|
|
767
|
+
loads an agent from a JSON specification file.
|
|
768
|
+
|
|
769
|
+
The command:
|
|
770
|
+
geai spec load-process --file "process_spec.json"
|
|
771
|
+
loads an agentic process from a JSON specification file
|
|
772
|
+
|
|
773
|
+
{AUTHORS_SECTION}
|
|
774
|
+
"""
|
|
775
|
+
|
|
776
|
+
DOCS_HELP_TEXT = f"""
|
|
777
|
+
GEAI CLI - DOCS
|
|
778
|
+
---------------
|
|
779
|
+
|
|
780
|
+
NAME
|
|
781
|
+
geai - Command Line Interface for Globant Enterprise AI
|
|
782
|
+
|
|
783
|
+
SYNOPSIS
|
|
784
|
+
geai docs <subcommand>
|
|
785
|
+
|
|
786
|
+
DESCRIPTION
|
|
787
|
+
geai docs is a command from geai cli utility to view the PyGEAI SDK documentation.
|
|
788
|
+
|
|
789
|
+
The options are as follows:
|
|
790
|
+
{{available_commands}}
|
|
791
|
+
|
|
792
|
+
EXAMPLES
|
|
793
|
+
The command:
|
|
794
|
+
|
|
795
|
+
geai docs
|
|
796
|
+
opens the HTML documentation in your web browser.
|
|
797
|
+
|
|
798
|
+
If documentation dependencies are not installed, you will be prompted to install them.
|
|
799
|
+
If the documentation is not built, it will be automatically generated.
|
|
800
|
+
|
|
801
|
+
{AUTHORS_SECTION}
|
|
802
|
+
"""
|
|
803
|
+
|
|
804
|
+
ANALYTICS_HELP_TEXT = f"""
|
|
805
|
+
GEAI CLI - ANALYTICS
|
|
806
|
+
--------------------
|
|
807
|
+
|
|
808
|
+
NAME
|
|
809
|
+
geai - Command Line Interface for Globant Enterprise AI
|
|
810
|
+
|
|
811
|
+
SYNOPSIS
|
|
812
|
+
geai analytics <subcommand> --[flag] [flag_arg]
|
|
813
|
+
|
|
814
|
+
DESCRIPTION
|
|
815
|
+
geai analytics is a command from geai cli utility, developed to retrieve analytics and metrics from GEAI.
|
|
816
|
+
|
|
817
|
+
Date Range Defaults:
|
|
818
|
+
If --start-date and --end-date are not specified, the commands will default to the previous month
|
|
819
|
+
(from the first day to the last day of the previous month).
|
|
820
|
+
|
|
821
|
+
The options are as follows:
|
|
822
|
+
{{available_commands}}
|
|
823
|
+
|
|
824
|
+
EXAMPLES
|
|
825
|
+
The command:
|
|
826
|
+
|
|
827
|
+
geai analytics agents-created --start-date "2024-01-01" --end-date "2024-01-31"
|
|
828
|
+
retrieves the total number of agents created and modified in January 2024.
|
|
829
|
+
|
|
830
|
+
The command:
|
|
831
|
+
|
|
832
|
+
geai analytics full-report
|
|
833
|
+
retrieves a comprehensive analytics report for the previous month.
|
|
834
|
+
|
|
835
|
+
The command:
|
|
836
|
+
|
|
837
|
+
geai analytics full-report --start-date "2024-01-01" --end-date "2024-01-31" --csv report.csv
|
|
838
|
+
retrieves a comprehensive analytics report for January 2024 and exports it to report.csv.
|
|
839
|
+
|
|
840
|
+
The command:
|
|
841
|
+
geai analytics total-cost -s "2024-01-01" -e "2024-01-31"
|
|
842
|
+
retrieves the total cost for January 2024.
|
|
843
|
+
|
|
844
|
+
The command:
|
|
845
|
+
geai analytics requests-per-day -s "2024-01-01" -e "2024-01-31"
|
|
846
|
+
retrieves the total requests per day for January 2024.
|
|
847
|
+
|
|
848
|
+
The command:
|
|
849
|
+
geai analytics top-agents -s "2024-01-01" -e "2024-01-31"
|
|
850
|
+
retrieves the top 10 agents by number of requests
|
|
614
851
|
|
|
615
852
|
{AUTHORS_SECTION}
|
|
616
853
|
"""
|
pygeai/core/base/clients.py
CHANGED
|
@@ -1,33 +1,74 @@
|
|
|
1
1
|
from abc import ABC
|
|
2
|
+
from pygeai import logger
|
|
2
3
|
|
|
3
4
|
from pygeai.core.base.session import get_session, Session
|
|
4
5
|
from pygeai.core.common.exceptions import MissingRequirementException
|
|
5
6
|
from pygeai.core.services.rest import ApiService
|
|
7
|
+
from pygeai.core.utils.validators import validate_status_code
|
|
8
|
+
|
|
6
9
|
|
|
7
10
|
|
|
8
11
|
class BaseClient(ABC):
|
|
12
|
+
_logged_session_config = None
|
|
9
13
|
|
|
10
|
-
def __init__(self, api_key: str = None, base_url: str = None, alias: str =
|
|
14
|
+
def __init__(self, api_key: str = None, base_url: str = None, alias: str = None, *,
|
|
15
|
+
access_token: str = None, project_id: str = None):
|
|
11
16
|
"""
|
|
12
17
|
If commont settings are not specified, they're retrieved from default Session, based on the
|
|
13
18
|
credential files.
|
|
14
19
|
:param api_key: GEAI API KEY to access services
|
|
15
20
|
:param base_url: URL for GEAI instance to be used
|
|
21
|
+
:param alias: Alias to use from credentials file
|
|
22
|
+
:param access_token: OAuth access token (keyword-only)
|
|
23
|
+
:param project_id: Project ID for OAuth authentication (keyword-only)
|
|
16
24
|
"""
|
|
17
|
-
if
|
|
18
|
-
|
|
19
|
-
|
|
25
|
+
if access_token and not project_id:
|
|
26
|
+
raise MissingRequirementException("project_id is required when using access_token")
|
|
27
|
+
|
|
28
|
+
if not (api_key and base_url) and not (access_token and base_url) and alias:
|
|
29
|
+
self.__session = get_session(alias)
|
|
30
|
+
if not self.__session:
|
|
20
31
|
raise MissingRequirementException("API KEY and BASE URL must be defined in order to use this functionality")
|
|
32
|
+
elif (api_key or access_token) and base_url:
|
|
33
|
+
self.__session = get_session()
|
|
34
|
+
self.__session.api_key = api_key
|
|
35
|
+
self.__session.access_token = access_token
|
|
36
|
+
self.__session.project_id = project_id
|
|
37
|
+
self.__session.base_url = base_url
|
|
38
|
+
else:
|
|
39
|
+
self.__session = get_session()
|
|
21
40
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
41
|
+
if self.session is None:
|
|
42
|
+
raise MissingRequirementException("Cannot access this functionality without setting API_KEY and BASE_URL")
|
|
43
|
+
|
|
44
|
+
# Log session config only once per unique session configuration
|
|
45
|
+
session_config_key = (
|
|
46
|
+
self.session.alias,
|
|
47
|
+
self.session.base_url,
|
|
48
|
+
bool(self.session.access_token),
|
|
49
|
+
bool(self.session.api_key)
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
if BaseClient._logged_session_config != session_config_key:
|
|
53
|
+
if self.session.access_token and self.session.project_id:
|
|
54
|
+
logger.info(f"Using OAuth 2.0 authentication")
|
|
55
|
+
elif self.session.api_key:
|
|
56
|
+
logger.info(f"Using API Key authentication")
|
|
57
|
+
else:
|
|
58
|
+
logger.warning("No authentication method configured")
|
|
59
|
+
|
|
60
|
+
logger.info(f"Alias: {self.session.alias}")
|
|
61
|
+
logger.info(f"Base URL: {self.session.base_url}")
|
|
62
|
+
|
|
63
|
+
BaseClient._logged_session_config = session_config_key
|
|
26
64
|
|
|
27
|
-
self.
|
|
28
|
-
|
|
29
|
-
self.
|
|
30
|
-
|
|
65
|
+
token = self.session.access_token if self.session.access_token else self.session.api_key
|
|
66
|
+
|
|
67
|
+
self.__api_service = ApiService(
|
|
68
|
+
base_url=self.session.base_url,
|
|
69
|
+
token=token,
|
|
70
|
+
project_id=self.session.project_id
|
|
71
|
+
)
|
|
31
72
|
|
|
32
73
|
@property
|
|
33
74
|
def session(self):
|
pygeai/core/base/mappers.py
CHANGED
|
@@ -351,13 +351,22 @@ class ModelMapper:
|
|
|
351
351
|
@classmethod
|
|
352
352
|
def map_to_item(cls, data: dict) -> RequestItem:
|
|
353
353
|
return RequestItem(
|
|
354
|
+
api_token=data.get('apiToken'),
|
|
354
355
|
assistant=data.get('assistant'),
|
|
356
|
+
cost=data.get('cost'),
|
|
357
|
+
elapsed_time_ms=data.get('elapsedTimeMs'),
|
|
358
|
+
end_timestamp=data.get('endTimestamp'),
|
|
359
|
+
feedback=data.get('feedback'),
|
|
355
360
|
intent=data.get('intent'),
|
|
356
|
-
|
|
361
|
+
module=data.get('module'),
|
|
357
362
|
prompt=data.get('prompt'),
|
|
358
363
|
output=data.get('output'),
|
|
359
364
|
input_text=data.get('inputText'),
|
|
360
|
-
|
|
365
|
+
rag_sources_consulted=data.get('ragSourcesConsulted'),
|
|
366
|
+
session_id=data.get('sessionId'),
|
|
367
|
+
start_timestamp=data.get('startTimestamp'),
|
|
368
|
+
status=data.get('status'),
|
|
369
|
+
timestamp=data.get('timestamp')
|
|
361
370
|
)
|
|
362
371
|
|
|
363
372
|
@classmethod
|
pygeai/core/base/session.py
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import os
|
|
2
1
|
import sys
|
|
2
|
+
from typing import Optional
|
|
3
3
|
|
|
4
|
+
from pygeai import logger
|
|
4
5
|
from pygeai.core.common.config import get_settings
|
|
5
6
|
from pygeai.core.common.exceptions import MissingRequirementException
|
|
6
7
|
from pygeai.core.singleton import Singleton
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
|
|
10
|
+
_session = None
|
|
9
11
|
|
|
10
12
|
|
|
11
13
|
class Session(metaclass=Singleton):
|
|
@@ -15,19 +17,36 @@ class Session(metaclass=Singleton):
|
|
|
15
17
|
:param api_key: str - API key to interact with GEAI
|
|
16
18
|
:param base_url: str - Base URL of the GEAI instance
|
|
17
19
|
:param eval_url: Optional[str] - Optional evaluation endpoint URL
|
|
20
|
+
:param access_token: Optional[str] - OAuth access token (keyword-only)
|
|
21
|
+
:param project_id: Optional[str] - Project ID for OAuth authentication (keyword-only)
|
|
18
22
|
:return: Session - Instance of the Session class
|
|
19
23
|
:raises: ValueError - If required parameters are missing or invalid
|
|
20
24
|
"""
|
|
21
25
|
|
|
22
26
|
def __init__(
|
|
23
27
|
self,
|
|
24
|
-
api_key: str,
|
|
25
|
-
base_url: str,
|
|
26
|
-
eval_url: str = None,
|
|
28
|
+
api_key: str = None,
|
|
29
|
+
base_url: str = None,
|
|
30
|
+
eval_url: Optional[str] = None,
|
|
31
|
+
*,
|
|
32
|
+
access_token: Optional[str] = None,
|
|
33
|
+
project_id: Optional[str] = None,
|
|
34
|
+
alias: Optional[str] = None,
|
|
27
35
|
):
|
|
36
|
+
if not api_key and not access_token:
|
|
37
|
+
logger.warning("Cannot instantiate session without api_key or access_token")
|
|
38
|
+
if not base_url:
|
|
39
|
+
logger.warning("Cannot instantiate session without base_url")
|
|
40
|
+
|
|
28
41
|
self.__api_key = api_key
|
|
29
42
|
self.__base_url = base_url
|
|
30
43
|
self.__eval_url = eval_url
|
|
44
|
+
self.__access_token = access_token
|
|
45
|
+
self.__project_id = project_id
|
|
46
|
+
self.__alias = alias if alias else "default"
|
|
47
|
+
|
|
48
|
+
global _session
|
|
49
|
+
_session = self
|
|
31
50
|
|
|
32
51
|
@property
|
|
33
52
|
def api_key(self):
|
|
@@ -53,18 +72,83 @@ class Session(metaclass=Singleton):
|
|
|
53
72
|
def eval_url(self, eval_url: str):
|
|
54
73
|
self.__eval_url = eval_url
|
|
55
74
|
|
|
75
|
+
@property
|
|
76
|
+
def access_token(self):
|
|
77
|
+
return self.__access_token
|
|
78
|
+
|
|
79
|
+
@access_token.setter
|
|
80
|
+
def access_token(self, access_token: str):
|
|
81
|
+
self.__access_token = access_token
|
|
82
|
+
|
|
83
|
+
@property
|
|
84
|
+
def project_id(self):
|
|
85
|
+
return self.__project_id
|
|
86
|
+
|
|
87
|
+
@project_id.setter
|
|
88
|
+
def project_id(self, project_id: str):
|
|
89
|
+
self.__project_id = project_id
|
|
90
|
+
|
|
91
|
+
@property
|
|
92
|
+
def alias(self):
|
|
93
|
+
return self.__alias
|
|
94
|
+
|
|
95
|
+
@alias.setter
|
|
96
|
+
def alias(self, alias: str):
|
|
97
|
+
self.__alias = alias
|
|
98
|
+
|
|
56
99
|
|
|
57
|
-
def get_session(alias: str =
|
|
100
|
+
def get_session(alias: str = None) -> Session:
|
|
58
101
|
"""
|
|
59
102
|
Session is a singleton object:
|
|
60
103
|
On the first invocation, returns Session configured with the API KEY and BASE URL corresponding to the
|
|
61
104
|
alias provided. On the following invocations, it returns the first object instantiated.
|
|
62
105
|
"""
|
|
63
106
|
try:
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
107
|
+
settings = get_settings()
|
|
108
|
+
global _session
|
|
109
|
+
if _session is None:
|
|
110
|
+
if not alias:
|
|
111
|
+
alias = "default"
|
|
112
|
+
|
|
113
|
+
_validate_alias(alias, allow_missing_default=True)
|
|
114
|
+
|
|
115
|
+
_session = Session(
|
|
116
|
+
api_key=settings.get_api_key(alias),
|
|
117
|
+
base_url=settings.get_base_url(alias),
|
|
118
|
+
eval_url=settings.get_eval_url(alias),
|
|
119
|
+
access_token=settings.get_access_token(alias),
|
|
120
|
+
project_id=settings.get_project_id(alias),
|
|
121
|
+
alias=alias,
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
elif _session is not None and alias:
|
|
125
|
+
_validate_alias(alias, allow_missing_default=False)
|
|
126
|
+
|
|
127
|
+
_session.alias = alias
|
|
128
|
+
_session.api_key = settings.get_api_key(alias)
|
|
129
|
+
_session.base_url = settings.get_base_url(alias)
|
|
130
|
+
_session.eval_url = settings.get_eval_url(alias)
|
|
131
|
+
_session.access_token = settings.get_access_token(alias)
|
|
132
|
+
_session.project_id = settings.get_project_id(alias)
|
|
133
|
+
|
|
134
|
+
return _session
|
|
69
135
|
except ValueError as e:
|
|
136
|
+
logger.warning(f"Warning: API_KEY and/or BASE_URL not set. {e}")
|
|
70
137
|
sys.stdout.write("Warning: API_KEY and/or BASE_URL not set. Please run geai configure to set them up.\n")
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
def _validate_alias(alias: str, allow_missing_default: bool = False):
|
|
141
|
+
settings = get_settings()
|
|
142
|
+
available_aliases = settings.list_aliases()
|
|
143
|
+
if alias not in available_aliases:
|
|
144
|
+
if allow_missing_default and alias == "default":
|
|
145
|
+
return
|
|
146
|
+
raise MissingRequirementException(
|
|
147
|
+
f"The profile '{alias}' doesn't exist. Use 'geai configure --list' to see available profiles."
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def reset_session():
|
|
152
|
+
"""Reset the session instance. Useful for testing."""
|
|
153
|
+
global _session
|
|
154
|
+
_session = None
|