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.
- 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
|
@@ -5,4 +5,16 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
|
5
5
|
|
|
6
6
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
7
7
|
|
|
8
|
-
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
8
|
+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
NOTICE
|
|
13
|
+
|
|
14
|
+
This project includes third-party software components:
|
|
15
|
+
|
|
16
|
+
- `a2a-python` by Google LLC, licensed under the Apache License, Version 2.0.
|
|
17
|
+
Repository: https://github.com/google/a2a-python
|
|
18
|
+
|
|
19
|
+
The Apache License applies only to the portions of code originating from the `a2a-python` project.
|
|
20
|
+
A copy of the Apache License 2.0 is included in this distribution at: pygeai/vendor/a2a/LICENSE
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pygeai
|
docs/geai-proxy/README.md
DELETED
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
# GEAI Proxy Documentation
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
The GEAI Proxy is a Python-based tool that acts as an intermediary between the GEAI API and various tool servers. It manages the registration, execution, and result handling of tool operations through a proxy service.
|
|
6
|
-
|
|
7
|
-
## Installation
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
pip install pygeai
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
## Configuration
|
|
14
|
-
|
|
15
|
-
The GEAI Proxy requires two distinct types of configuration:
|
|
16
|
-
|
|
17
|
-
### 1. MCP Servers Configuration
|
|
18
|
-
|
|
19
|
-
This section declares the Model Context Protocol (MCP) servers that this proxy will link with GEAI. The configuration follows the Claude Desktop standard format and supports multiple servers in one file.
|
|
20
|
-
|
|
21
|
-
#### Configuration File Format
|
|
22
|
-
|
|
23
|
-
```json
|
|
24
|
-
{
|
|
25
|
-
"mcpServers": {
|
|
26
|
-
"serverName1": {
|
|
27
|
-
"command": "command-to-launch-server",
|
|
28
|
-
"args": ["arg1", "arg2", ...]
|
|
29
|
-
},
|
|
30
|
-
"serverName2": {
|
|
31
|
-
"command": "command-to-launch-server",
|
|
32
|
-
"args": ["arg1", "arg2", ...]
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
#### Example Configurations
|
|
39
|
-
|
|
40
|
-
1. **Puppeteer Server** (for web automation):
|
|
41
|
-
```json
|
|
42
|
-
{
|
|
43
|
-
"mcpServers": {
|
|
44
|
-
"puppeteer": {
|
|
45
|
-
"command": "npx",
|
|
46
|
-
"args": ["-y", "@modelcontextprotocol/server-puppeteer"]
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
2. **Filesystem Server** (for file operations):
|
|
53
|
-
```json
|
|
54
|
-
{
|
|
55
|
-
"mcpServers": {
|
|
56
|
-
"filesystem": {
|
|
57
|
-
"command": "npx",
|
|
58
|
-
"args": [
|
|
59
|
-
"-y",
|
|
60
|
-
"@modelcontextprotocol/server-filesystem",
|
|
61
|
-
"~/mcp-shared-folder"
|
|
62
|
-
]
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
3. **Multiple Servers Combined**:
|
|
69
|
-
```json
|
|
70
|
-
{
|
|
71
|
-
"mcpServers": {
|
|
72
|
-
"puppeteer": {
|
|
73
|
-
"command": "npx",
|
|
74
|
-
"args": ["-y", "@modelcontextprotocol/server-puppeteer"]
|
|
75
|
-
},
|
|
76
|
-
"filesystem": {
|
|
77
|
-
"command": "npx",
|
|
78
|
-
"args": [
|
|
79
|
-
"-y",
|
|
80
|
-
"@modelcontextprotocol/server-filesystem",
|
|
81
|
-
"~/mcp-shared-folder"
|
|
82
|
-
]
|
|
83
|
-
},
|
|
84
|
-
"custom-server": {
|
|
85
|
-
"command": "python",
|
|
86
|
-
"args": ["path/to/your/custom_mcp_server.py"]
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
A sample configuration file is provided at:
|
|
93
|
-
```
|
|
94
|
-
pygeai/proxy/sample-mcp-config.json
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### 2. Proxy Authentication Configuration
|
|
98
|
-
|
|
99
|
-
This section establishes the connection between the proxy and GEAI and manages user aliases. You can configure it automatically on first run or manually reconfigure an existing alias.
|
|
100
|
-
|
|
101
|
-
#### Automatic Configuration (First Run)
|
|
102
|
-
```bash
|
|
103
|
-
geai-proxy sample-mcp-config.json --alias myalias
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
#### Manual Configuration (Reconfiguration)
|
|
107
|
-
```bash
|
|
108
|
-
geai-proxy --configure --alias myalias
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
During interactive setup, the CLI will prompt you for each required setting:
|
|
112
|
-
|
|
113
|
-
```bash
|
|
114
|
-
# Configuring GEAI proxy settings...
|
|
115
|
-
Generated new proxy ID: 37bae96b-bc99-4110-bb61-b912b28f9e32
|
|
116
|
-
-> Insert proxy ID (UUID) (Current: 37bae96b-bc99-4110-bb61-b912b28f9e32, Leave empty to keep):
|
|
117
|
-
-> Insert proxy API key:
|
|
118
|
-
-> Insert proxy base URL:
|
|
119
|
-
-> Insert proxy name:
|
|
120
|
-
-> Insert proxy description:
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
## Usage
|
|
124
|
-
|
|
125
|
-
### Starting the Proxy
|
|
126
|
-
|
|
127
|
-
To start the proxy server with a specific configuration and alias:
|
|
128
|
-
|
|
129
|
-
```bash
|
|
130
|
-
geai-proxy sample-mcp-config.json --alias myalias
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
### Command Line Arguments
|
|
134
|
-
|
|
135
|
-
| Argument | Description | Required |
|
|
136
|
-
|----------|-------------|----------|
|
|
137
|
-
| `config_file` | Path to the MCP servers configuration file (JSON format) | Yes |
|
|
138
|
-
| `--alias` | Alias for the proxy settings | No |
|
|
139
|
-
| `--configure` | Command to reconfigure proxy authentication | No |
|
|
140
|
-
|
|
141
|
-
## Command Line Usage
|
|
142
|
-
|
|
143
|
-
```bash
|
|
144
|
-
geai-proxy sample-mcp-config.json --alias beta
|
|
145
|
-
```
|
docs/source/conf.py
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# Configuration file for the Sphinx documentation builder.
|
|
2
|
-
#
|
|
3
|
-
# For the full list of built-in configuration values, see the documentation:
|
|
4
|
-
# https://www.sphinx-doc.org/en/master/usage/configuration.html
|
|
5
|
-
|
|
6
|
-
# -- Project information -----------------------------------------------------
|
|
7
|
-
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
|
|
8
|
-
|
|
9
|
-
import os
|
|
10
|
-
import sys
|
|
11
|
-
sys.path.insert(0, os.path.abspath('../..'))
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
project = 'PyGEAI'
|
|
15
|
-
copyright = '2024, Globant'
|
|
16
|
-
author = 'Globant'
|
|
17
|
-
release = 'v0.1.1'
|
|
18
|
-
|
|
19
|
-
# -- General configuration ---------------------------------------------------
|
|
20
|
-
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
|
|
21
|
-
|
|
22
|
-
extensions = ['sphinx.ext.autodoc', 'sphinx_markdown_builder']
|
|
23
|
-
|
|
24
|
-
templates_path = ['_templates']
|
|
25
|
-
exclude_patterns = []
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
# -- Options for HTML output -------------------------------------------------
|
|
30
|
-
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
|
|
31
|
-
|
|
32
|
-
html_theme = 'sphinx_rtd_theme'
|
|
33
|
-
html_static_path = ['_static']
|
|
34
|
-
|
|
35
|
-
# Custom
|
|
36
|
-
html_show_sourcelink = False
|
|
37
|
-
html_show_sphinx = False
|
|
38
|
-
|
|
39
|
-
autodoc_default_options = {
|
|
40
|
-
'members': True,
|
|
41
|
-
'undoc-members': True,
|
|
42
|
-
'show-inheritance': True,
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
autodoc_mock_imports = []
|
|
@@ -1,233 +0,0 @@
|
|
|
1
|
-
import unittest
|
|
2
|
-
from unittest import TestCase
|
|
3
|
-
from unittest.mock import MagicMock, patch
|
|
4
|
-
|
|
5
|
-
from pygeai.core.base.mappers import ResponseMapper
|
|
6
|
-
from pygeai.core.models import Project
|
|
7
|
-
from pygeai.core.base.responses import EmptyResponse, ErrorListResponse
|
|
8
|
-
from pygeai.organization.managers import OrganizationManager
|
|
9
|
-
from pygeai.organization.clients import OrganizationClient
|
|
10
|
-
from pygeai.organization.mappers import OrganizationResponseMapper
|
|
11
|
-
from pygeai.organization.responses import AssistantListResponse, ProjectListResponse, ProjectDataResponse, \
|
|
12
|
-
ProjectTokensResponse, ProjectItemListResponse
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class TestGeai(TestCase):
|
|
16
|
-
"""
|
|
17
|
-
python -m unittest pygeai.tests.core.test_managers.TestGeai
|
|
18
|
-
"""
|
|
19
|
-
|
|
20
|
-
def setUp(self):
|
|
21
|
-
self.manager = OrganizationManager()
|
|
22
|
-
self.mock_client = MagicMock(spec=OrganizationClient)
|
|
23
|
-
with patch("pygeai.organization.clients.OrganizationClient", return_value=self.mock_client):
|
|
24
|
-
self.geai = OrganizationManager(api_key="test_key", base_url="http://test.url")
|
|
25
|
-
|
|
26
|
-
def test_get_assistant_list(self):
|
|
27
|
-
mock_response = AssistantListResponse(assistants=[])
|
|
28
|
-
|
|
29
|
-
with patch.object(self.geai._OrganizationManager__organization_client, 'get_assistant_list', return_value={}):
|
|
30
|
-
with patch.object(OrganizationResponseMapper, 'map_to_assistant_list_response', return_value=mock_response):
|
|
31
|
-
response = self.geai.get_assistant_list()
|
|
32
|
-
|
|
33
|
-
self.assertIsInstance(response, AssistantListResponse)
|
|
34
|
-
self.assertEqual(response.assistants, [])
|
|
35
|
-
|
|
36
|
-
def test_get_project_list(self):
|
|
37
|
-
mock_response = ProjectListResponse(projects=[])
|
|
38
|
-
|
|
39
|
-
with patch.object(self.geai._OrganizationManager__organization_client, 'get_project_list', return_value={}):
|
|
40
|
-
with patch.object(OrganizationResponseMapper, 'map_to_project_list_response', return_value=mock_response):
|
|
41
|
-
response = self.geai.get_project_list()
|
|
42
|
-
|
|
43
|
-
self.assertIsInstance(response, ProjectListResponse)
|
|
44
|
-
self.assertEqual(response.projects, [])
|
|
45
|
-
|
|
46
|
-
def test_get_project_data(self):
|
|
47
|
-
mock_project = Project(
|
|
48
|
-
id="123",
|
|
49
|
-
name="Test Project",
|
|
50
|
-
description="Test Description",
|
|
51
|
-
email="test@example.com",
|
|
52
|
-
usage_limit=None
|
|
53
|
-
)
|
|
54
|
-
|
|
55
|
-
mock_response = ProjectDataResponse(project=mock_project)
|
|
56
|
-
|
|
57
|
-
with patch.object(self.geai._OrganizationManager__organization_client, 'get_project_data', return_value={}):
|
|
58
|
-
with patch.object(OrganizationResponseMapper, 'map_to_project_data', return_value=mock_response):
|
|
59
|
-
response = self.geai.get_project_data("123")
|
|
60
|
-
|
|
61
|
-
self.assertIsInstance(response, ProjectDataResponse)
|
|
62
|
-
self.assertEqual(response.project.name, "Test Project")
|
|
63
|
-
|
|
64
|
-
def test_create_project(self):
|
|
65
|
-
mock_project = Project(
|
|
66
|
-
id="123",
|
|
67
|
-
name="New Project",
|
|
68
|
-
description="A test project",
|
|
69
|
-
email="test@example.com",
|
|
70
|
-
usage_limit=None
|
|
71
|
-
)
|
|
72
|
-
|
|
73
|
-
mock_response = ProjectDataResponse(project=mock_project)
|
|
74
|
-
|
|
75
|
-
with patch.object(self.geai._OrganizationManager__organization_client, 'create_project', return_value={}):
|
|
76
|
-
with patch.object(OrganizationResponseMapper, 'map_to_project_data', return_value=mock_response):
|
|
77
|
-
response = self.geai.create_project(mock_project)
|
|
78
|
-
|
|
79
|
-
self.assertIsInstance(response, ProjectDataResponse)
|
|
80
|
-
self.assertEqual(response.project.name, "New Project")
|
|
81
|
-
|
|
82
|
-
def test_update_project(self):
|
|
83
|
-
mock_project = Project(
|
|
84
|
-
id="123",
|
|
85
|
-
name="Updated Project",
|
|
86
|
-
description="An updated test project",
|
|
87
|
-
email="test@example.com",
|
|
88
|
-
usage_limit=None
|
|
89
|
-
)
|
|
90
|
-
|
|
91
|
-
mock_response = ProjectDataResponse(project=mock_project)
|
|
92
|
-
|
|
93
|
-
with patch.object(self.geai._OrganizationManager__organization_client, 'update_project', return_value={}):
|
|
94
|
-
with patch.object(OrganizationResponseMapper, 'map_to_project_data', return_value=mock_response):
|
|
95
|
-
response = self.geai.update_project(mock_project)
|
|
96
|
-
|
|
97
|
-
self.assertIsInstance(response, ProjectDataResponse)
|
|
98
|
-
self.assertEqual(response.project.name, "Updated Project")
|
|
99
|
-
|
|
100
|
-
def test_delete_project(self):
|
|
101
|
-
mock_response = EmptyResponse(content={})
|
|
102
|
-
|
|
103
|
-
with patch.object(self.geai._OrganizationManager__organization_client, 'delete_project', return_value={}):
|
|
104
|
-
with patch.object(ResponseMapper, 'map_to_empty_response', return_value=mock_response):
|
|
105
|
-
response = self.geai.delete_project("123")
|
|
106
|
-
|
|
107
|
-
self.assertIsInstance(response, EmptyResponse)
|
|
108
|
-
self.assertEqual(response.content, {})
|
|
109
|
-
|
|
110
|
-
def test_get_project_tokens(self):
|
|
111
|
-
mock_response = ProjectTokensResponse(tokens=[])
|
|
112
|
-
|
|
113
|
-
with patch.object(self.geai._OrganizationManager__organization_client, 'get_project_tokens', return_value={"tokens": []}):
|
|
114
|
-
with patch.object( OrganizationResponseMapper, 'map_to_token_list_response', return_value=mock_response):
|
|
115
|
-
response = self.geai.get_project_tokens("123")
|
|
116
|
-
|
|
117
|
-
self.assertIsInstance(response, ProjectTokensResponse)
|
|
118
|
-
self.assertEqual(response.tokens, [])
|
|
119
|
-
|
|
120
|
-
def test_export_request_data(self):
|
|
121
|
-
mock_response = MagicMock()
|
|
122
|
-
mock_response.content = '{"items": []}'
|
|
123
|
-
|
|
124
|
-
self.mock_client.export_request_data.return_value = mock_response
|
|
125
|
-
|
|
126
|
-
with patch.object(self.geai._OrganizationManager__organization_client, 'export_request_data', return_value={"items": []}):
|
|
127
|
-
with patch.object(OrganizationResponseMapper, 'map_to_item_list_response', return_value=ProjectItemListResponse(items=[])):
|
|
128
|
-
response = self.geai.export_request_data()
|
|
129
|
-
|
|
130
|
-
self.assertIsInstance(response, ProjectItemListResponse)
|
|
131
|
-
self.assertEqual(response.items, [])
|
|
132
|
-
|
|
133
|
-
@unittest.skip("Requires call to API")
|
|
134
|
-
def test_create_project_simple(self):
|
|
135
|
-
project = Project(
|
|
136
|
-
project_name="Test project - SDK",
|
|
137
|
-
project_email="alejandro.trinidad@globant.com",
|
|
138
|
-
project_description="Test project to validate programmatic creation of project"
|
|
139
|
-
)
|
|
140
|
-
response = self.manager.create_project(project)
|
|
141
|
-
self.assertIsNotNone(response)
|
|
142
|
-
|
|
143
|
-
@patch("pygeai.organization.clients.OrganizationClient.get_assistant_list")
|
|
144
|
-
def test_get_assistant_list_mocked(self, mock_get_assistant_list):
|
|
145
|
-
"""Test get_assistant_list with a mocked API response."""
|
|
146
|
-
mock_get_assistant_list.return_value = {
|
|
147
|
-
"assistants": [
|
|
148
|
-
{
|
|
149
|
-
"assistantName": "Test assistant 1",
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
"assistantName": "Test assistant 2",
|
|
153
|
-
},
|
|
154
|
-
],
|
|
155
|
-
'projectId': 'proj-123',
|
|
156
|
-
'projectName': "Test Project"
|
|
157
|
-
}
|
|
158
|
-
result = self.manager.get_assistant_list()
|
|
159
|
-
self.assertIsInstance(result, AssistantListResponse)
|
|
160
|
-
|
|
161
|
-
@patch("pygeai.organization.clients.OrganizationClient.get_project_list")
|
|
162
|
-
def test_get_project_list_mocked(self, mock_get_project_list):
|
|
163
|
-
"""Test get_project_list with a mocked API response."""
|
|
164
|
-
mock_get_project_list.return_value = {"projects": []}
|
|
165
|
-
result = self.manager.get_project_list()
|
|
166
|
-
self.assertIsInstance(result, ProjectListResponse)
|
|
167
|
-
|
|
168
|
-
@patch("pygeai.organization.clients.OrganizationClient.get_project_data")
|
|
169
|
-
def test_get_project_data_mocked(self, mock_get_project_data):
|
|
170
|
-
"""Test get_project_data with a mocked API response."""
|
|
171
|
-
mock_get_project_data.return_value = {"projectId": "123", "projectName": "Test Project"}
|
|
172
|
-
result = self.manager.get_project_data("123")
|
|
173
|
-
self.assertIsInstance(result, ProjectDataResponse)
|
|
174
|
-
|
|
175
|
-
@patch("pygeai.organization.clients.OrganizationClient.create_project")
|
|
176
|
-
def test_create_project_mocked(self, mock_create_project):
|
|
177
|
-
"""Test create_project with a mocked API response."""
|
|
178
|
-
mock_create_project.return_value = {"projectId": "123", "projectName": "Test Project"}
|
|
179
|
-
project = Project(name="Test Project", email="test@example.com", description="Description")
|
|
180
|
-
response = self.manager.create_project(project)
|
|
181
|
-
self.assertIsInstance(response, ProjectDataResponse)
|
|
182
|
-
|
|
183
|
-
@patch("pygeai.organization.clients.OrganizationClient.update_project")
|
|
184
|
-
def test_update_project_mocked(self, mock_update_project):
|
|
185
|
-
"""Test update_project with a mocked API response."""
|
|
186
|
-
mock_update_project.return_value = {"projectId": "123", "projectName": "Updated Project"}
|
|
187
|
-
project = Project(name="Updated Project", email="test@example.com", description="Updated description")
|
|
188
|
-
response = self.manager.update_project(project)
|
|
189
|
-
self.assertIsInstance(response, ProjectDataResponse)
|
|
190
|
-
|
|
191
|
-
@patch("pygeai.organization.clients.OrganizationClient.delete_project")
|
|
192
|
-
def test_delete_project_mocked(self, mock_delete_project):
|
|
193
|
-
"""Test delete_project with a mocked API response."""
|
|
194
|
-
mock_delete_project.return_value = {}
|
|
195
|
-
response = self.manager.delete_project("123")
|
|
196
|
-
self.assertIsInstance(response, EmptyResponse)
|
|
197
|
-
|
|
198
|
-
@patch("pygeai.organization.clients.OrganizationClient.get_project_tokens")
|
|
199
|
-
def test_get_project_tokens_mocked(self, mock_get_project_tokens):
|
|
200
|
-
"""Test get_project_tokens with a mocked API response."""
|
|
201
|
-
mock_get_project_tokens.return_value = {"tokens": []}
|
|
202
|
-
result = self.manager.get_project_tokens("123")
|
|
203
|
-
self.assertIsInstance(result, ProjectTokensResponse)
|
|
204
|
-
|
|
205
|
-
@patch("pygeai.organization.clients.OrganizationClient.export_request_data")
|
|
206
|
-
def test_export_request_data_mocked(self, mock_export_request_data):
|
|
207
|
-
"""Test export_request_data with a mocked API response."""
|
|
208
|
-
mock_export_request_data.return_value = {"items": []}
|
|
209
|
-
result = self.manager.export_request_data()
|
|
210
|
-
self.assertIsInstance(result, ProjectItemListResponse)
|
|
211
|
-
|
|
212
|
-
@patch("pygeai.organization.clients.OrganizationClient.get_project_data")
|
|
213
|
-
def test_get_project_data_error_handling(self, mock_get_project_data):
|
|
214
|
-
mock_get_project_data.return_value = {"errors": [{"id": 404, "description": "Project not found"}]}
|
|
215
|
-
response = self.manager.get_project_data("invalid_id")
|
|
216
|
-
self.assertTrue(isinstance(response, ErrorListResponse))
|
|
217
|
-
self.assertTrue(hasattr(response, "errors"))
|
|
218
|
-
error = response.errors[0]
|
|
219
|
-
self.assertEqual(error.id, 404)
|
|
220
|
-
self.assertEqual(error.description, "Project not found")
|
|
221
|
-
self.assertEqual(str(error), "{'id': 404, 'description': 'Project not found'}")
|
|
222
|
-
|
|
223
|
-
@patch("pygeai.organization.clients.OrganizationClient.delete_project")
|
|
224
|
-
def test_delete_project_error_handling(self, mock_delete_project):
|
|
225
|
-
mock_delete_project.return_value = {"errors": [{"id": 403, "description": "Permission denied"}]}
|
|
226
|
-
response = self.manager.delete_project("invalid_id")
|
|
227
|
-
self.assertTrue(isinstance(response, ErrorListResponse))
|
|
228
|
-
self.assertTrue(hasattr(response, "errors"))
|
|
229
|
-
error = response.errors[0]
|
|
230
|
-
self.assertEqual(error.id, 403)
|
|
231
|
-
self.assertEqual(error.description, "Permission denied")
|
|
232
|
-
self.assertEqual(str(error), "{'id': 403, 'description': 'Permission denied'}")
|
|
233
|
-
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: pygeai
|
|
3
|
-
Version: 0.1.51b3
|
|
4
|
-
Summary: Software Development Kit to interact with Globant Enterprise AI.
|
|
5
|
-
Author-email: Globant <geai-sdk@globant.com>
|
|
6
|
-
License-Expression: MIT
|
|
7
|
-
Keywords: geai,pygeai
|
|
8
|
-
Classifier: Development Status :: 5 - Production/Stable
|
|
9
|
-
Classifier: Intended Audience :: Developers
|
|
10
|
-
Classifier: Topic :: Software Development :: Libraries
|
|
11
|
-
Classifier: Programming Language :: Python :: 3
|
|
12
|
-
Classifier: Operating System :: OS Independent
|
|
13
|
-
Classifier: Development Status :: 4 - Beta
|
|
14
|
-
Requires-Python: >=3.10
|
|
15
|
-
Description-Content-Type: text/markdown
|
|
16
|
-
License-File: LICENSE
|
|
17
|
-
Requires-Dist: requests
|
|
18
|
-
Requires-Dist: pydantic
|
|
19
|
-
Requires-Dist: packaging
|
|
20
|
-
Requires-Dist: mcp
|
|
21
|
-
Requires-Dist: pyyaml
|
|
22
|
-
Requires-Dist: prompt_toolkit
|
|
23
|
-
Requires-Dist: toml
|
|
24
|
-
Provides-Extra: docs
|
|
25
|
-
Requires-Dist: sphinx; extra == "docs"
|
|
26
|
-
Requires-Dist: sphinx-rtd-theme; extra == "docs"
|
|
27
|
-
Requires-Dist: sphinx-markdown-builder; extra == "docs"
|
|
28
|
-
Dynamic: license-file
|
|
29
|
-
|
|
30
|
-
# PyGEAI - SDK for Globant Enterprise AI
|
|
31
|
-
|
|
32
|
-
PyGEAI is a Software Development Kit (SDK) for interacting with [Globant Enterprise AI](https://wiki.genexus.com/enterprise-ai/wiki?8,Table+of+contents%3AEnterprise+AI). It comprises libraries, tools, code samples, and documentation to simplify your experience with the platform.
|
|
33
|
-
|
|
34
|
-
## Repository
|
|
35
|
-
|
|
36
|
-
Find the PyGEAI source code and documentation in the following GitHub repository:
|
|
37
|
-
|
|
38
|
-
[GitHub repository](https://github.com/RT-GEN029-GI/pygeai)
|
|
39
|
-
|
|
40
|
-
## Configuration
|
|
41
|
-
|
|
42
|
-
Before using the SDK, you need to define `GEAI_API_KEY` (`$SAIA_APITOKEN`) and `GEAI_API_BASE_URL` (`$BASE_URL`). You can achieve this in three ways:
|
|
43
|
-
|
|
44
|
-
* **Environment variables:** Set `GEAI_API_KEY` and `GEAI_API_BASE_URL` as environment variables in your operating system.
|
|
45
|
-
* **Credentials file:** Create a file named credentials in the `.geai` directory within your user home directory (`$USER_HOME/.geai/credentials`) and define `GEAI_API_KEY` and `GEAI_API_BASE_URL` within this file.
|
|
46
|
-
* **Client instantiation:** Specify the `api_key` and `base_url` parameters directly when creating an instance of a client class.
|
|
47
|
-
|
|
48
|
-
**Note:** If you plan to use the [Evaluation Module](https://wiki.genexus.com/enterprise-ai/wiki?896,Evaluation), you must also define `GEAI_API_EVAL_URL`
|
|
49
|
-
|
|
50
|
-
## Modules
|
|
51
|
-
|
|
52
|
-
The SDK consists of several modules, all accessible through a meta-package:
|
|
53
|
-
|
|
54
|
-
- **`pygeai`**: This meta-package encapsulates all components of the SDK.
|
|
55
|
-
- **`pygeai-cli`**: This package provides a command-line tool for interacting with the SDK.
|
|
56
|
-
- **`pygeai-chat`**: This package offers facilities to chat with assistants/agents created in Globant Enterprise AI.
|
|
57
|
-
- **`pygeai-dbg`**: This package includes a debugger to troubleshoot potential SDK issues and gain detailed insights into its operations [in development].
|
|
58
|
-
- **`pygeai-core`**: This package handles interactions with the fundamental components of Globant Enterprise AI, including users, groups, permissions, API keys, organizations, and [Projects](https://wiki.genexus.com/enterprise-ai/wiki?565,Projects).
|
|
59
|
-
- **`pygeai-admin`**: This package enables interactions with the Globant Enterprise AI instance.
|
|
60
|
-
- **`pygeai-lab`**: This package facilitates interactions with AI LAB.
|
|
61
|
-
- **`pygeai-evaluation`**: This package provides functionality from the evaluation module.
|
|
62
|
-
- **`pygeai-gam`**: This package allows interaction with [GAM] (https://wiki.genexus.com/commwiki/wiki?24746,Table+of+contents%3AGeneXus+Access+Manager+%28GAM%29,).
|
|
63
|
-
- **`pygeai-assistant`**: This package handles interactions with various Assistants, including [Data Analyst Assistants](https://wiki.genexus.com/enterprise-ai/wiki?886,Data+Analyst+Assistant+2.0), [RAG Assistants](https://wiki.genexus.com/enterprise-ai/wiki?44,RAG+Assistants+Introduction), [Chat with Data Assistants](https://wiki.genexus.com/enterprise-ai/wiki?159,Chat+with+Data+Assistant), [Chat with API Assistants](https://wiki.genexus.com/enterprise-ai/wiki?110,API+Assistant), and [Chat Assistants](https://wiki.genexus.com/enterprise-ai/wiki?708,Chat+Assistant).
|
|
64
|
-
- **`pygeai-organization`**: This package facilitates interactions with Organizations in Globant Enterprise AI.
|
|
65
|
-
- **`pygeai-flows`**: This package enables interactions with [Flows](https://wiki.genexus.com/enterprise-ai/wiki?321,Flows+in+Globant+Enterprise+AI) [in development].
|
|
66
|
-
|
|
67
|
-
## Usage
|
|
68
|
-
|
|
69
|
-
### Install PyGEAI
|
|
70
|
-
Use pip to install the package from PyPI:
|
|
71
|
-
|
|
72
|
-
```
|
|
73
|
-
(venv) ~$ pip install pygeai
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
### Verify installation
|
|
77
|
-
To check the installed PyGEAI version, run:
|
|
78
|
-
|
|
79
|
-
```
|
|
80
|
-
(venv) ~$ geai v
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### View help
|
|
84
|
-
|
|
85
|
-
To access the general help menu:
|
|
86
|
-
|
|
87
|
-
```
|
|
88
|
-
(venv) ~$ geai h
|
|
89
|
-
```
|
|
90
|
-
To view help for a specific command:
|
|
91
|
-
|
|
92
|
-
```
|
|
93
|
-
(venv) ~$ geai <command> h
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### Man Pages Documentation
|
|
97
|
-
|
|
98
|
-
The package includes Unix manual pages (man pages) for detailed command-line documentation. To access the man pages:
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
man geai
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
#### Setting up Man Pages Access
|
|
105
|
-
|
|
106
|
-
If you're using a virtual environment, you'll need to configure your system to find the man pages. Add the following to your shell configuration file (`.bashrc`, `.zshrc`, etc.):
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
# For macOS
|
|
110
|
-
if [ -n "$VIRTUAL_ENV" ]; then
|
|
111
|
-
export MANPATH="$VIRTUAL_ENV/share/man:$MANPATH"
|
|
112
|
-
fi
|
|
113
|
-
|
|
114
|
-
# For Linux
|
|
115
|
-
if [ -n "$VIRTUAL_ENV" ]; then
|
|
116
|
-
export MANPATH="$VIRTUAL_ENV/man:$MANPATH"
|
|
117
|
-
fi
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
After adding this configuration:
|
|
121
|
-
1. Reload your shell configuration: `source ~/.bashrc` or `source ~/.zshrc`
|
|
122
|
-
2. The man pages will be available when your virtual environment is active
|
|
123
|
-
|
|
124
|
-
## Bugs and suggestions
|
|
125
|
-
To report any bug, request features or make any suggestions, the following email is available:
|
|
126
|
-
|
|
127
|
-
<geai-sdk@globant.com>
|
|
128
|
-
|
|
129
|
-
## Authors
|
|
130
|
-
Copyright 2025, Globant. All rights reserved
|