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,754 @@
|
|
|
1
|
+
Chat
|
|
2
|
+
====
|
|
3
|
+
|
|
4
|
+
Chat Completion
|
|
5
|
+
~~~~~~~~~~~~~~~
|
|
6
|
+
|
|
7
|
+
The GEAI SDK provides functionality to interact with the Globant Enterprise AI chat system, allowing users to generate chat completions using specified models and parameters. This can be achieved through the command line interface, the low-level service layer (ChatClient), or the high-level service layer (ChatManager). The `stream` parameter, which enables streaming responses, is supported in the command line and low-level service layer but not in the high-level service layer.
|
|
8
|
+
|
|
9
|
+
Command Line
|
|
10
|
+
^^^^^^^^^^^^
|
|
11
|
+
|
|
12
|
+
The `geai chat completion` command generates a chat completion based on the provided model and messages. Various flags allow customization of the response, such as streaming, temperature, and maximum tokens.
|
|
13
|
+
|
|
14
|
+
.. code-block:: shell
|
|
15
|
+
|
|
16
|
+
geai chat completion \
|
|
17
|
+
--model "saia:assistant:Welcome data Assistant 3" \
|
|
18
|
+
--messages '[{"role": "user", "content": "Hi, welcome to Globant Enterprise AI!!"}]' \
|
|
19
|
+
--temperature 0.7 \
|
|
20
|
+
--max-tokens 1000 \
|
|
21
|
+
--stream 1
|
|
22
|
+
|
|
23
|
+
To use a different API key alias for authentication:
|
|
24
|
+
|
|
25
|
+
.. code-block:: shell
|
|
26
|
+
|
|
27
|
+
geai --alias admin chat completion \
|
|
28
|
+
--model "saia:assistant:Welcome data Assistant 3" \
|
|
29
|
+
--messages '[{"role": "user", "content": "What is Globant Enterprise AI?"}]' \
|
|
30
|
+
--temperature 0.5 \
|
|
31
|
+
--max-tokens 500
|
|
32
|
+
|
|
33
|
+
For a non-streaming response with additional parameters like frequency and presence penalties:
|
|
34
|
+
|
|
35
|
+
.. code-block:: shell
|
|
36
|
+
|
|
37
|
+
geai chat completion \
|
|
38
|
+
--model "saia:assistant:Welcome data Assistant 3" \
|
|
39
|
+
--messages '[{"role": "user", "content": "Can you explain AI solutions offered by Globant?"}]' \
|
|
40
|
+
--temperature 0.6 \
|
|
41
|
+
--max-tokens 800 \
|
|
42
|
+
--frequency-penalty 0.1 \
|
|
43
|
+
--presence-penalty 0.2 \
|
|
44
|
+
--stream 0
|
|
45
|
+
|
|
46
|
+
Using tools and tool choice to fetch weather data:
|
|
47
|
+
|
|
48
|
+
.. code-block:: shell
|
|
49
|
+
|
|
50
|
+
geai chat completion \
|
|
51
|
+
--model "saia:assistant:Welcome data Assistant 3" \
|
|
52
|
+
--messages '[{"role": "user", "content": "Please get the current weather for San Francisco."}]' \
|
|
53
|
+
--temperature 0.6 \
|
|
54
|
+
--max-tokens 800 \
|
|
55
|
+
--tools '[{"name": "get_weather", "description": "Fetches the current weather for a given location", "parameters": {"type": "object", "properties": {"location": {"type": "string", "description": "City name"}}, "required": ["location"]}, "strict": true}]' \
|
|
56
|
+
--tool-choice '{"type": "function", "function": {"name": "get_weather"}}' \
|
|
57
|
+
--stream 1
|
|
58
|
+
|
|
59
|
+
Low Level Service Layer
|
|
60
|
+
^^^^^^^^^^^^^^^^^^^^^^^
|
|
61
|
+
|
|
62
|
+
The `ChatClient` class provides a low-level interface to generate chat completions. It supports both streaming and non-streaming responses and allows fine-grained control over parameters.
|
|
63
|
+
|
|
64
|
+
.. code-block:: python
|
|
65
|
+
|
|
66
|
+
from pygeai.chat.clients import ChatClient
|
|
67
|
+
|
|
68
|
+
client = ChatClient()
|
|
69
|
+
|
|
70
|
+
response = client.chat_completion(
|
|
71
|
+
model="saia:assistant:Welcome data Assistant 3",
|
|
72
|
+
messages=[{"role": "user", "content": "What is Globant Enterprise AI?"}],
|
|
73
|
+
temperature=0.5,
|
|
74
|
+
max_tokens=500,
|
|
75
|
+
stream=False
|
|
76
|
+
)
|
|
77
|
+
print(response)
|
|
78
|
+
|
|
79
|
+
Streaming response with tools:
|
|
80
|
+
|
|
81
|
+
.. code-block:: python
|
|
82
|
+
|
|
83
|
+
from pygeai.chat.clients import ChatClient
|
|
84
|
+
|
|
85
|
+
client = ChatClient()
|
|
86
|
+
|
|
87
|
+
llm_settings = {
|
|
88
|
+
"temperature": 0.6,
|
|
89
|
+
"max_tokens": 800,
|
|
90
|
+
"frequency_penalty": 0.1,
|
|
91
|
+
"presence_penalty": 0.2
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
messages = [{"role": "user", "content": "Please get the current weather for San Francisco."}]
|
|
95
|
+
|
|
96
|
+
tools = [
|
|
97
|
+
{
|
|
98
|
+
"name": "get_weather",
|
|
99
|
+
"description": "Fetches the current weather for a given location",
|
|
100
|
+
"parameters": {
|
|
101
|
+
"type": "object",
|
|
102
|
+
"properties": {"location": {"type": "string", "description": "City name"}},
|
|
103
|
+
"required": ["location"]
|
|
104
|
+
},
|
|
105
|
+
"strict": True
|
|
106
|
+
}
|
|
107
|
+
]
|
|
108
|
+
|
|
109
|
+
tool_choice = {"type": "function", "function": {"name": "get_weather"}}
|
|
110
|
+
|
|
111
|
+
response = client.chat_completion(
|
|
112
|
+
model="saia:assistant:Welcome data Assistant 3",
|
|
113
|
+
messages=messages,
|
|
114
|
+
stream=True,
|
|
115
|
+
tools=tools,
|
|
116
|
+
tool_choice=tool_choice,
|
|
117
|
+
**llm_settings
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
for chunk in response:
|
|
121
|
+
print(chunk, end="")
|
|
122
|
+
|
|
123
|
+
Using variables and thread ID:
|
|
124
|
+
|
|
125
|
+
.. code-block:: python
|
|
126
|
+
|
|
127
|
+
from pygeai.chat.clients import ChatClient
|
|
128
|
+
|
|
129
|
+
client = ChatClient()
|
|
130
|
+
|
|
131
|
+
response = client.chat_completion(
|
|
132
|
+
model="saia:assistant:Welcome data Assistant 3",
|
|
133
|
+
messages=[
|
|
134
|
+
{"role": "system", "content": "You are a helpful assistant for Globant Enterprise AI."},
|
|
135
|
+
{"role": "user", "content": "What AI solutions does Globant offer?"}
|
|
136
|
+
],
|
|
137
|
+
temperature=0.8,
|
|
138
|
+
max_tokens=2000,
|
|
139
|
+
presence_penalty=0.1,
|
|
140
|
+
thread_id="thread_123e4567-e89b-12d3-a456-426614174000",
|
|
141
|
+
variables=[{"key": "user_region", "value": "North America"}, {"key": "industry", "value": "Technology"}],
|
|
142
|
+
stream=False
|
|
143
|
+
)
|
|
144
|
+
print(response)
|
|
145
|
+
|
|
146
|
+
High Level Service Layer
|
|
147
|
+
^^^^^^^^^^^^^^^^^^^^^^^^
|
|
148
|
+
|
|
149
|
+
The `ChatManager` class provides a high-level interface for generating chat completions. It does not support streaming responses but simplifies the process by using structured models like `ChatMessageList` and `LlmSettings`.
|
|
150
|
+
|
|
151
|
+
.. code-block:: python
|
|
152
|
+
|
|
153
|
+
from pygeai.chat.managers import ChatManager
|
|
154
|
+
from pygeai.core.models import LlmSettings, ChatMessageList, ChatMessage
|
|
155
|
+
|
|
156
|
+
manager = ChatManager()
|
|
157
|
+
|
|
158
|
+
llm_settings = LlmSettings(
|
|
159
|
+
temperature=0.5,
|
|
160
|
+
max_tokens=500,
|
|
161
|
+
frequency_penalty=0.2
|
|
162
|
+
)
|
|
163
|
+
|
|
164
|
+
messages = ChatMessageList(
|
|
165
|
+
messages=[ChatMessage(role="user", content="Can you explain what Globant Enterprise AI does?")]
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
response = manager.chat_completion(
|
|
169
|
+
model="saia:assistant:Welcome data Assistant 3",
|
|
170
|
+
messages=messages,
|
|
171
|
+
llm_settings=llm_settings
|
|
172
|
+
)
|
|
173
|
+
print(response)
|
|
174
|
+
|
|
175
|
+
Using tools to check weather and send an email:
|
|
176
|
+
|
|
177
|
+
.. code-block:: python
|
|
178
|
+
|
|
179
|
+
from pygeai.chat.managers import ChatManager
|
|
180
|
+
from pygeai.core.models import LlmSettings, ChatMessageList, ChatMessage, ChatTool, ChatToolList
|
|
181
|
+
|
|
182
|
+
manager = ChatManager()
|
|
183
|
+
|
|
184
|
+
llm_settings = LlmSettings(
|
|
185
|
+
temperature=0.7,
|
|
186
|
+
max_tokens=1000,
|
|
187
|
+
frequency_penalty=0.3,
|
|
188
|
+
presence_penalty=0.2
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
messages = ChatMessageList(
|
|
192
|
+
messages=[ChatMessage(role="user", content="Can you check the weather for New York and send an email summary?")]
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
tools = ChatToolList(
|
|
196
|
+
variables=[
|
|
197
|
+
ChatTool(
|
|
198
|
+
name="get_weather",
|
|
199
|
+
description="Fetches the current weather for a given location",
|
|
200
|
+
parameters={
|
|
201
|
+
"type": "object",
|
|
202
|
+
"properties": {"location": {"type": "string", "description": "City name"}},
|
|
203
|
+
"required": ["location"]
|
|
204
|
+
},
|
|
205
|
+
strict=True
|
|
206
|
+
),
|
|
207
|
+
ChatTool(
|
|
208
|
+
name="send_email",
|
|
209
|
+
description="Sends an email to a recipient with a subject and body",
|
|
210
|
+
parameters={
|
|
211
|
+
"type": "object",
|
|
212
|
+
"properties": {
|
|
213
|
+
"recipient": {"type": "string", "description": "Email address"},
|
|
214
|
+
"subject": {"type": "string", "description": "Email subject"},
|
|
215
|
+
"body": {"type": "string", "description": "Email content"}
|
|
216
|
+
},
|
|
217
|
+
"required": ["recipient", "subject", "body"]
|
|
218
|
+
},
|
|
219
|
+
strict=False
|
|
220
|
+
)
|
|
221
|
+
]
|
|
222
|
+
)
|
|
223
|
+
|
|
224
|
+
response = manager.chat_completion(
|
|
225
|
+
model="saia:assistant:Welcome data Assistant 3",
|
|
226
|
+
messages=messages,
|
|
227
|
+
llm_settings=llm_settings,
|
|
228
|
+
tools=tools
|
|
229
|
+
)
|
|
230
|
+
print(response)
|
|
231
|
+
|
|
232
|
+
With variables and thread ID:
|
|
233
|
+
|
|
234
|
+
.. code-block:: python
|
|
235
|
+
|
|
236
|
+
from pygeai.chat.managers import ChatManager
|
|
237
|
+
from pygeai.core.models import LlmSettings, ChatMessageList, ChatMessage, ChatVariable, ChatVariableList
|
|
238
|
+
|
|
239
|
+
manager = ChatManager()
|
|
240
|
+
|
|
241
|
+
llm_settings = LlmSettings(
|
|
242
|
+
temperature=0.8,
|
|
243
|
+
max_tokens=2000,
|
|
244
|
+
presence_penalty=0.1
|
|
245
|
+
)
|
|
246
|
+
|
|
247
|
+
messages = ChatMessageList(
|
|
248
|
+
messages=[
|
|
249
|
+
ChatMessage(role="system", content="You are a helpful assistant for Globant Enterprise AI."),
|
|
250
|
+
ChatMessage(role="user", content="What AI solutions does Globant offer?")
|
|
251
|
+
]
|
|
252
|
+
)
|
|
253
|
+
|
|
254
|
+
variables = ChatVariableList(
|
|
255
|
+
variables=[
|
|
256
|
+
ChatVariable(key="user_region", value="North America"),
|
|
257
|
+
ChatVariable(key="industry", value="Technology")
|
|
258
|
+
]
|
|
259
|
+
)
|
|
260
|
+
|
|
261
|
+
response = manager.chat_completion(
|
|
262
|
+
model="saia:assistant:Welcome data Assistant 3",
|
|
263
|
+
messages=messages,
|
|
264
|
+
llm_settings=llm_settings,
|
|
265
|
+
thread_id="thread_123e4567-e89b-12d3-a456-426614174000",
|
|
266
|
+
variables=variables
|
|
267
|
+
)
|
|
268
|
+
print(response)
|
|
269
|
+
|
|
270
|
+
With tool choice:
|
|
271
|
+
|
|
272
|
+
.. code-block:: python
|
|
273
|
+
|
|
274
|
+
from pygeai.chat.managers import ChatManager
|
|
275
|
+
from pygeai.core.models import LlmSettings, ChatMessageList, ChatMessage, ChatTool, ChatToolList, ToolChoice, ToolChoiceObject, ToolChoiceFunction
|
|
276
|
+
|
|
277
|
+
manager = ChatManager()
|
|
278
|
+
|
|
279
|
+
llm_settings = LlmSettings(
|
|
280
|
+
temperature=0.6,
|
|
281
|
+
max_tokens=800,
|
|
282
|
+
frequency_penalty=0.1,
|
|
283
|
+
presence_penalty=0.2
|
|
284
|
+
)
|
|
285
|
+
|
|
286
|
+
messages = ChatMessageList(
|
|
287
|
+
messages=[ChatMessage(role="user", content="Please get the current weather for San Francisco.")]
|
|
288
|
+
)
|
|
289
|
+
|
|
290
|
+
tools = ChatToolList(
|
|
291
|
+
variables=[
|
|
292
|
+
ChatTool(
|
|
293
|
+
name="get_weather",
|
|
294
|
+
description="Fetches the current weather for a given location",
|
|
295
|
+
parameters={
|
|
296
|
+
"type": "object",
|
|
297
|
+
"properties": {"location": {"type": "string", "description": "City name"}},
|
|
298
|
+
"required": ["location"]
|
|
299
|
+
},
|
|
300
|
+
strict=True
|
|
301
|
+
),
|
|
302
|
+
ChatTool(
|
|
303
|
+
name="send_notification",
|
|
304
|
+
description="Sends a notification with a message",
|
|
305
|
+
parameters={
|
|
306
|
+
"type": "object",
|
|
307
|
+
"properties": {"message": {"type": "string", "description": "Notification content"}},
|
|
308
|
+
"required": ["message"]
|
|
309
|
+
},
|
|
310
|
+
strict=False
|
|
311
|
+
)
|
|
312
|
+
]
|
|
313
|
+
)
|
|
314
|
+
|
|
315
|
+
tool_choice = ToolChoice(
|
|
316
|
+
value=ToolChoiceObject(
|
|
317
|
+
function=ToolChoiceFunction(name="get_weather")
|
|
318
|
+
)
|
|
319
|
+
)
|
|
320
|
+
|
|
321
|
+
response = manager.chat_completion(
|
|
322
|
+
model="saia:assistant:Welcome data Assistant 3",
|
|
323
|
+
messages=messages,
|
|
324
|
+
llm_settings=llm_settings,
|
|
325
|
+
tool_choice=tool_choice,
|
|
326
|
+
tools=tools
|
|
327
|
+
)
|
|
328
|
+
print(response)
|
|
329
|
+
|
|
330
|
+
Image Generation
|
|
331
|
+
~~~~~~~~~~~~~~~~
|
|
332
|
+
|
|
333
|
+
The GEAI SDK provides functionality to generate images using AI models. This can be achieved through the command line interface or the low-level service layer (ChatClient).
|
|
334
|
+
|
|
335
|
+
Command Line
|
|
336
|
+
^^^^^^^^^^^^
|
|
337
|
+
|
|
338
|
+
The `geai chat generate-image` command generates images based on the provided model and parameters.
|
|
339
|
+
|
|
340
|
+
.. code-block:: shell
|
|
341
|
+
|
|
342
|
+
geai chat generate-image \
|
|
343
|
+
--model "openai/dall-e-3" \
|
|
344
|
+
--prompt "A futuristic city with flying cars at sunset" \
|
|
345
|
+
--n 1 \
|
|
346
|
+
--quality "hd" \
|
|
347
|
+
--size "1024x1024" \
|
|
348
|
+
--aspect-ratio "1:1"
|
|
349
|
+
|
|
350
|
+
Generate multiple images with different aspect ratio:
|
|
351
|
+
|
|
352
|
+
.. code-block:: shell
|
|
353
|
+
|
|
354
|
+
geai chat generate-image \
|
|
355
|
+
--model "openai/dall-e-3" \
|
|
356
|
+
--prompt "A serene mountain landscape with a lake" \
|
|
357
|
+
--n 2 \
|
|
358
|
+
--quality "standard" \
|
|
359
|
+
--size "1792x1024" \
|
|
360
|
+
--aspect-ratio "16:9"
|
|
361
|
+
|
|
362
|
+
Low Level Service Layer
|
|
363
|
+
^^^^^^^^^^^^^^^^^^^^^^^
|
|
364
|
+
|
|
365
|
+
The `ChatClient.generate_image` method provides a low-level interface to generate images.
|
|
366
|
+
|
|
367
|
+
.. code-block:: python
|
|
368
|
+
|
|
369
|
+
from pygeai.chat.clients import ChatClient
|
|
370
|
+
|
|
371
|
+
client = ChatClient()
|
|
372
|
+
|
|
373
|
+
response = client.generate_image(
|
|
374
|
+
model="openai/dall-e-3",
|
|
375
|
+
prompt="A futuristic city with flying cars at sunset",
|
|
376
|
+
n=1,
|
|
377
|
+
quality="hd",
|
|
378
|
+
size="1024x1024",
|
|
379
|
+
aspect_ratio="1:1"
|
|
380
|
+
)
|
|
381
|
+
print(response)
|
|
382
|
+
|
|
383
|
+
Generate images without aspect ratio specification:
|
|
384
|
+
|
|
385
|
+
.. code-block:: python
|
|
386
|
+
|
|
387
|
+
from pygeai.chat.clients import ChatClient
|
|
388
|
+
|
|
389
|
+
client = ChatClient()
|
|
390
|
+
|
|
391
|
+
response = client.generate_image(
|
|
392
|
+
model="openai/dall-e-3",
|
|
393
|
+
prompt="An abstract painting with vibrant colors",
|
|
394
|
+
n=1,
|
|
395
|
+
quality="standard",
|
|
396
|
+
size="1024x1024"
|
|
397
|
+
)
|
|
398
|
+
print(response)
|
|
399
|
+
|
|
400
|
+
Image Editing
|
|
401
|
+
~~~~~~~~~~~~~
|
|
402
|
+
|
|
403
|
+
The GEAI SDK provides functionality to edit existing images using AI models. This can be achieved through the command line interface or the low-level service layer (ChatClient).
|
|
404
|
+
|
|
405
|
+
Command Line
|
|
406
|
+
^^^^^^^^^^^^
|
|
407
|
+
|
|
408
|
+
The `geai chat edit-image` command edits an existing image based on the provided instructions.
|
|
409
|
+
|
|
410
|
+
.. code-block:: shell
|
|
411
|
+
|
|
412
|
+
geai chat edit-image \
|
|
413
|
+
--model "openai/dall-e-2" \
|
|
414
|
+
--prompt "Remove the ball from the image" \
|
|
415
|
+
--image "https://example.com/image.jpg" \
|
|
416
|
+
--size "1024x1024" \
|
|
417
|
+
--n 1 \
|
|
418
|
+
--quality "high"
|
|
419
|
+
|
|
420
|
+
Edit with multiple variations:
|
|
421
|
+
|
|
422
|
+
.. code-block:: shell
|
|
423
|
+
|
|
424
|
+
geai chat edit-image \
|
|
425
|
+
--model "openai/dall-e-2" \
|
|
426
|
+
--prompt "Change the background to a beach scene" \
|
|
427
|
+
--image "https://example.com/photo.jpg" \
|
|
428
|
+
--size "512x512" \
|
|
429
|
+
--n 3 \
|
|
430
|
+
--quality "standard"
|
|
431
|
+
|
|
432
|
+
Low Level Service Layer
|
|
433
|
+
^^^^^^^^^^^^^^^^^^^^^^^
|
|
434
|
+
|
|
435
|
+
The `ChatClient.edit_image` method provides a low-level interface to edit images.
|
|
436
|
+
|
|
437
|
+
.. code-block:: python
|
|
438
|
+
|
|
439
|
+
from pygeai.chat.clients import ChatClient
|
|
440
|
+
|
|
441
|
+
client = ChatClient()
|
|
442
|
+
|
|
443
|
+
response = client.edit_image(
|
|
444
|
+
model="openai/dall-e-2",
|
|
445
|
+
prompt="Remove the ball from the image",
|
|
446
|
+
image="https://example.com/image.jpg",
|
|
447
|
+
size="1024x1024",
|
|
448
|
+
n=1,
|
|
449
|
+
quality="high"
|
|
450
|
+
)
|
|
451
|
+
print(response)
|
|
452
|
+
|
|
453
|
+
Edit with default parameters:
|
|
454
|
+
|
|
455
|
+
.. code-block:: python
|
|
456
|
+
|
|
457
|
+
from pygeai.chat.clients import ChatClient
|
|
458
|
+
|
|
459
|
+
client = ChatClient()
|
|
460
|
+
|
|
461
|
+
response = client.edit_image(
|
|
462
|
+
model="openai/dall-e-2",
|
|
463
|
+
prompt="Add a rainbow to the sky",
|
|
464
|
+
image="https://example.com/landscape.jpg",
|
|
465
|
+
size="512x512"
|
|
466
|
+
)
|
|
467
|
+
print(response)
|
|
468
|
+
|
|
469
|
+
Responses API
|
|
470
|
+
~~~~~~~~~~~~~
|
|
471
|
+
|
|
472
|
+
The GEAI SDK provides a Responses API that supports processing images and PDF files alongside text input. This API is particularly useful for multi-modal applications that need to analyze documents or images.
|
|
473
|
+
|
|
474
|
+
Command Line
|
|
475
|
+
^^^^^^^^^^^^
|
|
476
|
+
|
|
477
|
+
The `geai chat response` command generates a response using the Responses API with support for file uploads.
|
|
478
|
+
|
|
479
|
+
.. code-block:: shell
|
|
480
|
+
|
|
481
|
+
geai chat response \
|
|
482
|
+
--model "openai/gpt-4o" \
|
|
483
|
+
--input "What do you see in this image?" \
|
|
484
|
+
--files '["image.jpg"]' \
|
|
485
|
+
--temperature 0.7 \
|
|
486
|
+
--max-output-tokens 1000
|
|
487
|
+
|
|
488
|
+
Process multiple files with tools:
|
|
489
|
+
|
|
490
|
+
.. code-block:: shell
|
|
491
|
+
|
|
492
|
+
geai chat response \
|
|
493
|
+
--model "openai/gpt-4o" \
|
|
494
|
+
--input "Analyze these documents and extract key information" \
|
|
495
|
+
--files '["doc1.pdf", "doc2.pdf", "chart.jpg"]' \
|
|
496
|
+
--tools '[{"name": "extract_data", "description": "Extracts structured data", "parameters": {"type": "object"}}]' \
|
|
497
|
+
--tool-choice "auto" \
|
|
498
|
+
--temperature 0.5 \
|
|
499
|
+
--max-output-tokens 2000 \
|
|
500
|
+
--stream 1
|
|
501
|
+
|
|
502
|
+
With reasoning and metadata:
|
|
503
|
+
|
|
504
|
+
.. code-block:: shell
|
|
505
|
+
|
|
506
|
+
geai chat response \
|
|
507
|
+
--model "openai/o1-pro" \
|
|
508
|
+
--input "Solve this mathematical problem shown in the image" \
|
|
509
|
+
--files '["math_problem.jpg"]' \
|
|
510
|
+
--instructions "Show your work step by step" \
|
|
511
|
+
--reasoning '{"effort": "high"}' \
|
|
512
|
+
--metadata '{"task": "math_solving", "user_id": "123"}' \
|
|
513
|
+
--temperature 1.0
|
|
514
|
+
|
|
515
|
+
Low Level Service Layer
|
|
516
|
+
^^^^^^^^^^^^^^^^^^^^^^^
|
|
517
|
+
|
|
518
|
+
The `ChatClient.get_response` method provides a low-level interface for the Responses API.
|
|
519
|
+
|
|
520
|
+
.. code-block:: python
|
|
521
|
+
|
|
522
|
+
from pygeai.chat.clients import ChatClient
|
|
523
|
+
|
|
524
|
+
client = ChatClient()
|
|
525
|
+
|
|
526
|
+
response = client.get_response(
|
|
527
|
+
model="openai/gpt-4o",
|
|
528
|
+
input="What do you see in this image?",
|
|
529
|
+
files=["image.jpg"],
|
|
530
|
+
temperature=0.7,
|
|
531
|
+
max_output_tokens=1000
|
|
532
|
+
)
|
|
533
|
+
print(response)
|
|
534
|
+
|
|
535
|
+
Streaming response with files:
|
|
536
|
+
|
|
537
|
+
.. code-block:: python
|
|
538
|
+
|
|
539
|
+
from pygeai.chat.clients import ChatClient
|
|
540
|
+
|
|
541
|
+
client = ChatClient()
|
|
542
|
+
|
|
543
|
+
response = client.get_response(
|
|
544
|
+
model="openai/gpt-4o",
|
|
545
|
+
input="Describe the content of these images",
|
|
546
|
+
files=["image1.jpg", "image2.jpg"],
|
|
547
|
+
stream=True,
|
|
548
|
+
temperature=0.7
|
|
549
|
+
)
|
|
550
|
+
|
|
551
|
+
for chunk in response:
|
|
552
|
+
print(chunk, end="")
|
|
553
|
+
|
|
554
|
+
With tools and advanced options:
|
|
555
|
+
|
|
556
|
+
.. code-block:: python
|
|
557
|
+
|
|
558
|
+
from pygeai.chat.clients import ChatClient
|
|
559
|
+
|
|
560
|
+
client = ChatClient()
|
|
561
|
+
|
|
562
|
+
tools = [
|
|
563
|
+
{
|
|
564
|
+
"name": "analyze_document",
|
|
565
|
+
"description": "Analyzes document content",
|
|
566
|
+
"parameters": {
|
|
567
|
+
"type": "object",
|
|
568
|
+
"properties": {
|
|
569
|
+
"topic": {"type": "string", "description": "Main topic"}
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
]
|
|
574
|
+
|
|
575
|
+
response = client.get_response(
|
|
576
|
+
model="openai/gpt-4o",
|
|
577
|
+
input="Analyze this PDF and extract key topics",
|
|
578
|
+
files=["document.pdf"],
|
|
579
|
+
tools=tools,
|
|
580
|
+
tool_choice="auto",
|
|
581
|
+
temperature=0.5,
|
|
582
|
+
max_output_tokens=2000,
|
|
583
|
+
parallel_tool_calls=True,
|
|
584
|
+
metadata={"task": "document_analysis"},
|
|
585
|
+
user="user123"
|
|
586
|
+
)
|
|
587
|
+
print(response)
|
|
588
|
+
|
|
589
|
+
With reasoning configuration:
|
|
590
|
+
|
|
591
|
+
.. code-block:: python
|
|
592
|
+
|
|
593
|
+
from pygeai.chat.clients import ChatClient
|
|
594
|
+
|
|
595
|
+
client = ChatClient()
|
|
596
|
+
|
|
597
|
+
response = client.get_response(
|
|
598
|
+
model="openai/o1-pro",
|
|
599
|
+
input="Solve this complex problem from the image",
|
|
600
|
+
files=["problem.jpg"],
|
|
601
|
+
instructions="Think step by step and show your reasoning",
|
|
602
|
+
reasoning={"effort": "medium"},
|
|
603
|
+
temperature=1.0,
|
|
604
|
+
truncation="disabled",
|
|
605
|
+
store=True
|
|
606
|
+
)
|
|
607
|
+
print(response)
|
|
608
|
+
|
|
609
|
+
Interactive Chat with Iris
|
|
610
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
611
|
+
|
|
612
|
+
Iris is an AI assistant that helps guide users through the process of creating agents. The GEAI SDK provides an interactive chat interface for Iris.
|
|
613
|
+
|
|
614
|
+
Command Line
|
|
615
|
+
^^^^^^^^^^^^
|
|
616
|
+
|
|
617
|
+
The `geai chat iris` command starts an interactive chat session with Iris.
|
|
618
|
+
|
|
619
|
+
.. code-block:: shell
|
|
620
|
+
|
|
621
|
+
geai chat iris
|
|
622
|
+
|
|
623
|
+
This opens an interactive prompt where you can ask Iris questions about creating and configuring agents. Type 'exit' or press Ctrl+C to close the chat.
|
|
624
|
+
|
|
625
|
+
Python API
|
|
626
|
+
^^^^^^^^^^
|
|
627
|
+
|
|
628
|
+
The `Iris` class provides a programmatic interface to chat with Iris.
|
|
629
|
+
|
|
630
|
+
.. code-block:: python
|
|
631
|
+
|
|
632
|
+
from pygeai.chat.iris import Iris
|
|
633
|
+
|
|
634
|
+
iris = Iris()
|
|
635
|
+
messages = []
|
|
636
|
+
|
|
637
|
+
user_message = {
|
|
638
|
+
"role": "user",
|
|
639
|
+
"content": "I want to create an agent for customer support"
|
|
640
|
+
}
|
|
641
|
+
messages.append(user_message)
|
|
642
|
+
|
|
643
|
+
result = iris.stream_answer(messages)
|
|
644
|
+
answer = ""
|
|
645
|
+
for chunk in result:
|
|
646
|
+
answer += chunk
|
|
647
|
+
print(chunk, end="")
|
|
648
|
+
|
|
649
|
+
assistant_message = {
|
|
650
|
+
"role": "assistant",
|
|
651
|
+
"content": answer
|
|
652
|
+
}
|
|
653
|
+
messages.append(assistant_message)
|
|
654
|
+
|
|
655
|
+
Interactive Chat with Agents
|
|
656
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
657
|
+
|
|
658
|
+
The GEAI SDK provides functionality to have interactive chat sessions with agents. This includes both command-line and GUI interfaces, as well as session management capabilities.
|
|
659
|
+
|
|
660
|
+
Command Line
|
|
661
|
+
^^^^^^^^^^^^
|
|
662
|
+
|
|
663
|
+
The `geai chat agent` command starts an interactive chat session with a specified agent.
|
|
664
|
+
|
|
665
|
+
Basic usage:
|
|
666
|
+
|
|
667
|
+
.. code-block:: shell
|
|
668
|
+
|
|
669
|
+
geai chat agent --agent-name "my-support-agent"
|
|
670
|
+
|
|
671
|
+
This opens an interactive prompt where you can chat with the agent. Type 'exit' or press Ctrl+C to close the chat.
|
|
672
|
+
|
|
673
|
+
With GUI interface:
|
|
674
|
+
|
|
675
|
+
.. code-block:: shell
|
|
676
|
+
|
|
677
|
+
geai chat agent --agent-name "my-support-agent" --gui
|
|
678
|
+
|
|
679
|
+
This launches a Streamlit-based graphical user interface for chatting with the agent. The GUI provides a more user-friendly experience with a web-based interface.
|
|
680
|
+
|
|
681
|
+
Note: The `--gui` option requires Streamlit to be installed. Install it with `pip install streamlit` if not already available.
|
|
682
|
+
|
|
683
|
+
Save conversation to a file:
|
|
684
|
+
|
|
685
|
+
.. code-block:: shell
|
|
686
|
+
|
|
687
|
+
geai chat agent --agent-name "my-support-agent" --save-session conversation.json
|
|
688
|
+
|
|
689
|
+
This saves the conversation history to `conversation.json` after each message exchange. The session is automatically saved when you exit the chat.
|
|
690
|
+
|
|
691
|
+
Restore a previous conversation:
|
|
692
|
+
|
|
693
|
+
.. code-block:: shell
|
|
694
|
+
|
|
695
|
+
geai chat agent --agent-name "my-support-agent" --restore-session conversation.json
|
|
696
|
+
|
|
697
|
+
This loads a previous conversation from `conversation.json` and continues the chat from where it left off. The conversation history is displayed before you can continue chatting.
|
|
698
|
+
|
|
699
|
+
Combine session save and restore:
|
|
700
|
+
|
|
701
|
+
.. code-block:: shell
|
|
702
|
+
|
|
703
|
+
geai chat agent --agent-name "my-support-agent" --restore-session old_conv.json --save-session new_conv.json
|
|
704
|
+
|
|
705
|
+
This restores the conversation from `old_conv.json` and saves all subsequent messages to `new_conv.json`.
|
|
706
|
+
|
|
707
|
+
Python API
|
|
708
|
+
^^^^^^^^^^
|
|
709
|
+
|
|
710
|
+
The `AgentChatSession` class provides a programmatic interface to chat with agents.
|
|
711
|
+
|
|
712
|
+
.. code-block:: python
|
|
713
|
+
|
|
714
|
+
from pygeai.chat.session import AgentChatSession
|
|
715
|
+
|
|
716
|
+
session = AgentChatSession("my-support-agent")
|
|
717
|
+
messages = []
|
|
718
|
+
|
|
719
|
+
introduction = session.get_answer(
|
|
720
|
+
["You're about to speak to a user. Introduce yourself in a clear and concise manner."]
|
|
721
|
+
)
|
|
722
|
+
print(f"Agent: {introduction}")
|
|
723
|
+
|
|
724
|
+
messages.append({"role": "assistant", "content": introduction})
|
|
725
|
+
|
|
726
|
+
user_message = {
|
|
727
|
+
"role": "user",
|
|
728
|
+
"content": "How can I reset my password?"
|
|
729
|
+
}
|
|
730
|
+
messages.append(user_message)
|
|
731
|
+
|
|
732
|
+
result = session.stream_answer(messages)
|
|
733
|
+
answer = ""
|
|
734
|
+
print("Agent: ", end="")
|
|
735
|
+
for chunk in result:
|
|
736
|
+
answer += chunk
|
|
737
|
+
print(chunk, end="")
|
|
738
|
+
|
|
739
|
+
messages.append({"role": "assistant", "content": answer})
|
|
740
|
+
|
|
741
|
+
Non-streaming chat:
|
|
742
|
+
|
|
743
|
+
.. code-block:: python
|
|
744
|
+
|
|
745
|
+
from pygeai.chat.session import AgentChatSession
|
|
746
|
+
|
|
747
|
+
session = AgentChatSession("my-support-agent")
|
|
748
|
+
|
|
749
|
+
user_messages = [
|
|
750
|
+
{"role": "user", "content": "What are your capabilities?"}
|
|
751
|
+
]
|
|
752
|
+
|
|
753
|
+
answer = session.get_answer(user_messages)
|
|
754
|
+
print(f"Agent: {answer}")
|