pygeai 0.1.6__py3-none-any.whl → 0.6.0b15__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pygeai/__init__.py +11 -2
- pygeai/_docs/Makefile +20 -0
- pygeai/_docs/make.bat +35 -0
- pygeai/_docs/source/conf.py +117 -0
- pygeai/_docs/source/content/ai_lab/cli.rst +747 -0
- pygeai/_docs/source/content/ai_lab/models.rst +1734 -0
- pygeai/_docs/source/content/ai_lab/runner.rst +253 -0
- pygeai/_docs/source/content/ai_lab/spec.rst +431 -0
- pygeai/_docs/source/content/ai_lab/usage.rst +1011 -0
- pygeai/_docs/source/content/ai_lab.rst +102 -0
- pygeai/_docs/source/content/analytics.rst +598 -0
- pygeai/_docs/source/content/api_reference/admin.rst +161 -0
- pygeai/_docs/source/content/api_reference/assistant.rst +326 -0
- pygeai/_docs/source/content/api_reference/auth.rst +379 -0
- pygeai/_docs/source/content/api_reference/chat.rst +754 -0
- pygeai/_docs/source/content/api_reference/embeddings.rst +154 -0
- pygeai/_docs/source/content/api_reference/evaluation.rst +590 -0
- pygeai/_docs/source/content/api_reference/feedback.rst +237 -0
- pygeai/_docs/source/content/api_reference/files.rst +592 -0
- pygeai/_docs/source/content/api_reference/gam.rst +401 -0
- pygeai/_docs/source/content/api_reference/health.rst +58 -0
- pygeai/_docs/source/content/api_reference/project.rst +738 -0
- pygeai/_docs/source/content/api_reference/proxy.rst +318 -0
- pygeai/_docs/source/content/api_reference/rag.rst +710 -0
- pygeai/_docs/source/content/api_reference/rerank.rst +94 -0
- pygeai/_docs/source/content/api_reference/secrets.rst +495 -0
- pygeai/_docs/source/content/api_reference/usage_limits.rst +390 -0
- pygeai/_docs/source/content/api_reference.rst +58 -0
- pygeai/_docs/source/content/authentication.rst +295 -0
- pygeai/_docs/source/content/chat_gui.rst +121 -0
- pygeai/_docs/source/content/cli.rst +203 -0
- pygeai/_docs/source/content/debugger.rst +651 -0
- pygeai/_docs/source/content/intro.rst +67 -0
- pygeai/_docs/source/content/migration.rst +929 -0
- pygeai/_docs/source/content/modules.rst +7 -0
- pygeai/_docs/source/content/quickstart.rst +143 -0
- pygeai/_docs/source/content/samples.rst +394 -0
- pygeai/_docs/source/index.rst +75 -0
- pygeai/_docs/source/modules.rst +7 -0
- pygeai/_docs/source/pygeai.admin.rst +29 -0
- pygeai/_docs/source/pygeai.analytics.rst +53 -0
- pygeai/_docs/source/pygeai.assistant.data.rst +21 -0
- pygeai/_docs/source/pygeai.assistant.data_analyst.rst +29 -0
- pygeai/_docs/source/pygeai.assistant.rag.rst +53 -0
- pygeai/_docs/source/pygeai.assistant.rst +55 -0
- pygeai/_docs/source/pygeai.auth.rst +29 -0
- pygeai/_docs/source/pygeai.chat.rst +69 -0
- pygeai/_docs/source/pygeai.cli.commands.flows.rst +10 -0
- pygeai/_docs/source/pygeai.cli.commands.lab.rst +53 -0
- pygeai/_docs/source/pygeai.cli.commands.rst +222 -0
- pygeai/_docs/source/pygeai.cli.rst +62 -0
- pygeai/_docs/source/pygeai.cli.texts.rst +21 -0
- pygeai/_docs/source/pygeai.core.base.rst +53 -0
- pygeai/_docs/source/pygeai.core.common.rst +37 -0
- pygeai/_docs/source/pygeai.core.embeddings.rst +61 -0
- pygeai/_docs/source/pygeai.core.feedback.rst +37 -0
- pygeai/_docs/source/pygeai.core.files.rst +61 -0
- pygeai/_docs/source/pygeai.core.llm.rst +29 -0
- pygeai/_docs/source/pygeai.core.plugins.rst +37 -0
- pygeai/_docs/source/pygeai.core.rerank.rst +53 -0
- pygeai/_docs/source/pygeai.core.rst +63 -0
- pygeai/_docs/source/pygeai.core.secrets.rst +29 -0
- pygeai/_docs/source/pygeai.core.services.llm.rst +29 -0
- pygeai/_docs/source/pygeai.core.services.rst +37 -0
- pygeai/_docs/source/pygeai.core.utils.rst +37 -0
- pygeai/_docs/source/pygeai.dbg.rst +21 -0
- pygeai/_docs/source/pygeai.evaluation.dataset.rst +29 -0
- pygeai/_docs/source/pygeai.evaluation.plan.rst +29 -0
- pygeai/_docs/source/pygeai.evaluation.result.rst +29 -0
- pygeai/_docs/source/pygeai.evaluation.rst +31 -0
- pygeai/_docs/source/pygeai.flows.rst +29 -0
- pygeai/_docs/source/pygeai.gam.rst +29 -0
- pygeai/_docs/source/pygeai.health.rst +29 -0
- pygeai/_docs/source/pygeai.lab.agents.rst +37 -0
- pygeai/_docs/source/pygeai.lab.processes.rst +37 -0
- pygeai/_docs/source/pygeai.lab.rst +65 -0
- pygeai/_docs/source/pygeai.lab.spec.rst +29 -0
- pygeai/_docs/source/pygeai.lab.strategies.rst +37 -0
- pygeai/_docs/source/pygeai.lab.tools.rst +37 -0
- pygeai/_docs/source/pygeai.man.man1.rst +10 -0
- pygeai/_docs/source/pygeai.man.rst +18 -0
- pygeai/_docs/source/pygeai.migration.rst +29 -0
- pygeai/_docs/source/pygeai.organization.limits.rst +45 -0
- pygeai/_docs/source/pygeai.organization.rst +61 -0
- pygeai/_docs/source/pygeai.proxy.rst +53 -0
- pygeai/_docs/source/pygeai.rst +35 -0
- pygeai/_docs/source/pygeai.tests.admin.rst +21 -0
- pygeai/_docs/source/pygeai.tests.analytics.rst +45 -0
- pygeai/_docs/source/pygeai.tests.assistants.rag.rst +37 -0
- pygeai/_docs/source/pygeai.tests.assistants.rst +45 -0
- pygeai/_docs/source/pygeai.tests.auth.rst +29 -0
- pygeai/_docs/source/pygeai.tests.chat.rst +45 -0
- pygeai/_docs/source/pygeai.tests.cli.commands.lab.rst +37 -0
- pygeai/_docs/source/pygeai.tests.cli.commands.rst +165 -0
- pygeai/_docs/source/pygeai.tests.cli.docker.rst +10 -0
- pygeai/_docs/source/pygeai.tests.cli.rst +46 -0
- pygeai/_docs/source/pygeai.tests.core.base.data.rst +29 -0
- pygeai/_docs/source/pygeai.tests.core.base.rst +45 -0
- pygeai/_docs/source/pygeai.tests.core.common.data.rst +10 -0
- pygeai/_docs/source/pygeai.tests.core.common.rst +37 -0
- pygeai/_docs/source/pygeai.tests.core.embeddings.rst +37 -0
- pygeai/_docs/source/pygeai.tests.core.feedback.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.files.rst +53 -0
- pygeai/_docs/source/pygeai.tests.core.llm.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.plugins.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.rerank.rst +37 -0
- pygeai/_docs/source/pygeai.tests.core.rst +39 -0
- pygeai/_docs/source/pygeai.tests.core.secrets.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.services.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.utils.rst +21 -0
- pygeai/_docs/source/pygeai.tests.dbg.rst +21 -0
- pygeai/_docs/source/pygeai.tests.evaluation.dataset.rst +21 -0
- pygeai/_docs/source/pygeai.tests.evaluation.plan.rst +21 -0
- pygeai/_docs/source/pygeai.tests.evaluation.result.rst +21 -0
- pygeai/_docs/source/pygeai.tests.evaluation.rst +20 -0
- pygeai/_docs/source/pygeai.tests.gam.rst +21 -0
- pygeai/_docs/source/pygeai.tests.health.rst +21 -0
- pygeai/_docs/source/pygeai.tests.integration.assistants.rag.rst +21 -0
- pygeai/_docs/source/pygeai.tests.integration.assistants.rst +18 -0
- pygeai/_docs/source/pygeai.tests.integration.chat.rst +21 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.agents.rst +69 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.processes.rst +77 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.reasoning_strategies.rst +37 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.rst +21 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.tools.rst +77 -0
- pygeai/_docs/source/pygeai.tests.integration.rst +20 -0
- pygeai/_docs/source/pygeai.tests.lab.agents.rst +29 -0
- pygeai/_docs/source/pygeai.tests.lab.processes.rst +29 -0
- pygeai/_docs/source/pygeai.tests.lab.rst +49 -0
- pygeai/_docs/source/pygeai.tests.lab.spec.rst +29 -0
- pygeai/_docs/source/pygeai.tests.lab.strategies.rst +29 -0
- pygeai/_docs/source/pygeai.tests.lab.tools.rst +29 -0
- pygeai/_docs/source/pygeai.tests.migration.rst +29 -0
- pygeai/_docs/source/pygeai.tests.organization.limits.rst +29 -0
- pygeai/_docs/source/pygeai.tests.organization.rst +53 -0
- pygeai/_docs/source/pygeai.tests.proxy.rst +61 -0
- pygeai/_docs/source/pygeai.tests.rst +33 -0
- pygeai/admin/clients.py +14 -11
- pygeai/admin/endpoints.py +2 -2
- pygeai/analytics/clients.py +505 -0
- pygeai/analytics/endpoints.py +35 -0
- pygeai/analytics/managers.py +606 -0
- pygeai/analytics/mappers.py +207 -0
- pygeai/analytics/responses.py +240 -0
- pygeai/assistant/clients.py +48 -57
- pygeai/assistant/data/__init__.py +0 -0
- pygeai/assistant/data/clients.py +15 -0
- pygeai/assistant/data_analyst/__init__.py +0 -0
- pygeai/assistant/data_analyst/clients.py +75 -0
- pygeai/assistant/data_analyst/endpoints.py +2 -0
- pygeai/assistant/endpoints.py +0 -2
- pygeai/assistant/managers.py +738 -0
- pygeai/assistant/mappers.py +153 -0
- pygeai/assistant/rag/clients.py +132 -21
- pygeai/assistant/rag/mappers.py +228 -0
- pygeai/assistant/rag/models.py +396 -0
- pygeai/assistant/rag/responses.py +10 -0
- pygeai/auth/__init__.py +0 -0
- pygeai/auth/clients.py +129 -0
- pygeai/auth/endpoints.py +6 -0
- pygeai/chat/clients.py +406 -31
- pygeai/chat/endpoints.py +3 -0
- pygeai/chat/iris.py +17 -0
- pygeai/chat/managers.py +64 -0
- pygeai/chat/session.py +38 -0
- pygeai/chat/settings.py +6 -0
- pygeai/chat/ui.py +678 -0
- pygeai/cli/__init__.py +0 -1
- pygeai/cli/commands/admin.py +9 -12
- pygeai/cli/commands/analytics.py +533 -0
- pygeai/cli/commands/assistant.py +11 -11
- pygeai/cli/commands/auth.py +299 -0
- pygeai/cli/commands/base.py +201 -7
- pygeai/cli/commands/chat.py +875 -14
- pygeai/cli/commands/common.py +30 -26
- pygeai/cli/commands/configuration.py +84 -9
- pygeai/cli/commands/docs.py +105 -0
- pygeai/cli/commands/embeddings.py +187 -0
- pygeai/cli/commands/evaluation.py +2069 -0
- pygeai/cli/commands/feedback.py +93 -0
- pygeai/cli/commands/files.py +312 -0
- pygeai/cli/commands/flows/__init__.py +0 -0
- pygeai/cli/commands/gam.py +349 -0
- pygeai/cli/commands/lab/__init__.py +0 -0
- pygeai/cli/commands/lab/ai_lab.py +4110 -0
- pygeai/cli/commands/lab/common.py +135 -0
- pygeai/cli/commands/lab/options.py +8 -0
- pygeai/cli/commands/lab/spec.py +273 -0
- pygeai/cli/commands/lab/utils.py +13 -0
- pygeai/cli/commands/llm.py +164 -0
- pygeai/cli/commands/migrate.py +1198 -0
- pygeai/cli/commands/options.py +86 -0
- pygeai/cli/commands/organization.py +560 -98
- pygeai/cli/commands/rag.py +306 -10
- pygeai/cli/commands/rerank.py +108 -0
- pygeai/cli/commands/secrets.py +357 -0
- pygeai/cli/commands/usage_limits.py +583 -0
- pygeai/cli/commands/validators.py +209 -0
- pygeai/cli/commands/version.py +44 -0
- pygeai/cli/error_handler.py +151 -0
- pygeai/cli/geai.py +171 -30
- pygeai/cli/geai_proxy.py +318 -0
- pygeai/cli/install_man.py +107 -0
- pygeai/cli/parsers.py +78 -25
- pygeai/cli/texts/help.py +712 -55
- pygeai/core/__init__.py +9 -1
- pygeai/core/base/clients.py +61 -10
- pygeai/core/base/mappers.py +208 -30
- pygeai/core/base/models.py +8 -308
- pygeai/core/base/responses.py +18 -1
- pygeai/core/base/session.py +110 -17
- pygeai/core/common/config.py +98 -16
- pygeai/core/common/decorators.py +44 -0
- pygeai/core/common/exceptions.py +104 -4
- pygeai/core/embeddings/__init__.py +19 -0
- pygeai/core/embeddings/clients.py +93 -0
- pygeai/core/embeddings/endpoints.py +1 -0
- pygeai/core/embeddings/managers.py +62 -0
- pygeai/core/embeddings/mappers.py +52 -0
- pygeai/core/embeddings/models.py +14 -0
- pygeai/core/embeddings/responses.py +31 -0
- pygeai/core/feedback/__init__.py +0 -0
- pygeai/core/feedback/clients.py +50 -0
- pygeai/core/feedback/endpoints.py +1 -0
- pygeai/core/feedback/models.py +10 -0
- pygeai/core/files/__init__.py +0 -0
- pygeai/core/files/clients.py +156 -0
- pygeai/core/files/endpoints.py +5 -0
- pygeai/core/files/managers.py +224 -0
- pygeai/core/files/mappers.py +44 -0
- pygeai/core/files/models.py +24 -0
- pygeai/core/files/responses.py +19 -0
- pygeai/core/handlers.py +32 -0
- pygeai/core/llm/__init__.py +0 -0
- pygeai/core/llm/clients.py +53 -0
- pygeai/core/llm/endpoints.py +4 -0
- pygeai/core/models.py +799 -0
- pygeai/core/plugins/__init__.py +0 -0
- pygeai/core/plugins/clients.py +32 -0
- pygeai/core/plugins/endpoints.py +1 -0
- pygeai/core/plugins/models.py +86 -0
- pygeai/core/rerank/__init__.py +0 -0
- pygeai/core/rerank/clients.py +35 -0
- pygeai/core/rerank/endpoints.py +1 -0
- pygeai/core/rerank/managers.py +47 -0
- pygeai/core/rerank/mappers.py +23 -0
- pygeai/core/rerank/models.py +27 -0
- pygeai/core/responses.py +104 -0
- pygeai/core/secrets/__init__.py +0 -0
- pygeai/core/secrets/clients.py +212 -0
- pygeai/core/secrets/endpoints.py +7 -0
- pygeai/core/services/llm/__init__.py +0 -0
- pygeai/core/services/llm/model.py +186 -0
- pygeai/core/services/llm/providers.py +15 -0
- pygeai/core/services/response.py +18 -0
- pygeai/core/services/rest.py +311 -89
- pygeai/core/utils/__init__.py +0 -0
- pygeai/core/utils/console.py +83 -0
- pygeai/core/utils/parsers.py +32 -0
- pygeai/core/utils/validators.py +10 -0
- pygeai/dbg/__init__.py +3 -0
- pygeai/dbg/debugger.py +870 -0
- pygeai/evaluation/__init__.py +0 -0
- pygeai/evaluation/clients.py +19 -0
- pygeai/evaluation/dataset/__init__.py +0 -0
- pygeai/evaluation/dataset/clients.py +514 -0
- pygeai/evaluation/dataset/endpoints.py +26 -0
- pygeai/evaluation/plan/__init__.py +0 -0
- pygeai/evaluation/plan/clients.py +302 -0
- pygeai/evaluation/plan/endpoints.py +16 -0
- pygeai/evaluation/result/__init__.py +0 -0
- pygeai/evaluation/result/clients.py +70 -0
- pygeai/evaluation/result/endpoints.py +2 -0
- pygeai/flows/__init__.py +0 -0
- pygeai/flows/endpoints.py +362 -0
- pygeai/flows/models.py +1304 -0
- pygeai/gam/__init__.py +0 -0
- pygeai/gam/clients.py +178 -0
- pygeai/gam/endpoints.py +4 -0
- pygeai/health/__init__.py +0 -0
- pygeai/health/clients.py +24 -0
- pygeai/health/endpoints.py +1 -0
- pygeai/lab/__init__.py +0 -0
- pygeai/lab/agents/__init__.py +0 -0
- pygeai/lab/agents/clients.py +426 -0
- pygeai/lab/agents/endpoints.py +12 -0
- pygeai/lab/agents/mappers.py +319 -0
- pygeai/lab/clients.py +24 -0
- pygeai/lab/constants.py +3 -0
- pygeai/lab/managers.py +1558 -0
- pygeai/lab/models.py +1719 -0
- pygeai/lab/processes/__init__.py +0 -0
- pygeai/lab/processes/clients.py +1051 -0
- pygeai/lab/processes/endpoints.py +26 -0
- pygeai/lab/processes/mappers.py +395 -0
- pygeai/lab/runners.py +90 -0
- pygeai/lab/spec/__init__.py +0 -0
- pygeai/lab/spec/loader.py +24 -0
- pygeai/lab/spec/parsers.py +39 -0
- pygeai/lab/strategies/__init__.py +0 -0
- pygeai/lab/strategies/clients.py +212 -0
- pygeai/lab/strategies/endpoints.py +5 -0
- pygeai/lab/strategies/mappers.py +58 -0
- pygeai/lab/tools/__init__.py +0 -0
- pygeai/lab/tools/clients.py +465 -0
- pygeai/lab/tools/endpoints.py +13 -0
- pygeai/lab/tools/mappers.py +131 -0
- pygeai/man/__init__.py +1 -0
- pygeai/man/man1/__init__.py +1 -0
- pygeai/man/man1/geai-proxy.1 +246 -0
- pygeai/man/man1/geai.1 +2615 -0
- pygeai/migration/__init__.py +33 -0
- pygeai/migration/strategies.py +603 -0
- pygeai/migration/tools.py +180 -0
- pygeai/organization/clients.py +246 -18
- pygeai/organization/endpoints.py +17 -8
- pygeai/organization/limits/__init__.py +0 -0
- pygeai/organization/limits/clients.py +281 -0
- pygeai/organization/limits/endpoints.py +15 -0
- pygeai/organization/limits/managers.py +331 -0
- pygeai/organization/limits/mappers.py +21 -0
- pygeai/organization/managers.py +537 -0
- pygeai/organization/mappers.py +111 -46
- pygeai/organization/responses.py +61 -11
- pygeai/proxy/__init__.py +0 -0
- pygeai/proxy/clients.py +216 -0
- pygeai/proxy/config.py +128 -0
- pygeai/proxy/managers.py +232 -0
- pygeai/proxy/servers.py +304 -0
- pygeai/proxy/tool.py +69 -0
- pygeai/tests/admin/__init__.py +0 -0
- pygeai/tests/admin/test_clients.py +148 -0
- pygeai/tests/analytics/__init__.py +0 -0
- pygeai/tests/analytics/test_clients.py +86 -0
- pygeai/tests/analytics/test_managers.py +94 -0
- pygeai/tests/analytics/test_mappers.py +84 -0
- pygeai/tests/analytics/test_responses.py +73 -0
- pygeai/tests/assistants/rag/__init__.py +0 -0
- pygeai/tests/assistants/rag/test_clients.py +346 -0
- pygeai/tests/assistants/rag/test_mappers.py +189 -0
- pygeai/tests/assistants/rag/test_models.py +292 -0
- pygeai/tests/assistants/test_clients.py +176 -80
- pygeai/tests/assistants/test_managers.py +198 -0
- pygeai/tests/assistants/test_mappers.py +111 -0
- pygeai/tests/auth/__init__.py +0 -0
- pygeai/tests/auth/test_clients.py +289 -0
- pygeai/tests/auth/test_oauth.py +172 -0
- pygeai/tests/auth/test_session_logging.py +150 -0
- pygeai/tests/chat/__init__.py +0 -0
- pygeai/tests/chat/test_clients.py +393 -0
- pygeai/tests/chat/test_iris.py +38 -0
- pygeai/tests/chat/test_session.py +62 -0
- pygeai/tests/chat/test_ui.py +224 -0
- pygeai/tests/cli/__init__.py +0 -0
- pygeai/tests/cli/commands/__init__.py +0 -0
- pygeai/tests/cli/commands/lab/__init__.py +0 -0
- pygeai/tests/cli/commands/lab/test_ai_lab.py +786 -0
- pygeai/tests/cli/commands/lab/test_common.py +208 -0
- pygeai/tests/cli/commands/lab/test_spec.py +246 -0
- pygeai/tests/cli/commands/test_assistant.py +202 -0
- pygeai/tests/cli/commands/test_chat.py +130 -0
- pygeai/tests/cli/commands/test_common.py +350 -0
- pygeai/tests/cli/commands/test_embeddings.py +132 -0
- pygeai/tests/cli/commands/test_evaluation.py +656 -0
- pygeai/tests/cli/commands/test_feedback.py +65 -0
- pygeai/tests/cli/commands/test_files.py +161 -0
- pygeai/tests/cli/commands/test_gam.py +201 -0
- pygeai/tests/cli/commands/test_llm.py +114 -0
- pygeai/tests/cli/commands/test_migrate.py +176 -0
- pygeai/tests/cli/commands/test_organization.py +276 -0
- pygeai/tests/cli/commands/test_rag.py +266 -0
- pygeai/tests/cli/commands/test_rerank.py +110 -0
- pygeai/tests/cli/commands/test_secrets.py +171 -0
- pygeai/tests/cli/commands/test_show_help.py +41 -0
- pygeai/tests/cli/commands/test_usage_limits.py +412 -0
- pygeai/tests/cli/commands/test_validators.py +160 -0
- pygeai/tests/cli/commands/test_version.py +81 -0
- pygeai/tests/cli/docker/__init__.py +0 -0
- pygeai/tests/cli/test_credentials_flag.py +316 -0
- pygeai/tests/cli/test_error_handler.py +225 -0
- pygeai/tests/cli/test_geai_driver.py +154 -0
- pygeai/tests/cli/test_parsers.py +154 -0
- pygeai/tests/core/base/__init__.py +0 -0
- pygeai/tests/core/base/data/__init__.py +0 -0
- pygeai/tests/core/base/data/mappers.py +117 -0
- pygeai/tests/core/base/data/models.py +312 -0
- pygeai/tests/core/base/test_mappers.py +569 -0
- pygeai/tests/core/base/test_models.py +261 -0
- pygeai/tests/core/base/test_responses.py +53 -0
- pygeai/tests/core/common/__init__.py +0 -0
- pygeai/tests/core/common/data/__init__.py +0 -0
- pygeai/tests/core/common/test_config.py +186 -0
- pygeai/tests/core/common/test_decorators.py +69 -0
- pygeai/tests/core/embeddings/__init__.py +0 -0
- pygeai/tests/core/embeddings/test_clients.py +225 -0
- pygeai/tests/core/embeddings/test_managers.py +171 -0
- pygeai/tests/core/embeddings/test_mappers.py +142 -0
- pygeai/tests/core/feedback/__init__.py +0 -0
- pygeai/tests/core/feedback/test_clients.py +64 -0
- pygeai/tests/core/files/__init__.py +0 -0
- pygeai/tests/core/files/test_clients.py +128 -0
- pygeai/tests/core/files/test_managers.py +219 -0
- pygeai/tests/core/files/test_mappers.py +137 -0
- pygeai/tests/core/files/test_models.py +103 -0
- pygeai/tests/core/files/test_responses.py +122 -0
- pygeai/tests/core/llm/__init__.py +0 -0
- pygeai/tests/core/llm/test_clients.py +142 -0
- pygeai/tests/core/plugins/__init__.py +0 -0
- pygeai/tests/core/plugins/test_clients.py +66 -0
- pygeai/tests/core/rerank/__init__.py +0 -0
- pygeai/tests/core/rerank/test_clients.py +76 -0
- pygeai/tests/core/rerank/test_managers.py +99 -0
- pygeai/tests/core/rerank/test_mappers.py +54 -0
- pygeai/tests/core/secrets/__init__.py +0 -0
- pygeai/tests/core/secrets/test_clients.py +264 -0
- pygeai/tests/core/services/__init__.py +0 -0
- pygeai/tests/core/services/test_rest.py +273 -0
- pygeai/tests/core/test_handlers.py +66 -0
- pygeai/tests/core/utils/__init__.py +0 -0
- pygeai/tests/core/utils/test_console.py +80 -0
- pygeai/tests/dbg/__init__.py +0 -0
- pygeai/tests/dbg/test_debugger.py +591 -0
- pygeai/tests/evaluation/__init__.py +0 -0
- pygeai/tests/evaluation/dataset/__init__.py +0 -0
- pygeai/tests/evaluation/dataset/test_clients.py +265 -0
- pygeai/tests/evaluation/plan/__init__.py +0 -0
- pygeai/tests/evaluation/plan/test_clients.py +195 -0
- pygeai/tests/evaluation/result/__init__.py +0 -0
- pygeai/tests/evaluation/result/test_clients.py +66 -0
- pygeai/tests/gam/__init__.py +0 -0
- pygeai/tests/gam/test_clients.py +195 -0
- pygeai/tests/health/__init__.py +0 -0
- pygeai/tests/health/test_clients.py +41 -0
- pygeai/tests/integration/__init__.py +0 -0
- pygeai/tests/integration/assistants/__init__.py +0 -0
- pygeai/tests/integration/assistants/rag/__init__.py +0 -0
- pygeai/tests/integration/assistants/rag/test_create_rag.py +91 -0
- pygeai/tests/integration/chat/__init__.py +0 -0
- pygeai/tests/integration/chat/test_generate_image.py +158 -0
- pygeai/tests/integration/lab/__init__.py +0 -0
- pygeai/tests/integration/lab/agents/__init__.py +0 -0
- pygeai/tests/integration/lab/agents/test_agents_list.py +106 -0
- pygeai/tests/integration/lab/agents/test_create_agent.py +319 -0
- pygeai/tests/integration/lab/agents/test_create_sharing_link.py +70 -0
- pygeai/tests/integration/lab/agents/test_delete_agent.py +75 -0
- pygeai/tests/integration/lab/agents/test_get_agent.py +94 -0
- pygeai/tests/integration/lab/agents/test_publish_agent_revision.py +127 -0
- pygeai/tests/integration/lab/agents/test_update_agent.py +250 -0
- pygeai/tests/integration/lab/processes/__init__.py +0 -0
- pygeai/tests/integration/lab/processes/test_create_process.py +345 -0
- pygeai/tests/integration/lab/processes/test_create_task.py +211 -0
- pygeai/tests/integration/lab/processes/test_delete_process.py +111 -0
- pygeai/tests/integration/lab/processes/test_get_process.py +201 -0
- pygeai/tests/integration/lab/processes/test_list_process_instances.py +91 -0
- pygeai/tests/integration/lab/processes/test_list_processes.py +138 -0
- pygeai/tests/integration/lab/processes/test_publish_process_revision.py +232 -0
- pygeai/tests/integration/lab/processes/test_update_process.py +289 -0
- pygeai/tests/integration/lab/reasoning_strategies/__init__.py +0 -0
- pygeai/tests/integration/lab/reasoning_strategies/test_get_reasoning_strategy.py +70 -0
- pygeai/tests/integration/lab/reasoning_strategies/test_list_reasoning_strategies.py +93 -0
- pygeai/tests/integration/lab/reasoning_strategies/test_update_reasoning_strategy.py +149 -0
- pygeai/tests/integration/lab/tools/__init__.py +0 -0
- pygeai/tests/integration/lab/tools/test_create_tool.py +288 -0
- pygeai/tests/integration/lab/tools/test_delete_tool.py +87 -0
- pygeai/tests/integration/lab/tools/test_get_parameter.py +98 -0
- pygeai/tests/integration/lab/tools/test_get_tool.py +91 -0
- pygeai/tests/integration/lab/tools/test_list_tools.py +106 -0
- pygeai/tests/integration/lab/tools/test_publish_tool_revision.py +119 -0
- pygeai/tests/integration/lab/tools/test_set_parameter.py +114 -0
- pygeai/tests/integration/lab/tools/test_update_tool.py +267 -0
- pygeai/tests/lab/__init__.py +0 -0
- pygeai/tests/lab/agents/__init__.py +0 -0
- pygeai/tests/lab/agents/test_clients.py +481 -0
- pygeai/tests/lab/agents/test_mappers.py +440 -0
- pygeai/tests/lab/processes/__init__.py +0 -0
- pygeai/tests/lab/processes/test_clients.py +1416 -0
- pygeai/tests/lab/processes/test_mappers.py +1092 -0
- pygeai/tests/lab/spec/__init__.py +0 -0
- pygeai/tests/lab/spec/test_loader.py +59 -0
- pygeai/tests/lab/spec/test_parsers.py +182 -0
- pygeai/tests/lab/strategies/__init__.py +0 -0
- pygeai/tests/lab/strategies/test_clients.py +241 -0
- pygeai/tests/lab/strategies/test_mappers.py +132 -0
- pygeai/tests/lab/test_managers.py +553 -0
- pygeai/tests/lab/test_mappers.py +245 -0
- pygeai/tests/lab/test_models.py +1154 -0
- pygeai/tests/lab/tools/__init__.py +0 -0
- pygeai/tests/lab/tools/test_clients.py +521 -0
- pygeai/tests/lab/tools/test_mappers.py +198 -0
- pygeai/tests/migration/__init__.py +0 -0
- pygeai/tests/migration/test_strategies.py +405 -0
- pygeai/tests/migration/test_tools.py +159 -0
- pygeai/tests/organization/limits/__init__.py +0 -0
- pygeai/tests/organization/limits/test_clients.py +567 -0
- pygeai/tests/organization/limits/test_managers.py +402 -0
- pygeai/tests/organization/test_clients.py +615 -64
- pygeai/tests/organization/test_managers.py +424 -0
- pygeai/tests/organization/test_mappers.py +153 -0
- pygeai/tests/organization/test_responses.py +137 -0
- pygeai/tests/proxy/__init__.py +1 -0
- pygeai/tests/proxy/test_clients.py +397 -0
- pygeai/tests/proxy/test_config.py +171 -0
- pygeai/tests/proxy/test_integration.py +305 -0
- pygeai/tests/proxy/test_managers.py +312 -0
- pygeai/tests/proxy/test_servers.py +387 -0
- pygeai/tests/proxy/test_tool.py +176 -0
- pygeai/tests/snippets/__init__.py +0 -0
- pygeai/tests/snippets/analytics/__init__.py +0 -0
- pygeai/tests/snippets/analytics/get_agent_usage_per_user.py +16 -0
- pygeai/tests/snippets/analytics/get_agents_created_and_modified.py +11 -0
- pygeai/tests/snippets/analytics/get_average_cost_per_request.py +10 -0
- pygeai/tests/snippets/analytics/get_overall_error_rate.py +10 -0
- pygeai/tests/snippets/analytics/get_top_10_agents_by_requests.py +12 -0
- pygeai/tests/snippets/analytics/get_total_active_users.py +10 -0
- pygeai/tests/snippets/analytics/get_total_cost.py +10 -0
- pygeai/tests/snippets/analytics/get_total_requests_per_day.py +12 -0
- pygeai/tests/snippets/analytics/get_total_tokens.py +12 -0
- pygeai/tests/snippets/assistants/__init__.py +0 -0
- pygeai/tests/snippets/assistants/create_chat_assistant.py +54 -0
- pygeai/tests/snippets/assistants/create_text_assistant.py +51 -0
- pygeai/tests/snippets/assistants/data_analyst/__init__.py +0 -0
- pygeai/tests/snippets/assistants/data_analyst/extend_and_check.py +100 -0
- pygeai/tests/snippets/assistants/data_analyst/extend_dataset.py +9 -0
- pygeai/tests/snippets/assistants/data_analyst/get_status.py +9 -0
- pygeai/tests/snippets/assistants/file_summarizer_assistant.py +149 -0
- pygeai/tests/snippets/assistants/get_assistant_data.py +8 -0
- pygeai/tests/snippets/assistants/get_assistant_list.py +7 -0
- pygeai/tests/snippets/assistants/rag/__init__.py +0 -0
- pygeai/tests/snippets/assistants/rag/create_rag_assistant.py +65 -0
- pygeai/tests/snippets/assistants/rag/delete_al_documents.py +7 -0
- pygeai/tests/snippets/assistants/rag/delete_document.py +10 -0
- pygeai/tests/snippets/assistants/rag/delete_rag_assistant.py +8 -0
- pygeai/tests/snippets/assistants/rag/get_document.py +10 -0
- pygeai/tests/snippets/assistants/rag/get_documents.py +7 -0
- pygeai/tests/snippets/assistants/rag/get_rag_assistant_data.py +8 -0
- pygeai/tests/snippets/assistants/rag/update_rag_assistant.py +48 -0
- pygeai/tests/snippets/assistants/rag/upload_document.py +19 -0
- pygeai/tests/snippets/assistants/send_feedback.py +14 -0
- pygeai/tests/snippets/assistants/update_chat_assistant.py +63 -0
- pygeai/tests/snippets/auth/__init__.py +0 -0
- pygeai/tests/snippets/chat/__init__.py +0 -0
- pygeai/tests/snippets/chat/cancel_request.py +7 -0
- pygeai/tests/snippets/chat/chat_completion.py +28 -0
- pygeai/tests/snippets/chat/chat_completion_1.py +40 -0
- pygeai/tests/snippets/chat/chat_completion_2.py +60 -0
- pygeai/tests/snippets/chat/chat_completion_3.py +27 -0
- pygeai/tests/snippets/chat/chat_completion_4.py +67 -0
- pygeai/tests/snippets/chat/chat_completion_streaming.py +63 -0
- pygeai/tests/snippets/chat/chat_completion_with_reasoning_effort.py +18 -0
- pygeai/tests/snippets/chat/get_request_status.py +7 -0
- pygeai/tests/snippets/chat/get_response.py +15 -0
- pygeai/tests/snippets/chat/get_response_complete_example.py +67 -0
- pygeai/tests/snippets/chat/get_response_streaming.py +20 -0
- pygeai/tests/snippets/chat/get_response_with_files.py +16 -0
- pygeai/tests/snippets/chat/get_response_with_instructions.py +19 -0
- pygeai/tests/snippets/chat/get_response_with_metadata.py +24 -0
- pygeai/tests/snippets/chat/get_response_with_parallel_tools.py +58 -0
- pygeai/tests/snippets/chat/get_response_with_reasoning.py +21 -0
- pygeai/tests/snippets/chat/get_response_with_store.py +38 -0
- pygeai/tests/snippets/chat/get_response_with_tools.py +36 -0
- pygeai/tests/snippets/chat/get_response_with_truncation.py +24 -0
- pygeai/tests/snippets/chat/send_chat_request.py +33 -0
- pygeai/tests/snippets/dbg/__init__.py +0 -0
- pygeai/tests/snippets/dbg/basic_debugging.py +32 -0
- pygeai/tests/snippets/dbg/breakpoint_management.py +48 -0
- pygeai/tests/snippets/dbg/file_debugging.py +72 -0
- pygeai/tests/snippets/dbg/module_debugging.py +61 -0
- pygeai/tests/snippets/dbg/stack_navigation.py +45 -0
- pygeai/tests/snippets/dbg/stepping_example.py +40 -0
- pygeai/tests/snippets/embeddings/__init__.py +0 -0
- pygeai/tests/snippets/embeddings/cache_example.py +31 -0
- pygeai/tests/snippets/embeddings/cohere_example.py +41 -0
- pygeai/tests/snippets/embeddings/generate_embeddings.py +26 -0
- pygeai/tests/snippets/embeddings/openai_base64_example.py +27 -0
- pygeai/tests/snippets/embeddings/openai_example.py +30 -0
- pygeai/tests/snippets/embeddings/similarity_example.py +42 -0
- pygeai/tests/snippets/evaluation/__init__.py +0 -0
- pygeai/tests/snippets/evaluation/dataset/__init__.py +0 -0
- pygeai/tests/snippets/evaluation/dataset/complete_workflow_example.py +195 -0
- pygeai/tests/snippets/evaluation/dataset/create_dataset.py +26 -0
- pygeai/tests/snippets/evaluation/dataset/create_dataset_from_file.py +11 -0
- pygeai/tests/snippets/evaluation/dataset/create_dataset_row.py +17 -0
- pygeai/tests/snippets/evaluation/dataset/create_expected_source.py +18 -0
- pygeai/tests/snippets/evaluation/dataset/create_filter_variable.py +19 -0
- pygeai/tests/snippets/evaluation/dataset/delete_dataset.py +9 -0
- pygeai/tests/snippets/evaluation/dataset/delete_dataset_row.py +10 -0
- pygeai/tests/snippets/evaluation/dataset/delete_expected_source.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/delete_filter_variable.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/get_dataset.py +9 -0
- pygeai/tests/snippets/evaluation/dataset/get_dataset_row.py +10 -0
- pygeai/tests/snippets/evaluation/dataset/get_expected_source.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/get_filter_variable.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/list_dataset_rows.py +9 -0
- pygeai/tests/snippets/evaluation/dataset/list_datasets.py +6 -0
- pygeai/tests/snippets/evaluation/dataset/list_expected_sources.py +10 -0
- pygeai/tests/snippets/evaluation/dataset/list_filter_variables.py +10 -0
- pygeai/tests/snippets/evaluation/dataset/update_dataset.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/update_dataset_row.py +20 -0
- pygeai/tests/snippets/evaluation/dataset/update_expected_source.py +18 -0
- pygeai/tests/snippets/evaluation/dataset/update_filter_variable.py +19 -0
- pygeai/tests/snippets/evaluation/dataset/upload_dataset_rows_file.py +10 -0
- pygeai/tests/snippets/evaluation/plan/__init__.py +0 -0
- pygeai/tests/snippets/evaluation/plan/add_plan_system_metric.py +13 -0
- pygeai/tests/snippets/evaluation/plan/complete_workflow_example.py +136 -0
- pygeai/tests/snippets/evaluation/plan/create_evaluation_plan.py +24 -0
- pygeai/tests/snippets/evaluation/plan/create_rag_evaluation_plan.py +22 -0
- pygeai/tests/snippets/evaluation/plan/delete_evaluation_plan.py +9 -0
- pygeai/tests/snippets/evaluation/plan/delete_plan_system_metric.py +13 -0
- pygeai/tests/snippets/evaluation/plan/execute_evaluation_plan.py +11 -0
- pygeai/tests/snippets/evaluation/plan/get_evaluation_plan.py +9 -0
- pygeai/tests/snippets/evaluation/plan/get_plan_system_metric.py +13 -0
- pygeai/tests/snippets/evaluation/plan/get_system_metric.py +9 -0
- pygeai/tests/snippets/evaluation/plan/list_evaluation_plans.py +7 -0
- pygeai/tests/snippets/evaluation/plan/list_plan_system_metrics.py +9 -0
- pygeai/tests/snippets/evaluation/plan/list_system_metrics.py +7 -0
- pygeai/tests/snippets/evaluation/plan/update_evaluation_plan.py +22 -0
- pygeai/tests/snippets/evaluation/plan/update_plan_system_metric.py +14 -0
- pygeai/tests/snippets/evaluation/result/__init__.py +0 -0
- pygeai/tests/snippets/evaluation/result/complete_workflow_example.py +150 -0
- pygeai/tests/snippets/evaluation/result/get_evaluation_result.py +26 -0
- pygeai/tests/snippets/evaluation/result/list_evaluation_results.py +17 -0
- pygeai/tests/snippets/files/__init__.py +0 -0
- pygeai/tests/snippets/files/delete_file.py +9 -0
- pygeai/tests/snippets/files/get_file_content.py +10 -0
- pygeai/tests/snippets/files/get_file_data.py +9 -0
- pygeai/tests/snippets/files/get_file_list.py +6 -0
- pygeai/tests/snippets/files/upload_file.py +13 -0
- pygeai/tests/snippets/gam/__init__.py +0 -0
- pygeai/tests/snippets/gam/gam_access_token.py +87 -0
- pygeai/tests/snippets/lab/__init__.py +0 -0
- pygeai/tests/snippets/lab/agentic_flow_example_1.py +326 -0
- pygeai/tests/snippets/lab/agentic_flow_example_2.py +206 -0
- pygeai/tests/snippets/lab/agentic_flow_example_3.py +486 -0
- pygeai/tests/snippets/lab/agentic_flow_example_4.py +446 -0
- pygeai/tests/snippets/lab/agents/__init__.py +0 -0
- pygeai/tests/snippets/lab/agents/create_agent.py +48 -0
- pygeai/tests/snippets/lab/agents/create_agent_2.py +48 -0
- pygeai/tests/snippets/lab/agents/create_agent_edge_case.py +48 -0
- pygeai/tests/snippets/lab/agents/create_agent_with_permissions.py +39 -0
- pygeai/tests/snippets/lab/agents/create_agent_with_properties.py +46 -0
- pygeai/tests/snippets/lab/agents/create_agent_without_instructions.py +48 -0
- pygeai/tests/snippets/lab/agents/delete_agent.py +12 -0
- pygeai/tests/snippets/lab/agents/get_agent.py +24 -0
- pygeai/tests/snippets/lab/agents/get_agent_with_new_fields.py +62 -0
- pygeai/tests/snippets/lab/agents/get_sharing_link.py +13 -0
- pygeai/tests/snippets/lab/agents/list_agents.py +18 -0
- pygeai/tests/snippets/lab/agents/publish_agent_revision.py +12 -0
- pygeai/tests/snippets/lab/agents/update_agent.py +50 -0
- pygeai/tests/snippets/lab/agents/update_agent_properties.py +50 -0
- pygeai/tests/snippets/lab/assistant_to_agent.py +191 -0
- pygeai/tests/snippets/lab/crud_ui.py +462 -0
- pygeai/tests/snippets/lab/processes/__init__.py +0 -0
- pygeai/tests/snippets/lab/processes/create_process.py +24 -0
- pygeai/tests/snippets/lab/processes/create_task.py +8 -0
- pygeai/tests/snippets/lab/processes/jobs/__init__.py +0 -0
- pygeai/tests/snippets/lab/processes/jobs/list_jobs.py +21 -0
- pygeai/tests/snippets/lab/processes/kbs/__init__.py +0 -0
- pygeai/tests/snippets/lab/processes/kbs/create_kb.py +18 -0
- pygeai/tests/snippets/lab/processes/kbs/get_kb.py +26 -0
- pygeai/tests/snippets/lab/processes/kbs/list_kbs.py +30 -0
- pygeai/tests/snippets/lab/processes/kbs/try_all.py +73 -0
- pygeai/tests/snippets/lab/processes/list_processes.py +10 -0
- pygeai/tests/snippets/lab/runner_1.py +212 -0
- pygeai/tests/snippets/lab/samples/__init__.py +0 -0
- pygeai/tests/snippets/lab/samples/summarize_files.py +162 -0
- pygeai/tests/snippets/lab/strategies/__init__.py +0 -0
- pygeai/tests/snippets/lab/strategies/create_reasoning_strategy.py +22 -0
- pygeai/tests/snippets/lab/strategies/get_reasoning_strategy.py +10 -0
- pygeai/tests/snippets/lab/strategies/list_reasoning_strategies.py +16 -0
- pygeai/tests/snippets/lab/strategies/update_reasoning_strategy.py +26 -0
- pygeai/tests/snippets/lab/tools/__init__.py +0 -0
- pygeai/tests/snippets/lab/tools/create_tool.py +48 -0
- pygeai/tests/snippets/lab/tools/create_tool_edge_case.py +50 -0
- pygeai/tests/snippets/lab/tools/delete_tool.py +21 -0
- pygeai/tests/snippets/lab/tools/get_parameter.py +21 -0
- pygeai/tests/snippets/lab/tools/get_tool.py +22 -0
- pygeai/tests/snippets/lab/tools/list_tools.py +23 -0
- pygeai/tests/snippets/lab/tools/publish_tool_revision.py +13 -0
- pygeai/tests/snippets/lab/tools/set_parameters.py +33 -0
- pygeai/tests/snippets/lab/tools/update_tool.py +52 -0
- pygeai/tests/snippets/lab/use_cases/__init__.py +0 -0
- pygeai/tests/snippets/lab/use_cases/c_code_fixer_agent_flow.py +238 -0
- pygeai/tests/snippets/lab/use_cases/create_cli_expert.py +1640 -0
- pygeai/tests/snippets/lab/use_cases/create_lab_expert.py +4541 -0
- pygeai/tests/snippets/lab/use_cases/create_tool_headless_web_browser.py +133 -0
- pygeai/tests/snippets/lab/use_cases/create_web_designer.py +189 -0
- pygeai/tests/snippets/lab/use_cases/create_web_reader.py +185 -0
- pygeai/tests/snippets/lab/use_cases/file_summarizer_example.py +157 -0
- pygeai/tests/snippets/lab/use_cases/file_summarizer_example_2.py +157 -0
- pygeai/tests/snippets/lab/use_cases/update_cli_expert.py +1773 -0
- pygeai/tests/snippets/lab/use_cases/update_lab_expert.py +4541 -0
- pygeai/tests/snippets/lab/use_cases/update_web_designer.py +188 -0
- pygeai/tests/snippets/lab/use_cases/update_web_reader.py +195 -0
- pygeai/tests/snippets/lab/use_cases/update_web_reader_with_tool.py +210 -0
- pygeai/tests/snippets/migrate/__init__.py +45 -0
- pygeai/tests/snippets/migrate/agent_migration.py +110 -0
- pygeai/tests/snippets/migrate/assistant_migration.py +64 -0
- pygeai/tests/snippets/migrate/orchestrator_examples.py +179 -0
- pygeai/tests/snippets/migrate/process_migration.py +64 -0
- pygeai/tests/snippets/migrate/project_migration.py +42 -0
- pygeai/tests/snippets/migrate/tool_migration.py +64 -0
- pygeai/tests/snippets/organization/__init__.py +0 -0
- pygeai/tests/snippets/organization/add_project_member.py +10 -0
- pygeai/tests/snippets/organization/add_project_member_batch.py +44 -0
- pygeai/tests/snippets/organization/create_project.py +23 -0
- pygeai/tests/snippets/organization/delete_project.py +7 -0
- pygeai/tests/snippets/organization/export_request_data.py +7 -0
- pygeai/tests/snippets/organization/get_memberships.py +12 -0
- pygeai/tests/snippets/organization/get_organization_members.py +6 -0
- pygeai/tests/snippets/organization/get_project_data.py +7 -0
- pygeai/tests/snippets/organization/get_project_list.py +8 -0
- pygeai/tests/snippets/organization/get_project_members.py +6 -0
- pygeai/tests/snippets/organization/get_project_memberships.py +12 -0
- pygeai/tests/snippets/organization/get_project_roles.py +6 -0
- pygeai/tests/snippets/organization/get_project_tokens.py +7 -0
- pygeai/tests/snippets/organization/update_project.py +14 -0
- pygeai/tests/snippets/rerank/__init__.py +0 -0
- pygeai/tests/snippets/rerank/rerank_chunks.py +19 -0
- pygeai/tests/snippets/secrets/__init__.py +0 -0
- pygeai/tests/snippets/usage_limit/__init__.py +0 -0
- pygeai/tests/snippets/usage_limit/delete_usage_limit.py +16 -0
- pygeai/tests/snippets/usage_limit/get_all_usage_limit_from_organization.py +12 -0
- pygeai/tests/snippets/usage_limit/get_usage_limit_from_organization.py +11 -0
- pygeai/tests/snippets/usage_limit/get_usage_limit_from_project.py +13 -0
- pygeai/tests/snippets/usage_limit/set_usage_limit_organization.py +22 -0
- pygeai/tests/snippets/usage_limit/set_usage_limit_project.py +23 -0
- pygeai/tests/snippets/usage_limit/update_usage_limit_organization.py +23 -0
- pygeai/tests/snippets/usage_limit/update_usage_limit_project.py +24 -0
- pygeai/vendor/a2a/__init__.py +1 -0
- pygeai/vendor/a2a/auth/__init__.py +0 -0
- pygeai/vendor/a2a/auth/user.py +31 -0
- pygeai/vendor/a2a/client/__init__.py +19 -0
- pygeai/vendor/a2a/client/client.py +425 -0
- pygeai/vendor/a2a/client/errors.py +33 -0
- pygeai/vendor/a2a/client/helpers.py +22 -0
- pygeai/vendor/a2a/py.typed +0 -0
- pygeai/vendor/a2a/server/__init__.py +1 -0
- pygeai/vendor/a2a/server/agent_execution/__init__.py +18 -0
- pygeai/vendor/a2a/server/agent_execution/agent_executor.py +44 -0
- pygeai/vendor/a2a/server/agent_execution/context.py +155 -0
- pygeai/vendor/a2a/server/agent_execution/request_context_builder.py +20 -0
- pygeai/vendor/a2a/server/agent_execution/simple_request_context_builder.py +77 -0
- pygeai/vendor/a2a/server/apps/__init__.py +16 -0
- pygeai/vendor/a2a/server/apps/jsonrpc/__init__.py +16 -0
- pygeai/vendor/a2a/server/apps/jsonrpc/fastapi_app.py +88 -0
- pygeai/vendor/a2a/server/apps/jsonrpc/jsonrpc_app.py +426 -0
- pygeai/vendor/a2a/server/apps/jsonrpc/starlette_app.py +123 -0
- pygeai/vendor/a2a/server/context.py +23 -0
- pygeai/vendor/a2a/server/events/__init__.py +21 -0
- pygeai/vendor/a2a/server/events/event_consumer.py +149 -0
- pygeai/vendor/a2a/server/events/event_queue.py +156 -0
- pygeai/vendor/a2a/server/events/in_memory_queue_manager.py +85 -0
- pygeai/vendor/a2a/server/events/queue_manager.py +35 -0
- pygeai/vendor/a2a/server/request_handlers/__init__.py +20 -0
- pygeai/vendor/a2a/server/request_handlers/default_request_handler.py +435 -0
- pygeai/vendor/a2a/server/request_handlers/jsonrpc_handler.py +327 -0
- pygeai/vendor/a2a/server/request_handlers/request_handler.py +161 -0
- pygeai/vendor/a2a/server/request_handlers/response_helpers.py +133 -0
- pygeai/vendor/a2a/server/tasks/__init__.py +20 -0
- pygeai/vendor/a2a/server/tasks/inmemory_push_notifier.py +62 -0
- pygeai/vendor/a2a/server/tasks/inmemory_task_store.py +51 -0
- pygeai/vendor/a2a/server/tasks/push_notifier.py +25 -0
- pygeai/vendor/a2a/server/tasks/result_aggregator.py +151 -0
- pygeai/vendor/a2a/server/tasks/task_manager.py +253 -0
- pygeai/vendor/a2a/server/tasks/task_store.py +22 -0
- pygeai/vendor/a2a/server/tasks/task_updater.py +155 -0
- pygeai/vendor/a2a/types.py +1624 -0
- pygeai/vendor/a2a/utils/__init__.py +40 -0
- pygeai/vendor/a2a/utils/artifact.py +72 -0
- pygeai/vendor/a2a/utils/errors.py +69 -0
- pygeai/vendor/a2a/utils/helpers.py +176 -0
- pygeai/vendor/a2a/utils/message.py +83 -0
- pygeai/vendor/a2a/utils/task.py +57 -0
- pygeai/vendor/a2a/utils/telemetry.py +299 -0
- pygeai-0.6.0b15.dist-info/METADATA +205 -0
- pygeai-0.6.0b15.dist-info/RECORD +799 -0
- {pygeai-0.1.6.dist-info → pygeai-0.6.0b15.dist-info}/WHEEL +1 -1
- pygeai-0.6.0b15.dist-info/entry_points.txt +5 -0
- {pygeai-0.1.6.dist-info → pygeai-0.6.0b15.dist-info/licenses}/LICENSE +13 -1
- {pygeai-0.1.6.dist-info → pygeai-0.6.0b15.dist-info}/top_level.txt +0 -1
- docs/source/conf.py +0 -45
- pygeai/core/clients.py +0 -240
- pygeai/tests/core/test_clients.py +0 -49
- pygeai-0.1.6.dist-info/METADATA +0 -92
- pygeai-0.1.6.dist-info/RECORD +0 -65
- pygeai-0.1.6.dist-info/SOURCES.sync-conflict-20241223-145950-3QD4F42.txt +0 -41
- pygeai-0.1.6.dist-info/entry_points.txt +0 -2
- /pygeai/{agent → analytics}/__init__.py +0 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
from pygeai.core.common.exceptions import WrongArgumentError
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def get_agent_data_prompt_inputs(input_list: list):
|
|
5
|
+
"""
|
|
6
|
+
Processes a list of input strings.
|
|
7
|
+
|
|
8
|
+
:param input_list: list - A list of strings representing input names.
|
|
9
|
+
:return: list - A list of input strings.
|
|
10
|
+
:raises WrongArgumentError: If the input list contains non-string elements.
|
|
11
|
+
"""
|
|
12
|
+
if not all(isinstance(item, str) for item in input_list):
|
|
13
|
+
raise WrongArgumentError(
|
|
14
|
+
"Inputs must be a list of strings: '[\"input_name\", \"another_input\"]'. "
|
|
15
|
+
"Each element in the list must be a string representing an input name."
|
|
16
|
+
)
|
|
17
|
+
return input_list
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def get_agent_data_prompt_outputs(output_list: list):
|
|
21
|
+
"""
|
|
22
|
+
Processes a list of output dictionaries and extracts the "key" and "description" fields.
|
|
23
|
+
|
|
24
|
+
:param output_list: list - A list of dictionaries, where each dictionary must contain the keys "key" and "description".
|
|
25
|
+
:return: list - A list of dictionaries, each containing the "key" and "description" fields.
|
|
26
|
+
:raises WrongArgumentError: If a dictionary in the list is not in the expected format or missing required keys.
|
|
27
|
+
"""
|
|
28
|
+
outputs = []
|
|
29
|
+
if any(output_list):
|
|
30
|
+
try:
|
|
31
|
+
for output_dict in output_list:
|
|
32
|
+
outputs.append({
|
|
33
|
+
"key": output_dict["key"],
|
|
34
|
+
"description": output_dict["description"]
|
|
35
|
+
})
|
|
36
|
+
except (KeyError, TypeError):
|
|
37
|
+
raise WrongArgumentError(
|
|
38
|
+
"Each output must be in JSON format: '{\"key\": \"output_key\", \"description\": \"description of the output\"}' "
|
|
39
|
+
"It must be a dictionary or a list of dictionaries. Each dictionary must contain 'key' and 'description'."
|
|
40
|
+
)
|
|
41
|
+
return outputs
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def get_agent_data_prompt_examples(example_list: list):
|
|
45
|
+
"""
|
|
46
|
+
Processes a list of example dictionaries and extracts the "inputData" and "output" fields.
|
|
47
|
+
|
|
48
|
+
:param example_list: list - A list of dictionaries, where each dictionary must contain the keys "inputData" and "output".
|
|
49
|
+
:return: list - A list of dictionaries, each containing the "inputData" and "output" fields.
|
|
50
|
+
:raises WrongArgumentError: If a dictionary in the list is not in the expected format or missing required keys.
|
|
51
|
+
"""
|
|
52
|
+
examples = []
|
|
53
|
+
if any(example_list):
|
|
54
|
+
try:
|
|
55
|
+
for example_dict in example_list:
|
|
56
|
+
examples.append({
|
|
57
|
+
"inputData": example_dict["inputData"],
|
|
58
|
+
"output": example_dict["output"]
|
|
59
|
+
})
|
|
60
|
+
except (KeyError, TypeError):
|
|
61
|
+
raise WrongArgumentError(
|
|
62
|
+
"Each example must be in JSON format: '{\"inputData\": \"example input\", \"output\": \"expected output in JSON string format\"}' "
|
|
63
|
+
"Each dictionary must contain 'inputData' and 'output'."
|
|
64
|
+
)
|
|
65
|
+
return examples
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def get_tool_parameters(parameter_list: list) -> list:
|
|
69
|
+
"""
|
|
70
|
+
Processes a list of parameter dictionaries and validates their format.
|
|
71
|
+
|
|
72
|
+
:param parameter_list: list - A list of dictionaries, where each dictionary represents a parameter.
|
|
73
|
+
Regular parameters must contain "key", "dataType", "description", and "isRequired".
|
|
74
|
+
Config parameters must additionally include "type" as "config", and may include "fromSecret" and "value".
|
|
75
|
+
:return: list - A list of validated parameter dictionaries.
|
|
76
|
+
:raises WrongArgumentError: If a dictionary in the list is not in the expected format or missing required keys.
|
|
77
|
+
"""
|
|
78
|
+
parameters = []
|
|
79
|
+
|
|
80
|
+
if not parameter_list:
|
|
81
|
+
return parameters
|
|
82
|
+
|
|
83
|
+
try:
|
|
84
|
+
for param_dict in parameter_list:
|
|
85
|
+
required_fields = ["key", "dataType", "description", "isRequired"]
|
|
86
|
+
if not all(field in param_dict for field in required_fields):
|
|
87
|
+
raise WrongArgumentError(
|
|
88
|
+
"Each parameter must contain 'key', 'dataType', 'description', and 'isRequired'. "
|
|
89
|
+
"For regular parameters: '{\"key\": \"param_name\", \"dataType\": \"String\", \"description\": \"param description\", \"isRequired\": true}'. "
|
|
90
|
+
"For config parameters: additionally include '\"type\": \"config\", \"fromSecret\": boolean, \"value\": \"config_value\"'."
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
if not isinstance(param_dict["key"], str):
|
|
94
|
+
raise WrongArgumentError("Parameter 'key' must be a string.")
|
|
95
|
+
if not isinstance(param_dict["dataType"], str):
|
|
96
|
+
raise WrongArgumentError("Parameter 'dataType' must be a string.")
|
|
97
|
+
if not isinstance(param_dict["description"], str):
|
|
98
|
+
raise WrongArgumentError("Parameter 'description' must be a string.")
|
|
99
|
+
if not isinstance(param_dict["isRequired"], bool):
|
|
100
|
+
raise WrongArgumentError("Parameter 'isRequired' must be a boolean.")
|
|
101
|
+
|
|
102
|
+
if "type" in param_dict:
|
|
103
|
+
if param_dict["type"] != "config":
|
|
104
|
+
raise WrongArgumentError("Parameter 'type' must be 'config' if present.")
|
|
105
|
+
if "fromSecret" in param_dict and not isinstance(param_dict["fromSecret"], bool):
|
|
106
|
+
raise WrongArgumentError("Parameter 'fromSecret' must be a boolean if present.")
|
|
107
|
+
if "value" in param_dict and not isinstance(param_dict["value"], str):
|
|
108
|
+
raise WrongArgumentError("Parameter 'value' must be a string if present.")
|
|
109
|
+
|
|
110
|
+
validated_param = {
|
|
111
|
+
"key": param_dict["key"],
|
|
112
|
+
"dataType": param_dict["dataType"],
|
|
113
|
+
"description": param_dict["description"],
|
|
114
|
+
"isRequired": param_dict["isRequired"]
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if "type" in param_dict:
|
|
118
|
+
validated_param["type"] = param_dict["type"]
|
|
119
|
+
if "fromSecret" in param_dict:
|
|
120
|
+
validated_param["fromSecret"] = param_dict["fromSecret"]
|
|
121
|
+
if "value" in param_dict:
|
|
122
|
+
validated_param["value"] = param_dict["value"]
|
|
123
|
+
|
|
124
|
+
parameters.append(validated_param)
|
|
125
|
+
|
|
126
|
+
except (KeyError, TypeError) as e:
|
|
127
|
+
raise WrongArgumentError(
|
|
128
|
+
"Each parameter must be in JSON format: "
|
|
129
|
+
"'{\"key\": \"param_name\", \"dataType\": \"String\", \"description\": \"param description\", \"isRequired\": true}' "
|
|
130
|
+
"or for config parameters: "
|
|
131
|
+
"'{\"key\": \"config_name\", \"dataType\": \"String\", \"description\": \"config description\", \"isRequired\": true, \"type\": \"config\", \"fromSecret\": false, \"value\": \"config_value\"}'"
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
return parameters
|
|
135
|
+
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
from pygeai import logger
|
|
2
|
+
from pygeai.cli.commands import Command, Option, ArgumentsEnum
|
|
3
|
+
from pygeai.cli.commands.builders import build_help_text
|
|
4
|
+
from pygeai.cli.texts.help import SPEC_HELP_TEXT
|
|
5
|
+
from pygeai.core.common.exceptions import MissingRequirementException
|
|
6
|
+
|
|
7
|
+
from pygeai.core.utils.console import Console
|
|
8
|
+
from pygeai.lab.managers import AILabManager
|
|
9
|
+
from pygeai.lab.spec.loader import JSONLoader
|
|
10
|
+
from pygeai.lab.spec.parsers import AgentParser, ToolParser, TaskParser, AgenticProcessParser
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def show_help():
|
|
14
|
+
"""
|
|
15
|
+
Displays help text in stdout
|
|
16
|
+
"""
|
|
17
|
+
help_text = build_help_text(spec_commands, SPEC_HELP_TEXT)
|
|
18
|
+
Console.write_stdout(help_text)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def load_agent(option_list: list):
|
|
22
|
+
file = None
|
|
23
|
+
automatic_publish = False
|
|
24
|
+
|
|
25
|
+
for option_flag, option_arg in option_list:
|
|
26
|
+
if option_flag.name == "file":
|
|
27
|
+
file = option_arg
|
|
28
|
+
if option_flag.name == "automatic_publish":
|
|
29
|
+
automatic_publish = option_arg
|
|
30
|
+
|
|
31
|
+
if not file:
|
|
32
|
+
raise MissingRequirementException("Cannot load agent definition without specifying path to JSON file.")
|
|
33
|
+
|
|
34
|
+
agent_data = JSONLoader.load_data(file_path=file)
|
|
35
|
+
if isinstance(agent_data, dict):
|
|
36
|
+
agent = AgentParser.get_agent(agent_data)
|
|
37
|
+
create_agent(agent, automatic_publish)
|
|
38
|
+
elif isinstance(agent_data, list):
|
|
39
|
+
for agent_spec in agent_data:
|
|
40
|
+
agent = AgentParser.get_agent(agent_spec)
|
|
41
|
+
create_agent(agent, automatic_publish)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def create_agent(agent, automatic_publish):
|
|
45
|
+
try:
|
|
46
|
+
created_agent = AILabManager().create_agent(
|
|
47
|
+
agent=agent,
|
|
48
|
+
automatic_publish=automatic_publish
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
Console.write_stdout(f"Created agent detail: \n{created_agent}")
|
|
52
|
+
except Exception as e:
|
|
53
|
+
logger.error(f"Error creating agent: {e}\nAgent data: {agent}")
|
|
54
|
+
Console.write_stderr(f"Error creating agent: \n{agent}")
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
load_agent_options = [
|
|
58
|
+
Option(
|
|
59
|
+
"file",
|
|
60
|
+
["--file", "-f"],
|
|
61
|
+
"Path to the file containing agent definition in JSON format.",
|
|
62
|
+
True
|
|
63
|
+
),
|
|
64
|
+
Option(
|
|
65
|
+
"automatic_publish",
|
|
66
|
+
["--automatic-publish", "--ap"],
|
|
67
|
+
"Define if reasoning strategy must be published besides being created. 0: Create as draft. 1: Create and publish.",
|
|
68
|
+
True
|
|
69
|
+
),
|
|
70
|
+
]
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def load_tool(option_list: list):
|
|
74
|
+
file = None
|
|
75
|
+
automatic_publish = False
|
|
76
|
+
|
|
77
|
+
for option_flag, option_arg in option_list:
|
|
78
|
+
if option_flag.name == "file":
|
|
79
|
+
file = option_arg
|
|
80
|
+
if option_flag.name == "automatic_publish":
|
|
81
|
+
automatic_publish = option_arg
|
|
82
|
+
|
|
83
|
+
if not file:
|
|
84
|
+
raise MissingRequirementException("Cannot load tool definition without specifying path to JSON file.")
|
|
85
|
+
|
|
86
|
+
tool_data = JSONLoader.load_data(file_path=file)
|
|
87
|
+
if isinstance(tool_data, dict):
|
|
88
|
+
tool = ToolParser.get_tool(tool_data)
|
|
89
|
+
create_tool(tool, automatic_publish)
|
|
90
|
+
elif isinstance(tool_data, list):
|
|
91
|
+
for tool_spec in tool_data:
|
|
92
|
+
tool = ToolParser.get_tool(tool_spec)
|
|
93
|
+
create_tool(tool, automatic_publish)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def create_tool(tool, automatic_publish):
|
|
97
|
+
try:
|
|
98
|
+
created_tool = AILabManager().create_tool(
|
|
99
|
+
tool=tool,
|
|
100
|
+
automatic_publish=automatic_publish
|
|
101
|
+
)
|
|
102
|
+
Console.write_stdout(f"Created tool detail: \n{created_tool}")
|
|
103
|
+
except Exception as e:
|
|
104
|
+
logger.error(f"Error creating tool: {e}\nTool data: {tool}")
|
|
105
|
+
Console.write_stderr(f"Error creating tool: \n{tool}")
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
load_tool_options = [
|
|
109
|
+
Option(
|
|
110
|
+
"file",
|
|
111
|
+
["--file", "-f"],
|
|
112
|
+
"Path to the file containing tool definition in JSON format.",
|
|
113
|
+
True
|
|
114
|
+
),
|
|
115
|
+
Option(
|
|
116
|
+
"automatic_publish",
|
|
117
|
+
["--automatic-publish", "--ap"],
|
|
118
|
+
"Define if tool must be published besides being created. 0: Create as draft. 1: Create and publish.",
|
|
119
|
+
True
|
|
120
|
+
),
|
|
121
|
+
]
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
def load_task(option_list: list):
|
|
125
|
+
file = None
|
|
126
|
+
automatic_publish = False
|
|
127
|
+
|
|
128
|
+
for option_flag, option_arg in option_list:
|
|
129
|
+
if option_flag.name == "file":
|
|
130
|
+
file = option_arg
|
|
131
|
+
if option_flag.name == "automatic_publish":
|
|
132
|
+
automatic_publish = option_arg
|
|
133
|
+
|
|
134
|
+
if not file:
|
|
135
|
+
raise MissingRequirementException("Cannot load task definition without specifying path to JSON file.")
|
|
136
|
+
|
|
137
|
+
task_data = JSONLoader.load_data(file_path=file)
|
|
138
|
+
if isinstance(task_data, dict):
|
|
139
|
+
task = TaskParser.get_task(task_data)
|
|
140
|
+
create_task(task, automatic_publish)
|
|
141
|
+
elif isinstance(task_data, list):
|
|
142
|
+
for task_spec in task_data:
|
|
143
|
+
task = TaskParser.get_task(task_spec)
|
|
144
|
+
create_task(task, automatic_publish)
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def create_task(task, automatic_publish):
|
|
148
|
+
try:
|
|
149
|
+
created_task = AILabManager().create_task(
|
|
150
|
+
task=task,
|
|
151
|
+
automatic_publish=automatic_publish
|
|
152
|
+
)
|
|
153
|
+
Console.write_stdout(f"Created task detail: \n{created_task}")
|
|
154
|
+
except Exception as e:
|
|
155
|
+
logger.error(f"Error creating task: {e}\nTask data: {task}")
|
|
156
|
+
Console.write_stderr(f"Error creating task: \n{task}")
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
load_task_options = [
|
|
160
|
+
Option(
|
|
161
|
+
"file",
|
|
162
|
+
["--file", "-f"],
|
|
163
|
+
"Path to the file containing task definition in JSON format.",
|
|
164
|
+
True
|
|
165
|
+
),
|
|
166
|
+
Option(
|
|
167
|
+
"automatic_publish",
|
|
168
|
+
["--automatic-publish", "--ap"],
|
|
169
|
+
"Define if task must be published besides being created. 0: Create as draft. 1: Create and publish.",
|
|
170
|
+
True
|
|
171
|
+
),
|
|
172
|
+
]
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def load_agentic_process(option_list: list):
|
|
176
|
+
file = None
|
|
177
|
+
automatic_publish = False
|
|
178
|
+
|
|
179
|
+
for option_flag, option_arg in option_list:
|
|
180
|
+
if option_flag.name == "file":
|
|
181
|
+
file = option_arg
|
|
182
|
+
if option_flag.name == "automatic_publish":
|
|
183
|
+
automatic_publish = option_arg
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
if not file:
|
|
187
|
+
raise MissingRequirementException("Cannot load agentic process definition without specifying path to JSON file.")
|
|
188
|
+
|
|
189
|
+
process_data = JSONLoader.load_data(file_path=file)
|
|
190
|
+
if isinstance(process_data, dict):
|
|
191
|
+
process = AgenticProcessParser.get_agentic_process(process_data)
|
|
192
|
+
create_agentic_process(process, automatic_publish)
|
|
193
|
+
elif isinstance(process_data, list):
|
|
194
|
+
for process_spec in process_data:
|
|
195
|
+
process = AgenticProcessParser.get_agentic_process(process_spec)
|
|
196
|
+
create_agentic_process(process, automatic_publish)
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
def create_agentic_process(process, automatic_publish):
|
|
200
|
+
try:
|
|
201
|
+
created_process = AILabManager().create_process(
|
|
202
|
+
process=process,
|
|
203
|
+
automatic_publish=automatic_publish
|
|
204
|
+
)
|
|
205
|
+
Console.write_stdout(f"Created agentic process detail: \n{created_process}")
|
|
206
|
+
except Exception as e:
|
|
207
|
+
logger.error(f"Error creating agentic process: {e}\nProcess data: {process}")
|
|
208
|
+
Console.write_stderr(f"Error creating agentic process: \n{process}")
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
load_agentic_process_options = [
|
|
212
|
+
Option(
|
|
213
|
+
"file",
|
|
214
|
+
["--file", "-f"],
|
|
215
|
+
"Path to the file containing agentic process definition in JSON format.",
|
|
216
|
+
True
|
|
217
|
+
),
|
|
218
|
+
Option(
|
|
219
|
+
"automatic_publish",
|
|
220
|
+
["--automatic-publish", "--ap"],
|
|
221
|
+
"Define if agentic process must be published besides being created. 0: Create as draft. 1: Create and publish.",
|
|
222
|
+
True
|
|
223
|
+
),
|
|
224
|
+
]
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
spec_commands = [
|
|
228
|
+
Command(
|
|
229
|
+
"help",
|
|
230
|
+
["help", "h"],
|
|
231
|
+
"Display help text",
|
|
232
|
+
show_help,
|
|
233
|
+
ArgumentsEnum.NOT_AVAILABLE,
|
|
234
|
+
[],
|
|
235
|
+
[]
|
|
236
|
+
),
|
|
237
|
+
Command(
|
|
238
|
+
"load_agent",
|
|
239
|
+
["load-agent", "la"],
|
|
240
|
+
"Load agent from JSON specification",
|
|
241
|
+
load_agent,
|
|
242
|
+
ArgumentsEnum.REQUIRED,
|
|
243
|
+
[],
|
|
244
|
+
load_agent_options
|
|
245
|
+
),
|
|
246
|
+
Command(
|
|
247
|
+
"load_tool",
|
|
248
|
+
["load-tool", "lt"],
|
|
249
|
+
"Load tool from JSON specification",
|
|
250
|
+
load_tool,
|
|
251
|
+
ArgumentsEnum.REQUIRED,
|
|
252
|
+
[],
|
|
253
|
+
load_tool_options
|
|
254
|
+
),
|
|
255
|
+
Command(
|
|
256
|
+
"load_task",
|
|
257
|
+
["load-task"],
|
|
258
|
+
"Load task from JSON specification",
|
|
259
|
+
load_task,
|
|
260
|
+
ArgumentsEnum.REQUIRED,
|
|
261
|
+
[],
|
|
262
|
+
load_task_options
|
|
263
|
+
),
|
|
264
|
+
Command(
|
|
265
|
+
"load_agentic_process",
|
|
266
|
+
["load-agentic-process", "lap"],
|
|
267
|
+
"Load agentic process from JSON specification",
|
|
268
|
+
load_agentic_process,
|
|
269
|
+
ArgumentsEnum.REQUIRED,
|
|
270
|
+
[],
|
|
271
|
+
load_agentic_process_options
|
|
272
|
+
),
|
|
273
|
+
]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from pygeai import logger
|
|
2
|
+
from pygeai.admin.clients import AdminClient
|
|
3
|
+
from pygeai.core.common.exceptions import APIError
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def get_project_id():
|
|
7
|
+
response = None
|
|
8
|
+
try:
|
|
9
|
+
response = AdminClient().validate_api_token()
|
|
10
|
+
return response.get("projectId")
|
|
11
|
+
except Exception as e:
|
|
12
|
+
logger.error(f"Error retrieving project_id from GEAI. Response: {response}: {e}")
|
|
13
|
+
raise APIError(f"Error retrieving project_id from GEAI: {e}")
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
from pygeai.cli.commands import Command, ArgumentsEnum, Option
|
|
2
|
+
from pygeai.cli.commands.builders import build_help_text
|
|
3
|
+
from pygeai.cli.texts.help import LLM_HELP_TEXT
|
|
4
|
+
from pygeai.core.common.exceptions import MissingRequirementException
|
|
5
|
+
from pygeai.core.llm.clients import LlmClient
|
|
6
|
+
from pygeai.core.utils.console import Console
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def show_help():
|
|
10
|
+
"""
|
|
11
|
+
Displays help text in stdout
|
|
12
|
+
"""
|
|
13
|
+
help_text = build_help_text(llm_commands, LLM_HELP_TEXT)
|
|
14
|
+
Console.write_stdout(help_text)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def get_provider_list():
|
|
18
|
+
client = LlmClient()
|
|
19
|
+
result = client.get_provider_list()
|
|
20
|
+
Console.write_stdout(f"Provider list: \n{result}")
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def get_provider_data(option_list: list):
|
|
24
|
+
provider_name = None
|
|
25
|
+
for option_flag, option_arg in option_list:
|
|
26
|
+
if option_flag.name == "provider_name":
|
|
27
|
+
provider_name = option_arg
|
|
28
|
+
|
|
29
|
+
if not provider_name:
|
|
30
|
+
raise MissingRequirementException("Cannot retrieve provider data without name")
|
|
31
|
+
|
|
32
|
+
client = LlmClient()
|
|
33
|
+
result = client.get_provider_data(provider_name=provider_name)
|
|
34
|
+
Console.write_stdout(f"Provider detail: \n{result}")
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
get_provider_data_options = [
|
|
38
|
+
Option(
|
|
39
|
+
"provider_name",
|
|
40
|
+
["--provider-name", "--pn"],
|
|
41
|
+
"LLM Provider name (required)",
|
|
42
|
+
True
|
|
43
|
+
),
|
|
44
|
+
]
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def get_provider_models(option_list: list):
|
|
48
|
+
provider_name = None
|
|
49
|
+
for option_flag, option_arg in option_list:
|
|
50
|
+
if option_flag.name == "provider_name":
|
|
51
|
+
provider_name = option_arg
|
|
52
|
+
|
|
53
|
+
if not provider_name:
|
|
54
|
+
raise MissingRequirementException("Cannot retrieve provider models without name")
|
|
55
|
+
|
|
56
|
+
client = LlmClient()
|
|
57
|
+
result = client.get_provider_models(provider_name=provider_name)
|
|
58
|
+
Console.write_stdout(f"Provider models: \n{result}")
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
get_provider_models_options = [
|
|
62
|
+
Option(
|
|
63
|
+
"provider_name",
|
|
64
|
+
["--provider-name", "--pn"],
|
|
65
|
+
"LLM Provider name (required)",
|
|
66
|
+
True
|
|
67
|
+
),
|
|
68
|
+
]
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def get_model_data(option_list: list):
|
|
72
|
+
provider_name = None
|
|
73
|
+
model_name = None
|
|
74
|
+
model_id = None
|
|
75
|
+
for option_flag, option_arg in option_list:
|
|
76
|
+
if option_flag.name == "provider_name":
|
|
77
|
+
provider_name = option_arg
|
|
78
|
+
if option_flag.name == "model_name":
|
|
79
|
+
model_name = option_arg
|
|
80
|
+
if option_flag.name == "model_id":
|
|
81
|
+
model_id = option_arg
|
|
82
|
+
|
|
83
|
+
if not (provider_name and (model_name or model_id)):
|
|
84
|
+
raise MissingRequirementException("Cannot retrieve model data without provider name and model id or name.")
|
|
85
|
+
|
|
86
|
+
client = LlmClient()
|
|
87
|
+
result = client.get_model_data(
|
|
88
|
+
provider_name=provider_name,
|
|
89
|
+
model_name=model_name or model_id
|
|
90
|
+
)
|
|
91
|
+
Console.write_stdout(f"Model details: \n{result}")
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
get_model_data_options = [
|
|
95
|
+
Option(
|
|
96
|
+
"provider_name",
|
|
97
|
+
["--provider-name", "--pn"],
|
|
98
|
+
"LLM Provider name (required)",
|
|
99
|
+
True
|
|
100
|
+
),
|
|
101
|
+
Option(
|
|
102
|
+
"model_name",
|
|
103
|
+
["--model-name", "--mn"],
|
|
104
|
+
"LLM Model name",
|
|
105
|
+
True
|
|
106
|
+
),
|
|
107
|
+
Option(
|
|
108
|
+
"model_id",
|
|
109
|
+
["--model-id", "--mid"],
|
|
110
|
+
"LLM Model ID",
|
|
111
|
+
True
|
|
112
|
+
),
|
|
113
|
+
|
|
114
|
+
]
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
llm_commands = [
|
|
118
|
+
Command(
|
|
119
|
+
"help",
|
|
120
|
+
["help", "h"],
|
|
121
|
+
"Display help text",
|
|
122
|
+
show_help,
|
|
123
|
+
ArgumentsEnum.NOT_AVAILABLE,
|
|
124
|
+
[],
|
|
125
|
+
[]
|
|
126
|
+
),
|
|
127
|
+
Command(
|
|
128
|
+
"list_providers",
|
|
129
|
+
["list-providers", "lp"],
|
|
130
|
+
"Retrieve providers list",
|
|
131
|
+
get_provider_list,
|
|
132
|
+
ArgumentsEnum.NOT_AVAILABLE,
|
|
133
|
+
[],
|
|
134
|
+
[]
|
|
135
|
+
),
|
|
136
|
+
Command(
|
|
137
|
+
"get_provider",
|
|
138
|
+
["get-provider", "gp"],
|
|
139
|
+
"Retrieve provider data",
|
|
140
|
+
get_provider_data,
|
|
141
|
+
ArgumentsEnum.REQUIRED,
|
|
142
|
+
[],
|
|
143
|
+
get_provider_data_options
|
|
144
|
+
),
|
|
145
|
+
Command(
|
|
146
|
+
"list_models",
|
|
147
|
+
["list-models", "lm"],
|
|
148
|
+
"Retrieve provider models",
|
|
149
|
+
get_provider_models,
|
|
150
|
+
ArgumentsEnum.REQUIRED,
|
|
151
|
+
[],
|
|
152
|
+
get_provider_models_options
|
|
153
|
+
),
|
|
154
|
+
Command(
|
|
155
|
+
"get_model",
|
|
156
|
+
["get-model", "gm"],
|
|
157
|
+
"Retrieve model data",
|
|
158
|
+
get_model_data,
|
|
159
|
+
ArgumentsEnum.REQUIRED,
|
|
160
|
+
[],
|
|
161
|
+
get_model_data_options
|
|
162
|
+
),
|
|
163
|
+
|
|
164
|
+
]
|