pygeai 0.1.51b3__py3-none-any.whl → 0.6.0b15__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pygeai might be problematic. Click here for more details.
- pygeai/__init__.py +9 -1
- pygeai/_docs/Makefile +20 -0
- pygeai/_docs/make.bat +35 -0
- pygeai/_docs/source/conf.py +117 -0
- pygeai/_docs/source/content/ai_lab/cli.rst +747 -0
- pygeai/_docs/source/content/ai_lab/models.rst +1734 -0
- pygeai/_docs/source/content/ai_lab/runner.rst +253 -0
- pygeai/_docs/source/content/ai_lab/spec.rst +431 -0
- pygeai/_docs/source/content/ai_lab/usage.rst +1011 -0
- pygeai/_docs/source/content/ai_lab.rst +102 -0
- pygeai/_docs/source/content/analytics.rst +598 -0
- pygeai/_docs/source/content/api_reference/admin.rst +161 -0
- pygeai/_docs/source/content/api_reference/assistant.rst +326 -0
- pygeai/_docs/source/content/api_reference/auth.rst +379 -0
- pygeai/_docs/source/content/api_reference/chat.rst +754 -0
- pygeai/_docs/source/content/api_reference/embeddings.rst +154 -0
- pygeai/_docs/source/content/api_reference/evaluation.rst +590 -0
- pygeai/_docs/source/content/api_reference/feedback.rst +237 -0
- pygeai/_docs/source/content/api_reference/files.rst +592 -0
- pygeai/_docs/source/content/api_reference/gam.rst +401 -0
- pygeai/_docs/source/content/api_reference/health.rst +58 -0
- pygeai/_docs/source/content/api_reference/project.rst +738 -0
- pygeai/_docs/source/content/api_reference/proxy.rst +318 -0
- pygeai/_docs/source/content/api_reference/rag.rst +710 -0
- pygeai/_docs/source/content/api_reference/rerank.rst +94 -0
- pygeai/_docs/source/content/api_reference/secrets.rst +495 -0
- pygeai/_docs/source/content/api_reference/usage_limits.rst +390 -0
- pygeai/_docs/source/content/api_reference.rst +58 -0
- pygeai/_docs/source/content/authentication.rst +295 -0
- pygeai/_docs/source/content/chat_gui.rst +121 -0
- pygeai/_docs/source/content/cli.rst +203 -0
- pygeai/_docs/source/content/debugger.rst +651 -0
- pygeai/_docs/source/content/intro.rst +67 -0
- pygeai/_docs/source/content/migration.rst +929 -0
- pygeai/_docs/source/content/modules.rst +7 -0
- pygeai/_docs/source/content/quickstart.rst +143 -0
- pygeai/_docs/source/content/samples.rst +394 -0
- pygeai/_docs/source/index.rst +75 -0
- pygeai/_docs/source/modules.rst +7 -0
- pygeai/_docs/source/pygeai.admin.rst +29 -0
- pygeai/_docs/source/pygeai.analytics.rst +53 -0
- pygeai/_docs/source/pygeai.assistant.data.rst +21 -0
- pygeai/_docs/source/pygeai.assistant.data_analyst.rst +29 -0
- pygeai/_docs/source/pygeai.assistant.rag.rst +53 -0
- pygeai/_docs/source/pygeai.assistant.rst +55 -0
- pygeai/_docs/source/pygeai.auth.rst +29 -0
- pygeai/_docs/source/pygeai.chat.rst +69 -0
- pygeai/_docs/source/pygeai.cli.commands.flows.rst +10 -0
- pygeai/_docs/source/pygeai.cli.commands.lab.rst +53 -0
- pygeai/_docs/source/pygeai.cli.commands.rst +222 -0
- pygeai/_docs/source/pygeai.cli.rst +62 -0
- pygeai/_docs/source/pygeai.cli.texts.rst +21 -0
- pygeai/_docs/source/pygeai.core.base.rst +53 -0
- pygeai/_docs/source/pygeai.core.common.rst +37 -0
- pygeai/_docs/source/pygeai.core.embeddings.rst +61 -0
- pygeai/_docs/source/pygeai.core.feedback.rst +37 -0
- pygeai/_docs/source/pygeai.core.files.rst +61 -0
- pygeai/_docs/source/pygeai.core.llm.rst +29 -0
- pygeai/_docs/source/pygeai.core.plugins.rst +37 -0
- pygeai/_docs/source/pygeai.core.rerank.rst +53 -0
- pygeai/_docs/source/pygeai.core.rst +63 -0
- pygeai/_docs/source/pygeai.core.secrets.rst +29 -0
- pygeai/_docs/source/pygeai.core.services.llm.rst +29 -0
- pygeai/_docs/source/pygeai.core.services.rst +37 -0
- pygeai/_docs/source/pygeai.core.utils.rst +37 -0
- pygeai/_docs/source/pygeai.dbg.rst +21 -0
- pygeai/_docs/source/pygeai.evaluation.dataset.rst +29 -0
- pygeai/_docs/source/pygeai.evaluation.plan.rst +29 -0
- pygeai/_docs/source/pygeai.evaluation.result.rst +29 -0
- pygeai/_docs/source/pygeai.evaluation.rst +31 -0
- pygeai/_docs/source/pygeai.flows.rst +29 -0
- pygeai/_docs/source/pygeai.gam.rst +29 -0
- pygeai/_docs/source/pygeai.health.rst +29 -0
- pygeai/_docs/source/pygeai.lab.agents.rst +37 -0
- pygeai/_docs/source/pygeai.lab.processes.rst +37 -0
- pygeai/_docs/source/pygeai.lab.rst +65 -0
- pygeai/_docs/source/pygeai.lab.spec.rst +29 -0
- pygeai/_docs/source/pygeai.lab.strategies.rst +37 -0
- pygeai/_docs/source/pygeai.lab.tools.rst +37 -0
- pygeai/_docs/source/pygeai.man.man1.rst +10 -0
- pygeai/_docs/source/pygeai.man.rst +18 -0
- pygeai/_docs/source/pygeai.migration.rst +29 -0
- pygeai/_docs/source/pygeai.organization.limits.rst +45 -0
- pygeai/_docs/source/pygeai.organization.rst +61 -0
- pygeai/_docs/source/pygeai.proxy.rst +53 -0
- pygeai/_docs/source/pygeai.rst +35 -0
- pygeai/_docs/source/pygeai.tests.admin.rst +21 -0
- pygeai/_docs/source/pygeai.tests.analytics.rst +45 -0
- pygeai/_docs/source/pygeai.tests.assistants.rag.rst +37 -0
- pygeai/_docs/source/pygeai.tests.assistants.rst +45 -0
- pygeai/_docs/source/pygeai.tests.auth.rst +29 -0
- pygeai/_docs/source/pygeai.tests.chat.rst +45 -0
- pygeai/_docs/source/pygeai.tests.cli.commands.lab.rst +37 -0
- pygeai/_docs/source/pygeai.tests.cli.commands.rst +165 -0
- pygeai/_docs/source/pygeai.tests.cli.docker.rst +10 -0
- pygeai/_docs/source/pygeai.tests.cli.rst +46 -0
- pygeai/_docs/source/pygeai.tests.core.base.data.rst +29 -0
- pygeai/_docs/source/pygeai.tests.core.base.rst +45 -0
- pygeai/_docs/source/pygeai.tests.core.common.data.rst +10 -0
- pygeai/_docs/source/pygeai.tests.core.common.rst +37 -0
- pygeai/_docs/source/pygeai.tests.core.embeddings.rst +37 -0
- pygeai/_docs/source/pygeai.tests.core.feedback.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.files.rst +53 -0
- pygeai/_docs/source/pygeai.tests.core.llm.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.plugins.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.rerank.rst +37 -0
- pygeai/_docs/source/pygeai.tests.core.rst +39 -0
- pygeai/_docs/source/pygeai.tests.core.secrets.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.services.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.utils.rst +21 -0
- pygeai/_docs/source/pygeai.tests.dbg.rst +21 -0
- pygeai/_docs/source/pygeai.tests.evaluation.dataset.rst +21 -0
- pygeai/_docs/source/pygeai.tests.evaluation.plan.rst +21 -0
- pygeai/_docs/source/pygeai.tests.evaluation.result.rst +21 -0
- pygeai/_docs/source/pygeai.tests.evaluation.rst +20 -0
- pygeai/_docs/source/pygeai.tests.gam.rst +21 -0
- pygeai/_docs/source/pygeai.tests.health.rst +21 -0
- pygeai/_docs/source/pygeai.tests.integration.assistants.rag.rst +21 -0
- pygeai/_docs/source/pygeai.tests.integration.assistants.rst +18 -0
- pygeai/_docs/source/pygeai.tests.integration.chat.rst +21 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.agents.rst +69 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.processes.rst +77 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.reasoning_strategies.rst +37 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.rst +21 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.tools.rst +77 -0
- pygeai/_docs/source/pygeai.tests.integration.rst +20 -0
- pygeai/_docs/source/pygeai.tests.lab.agents.rst +29 -0
- pygeai/_docs/source/pygeai.tests.lab.processes.rst +29 -0
- pygeai/_docs/source/pygeai.tests.lab.rst +49 -0
- pygeai/_docs/source/pygeai.tests.lab.spec.rst +29 -0
- pygeai/_docs/source/pygeai.tests.lab.strategies.rst +29 -0
- pygeai/_docs/source/pygeai.tests.lab.tools.rst +29 -0
- pygeai/_docs/source/pygeai.tests.migration.rst +29 -0
- pygeai/_docs/source/pygeai.tests.organization.limits.rst +29 -0
- pygeai/_docs/source/pygeai.tests.organization.rst +53 -0
- pygeai/_docs/source/pygeai.tests.proxy.rst +61 -0
- pygeai/_docs/source/pygeai.tests.rst +33 -0
- pygeai/admin/clients.py +14 -11
- pygeai/admin/endpoints.py +2 -2
- pygeai/analytics/clients.py +505 -0
- pygeai/analytics/endpoints.py +35 -0
- pygeai/analytics/managers.py +606 -0
- pygeai/analytics/mappers.py +207 -0
- pygeai/analytics/responses.py +240 -0
- pygeai/assistant/clients.py +18 -45
- pygeai/assistant/data/clients.py +1 -0
- pygeai/assistant/data_analyst/clients.py +8 -12
- pygeai/assistant/managers.py +195 -157
- pygeai/assistant/mappers.py +4 -2
- pygeai/assistant/rag/clients.py +27 -67
- pygeai/assistant/rag/mappers.py +12 -6
- pygeai/assistant/rag/models.py +301 -159
- pygeai/auth/__init__.py +0 -0
- pygeai/auth/clients.py +129 -0
- pygeai/auth/endpoints.py +6 -0
- pygeai/chat/clients.py +308 -37
- pygeai/chat/endpoints.py +3 -0
- pygeai/chat/iris.py +2 -8
- pygeai/chat/managers.py +9 -6
- pygeai/chat/session.py +38 -0
- pygeai/chat/settings.py +6 -0
- pygeai/chat/ui.py +678 -0
- pygeai/cli/__init__.py +0 -1
- pygeai/cli/commands/admin.py +7 -10
- pygeai/cli/commands/analytics.py +533 -0
- pygeai/cli/commands/assistant.py +9 -9
- pygeai/cli/commands/auth.py +299 -0
- pygeai/cli/commands/base.py +71 -9
- pygeai/cli/commands/chat.py +676 -19
- pygeai/cli/commands/common.py +28 -24
- pygeai/cli/commands/configuration.py +66 -13
- pygeai/cli/commands/docs.py +105 -0
- pygeai/cli/commands/embeddings.py +58 -11
- pygeai/cli/commands/evaluation.py +38 -38
- pygeai/cli/commands/feedback.py +3 -4
- pygeai/cli/commands/files.py +7 -8
- pygeai/cli/commands/gam.py +85 -10
- pygeai/cli/commands/lab/ai_lab.py +340 -484
- pygeai/cli/commands/lab/options.py +8 -0
- pygeai/cli/commands/lab/spec.py +273 -0
- pygeai/cli/commands/lab/utils.py +13 -0
- pygeai/cli/commands/llm.py +6 -7
- pygeai/cli/commands/migrate.py +1064 -436
- pygeai/cli/commands/organization.py +516 -11
- pygeai/cli/commands/rag.py +13 -14
- pygeai/cli/commands/rerank.py +3 -5
- pygeai/cli/commands/secrets.py +8 -9
- pygeai/cli/commands/usage_limits.py +18 -20
- pygeai/cli/commands/validators.py +144 -1
- pygeai/cli/commands/version.py +4 -5
- pygeai/cli/error_handler.py +151 -0
- pygeai/cli/geai.py +170 -31
- pygeai/cli/geai_proxy.py +86 -25
- pygeai/cli/install_man.py +93 -22
- pygeai/cli/parsers.py +75 -25
- pygeai/cli/texts/help.py +265 -28
- pygeai/core/base/clients.py +53 -12
- pygeai/core/base/mappers.py +11 -2
- pygeai/core/base/session.py +95 -11
- pygeai/core/common/config.py +78 -14
- pygeai/core/common/exceptions.py +96 -6
- pygeai/core/embeddings/__init__.py +19 -0
- pygeai/core/embeddings/clients.py +23 -5
- pygeai/core/embeddings/managers.py +9 -4
- pygeai/core/embeddings/mappers.py +16 -2
- pygeai/core/embeddings/responses.py +9 -2
- pygeai/core/feedback/clients.py +8 -3
- pygeai/core/files/clients.py +23 -24
- pygeai/core/files/managers.py +121 -30
- pygeai/core/files/responses.py +4 -3
- pygeai/core/handlers.py +10 -1
- pygeai/core/llm/clients.py +22 -29
- pygeai/core/models.py +127 -11
- pygeai/core/plugins/clients.py +6 -6
- pygeai/core/rerank/clients.py +9 -3
- pygeai/core/rerank/managers.py +22 -5
- pygeai/core/secrets/clients.py +16 -37
- pygeai/core/services/response.py +18 -0
- pygeai/core/services/rest.py +159 -49
- pygeai/core/utils/__init__.py +0 -0
- pygeai/core/utils/console.py +83 -0
- pygeai/core/utils/parsers.py +32 -0
- pygeai/core/utils/validators.py +10 -0
- pygeai/dbg/__init__.py +3 -0
- pygeai/dbg/debugger.py +854 -14
- pygeai/evaluation/clients.py +7 -4
- pygeai/evaluation/dataset/clients.py +46 -44
- pygeai/evaluation/plan/clients.py +28 -26
- pygeai/evaluation/result/clients.py +38 -5
- pygeai/gam/clients.py +50 -28
- pygeai/gam/endpoints.py +2 -1
- pygeai/health/__init__.py +0 -0
- pygeai/health/clients.py +24 -0
- pygeai/health/endpoints.py +1 -0
- pygeai/lab/__init__.py +0 -90
- pygeai/lab/agents/clients.py +203 -162
- pygeai/lab/agents/endpoints.py +4 -0
- pygeai/lab/agents/mappers.py +57 -7
- pygeai/lab/clients.py +24 -0
- pygeai/lab/constants.py +3 -0
- pygeai/lab/managers.py +571 -541
- pygeai/lab/models.py +108 -19
- pygeai/lab/processes/clients.py +332 -340
- pygeai/lab/processes/mappers.py +3 -3
- pygeai/lab/runners.py +90 -0
- pygeai/lab/spec/__init__.py +0 -0
- pygeai/lab/spec/loader.py +24 -0
- pygeai/lab/spec/parsers.py +39 -0
- pygeai/lab/strategies/clients.py +67 -63
- pygeai/lab/strategies/mappers.py +1 -1
- pygeai/lab/tools/clients.py +85 -118
- pygeai/lab/tools/endpoints.py +4 -0
- pygeai/lab/tools/mappers.py +5 -5
- pygeai/man/man1/geai-proxy.1 +116 -0
- pygeai/man/man1/geai.1 +2580 -66
- pygeai/migration/__init__.py +33 -0
- pygeai/migration/strategies.py +468 -146
- pygeai/migration/tools.py +170 -3
- pygeai/organization/clients.py +245 -50
- pygeai/organization/endpoints.py +17 -8
- pygeai/organization/limits/clients.py +34 -32
- pygeai/organization/limits/managers.py +108 -49
- pygeai/organization/managers.py +347 -53
- pygeai/organization/mappers.py +102 -2
- pygeai/organization/responses.py +58 -1
- pygeai/proxy/clients.py +6 -3
- pygeai/proxy/config.py +14 -1
- pygeai/proxy/managers.py +61 -33
- pygeai/proxy/servers.py +196 -51
- pygeai/proxy/tool.py +33 -16
- pygeai/tests/admin/__init__.py +0 -0
- pygeai/tests/admin/test_clients.py +148 -0
- pygeai/tests/analytics/__init__.py +0 -0
- pygeai/tests/analytics/test_clients.py +86 -0
- pygeai/tests/analytics/test_managers.py +94 -0
- pygeai/tests/analytics/test_mappers.py +84 -0
- pygeai/tests/analytics/test_responses.py +73 -0
- pygeai/tests/assistants/rag/test_clients.py +346 -0
- pygeai/tests/assistants/rag/test_models.py +292 -0
- pygeai/tests/assistants/test_clients.py +176 -82
- pygeai/tests/assistants/test_managers.py +191 -57
- pygeai/tests/auth/__init__.py +0 -0
- pygeai/tests/auth/test_clients.py +289 -0
- pygeai/tests/auth/test_oauth.py +172 -0
- pygeai/tests/auth/test_session_logging.py +150 -0
- pygeai/tests/chat/__init__.py +0 -0
- pygeai/tests/chat/test_clients.py +393 -0
- pygeai/tests/chat/test_iris.py +38 -0
- pygeai/tests/chat/test_session.py +62 -0
- pygeai/tests/chat/test_ui.py +224 -0
- pygeai/tests/cli/commands/__init__.py +0 -0
- pygeai/tests/cli/commands/lab/__init__.py +0 -0
- pygeai/tests/cli/commands/lab/test_ai_lab.py +786 -0
- pygeai/tests/cli/commands/lab/test_common.py +208 -0
- pygeai/tests/cli/commands/lab/test_spec.py +246 -0
- pygeai/tests/cli/commands/test_assistant.py +202 -0
- pygeai/tests/cli/commands/test_chat.py +130 -0
- pygeai/tests/cli/commands/test_common.py +350 -0
- pygeai/tests/cli/commands/test_embeddings.py +132 -0
- pygeai/tests/cli/commands/test_evaluation.py +656 -0
- pygeai/tests/cli/commands/test_feedback.py +65 -0
- pygeai/tests/cli/commands/test_files.py +161 -0
- pygeai/tests/cli/commands/test_gam.py +201 -0
- pygeai/tests/cli/commands/test_llm.py +114 -0
- pygeai/tests/cli/commands/test_migrate.py +176 -0
- pygeai/tests/cli/commands/test_organization.py +276 -0
- pygeai/tests/cli/commands/test_rag.py +266 -0
- pygeai/tests/cli/commands/test_rerank.py +110 -0
- pygeai/tests/cli/commands/test_secrets.py +171 -0
- pygeai/tests/cli/commands/test_show_help.py +41 -0
- pygeai/tests/cli/commands/test_usage_limits.py +412 -0
- pygeai/tests/cli/commands/test_validators.py +160 -0
- pygeai/tests/cli/commands/test_version.py +81 -0
- pygeai/tests/cli/docker/__init__.py +0 -0
- pygeai/tests/cli/test_credentials_flag.py +316 -0
- pygeai/tests/cli/test_error_handler.py +225 -0
- pygeai/tests/cli/test_geai_driver.py +154 -0
- pygeai/tests/cli/test_parsers.py +5 -5
- pygeai/tests/core/base/data/models.py +7 -0
- pygeai/tests/core/base/test_mappers.py +43 -11
- pygeai/tests/core/base/test_models.py +3 -1
- pygeai/tests/core/base/test_responses.py +53 -0
- pygeai/tests/core/common/__init__.py +0 -0
- pygeai/tests/core/common/data/__init__.py +0 -0
- pygeai/tests/core/common/test_config.py +186 -0
- pygeai/tests/core/common/test_decorators.py +69 -0
- pygeai/tests/core/embeddings/__init__.py +0 -0
- pygeai/tests/core/embeddings/test_clients.py +225 -0
- pygeai/tests/core/embeddings/test_managers.py +171 -0
- pygeai/tests/core/embeddings/test_mappers.py +142 -0
- pygeai/tests/core/feedback/__init__.py +0 -0
- pygeai/tests/core/feedback/test_clients.py +64 -0
- pygeai/tests/core/files/test_clients.py +128 -0
- pygeai/tests/core/files/test_managers.py +124 -78
- pygeai/tests/core/files/test_mappers.py +137 -0
- pygeai/tests/core/files/test_models.py +103 -0
- pygeai/tests/core/files/test_responses.py +122 -0
- pygeai/tests/core/llm/__init__.py +0 -0
- pygeai/tests/core/llm/test_clients.py +142 -0
- pygeai/tests/core/plugins/__init__.py +0 -0
- pygeai/tests/core/plugins/test_clients.py +66 -0
- pygeai/tests/core/rerank/test_clients.py +76 -0
- pygeai/tests/core/rerank/test_managers.py +61 -39
- pygeai/tests/core/secrets/__init__.py +0 -0
- pygeai/tests/core/secrets/test_clients.py +264 -0
- pygeai/tests/core/services/__init__.py +0 -0
- pygeai/tests/core/services/test_rest.py +273 -0
- pygeai/tests/core/test_handlers.py +66 -0
- pygeai/tests/core/utils/__init__.py +0 -0
- pygeai/tests/core/utils/test_console.py +80 -0
- pygeai/tests/dbg/__init__.py +0 -0
- pygeai/tests/dbg/test_debugger.py +591 -0
- pygeai/tests/evaluation/__init__.py +0 -0
- pygeai/tests/evaluation/dataset/__init__.py +0 -0
- pygeai/tests/evaluation/dataset/test_clients.py +265 -0
- pygeai/tests/evaluation/plan/__init__.py +0 -0
- pygeai/tests/evaluation/plan/test_clients.py +195 -0
- pygeai/tests/evaluation/result/__init__.py +0 -0
- pygeai/tests/evaluation/result/test_clients.py +66 -0
- pygeai/tests/gam/__init__.py +0 -0
- pygeai/tests/gam/test_clients.py +195 -0
- pygeai/tests/health/__init__.py +0 -0
- pygeai/tests/health/test_clients.py +41 -0
- pygeai/tests/integration/__init__.py +0 -0
- pygeai/tests/integration/assistants/__init__.py +0 -0
- pygeai/tests/integration/assistants/rag/__init__.py +0 -0
- pygeai/tests/integration/assistants/rag/test_create_rag.py +91 -0
- pygeai/tests/integration/chat/__init__.py +0 -0
- pygeai/tests/integration/chat/test_generate_image.py +158 -0
- pygeai/tests/integration/lab/__init__.py +0 -0
- pygeai/tests/integration/lab/agents/__init__.py +0 -0
- pygeai/tests/integration/lab/agents/test_agents_list.py +106 -0
- pygeai/tests/integration/lab/agents/test_create_agent.py +319 -0
- pygeai/tests/integration/lab/agents/test_create_sharing_link.py +70 -0
- pygeai/tests/integration/lab/agents/test_delete_agent.py +75 -0
- pygeai/tests/integration/lab/agents/test_get_agent.py +94 -0
- pygeai/tests/integration/lab/agents/test_publish_agent_revision.py +127 -0
- pygeai/tests/integration/lab/agents/test_update_agent.py +250 -0
- pygeai/tests/integration/lab/processes/__init__.py +0 -0
- pygeai/tests/integration/lab/processes/test_create_process.py +345 -0
- pygeai/tests/integration/lab/processes/test_create_task.py +211 -0
- pygeai/tests/integration/lab/processes/test_delete_process.py +111 -0
- pygeai/tests/integration/lab/processes/test_get_process.py +201 -0
- pygeai/tests/integration/lab/processes/test_list_process_instances.py +91 -0
- pygeai/tests/integration/lab/processes/test_list_processes.py +138 -0
- pygeai/tests/integration/lab/processes/test_publish_process_revision.py +232 -0
- pygeai/tests/integration/lab/processes/test_update_process.py +289 -0
- pygeai/tests/integration/lab/reasoning_strategies/__init__.py +0 -0
- pygeai/tests/integration/lab/reasoning_strategies/test_get_reasoning_strategy.py +70 -0
- pygeai/tests/integration/lab/reasoning_strategies/test_list_reasoning_strategies.py +93 -0
- pygeai/tests/integration/lab/reasoning_strategies/test_update_reasoning_strategy.py +149 -0
- pygeai/tests/integration/lab/tools/__init__.py +0 -0
- pygeai/tests/integration/lab/tools/test_create_tool.py +288 -0
- pygeai/tests/integration/lab/tools/test_delete_tool.py +87 -0
- pygeai/tests/integration/lab/tools/test_get_parameter.py +98 -0
- pygeai/tests/integration/lab/tools/test_get_tool.py +91 -0
- pygeai/tests/integration/lab/tools/test_list_tools.py +106 -0
- pygeai/tests/integration/lab/tools/test_publish_tool_revision.py +119 -0
- pygeai/tests/integration/lab/tools/test_set_parameter.py +114 -0
- pygeai/tests/integration/lab/tools/test_update_tool.py +267 -0
- pygeai/tests/lab/agents/__init__.py +0 -0
- pygeai/tests/lab/agents/test_clients.py +481 -0
- pygeai/tests/lab/agents/test_mappers.py +440 -0
- pygeai/tests/lab/processes/__init__.py +0 -0
- pygeai/tests/lab/processes/test_clients.py +1416 -0
- pygeai/tests/lab/processes/test_mappers.py +1092 -0
- pygeai/tests/lab/spec/__init__.py +0 -0
- pygeai/tests/lab/spec/test_loader.py +59 -0
- pygeai/tests/lab/spec/test_parsers.py +182 -0
- pygeai/tests/lab/strategies/__init__.py +0 -0
- pygeai/tests/lab/strategies/test_clients.py +241 -0
- pygeai/tests/lab/strategies/test_mappers.py +132 -0
- pygeai/tests/lab/test_managers.py +553 -0
- pygeai/tests/lab/test_models.py +500 -3
- pygeai/tests/lab/tools/__init__.py +0 -0
- pygeai/tests/lab/tools/test_clients.py +521 -0
- pygeai/tests/lab/tools/test_mappers.py +198 -0
- pygeai/tests/migration/__init__.py +0 -0
- pygeai/tests/migration/test_strategies.py +405 -0
- pygeai/tests/migration/test_tools.py +159 -0
- pygeai/tests/organization/limits/test_clients.py +567 -0
- pygeai/tests/organization/limits/test_managers.py +298 -56
- pygeai/tests/organization/test_clients.py +600 -30
- pygeai/tests/organization/test_managers.py +424 -0
- pygeai/tests/organization/test_mappers.py +153 -0
- pygeai/tests/organization/test_responses.py +137 -0
- pygeai/tests/proxy/__init__.py +1 -0
- pygeai/tests/proxy/test_clients.py +397 -0
- pygeai/tests/proxy/test_config.py +171 -0
- pygeai/tests/proxy/test_integration.py +305 -0
- pygeai/tests/proxy/test_managers.py +312 -0
- pygeai/tests/proxy/test_servers.py +387 -0
- pygeai/tests/proxy/test_tool.py +176 -0
- pygeai/tests/snippets/analytics/__init__.py +0 -0
- pygeai/tests/snippets/analytics/get_agent_usage_per_user.py +16 -0
- pygeai/tests/snippets/analytics/get_agents_created_and_modified.py +11 -0
- pygeai/tests/snippets/analytics/get_average_cost_per_request.py +10 -0
- pygeai/tests/snippets/analytics/get_overall_error_rate.py +10 -0
- pygeai/tests/snippets/analytics/get_top_10_agents_by_requests.py +12 -0
- pygeai/tests/snippets/analytics/get_total_active_users.py +10 -0
- pygeai/tests/snippets/analytics/get_total_cost.py +10 -0
- pygeai/tests/snippets/analytics/get_total_requests_per_day.py +12 -0
- pygeai/tests/snippets/analytics/get_total_tokens.py +12 -0
- pygeai/tests/snippets/auth/__init__.py +0 -0
- pygeai/tests/snippets/chat/chat_completion_with_reasoning_effort.py +18 -0
- pygeai/tests/snippets/chat/get_response.py +15 -0
- pygeai/tests/snippets/chat/get_response_complete_example.py +67 -0
- pygeai/tests/snippets/chat/get_response_streaming.py +20 -0
- pygeai/tests/snippets/chat/get_response_with_files.py +16 -0
- pygeai/tests/snippets/chat/get_response_with_instructions.py +19 -0
- pygeai/tests/snippets/chat/get_response_with_metadata.py +24 -0
- pygeai/tests/snippets/chat/get_response_with_parallel_tools.py +58 -0
- pygeai/tests/snippets/chat/get_response_with_reasoning.py +21 -0
- pygeai/tests/snippets/chat/get_response_with_store.py +38 -0
- pygeai/tests/snippets/chat/get_response_with_tools.py +36 -0
- pygeai/tests/snippets/chat/get_response_with_truncation.py +24 -0
- pygeai/tests/snippets/dbg/__init__.py +0 -0
- pygeai/tests/snippets/dbg/basic_debugging.py +32 -0
- pygeai/tests/snippets/dbg/breakpoint_management.py +48 -0
- pygeai/tests/snippets/dbg/file_debugging.py +72 -0
- pygeai/tests/snippets/dbg/module_debugging.py +61 -0
- pygeai/tests/snippets/dbg/stack_navigation.py +45 -0
- pygeai/tests/snippets/dbg/stepping_example.py +40 -0
- pygeai/tests/snippets/embeddings/cache_example.py +31 -0
- pygeai/tests/snippets/embeddings/cohere_example.py +41 -0
- pygeai/tests/snippets/embeddings/openai_base64_example.py +27 -0
- pygeai/tests/snippets/embeddings/openai_example.py +30 -0
- pygeai/tests/snippets/embeddings/similarity_example.py +42 -0
- pygeai/tests/snippets/evaluation/dataset/__init__.py +0 -0
- pygeai/tests/snippets/evaluation/dataset/complete_workflow_example.py +195 -0
- pygeai/tests/snippets/evaluation/dataset/create_dataset.py +26 -0
- pygeai/tests/snippets/evaluation/dataset/create_dataset_from_file.py +11 -0
- pygeai/tests/snippets/evaluation/dataset/create_dataset_row.py +17 -0
- pygeai/tests/snippets/evaluation/dataset/create_expected_source.py +18 -0
- pygeai/tests/snippets/evaluation/dataset/create_filter_variable.py +19 -0
- pygeai/tests/snippets/evaluation/dataset/delete_dataset.py +9 -0
- pygeai/tests/snippets/evaluation/dataset/delete_dataset_row.py +10 -0
- pygeai/tests/snippets/evaluation/dataset/delete_expected_source.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/delete_filter_variable.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/get_dataset.py +9 -0
- pygeai/tests/snippets/evaluation/dataset/get_dataset_row.py +10 -0
- pygeai/tests/snippets/evaluation/dataset/get_expected_source.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/get_filter_variable.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/list_dataset_rows.py +9 -0
- pygeai/tests/snippets/evaluation/dataset/list_datasets.py +6 -0
- pygeai/tests/snippets/evaluation/dataset/list_expected_sources.py +10 -0
- pygeai/tests/snippets/evaluation/dataset/list_filter_variables.py +10 -0
- pygeai/tests/snippets/evaluation/dataset/update_dataset.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/update_dataset_row.py +20 -0
- pygeai/tests/snippets/evaluation/dataset/update_expected_source.py +18 -0
- pygeai/tests/snippets/evaluation/dataset/update_filter_variable.py +19 -0
- pygeai/tests/snippets/evaluation/dataset/upload_dataset_rows_file.py +10 -0
- pygeai/tests/snippets/evaluation/plan/__init__.py +0 -0
- pygeai/tests/snippets/evaluation/plan/add_plan_system_metric.py +13 -0
- pygeai/tests/snippets/evaluation/plan/complete_workflow_example.py +136 -0
- pygeai/tests/snippets/evaluation/plan/create_evaluation_plan.py +24 -0
- pygeai/tests/snippets/evaluation/plan/create_rag_evaluation_plan.py +22 -0
- pygeai/tests/snippets/evaluation/plan/delete_evaluation_plan.py +9 -0
- pygeai/tests/snippets/evaluation/plan/delete_plan_system_metric.py +13 -0
- pygeai/tests/snippets/evaluation/plan/execute_evaluation_plan.py +11 -0
- pygeai/tests/snippets/evaluation/plan/get_evaluation_plan.py +9 -0
- pygeai/tests/snippets/evaluation/plan/get_plan_system_metric.py +13 -0
- pygeai/tests/snippets/evaluation/plan/get_system_metric.py +9 -0
- pygeai/tests/snippets/evaluation/plan/list_evaluation_plans.py +7 -0
- pygeai/tests/snippets/evaluation/plan/list_plan_system_metrics.py +9 -0
- pygeai/tests/snippets/evaluation/plan/list_system_metrics.py +7 -0
- pygeai/tests/snippets/evaluation/plan/update_evaluation_plan.py +22 -0
- pygeai/tests/snippets/evaluation/plan/update_plan_system_metric.py +14 -0
- pygeai/tests/snippets/evaluation/result/__init__.py +0 -0
- pygeai/tests/snippets/evaluation/result/complete_workflow_example.py +150 -0
- pygeai/tests/snippets/evaluation/result/get_evaluation_result.py +26 -0
- pygeai/tests/snippets/evaluation/result/list_evaluation_results.py +17 -0
- pygeai/tests/snippets/files/delete_file.py +1 -4
- pygeai/tests/snippets/files/get_file_content.py +2 -4
- pygeai/tests/snippets/files/get_file_data.py +1 -4
- pygeai/tests/snippets/files/get_file_list.py +1 -6
- pygeai/tests/snippets/files/upload_file.py +1 -5
- pygeai/tests/snippets/gam/gam_access_token.py +87 -0
- pygeai/tests/snippets/lab/agentic_flow_example_1.py +25 -23
- pygeai/tests/snippets/lab/agentic_flow_example_4.py +23 -23
- pygeai/tests/snippets/lab/agents/create_agent.py +5 -8
- pygeai/tests/snippets/lab/agents/create_agent_2.py +1 -5
- pygeai/tests/snippets/lab/agents/create_agent_edge_case.py +48 -0
- pygeai/tests/snippets/lab/agents/create_agent_with_permissions.py +39 -0
- pygeai/tests/snippets/lab/agents/create_agent_with_properties.py +46 -0
- pygeai/tests/snippets/lab/agents/create_agent_without_instructions.py +48 -0
- pygeai/tests/snippets/lab/agents/delete_agent.py +1 -5
- pygeai/tests/snippets/lab/agents/get_agent.py +2 -11
- pygeai/tests/snippets/lab/agents/get_agent_with_new_fields.py +62 -0
- pygeai/tests/snippets/lab/agents/get_sharing_link.py +2 -7
- pygeai/tests/snippets/lab/agents/list_agents.py +4 -7
- pygeai/tests/snippets/lab/agents/publish_agent_revision.py +2 -6
- pygeai/tests/snippets/lab/agents/update_agent.py +1 -5
- pygeai/tests/snippets/lab/agents/update_agent_properties.py +50 -0
- pygeai/tests/snippets/lab/assistant_to_agent.py +191 -0
- pygeai/tests/snippets/lab/crud_ui.py +462 -0
- pygeai/tests/snippets/lab/processes/create_process.py +3 -5
- pygeai/tests/snippets/lab/processes/create_task.py +3 -5
- pygeai/tests/snippets/lab/processes/jobs/list_jobs.py +10 -19
- pygeai/tests/snippets/lab/processes/kbs/create_kb.py +2 -5
- pygeai/tests/snippets/lab/processes/kbs/get_kb.py +10 -16
- pygeai/tests/snippets/lab/processes/kbs/list_kbs.py +13 -20
- pygeai/tests/snippets/lab/processes/kbs/try_all.py +5 -7
- pygeai/tests/snippets/lab/processes/list_processes.py +5 -7
- pygeai/tests/snippets/lab/runner_1.py +1 -1
- pygeai/tests/snippets/lab/samples/summarize_files.py +3 -3
- pygeai/tests/snippets/lab/strategies/create_reasoning_strategy.py +2 -5
- pygeai/tests/snippets/lab/strategies/get_reasoning_strategy.py +2 -5
- pygeai/tests/snippets/lab/strategies/list_reasoning_strategies.py +3 -6
- pygeai/tests/snippets/lab/strategies/update_reasoning_strategy.py +2 -5
- pygeai/tests/snippets/lab/tools/create_tool.py +4 -10
- pygeai/tests/snippets/lab/tools/create_tool_edge_case.py +50 -0
- pygeai/tests/snippets/lab/tools/delete_tool.py +2 -6
- pygeai/tests/snippets/lab/tools/get_parameter.py +5 -7
- pygeai/tests/snippets/lab/tools/get_tool.py +5 -7
- pygeai/tests/snippets/lab/tools/list_tools.py +3 -7
- pygeai/tests/snippets/lab/tools/publish_tool_revision.py +3 -5
- pygeai/tests/snippets/lab/tools/set_parameters.py +4 -9
- pygeai/tests/snippets/lab/tools/update_tool.py +4 -8
- pygeai/tests/snippets/lab/use_cases/__init__.py +0 -0
- pygeai/tests/snippets/lab/use_cases/create_cli_expert.py +1640 -0
- pygeai/tests/snippets/lab/use_cases/create_lab_expert.py +4541 -0
- pygeai/tests/snippets/lab/use_cases/create_tool_headless_web_browser.py +133 -0
- pygeai/tests/snippets/lab/use_cases/create_web_designer.py +189 -0
- pygeai/tests/snippets/lab/use_cases/create_web_reader.py +185 -0
- pygeai/tests/snippets/lab/{file_summarizer_example.py → use_cases/file_summarizer_example.py} +3 -3
- pygeai/tests/snippets/lab/{file_summarizer_example_2.py → use_cases/file_summarizer_example_2.py} +12 -12
- pygeai/tests/snippets/lab/use_cases/update_cli_expert.py +1773 -0
- pygeai/tests/snippets/lab/use_cases/update_lab_expert.py +4541 -0
- pygeai/tests/snippets/lab/use_cases/update_web_designer.py +188 -0
- pygeai/tests/snippets/lab/use_cases/update_web_reader.py +195 -0
- pygeai/tests/snippets/lab/use_cases/update_web_reader_with_tool.py +210 -0
- pygeai/tests/snippets/migrate/__init__.py +45 -0
- pygeai/tests/snippets/migrate/agent_migration.py +110 -0
- pygeai/tests/snippets/migrate/assistant_migration.py +64 -0
- pygeai/tests/snippets/migrate/orchestrator_examples.py +179 -0
- pygeai/tests/snippets/migrate/process_migration.py +64 -0
- pygeai/tests/snippets/migrate/project_migration.py +42 -0
- pygeai/tests/snippets/migrate/tool_migration.py +64 -0
- pygeai/tests/snippets/organization/add_project_member.py +10 -0
- pygeai/tests/snippets/organization/add_project_member_batch.py +44 -0
- pygeai/tests/snippets/organization/create_project.py +2 -2
- pygeai/tests/snippets/organization/get_memberships.py +12 -0
- pygeai/tests/snippets/organization/get_organization_members.py +6 -0
- pygeai/tests/snippets/organization/get_project_members.py +6 -0
- pygeai/tests/snippets/organization/get_project_memberships.py +12 -0
- pygeai/tests/snippets/organization/get_project_roles.py +6 -0
- pygeai/vendor/a2a/__init__.py +1 -0
- pygeai/vendor/a2a/auth/__init__.py +0 -0
- pygeai/vendor/a2a/auth/user.py +31 -0
- pygeai/vendor/a2a/client/__init__.py +19 -0
- pygeai/vendor/a2a/client/client.py +425 -0
- pygeai/vendor/a2a/client/errors.py +33 -0
- pygeai/vendor/a2a/client/helpers.py +22 -0
- pygeai/vendor/a2a/py.typed +0 -0
- pygeai/vendor/a2a/server/__init__.py +1 -0
- pygeai/vendor/a2a/server/agent_execution/__init__.py +18 -0
- pygeai/vendor/a2a/server/agent_execution/agent_executor.py +44 -0
- pygeai/vendor/a2a/server/agent_execution/context.py +155 -0
- pygeai/vendor/a2a/server/agent_execution/request_context_builder.py +20 -0
- pygeai/vendor/a2a/server/agent_execution/simple_request_context_builder.py +77 -0
- pygeai/vendor/a2a/server/apps/__init__.py +16 -0
- pygeai/vendor/a2a/server/apps/jsonrpc/__init__.py +16 -0
- pygeai/vendor/a2a/server/apps/jsonrpc/fastapi_app.py +88 -0
- pygeai/vendor/a2a/server/apps/jsonrpc/jsonrpc_app.py +426 -0
- pygeai/vendor/a2a/server/apps/jsonrpc/starlette_app.py +123 -0
- pygeai/vendor/a2a/server/context.py +23 -0
- pygeai/vendor/a2a/server/events/__init__.py +21 -0
- pygeai/vendor/a2a/server/events/event_consumer.py +149 -0
- pygeai/vendor/a2a/server/events/event_queue.py +156 -0
- pygeai/vendor/a2a/server/events/in_memory_queue_manager.py +85 -0
- pygeai/vendor/a2a/server/events/queue_manager.py +35 -0
- pygeai/vendor/a2a/server/request_handlers/__init__.py +20 -0
- pygeai/vendor/a2a/server/request_handlers/default_request_handler.py +435 -0
- pygeai/vendor/a2a/server/request_handlers/jsonrpc_handler.py +327 -0
- pygeai/vendor/a2a/server/request_handlers/request_handler.py +161 -0
- pygeai/vendor/a2a/server/request_handlers/response_helpers.py +133 -0
- pygeai/vendor/a2a/server/tasks/__init__.py +20 -0
- pygeai/vendor/a2a/server/tasks/inmemory_push_notifier.py +62 -0
- pygeai/vendor/a2a/server/tasks/inmemory_task_store.py +51 -0
- pygeai/vendor/a2a/server/tasks/push_notifier.py +25 -0
- pygeai/vendor/a2a/server/tasks/result_aggregator.py +151 -0
- pygeai/vendor/a2a/server/tasks/task_manager.py +253 -0
- pygeai/vendor/a2a/server/tasks/task_store.py +22 -0
- pygeai/vendor/a2a/server/tasks/task_updater.py +155 -0
- pygeai/vendor/a2a/types.py +1624 -0
- pygeai/vendor/a2a/utils/__init__.py +40 -0
- pygeai/vendor/a2a/utils/artifact.py +72 -0
- pygeai/vendor/a2a/utils/errors.py +69 -0
- pygeai/vendor/a2a/utils/helpers.py +176 -0
- pygeai/vendor/a2a/utils/message.py +83 -0
- pygeai/vendor/a2a/utils/task.py +57 -0
- pygeai/vendor/a2a/utils/telemetry.py +299 -0
- pygeai-0.6.0b15.dist-info/METADATA +205 -0
- pygeai-0.6.0b15.dist-info/RECORD +799 -0
- {pygeai-0.1.51b3.dist-info → pygeai-0.6.0b15.dist-info}/WHEEL +1 -1
- {pygeai-0.1.51b3.dist-info → pygeai-0.6.0b15.dist-info}/entry_points.txt +2 -1
- {pygeai-0.1.51b3.dist-info → pygeai-0.6.0b15.dist-info}/licenses/LICENSE +13 -1
- pygeai-0.6.0b15.dist-info/top_level.txt +1 -0
- docs/geai-proxy/README.md +0 -145
- docs/source/conf.py +0 -45
- pygeai/tests/core/test_managers.py +0 -233
- pygeai-0.1.51b3.dist-info/METADATA +0 -130
- pygeai-0.1.51b3.dist-info/RECORD +0 -324
- pygeai-0.1.51b3.dist-info/top_level.txt +0 -3
- scripts/bump_beta_version.py +0 -56
- {scripts → pygeai/analytics}/__init__.py +0 -0
- /pygeai/tests/snippets/lab/{c_code_fixer_agent_flow.py → use_cases/c_code_fixer_agent_flow.py} +0 -0
|
@@ -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,11 +1,13 @@
|
|
|
1
|
-
import json
|
|
2
|
-
from json import JSONDecodeError
|
|
3
1
|
|
|
2
|
+
from pygeai import logger
|
|
4
3
|
from pygeai.assistant.endpoints import GET_ASSISTANT_DATA_V1, CREATE_ASSISTANT_V1, UPDATE_ASSISTANT_V1, BEGIN_CONVERSATION_V1, \
|
|
5
4
|
SEND_TEXT_PROMPT_V1, SEND_CHAT_REQUEST_V1, GET_REQUEST_STATUS_V1, CANCEL_REQUEST_V1
|
|
6
5
|
from pygeai.assistant.data_analyst.endpoints import GET_DATA_ANALYST_STATUS_V1, EXTEND_DATA_ANALYST_DATASET_V1
|
|
7
6
|
from pygeai.core.base.clients import BaseClient
|
|
8
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
|
|
9
11
|
|
|
10
12
|
|
|
11
13
|
class AssistantClient(BaseClient):
|
|
@@ -29,12 +31,8 @@ class AssistantClient(BaseClient):
|
|
|
29
31
|
"detail": detail
|
|
30
32
|
}
|
|
31
33
|
)
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
except JSONDecodeError as e:
|
|
35
|
-
result = response.text
|
|
36
|
-
|
|
37
|
-
return result
|
|
34
|
+
validate_status_code(response)
|
|
35
|
+
return parse_json_response(response, "get assistant data for ID", assistant_id=assistant_id)
|
|
38
36
|
|
|
39
37
|
def create_assistant(
|
|
40
38
|
self,
|
|
@@ -86,12 +84,8 @@ class AssistantClient(BaseClient):
|
|
|
86
84
|
endpoint=CREATE_ASSISTANT_V1,
|
|
87
85
|
data=data
|
|
88
86
|
)
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
except JSONDecodeError as e:
|
|
92
|
-
result = response.text
|
|
93
|
-
|
|
94
|
-
return result
|
|
87
|
+
validate_status_code(response)
|
|
88
|
+
return parse_json_response(response, "create assistant with name", name=name)
|
|
95
89
|
|
|
96
90
|
def update_assistant(
|
|
97
91
|
self,
|
|
@@ -163,12 +157,8 @@ class AssistantClient(BaseClient):
|
|
|
163
157
|
endpoint=endpoint,
|
|
164
158
|
data=data
|
|
165
159
|
)
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
except JSONDecodeError as e:
|
|
169
|
-
result = response.text
|
|
170
|
-
|
|
171
|
-
return result
|
|
160
|
+
validate_status_code(response)
|
|
161
|
+
return parse_json_response(response, "update assistant", assistant_id=assistant_id)
|
|
172
162
|
|
|
173
163
|
def delete_assistant(
|
|
174
164
|
self,
|
|
@@ -184,14 +174,9 @@ class AssistantClient(BaseClient):
|
|
|
184
174
|
response = self.api_service.delete(
|
|
185
175
|
endpoint=endpoint
|
|
186
176
|
)
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
except JSONDecodeError as e:
|
|
190
|
-
result = response.text
|
|
191
|
-
|
|
192
|
-
return result
|
|
177
|
+
validate_status_code(response)
|
|
178
|
+
return parse_json_response(response, "delete assistant", assistant_id=assistant_id)
|
|
193
179
|
|
|
194
|
-
@handler_server_error
|
|
195
180
|
def send_chat_request(
|
|
196
181
|
self,
|
|
197
182
|
assistant_name: str,
|
|
@@ -222,12 +207,8 @@ class AssistantClient(BaseClient):
|
|
|
222
207
|
endpoint=SEND_CHAT_REQUEST_V1,
|
|
223
208
|
data=data
|
|
224
209
|
)
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
except JSONDecodeError as e:
|
|
228
|
-
result = response.text
|
|
229
|
-
|
|
230
|
-
return result
|
|
210
|
+
validate_status_code(response)
|
|
211
|
+
return parse_json_response(response, "send chat request to assistant", assistant_name=assistant_name)
|
|
231
212
|
|
|
232
213
|
def get_request_status(
|
|
233
214
|
self,
|
|
@@ -243,12 +224,8 @@ class AssistantClient(BaseClient):
|
|
|
243
224
|
response = self.api_service.get(
|
|
244
225
|
endpoint=endpoint
|
|
245
226
|
)
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
except JSONDecodeError as e:
|
|
249
|
-
result = response.text
|
|
250
|
-
|
|
251
|
-
return result
|
|
227
|
+
validate_status_code(response)
|
|
228
|
+
return parse_json_response(response, "get request status for ID", request_id=request_id)
|
|
252
229
|
|
|
253
230
|
def cancel_request(
|
|
254
231
|
self,
|
|
@@ -267,12 +244,8 @@ class AssistantClient(BaseClient):
|
|
|
267
244
|
"requestId": request_id
|
|
268
245
|
}
|
|
269
246
|
)
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
except JSONDecodeError as e:
|
|
273
|
-
result = response.text
|
|
274
|
-
|
|
275
|
-
return result
|
|
247
|
+
validate_status_code(response)
|
|
248
|
+
return parse_json_response(response, "cancel request", request_id=request_id)
|
|
276
249
|
|
|
277
250
|
|
|
278
251
|
|
pygeai/assistant/data/clients.py
CHANGED
|
@@ -6,6 +6,7 @@ from pygeai.assistant.endpoints import GET_ASSISTANT_DATA_V1, CREATE_ASSISTANT_V
|
|
|
6
6
|
from pygeai.assistant.data_analyst.endpoints import GET_DATA_ANALYST_STATUS_V1, EXTEND_DATA_ANALYST_DATASET_V1
|
|
7
7
|
from pygeai.core.base.clients import BaseClient
|
|
8
8
|
from pygeai.core.common.decorators import handler_server_error
|
|
9
|
+
from pygeai.core.utils.validators import validate_status_code
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
class ChatWithDataAssistantClient(AssistantClient):
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
from json import JSONDecodeError
|
|
2
1
|
from pathlib import Path
|
|
3
2
|
|
|
3
|
+
from pygeai import logger
|
|
4
4
|
from pygeai.assistant.clients import AssistantClient
|
|
5
5
|
from pygeai.assistant.data_analyst.endpoints import GET_DATA_ANALYST_STATUS_V1, EXTEND_DATA_ANALYST_DATASET_V1
|
|
6
|
+
from pygeai.core.common.exceptions import InvalidAPIResponseException
|
|
7
|
+
from pygeai.core.utils.validators import validate_status_code
|
|
8
|
+
from pygeai.core.utils.parsers import parse_json_response
|
|
6
9
|
|
|
7
10
|
|
|
8
11
|
class DataAnalystAssistantClient(AssistantClient):
|
|
@@ -32,12 +35,8 @@ class DataAnalystAssistantClient(AssistantClient):
|
|
|
32
35
|
headers=headers
|
|
33
36
|
)
|
|
34
37
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
except JSONDecodeError:
|
|
38
|
-
result = {"error": "Failed to parse JSON response", "response_text": response.text}
|
|
39
|
-
|
|
40
|
-
return result
|
|
38
|
+
validate_status_code(response)
|
|
39
|
+
return parse_json_response(response, "get status for assistant ID", assistant_id=assistant_id)
|
|
41
40
|
|
|
42
41
|
def extend_dataset(
|
|
43
42
|
self,
|
|
@@ -67,11 +66,8 @@ class DataAnalystAssistantClient(AssistantClient):
|
|
|
67
66
|
endpoint=endpoint,
|
|
68
67
|
files=files
|
|
69
68
|
)
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
except JSONDecodeError as e:
|
|
73
|
-
result = response.text
|
|
74
|
-
return result
|
|
69
|
+
validate_status_code(response)
|
|
70
|
+
return parse_json_response(response, "extend dataset for assistant ID", assistant_id=assistant_id)
|
|
75
71
|
finally:
|
|
76
72
|
for _, file_handle in files:
|
|
77
73
|
file_handle.close()
|