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,207 @@
|
|
|
1
|
+
from pygeai.analytics.responses import (
|
|
2
|
+
AgentsCreatedAndModifiedResponse, AgentsCreatedAndModifiedPerDayResponse, AgentActivityPerDayItem,
|
|
3
|
+
FlowsCreatedAndModifiedResponse, FlowsCreatedAndModifiedPerDayResponse, FlowActivityPerDayItem,
|
|
4
|
+
ProcessesCreatedAndModifiedResponse, AgentUsagePerUserResponse, AgentUsagePerUserItem,
|
|
5
|
+
AverageCostPerRequestResponse, AverageCostPerUserResponse, AverageCostPerUserPerDateResponse,
|
|
6
|
+
CostPerUserPerDateItem, AverageRequestTimeResponse, AverageRequestsPerDayResponse,
|
|
7
|
+
AverageRequestsPerUserResponse, AverageRequestsPerUserPerDateResponse, RequestsPerUserPerDateItem,
|
|
8
|
+
AverageTokensPerRequestResponse, AverageUsersPerAgentResponse, UsersPerAgentItem,
|
|
9
|
+
AverageUsersPerProjectResponse, UsersPerProjectItem, NumberOfTokensResponse,
|
|
10
|
+
NumberOfTokensPerAgentResponse, TokensPerAgentItem, NumberOfTokensPerDayResponse, TokensPerDayItem,
|
|
11
|
+
OverallErrorRateResponse, Top10AgentsByRequestsResponse, AgentByRequestsItem,
|
|
12
|
+
Top10AgentsByTokensResponse, AgentByTokensItem, Top10UsersByCostResponse, UserByCostItem,
|
|
13
|
+
Top10UsersByRequestsResponse, UserByRequestsItem, TotalActiveAgentsResponse,
|
|
14
|
+
TotalActiveProjectsResponse, TotalActiveUsersResponse, TotalCostResponse,
|
|
15
|
+
TotalCostPerDayResponse, CostPerDayItem, TotalRequestTimeResponse, TotalRequestsResponse,
|
|
16
|
+
TotalRequestsPerDayResponse, RequestsPerDayItem, TotalRequestsWithErrorResponse, TotalTokensResponse
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class AnalyticsResponseMapper:
|
|
21
|
+
|
|
22
|
+
@classmethod
|
|
23
|
+
def map_to_agents_created_and_modified_response(cls, data: dict) -> AgentsCreatedAndModifiedResponse:
|
|
24
|
+
return AgentsCreatedAndModifiedResponse(
|
|
25
|
+
createdAgents=data.get("createdAgents", 0),
|
|
26
|
+
modifiedAgents=data.get("modifiedAgents", 0)
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
@classmethod
|
|
30
|
+
def map_to_agents_created_and_modified_per_day_response(cls, data: dict) -> AgentsCreatedAndModifiedPerDayResponse:
|
|
31
|
+
items_data = data.get("agentsCreatedAndModifiedPerDay", [])
|
|
32
|
+
items = [AgentActivityPerDayItem.model_validate(item) for item in items_data]
|
|
33
|
+
return AgentsCreatedAndModifiedPerDayResponse(agentsCreatedAndModifiedPerDay=items)
|
|
34
|
+
|
|
35
|
+
@classmethod
|
|
36
|
+
def map_to_flows_created_and_modified_response(cls, data: dict) -> FlowsCreatedAndModifiedResponse:
|
|
37
|
+
return FlowsCreatedAndModifiedResponse(
|
|
38
|
+
createdFlows=data.get("createdFlows", 0),
|
|
39
|
+
modifiedFlows=data.get("modifiedFlows", 0)
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
@classmethod
|
|
43
|
+
def map_to_flows_created_and_modified_per_day_response(cls, data: dict) -> FlowsCreatedAndModifiedPerDayResponse:
|
|
44
|
+
items_data = data.get("flowsCreatedAndModifiedPerDay", [])
|
|
45
|
+
items = [FlowActivityPerDayItem.model_validate(item) for item in items_data]
|
|
46
|
+
return FlowsCreatedAndModifiedPerDayResponse(flowsCreatedAndModifiedPerDay=items)
|
|
47
|
+
|
|
48
|
+
@classmethod
|
|
49
|
+
def map_to_processes_created_and_modified_response(cls, data: dict) -> ProcessesCreatedAndModifiedResponse:
|
|
50
|
+
return ProcessesCreatedAndModifiedResponse(
|
|
51
|
+
createdProcesses=data.get("createdProcesses", 0),
|
|
52
|
+
modifiedProcesses=data.get("modifiedProcesses", 0)
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
@classmethod
|
|
56
|
+
def map_to_agent_usage_per_user_response(cls, data: dict) -> AgentUsagePerUserResponse:
|
|
57
|
+
items_data = data.get("agentUsagePerUser", [])
|
|
58
|
+
items = [AgentUsagePerUserItem.model_validate(item) for item in items_data]
|
|
59
|
+
return AgentUsagePerUserResponse(agentUsagePerUser=items)
|
|
60
|
+
|
|
61
|
+
@classmethod
|
|
62
|
+
def map_to_average_cost_per_request_response(cls, data: dict) -> AverageCostPerRequestResponse:
|
|
63
|
+
return AverageCostPerRequestResponse(averageCost=data.get("averageCost", 0.0))
|
|
64
|
+
|
|
65
|
+
@classmethod
|
|
66
|
+
def map_to_average_cost_per_user_response(cls, data: dict) -> AverageCostPerUserResponse:
|
|
67
|
+
return AverageCostPerUserResponse(averageCost=data.get("averageCost", 0.0))
|
|
68
|
+
|
|
69
|
+
@classmethod
|
|
70
|
+
def map_to_average_cost_per_user_per_date_response(cls, data: dict) -> AverageCostPerUserPerDateResponse:
|
|
71
|
+
items_data = data.get("averageCostPerUserPerDate", [])
|
|
72
|
+
items = [CostPerUserPerDateItem.model_validate(item) for item in items_data]
|
|
73
|
+
return AverageCostPerUserPerDateResponse(averageCostPerUserPerDate=items)
|
|
74
|
+
|
|
75
|
+
@classmethod
|
|
76
|
+
def map_to_average_request_time_response(cls, data: dict) -> AverageRequestTimeResponse:
|
|
77
|
+
return AverageRequestTimeResponse(averageTime=data.get("averageTime", 0.0))
|
|
78
|
+
|
|
79
|
+
@classmethod
|
|
80
|
+
def map_to_average_requests_per_day_response(cls, data: dict) -> AverageRequestsPerDayResponse:
|
|
81
|
+
return AverageRequestsPerDayResponse(averageRequests=data.get("averageRequests", 0.0))
|
|
82
|
+
|
|
83
|
+
@classmethod
|
|
84
|
+
def map_to_average_requests_per_user_response(cls, data: dict) -> AverageRequestsPerUserResponse:
|
|
85
|
+
return AverageRequestsPerUserResponse(averageRequests=data.get("averageRequests", 0.0))
|
|
86
|
+
|
|
87
|
+
@classmethod
|
|
88
|
+
def map_to_average_requests_per_user_per_date_response(cls, data: dict) -> AverageRequestsPerUserPerDateResponse:
|
|
89
|
+
items_data = data.get("averageRequestsPerUserPerDate", [])
|
|
90
|
+
items = [RequestsPerUserPerDateItem.model_validate(item) for item in items_data]
|
|
91
|
+
return AverageRequestsPerUserPerDateResponse(averageRequestsPerUserPerDate=items)
|
|
92
|
+
|
|
93
|
+
@classmethod
|
|
94
|
+
def map_to_average_tokens_per_request_response(cls, data: dict) -> AverageTokensPerRequestResponse:
|
|
95
|
+
return AverageTokensPerRequestResponse(
|
|
96
|
+
averageInputTokens=data.get("averageInputTokens", 0.0),
|
|
97
|
+
averageOutputTokens=data.get("averageOutputTokens", 0.0),
|
|
98
|
+
averageTotalTokens=data.get("averageTotalTokens", 0.0)
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
@classmethod
|
|
102
|
+
def map_to_average_users_per_agent_response(cls, data: dict) -> AverageUsersPerAgentResponse:
|
|
103
|
+
items_data = data.get("averageUsersPerAgent", [])
|
|
104
|
+
items = [UsersPerAgentItem.model_validate(item) for item in items_data]
|
|
105
|
+
return AverageUsersPerAgentResponse(averageUsersPerAgent=items)
|
|
106
|
+
|
|
107
|
+
@classmethod
|
|
108
|
+
def map_to_average_users_per_project_response(cls, data: dict) -> AverageUsersPerProjectResponse:
|
|
109
|
+
items_data = data.get("averageUsersPerProject", [])
|
|
110
|
+
items = [UsersPerProjectItem.model_validate(item) for item in items_data]
|
|
111
|
+
return AverageUsersPerProjectResponse(averageUsersPerProject=items)
|
|
112
|
+
|
|
113
|
+
@classmethod
|
|
114
|
+
def map_to_number_of_tokens_response(cls, data: dict) -> NumberOfTokensResponse:
|
|
115
|
+
return NumberOfTokensResponse(
|
|
116
|
+
totalInputTokens=data.get("totalInputTokens", 0),
|
|
117
|
+
totalOutputTokens=data.get("totalOutputTokens", 0),
|
|
118
|
+
totalTokens=data.get("totalTokens", 0)
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
@classmethod
|
|
122
|
+
def map_to_number_of_tokens_per_agent_response(cls, data: dict) -> NumberOfTokensPerAgentResponse:
|
|
123
|
+
items_data = data.get("tokensPerAgent", [])
|
|
124
|
+
items = [TokensPerAgentItem.model_validate(item) for item in items_data]
|
|
125
|
+
return NumberOfTokensPerAgentResponse(tokensPerAgent=items)
|
|
126
|
+
|
|
127
|
+
@classmethod
|
|
128
|
+
def map_to_number_of_tokens_per_day_response(cls, data: dict) -> NumberOfTokensPerDayResponse:
|
|
129
|
+
items_data = data.get("tokensPerDay", [])
|
|
130
|
+
items = [TokensPerDayItem.model_validate(item) for item in items_data]
|
|
131
|
+
return NumberOfTokensPerDayResponse(tokensPerDay=items)
|
|
132
|
+
|
|
133
|
+
@classmethod
|
|
134
|
+
def map_to_overall_error_rate_response(cls, data: dict) -> OverallErrorRateResponse:
|
|
135
|
+
return OverallErrorRateResponse(errorRate=data.get("errorRate", 0.0))
|
|
136
|
+
|
|
137
|
+
@classmethod
|
|
138
|
+
def map_to_top_10_agents_by_requests_response(cls, data: dict) -> Top10AgentsByRequestsResponse:
|
|
139
|
+
items_data = data.get("topAgents", [])
|
|
140
|
+
items = [AgentByRequestsItem.model_validate(item) for item in items_data]
|
|
141
|
+
return Top10AgentsByRequestsResponse(topAgents=items)
|
|
142
|
+
|
|
143
|
+
@classmethod
|
|
144
|
+
def map_to_top_10_agents_by_tokens_response(cls, data: dict) -> Top10AgentsByTokensResponse:
|
|
145
|
+
items_data = data.get("topAgents", [])
|
|
146
|
+
items = [AgentByTokensItem.model_validate(item) for item in items_data]
|
|
147
|
+
return Top10AgentsByTokensResponse(topAgents=items)
|
|
148
|
+
|
|
149
|
+
@classmethod
|
|
150
|
+
def map_to_top_10_users_by_cost_response(cls, data: dict) -> Top10UsersByCostResponse:
|
|
151
|
+
items_data = data.get("topUsers", [])
|
|
152
|
+
items = [UserByCostItem.model_validate(item) for item in items_data]
|
|
153
|
+
return Top10UsersByCostResponse(topUsers=items)
|
|
154
|
+
|
|
155
|
+
@classmethod
|
|
156
|
+
def map_to_top_10_users_by_requests_response(cls, data: dict) -> Top10UsersByRequestsResponse:
|
|
157
|
+
items_data = data.get("topUsers", [])
|
|
158
|
+
items = [UserByRequestsItem.model_validate(item) for item in items_data]
|
|
159
|
+
return Top10UsersByRequestsResponse(topUsers=items)
|
|
160
|
+
|
|
161
|
+
@classmethod
|
|
162
|
+
def map_to_total_active_agents_response(cls, data: dict) -> TotalActiveAgentsResponse:
|
|
163
|
+
return TotalActiveAgentsResponse(totalActiveAgents=data.get("totalActiveAgents", 0))
|
|
164
|
+
|
|
165
|
+
@classmethod
|
|
166
|
+
def map_to_total_active_projects_response(cls, data: dict) -> TotalActiveProjectsResponse:
|
|
167
|
+
return TotalActiveProjectsResponse(totalActiveProjects=data.get("totalActiveProjects", 0))
|
|
168
|
+
|
|
169
|
+
@classmethod
|
|
170
|
+
def map_to_total_active_users_response(cls, data: dict) -> TotalActiveUsersResponse:
|
|
171
|
+
return TotalActiveUsersResponse(totalActiveUsers=data.get("totalActiveUsers", 0))
|
|
172
|
+
|
|
173
|
+
@classmethod
|
|
174
|
+
def map_to_total_cost_response(cls, data: dict) -> TotalCostResponse:
|
|
175
|
+
return TotalCostResponse(totalCost=data.get("totalCost", 0.0))
|
|
176
|
+
|
|
177
|
+
@classmethod
|
|
178
|
+
def map_to_total_cost_per_day_response(cls, data: dict) -> TotalCostPerDayResponse:
|
|
179
|
+
items_data = data.get("costPerDay", [])
|
|
180
|
+
items = [CostPerDayItem.model_validate(item) for item in items_data]
|
|
181
|
+
return TotalCostPerDayResponse(costPerDay=items)
|
|
182
|
+
|
|
183
|
+
@classmethod
|
|
184
|
+
def map_to_total_request_time_response(cls, data: dict) -> TotalRequestTimeResponse:
|
|
185
|
+
return TotalRequestTimeResponse(totalTime=data.get("totalTime", 0.0))
|
|
186
|
+
|
|
187
|
+
@classmethod
|
|
188
|
+
def map_to_total_requests_response(cls, data: dict) -> TotalRequestsResponse:
|
|
189
|
+
return TotalRequestsResponse(totalRequests=data.get("totalRequests", 0))
|
|
190
|
+
|
|
191
|
+
@classmethod
|
|
192
|
+
def map_to_total_requests_per_day_response(cls, data: dict) -> TotalRequestsPerDayResponse:
|
|
193
|
+
items_data = data.get("requestsPerDay", [])
|
|
194
|
+
items = [RequestsPerDayItem.model_validate(item) for item in items_data]
|
|
195
|
+
return TotalRequestsPerDayResponse(requestsPerDay=items)
|
|
196
|
+
|
|
197
|
+
@classmethod
|
|
198
|
+
def map_to_total_requests_with_error_response(cls, data: dict) -> TotalRequestsWithErrorResponse:
|
|
199
|
+
return TotalRequestsWithErrorResponse(totalRequestsWithError=data.get("totalRequestsWithError", 0))
|
|
200
|
+
|
|
201
|
+
@classmethod
|
|
202
|
+
def map_to_total_tokens_response(cls, data: dict) -> TotalTokensResponse:
|
|
203
|
+
return TotalTokensResponse(
|
|
204
|
+
totalInputTokens=data.get("totalInputTokens", 0),
|
|
205
|
+
totalOutputTokens=data.get("totalOutputTokens", 0),
|
|
206
|
+
totalTokens=data.get("totalTokens", 0)
|
|
207
|
+
)
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
from pydantic.main import BaseModel
|
|
2
|
+
from typing import Optional
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class AgentsCreatedAndModifiedResponse(BaseModel):
|
|
6
|
+
createdAgents: int
|
|
7
|
+
modifiedAgents: int
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class AgentActivityPerDayItem(BaseModel):
|
|
11
|
+
date: str
|
|
12
|
+
createdAgents: int
|
|
13
|
+
modifiedAgents: int
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class AgentsCreatedAndModifiedPerDayResponse(BaseModel):
|
|
17
|
+
agentsCreatedAndModifiedPerDay: list[AgentActivityPerDayItem]
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class FlowsCreatedAndModifiedResponse(BaseModel):
|
|
21
|
+
createdFlows: int
|
|
22
|
+
modifiedFlows: int
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class FlowActivityPerDayItem(BaseModel):
|
|
26
|
+
date: str
|
|
27
|
+
createdFlows: int
|
|
28
|
+
modifiedFlows: int
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class FlowsCreatedAndModifiedPerDayResponse(BaseModel):
|
|
32
|
+
flowsCreatedAndModifiedPerDay: list[FlowActivityPerDayItem]
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class ProcessesCreatedAndModifiedResponse(BaseModel):
|
|
36
|
+
createdProcesses: int
|
|
37
|
+
modifiedProcesses: int
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class AgentUsagePerUserItem(BaseModel):
|
|
41
|
+
userId: str
|
|
42
|
+
userName: Optional[str] = None
|
|
43
|
+
totalCost: float
|
|
44
|
+
totalRequests: int
|
|
45
|
+
totalTokens: int
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class AgentUsagePerUserResponse(BaseModel):
|
|
49
|
+
agentUsagePerUser: list[AgentUsagePerUserItem]
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class AverageCostPerRequestResponse(BaseModel):
|
|
53
|
+
averageCost: float
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class AverageCostPerUserResponse(BaseModel):
|
|
57
|
+
averageCost: float
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class CostPerUserPerDateItem(BaseModel):
|
|
61
|
+
date: str
|
|
62
|
+
userId: str
|
|
63
|
+
userName: Optional[str] = None
|
|
64
|
+
averageCost: float
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class AverageCostPerUserPerDateResponse(BaseModel):
|
|
68
|
+
averageCostPerUserPerDate: list[CostPerUserPerDateItem]
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
class AverageRequestTimeResponse(BaseModel):
|
|
72
|
+
averageTime: float
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
class AverageRequestsPerDayResponse(BaseModel):
|
|
76
|
+
averageRequests: float
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
class AverageRequestsPerUserResponse(BaseModel):
|
|
80
|
+
averageRequests: float
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
class RequestsPerUserPerDateItem(BaseModel):
|
|
84
|
+
date: str
|
|
85
|
+
userId: str
|
|
86
|
+
userName: Optional[str] = None
|
|
87
|
+
averageRequests: float
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
class AverageRequestsPerUserPerDateResponse(BaseModel):
|
|
91
|
+
averageRequestsPerUserPerDate: list[RequestsPerUserPerDateItem]
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
class AverageTokensPerRequestResponse(BaseModel):
|
|
95
|
+
averageInputTokens: float
|
|
96
|
+
averageOutputTokens: float
|
|
97
|
+
averageTotalTokens: float
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
class UsersPerAgentItem(BaseModel):
|
|
101
|
+
agentName: str
|
|
102
|
+
averageUsers: float
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
class AverageUsersPerAgentResponse(BaseModel):
|
|
106
|
+
averageUsersPerAgent: list[UsersPerAgentItem]
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
class UsersPerProjectItem(BaseModel):
|
|
110
|
+
projectId: str
|
|
111
|
+
projectName: Optional[str] = None
|
|
112
|
+
averageUsers: float
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
class AverageUsersPerProjectResponse(BaseModel):
|
|
116
|
+
averageUsersPerProject: list[UsersPerProjectItem]
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
class NumberOfTokensResponse(BaseModel):
|
|
120
|
+
totalInputTokens: int
|
|
121
|
+
totalOutputTokens: int
|
|
122
|
+
totalTokens: int
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
class TokensPerAgentItem(BaseModel):
|
|
126
|
+
agentName: str
|
|
127
|
+
model: str
|
|
128
|
+
inputTokens: int
|
|
129
|
+
outputTokens: int
|
|
130
|
+
totalTokens: int
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
class NumberOfTokensPerAgentResponse(BaseModel):
|
|
134
|
+
tokensPerAgent: list[TokensPerAgentItem]
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
class TokensPerDayItem(BaseModel):
|
|
138
|
+
date: str
|
|
139
|
+
inputTokens: int
|
|
140
|
+
outputTokens: int
|
|
141
|
+
totalTokens: int
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
class NumberOfTokensPerDayResponse(BaseModel):
|
|
145
|
+
tokensPerDay: list[TokensPerDayItem]
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
class OverallErrorRateResponse(BaseModel):
|
|
149
|
+
errorRate: float
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
class AgentByRequestsItem(BaseModel):
|
|
153
|
+
agentName: str
|
|
154
|
+
totalRequests: int
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
class Top10AgentsByRequestsResponse(BaseModel):
|
|
158
|
+
topAgents: list[AgentByRequestsItem]
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
class AgentByTokensItem(BaseModel):
|
|
162
|
+
agentName: str
|
|
163
|
+
totalTokens: int
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
class Top10AgentsByTokensResponse(BaseModel):
|
|
167
|
+
topAgents: list[AgentByTokensItem]
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
class UserByCostItem(BaseModel):
|
|
171
|
+
userId: str
|
|
172
|
+
userName: Optional[str] = None
|
|
173
|
+
totalCost: float
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
class Top10UsersByCostResponse(BaseModel):
|
|
177
|
+
topUsers: list[UserByCostItem]
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
class UserByRequestsItem(BaseModel):
|
|
181
|
+
userId: str
|
|
182
|
+
userName: Optional[str] = None
|
|
183
|
+
totalRequests: int
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
class Top10UsersByRequestsResponse(BaseModel):
|
|
187
|
+
topUsers: list[UserByRequestsItem]
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
class TotalActiveAgentsResponse(BaseModel):
|
|
191
|
+
totalActiveAgents: int
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
class TotalActiveProjectsResponse(BaseModel):
|
|
195
|
+
totalActiveProjects: int
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
class TotalActiveUsersResponse(BaseModel):
|
|
199
|
+
totalActiveUsers: int
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
class TotalCostResponse(BaseModel):
|
|
203
|
+
totalCost: float
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
class CostPerDayItem(BaseModel):
|
|
207
|
+
date: str
|
|
208
|
+
totalCost: float
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
class TotalCostPerDayResponse(BaseModel):
|
|
212
|
+
costPerDay: list[CostPerDayItem]
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
class TotalRequestTimeResponse(BaseModel):
|
|
216
|
+
totalTime: float
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
class TotalRequestsResponse(BaseModel):
|
|
220
|
+
totalRequests: int
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
class RequestsPerDayItem(BaseModel):
|
|
224
|
+
date: str
|
|
225
|
+
totalRequests: int
|
|
226
|
+
totalRequestsWithError: int
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
class TotalRequestsPerDayResponse(BaseModel):
|
|
230
|
+
requestsPerDay: list[RequestsPerDayItem]
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
class TotalRequestsWithErrorResponse(BaseModel):
|
|
234
|
+
totalRequestsWithError: int
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
class TotalTokensResponse(BaseModel):
|
|
238
|
+
totalInputTokens: int
|
|
239
|
+
totalOutputTokens: int
|
|
240
|
+
totalTokens: int
|
pygeai/assistant/clients.py
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import json
|
|
2
1
|
|
|
2
|
+
from pygeai import logger
|
|
3
3
|
from pygeai.assistant.endpoints import GET_ASSISTANT_DATA_V1, CREATE_ASSISTANT_V1, UPDATE_ASSISTANT_V1, BEGIN_CONVERSATION_V1, \
|
|
4
|
-
SEND_TEXT_PROMPT_V1, SEND_CHAT_REQUEST_V1, GET_REQUEST_STATUS_V1, CANCEL_REQUEST_V1
|
|
5
|
-
|
|
4
|
+
SEND_TEXT_PROMPT_V1, SEND_CHAT_REQUEST_V1, GET_REQUEST_STATUS_V1, CANCEL_REQUEST_V1
|
|
5
|
+
from pygeai.assistant.data_analyst.endpoints import GET_DATA_ANALYST_STATUS_V1, EXTEND_DATA_ANALYST_DATASET_V1
|
|
6
6
|
from pygeai.core.base.clients import BaseClient
|
|
7
|
+
from pygeai.core.common.decorators import handler_server_error
|
|
8
|
+
from pygeai.core.common.exceptions import InvalidAPIResponseException
|
|
9
|
+
from pygeai.core.utils.validators import validate_status_code
|
|
10
|
+
from pygeai.core.utils.parsers import parse_json_response
|
|
7
11
|
|
|
8
12
|
|
|
9
13
|
class AssistantClient(BaseClient):
|
|
@@ -27,8 +31,8 @@ class AssistantClient(BaseClient):
|
|
|
27
31
|
"detail": detail
|
|
28
32
|
}
|
|
29
33
|
)
|
|
30
|
-
|
|
31
|
-
return
|
|
34
|
+
validate_status_code(response)
|
|
35
|
+
return parse_json_response(response, "get assistant data for ID", assistant_id=assistant_id)
|
|
32
36
|
|
|
33
37
|
def create_assistant(
|
|
34
38
|
self,
|
|
@@ -68,19 +72,20 @@ class AssistantClient(BaseClient):
|
|
|
68
72
|
} (Optional)
|
|
69
73
|
:return: dict - The API response as a JSON object containing details about the created assistant.
|
|
70
74
|
"""
|
|
75
|
+
data = {
|
|
76
|
+
"type": assistant_type,
|
|
77
|
+
"name": name,
|
|
78
|
+
"prompt": prompt,
|
|
79
|
+
"description": description,
|
|
80
|
+
"llmSettings": llm_settings,
|
|
81
|
+
"welcomeData": welcome_data
|
|
82
|
+
}
|
|
71
83
|
response = self.api_service.post(
|
|
72
84
|
endpoint=CREATE_ASSISTANT_V1,
|
|
73
|
-
data=
|
|
74
|
-
"type": assistant_type,
|
|
75
|
-
"name": name,
|
|
76
|
-
"prompt": prompt,
|
|
77
|
-
"description": description,
|
|
78
|
-
"llmSettings": llm_settings,
|
|
79
|
-
"welcomeData": welcome_data
|
|
80
|
-
}
|
|
85
|
+
data=data
|
|
81
86
|
)
|
|
82
|
-
|
|
83
|
-
return
|
|
87
|
+
validate_status_code(response)
|
|
88
|
+
return parse_json_response(response, "create assistant with name", name=name)
|
|
84
89
|
|
|
85
90
|
def update_assistant(
|
|
86
91
|
self,
|
|
@@ -152,8 +157,8 @@ class AssistantClient(BaseClient):
|
|
|
152
157
|
endpoint=endpoint,
|
|
153
158
|
data=data
|
|
154
159
|
)
|
|
155
|
-
|
|
156
|
-
return
|
|
160
|
+
validate_status_code(response)
|
|
161
|
+
return parse_json_response(response, "update assistant", assistant_id=assistant_id)
|
|
157
162
|
|
|
158
163
|
def delete_assistant(
|
|
159
164
|
self,
|
|
@@ -169,15 +174,16 @@ class AssistantClient(BaseClient):
|
|
|
169
174
|
response = self.api_service.delete(
|
|
170
175
|
endpoint=endpoint
|
|
171
176
|
)
|
|
172
|
-
|
|
173
|
-
return
|
|
177
|
+
validate_status_code(response)
|
|
178
|
+
return parse_json_response(response, "delete assistant", assistant_id=assistant_id)
|
|
174
179
|
|
|
175
180
|
def send_chat_request(
|
|
176
181
|
self,
|
|
177
|
-
assistant_name,
|
|
178
|
-
messages,
|
|
179
|
-
revision,
|
|
180
|
-
revision_name
|
|
182
|
+
assistant_name: str,
|
|
183
|
+
messages: list[dict],
|
|
184
|
+
revision: str = None,
|
|
185
|
+
revision_name: str = None,
|
|
186
|
+
variables: list[dict] = None
|
|
181
187
|
) -> dict:
|
|
182
188
|
"""
|
|
183
189
|
Sends a chat request to the specified assistant.
|
|
@@ -189,17 +195,20 @@ class AssistantClient(BaseClient):
|
|
|
189
195
|
:param revision_name: str - The name of the revision to be used for the chat request. (Required)
|
|
190
196
|
:return: dict - The API response as a JSON object with the result of the chat request.
|
|
191
197
|
"""
|
|
198
|
+
data = {
|
|
199
|
+
"assistant": assistant_name,
|
|
200
|
+
"messages": messages,
|
|
201
|
+
"revision": revision,
|
|
202
|
+
"revisionName": revision_name,
|
|
203
|
+
"variables": variables
|
|
204
|
+
}
|
|
205
|
+
|
|
192
206
|
response = self.api_service.post(
|
|
193
207
|
endpoint=SEND_CHAT_REQUEST_V1,
|
|
194
|
-
data=
|
|
195
|
-
"assistant": assistant_name,
|
|
196
|
-
"messages": messages,
|
|
197
|
-
"revision": revision,
|
|
198
|
-
"revisionName": revision_name
|
|
199
|
-
}
|
|
208
|
+
data=data
|
|
200
209
|
)
|
|
201
|
-
|
|
202
|
-
return
|
|
210
|
+
validate_status_code(response)
|
|
211
|
+
return parse_json_response(response, "send chat request to assistant", assistant_name=assistant_name)
|
|
203
212
|
|
|
204
213
|
def get_request_status(
|
|
205
214
|
self,
|
|
@@ -215,8 +224,8 @@ class AssistantClient(BaseClient):
|
|
|
215
224
|
response = self.api_service.get(
|
|
216
225
|
endpoint=endpoint
|
|
217
226
|
)
|
|
218
|
-
|
|
219
|
-
return
|
|
227
|
+
validate_status_code(response)
|
|
228
|
+
return parse_json_response(response, "get request status for ID", request_id=request_id)
|
|
220
229
|
|
|
221
230
|
def cancel_request(
|
|
222
231
|
self,
|
|
@@ -230,31 +239,13 @@ class AssistantClient(BaseClient):
|
|
|
230
239
|
"""
|
|
231
240
|
endpoint = CANCEL_REQUEST_V1.format(id=request_id)
|
|
232
241
|
response = self.api_service.post(
|
|
233
|
-
endpoint=endpoint
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
def get_data_analyst_status(
|
|
239
|
-
self,
|
|
240
|
-
assistant_id: str
|
|
241
|
-
) -> dict:
|
|
242
|
-
endpoint = GET_DATA_ANALYST_STATUS_V1.format(id=assistant_id)
|
|
243
|
-
response = self.api_service.get(
|
|
244
|
-
endpoint=endpoint
|
|
242
|
+
endpoint=endpoint,
|
|
243
|
+
data={
|
|
244
|
+
"requestId": request_id
|
|
245
|
+
}
|
|
245
246
|
)
|
|
246
|
-
|
|
247
|
-
return
|
|
247
|
+
validate_status_code(response)
|
|
248
|
+
return parse_json_response(response, "cancel request", request_id=request_id)
|
|
248
249
|
|
|
249
|
-
def extend_data_analyst_dataset(
|
|
250
|
-
self,
|
|
251
|
-
assistant_id: str
|
|
252
|
-
) -> dict:
|
|
253
|
-
endpoint = EXTEND_DATA_ANALYST_DATASET_V1.format(id=assistant_id)
|
|
254
|
-
response = self.api_service.post(
|
|
255
|
-
endpoint=endpoint
|
|
256
|
-
)
|
|
257
|
-
result = json.loads(response.content)
|
|
258
|
-
return result
|
|
259
250
|
|
|
260
251
|
|
|
File without changes
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import json
|
|
2
|
+
|
|
3
|
+
from pygeai.assistant.clients import AssistantClient
|
|
4
|
+
from pygeai.assistant.endpoints import GET_ASSISTANT_DATA_V1, CREATE_ASSISTANT_V1, UPDATE_ASSISTANT_V1, BEGIN_CONVERSATION_V1, \
|
|
5
|
+
SEND_TEXT_PROMPT_V1, SEND_CHAT_REQUEST_V1, GET_REQUEST_STATUS_V1, CANCEL_REQUEST_V1
|
|
6
|
+
from pygeai.assistant.data_analyst.endpoints import GET_DATA_ANALYST_STATUS_V1, EXTEND_DATA_ANALYST_DATASET_V1
|
|
7
|
+
from pygeai.core.base.clients import BaseClient
|
|
8
|
+
from pygeai.core.common.decorators import handler_server_error
|
|
9
|
+
from pygeai.core.utils.validators import validate_status_code
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ChatWithDataAssistantClient(AssistantClient):
|
|
13
|
+
# TODO -> load_metadata(
|
|
14
|
+
pass
|
|
15
|
+
|
|
File without changes
|