pygeai 0.6.0b6__py3-none-any.whl → 0.6.0b10__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pygeai/_docs/source/conf.py +78 -6
- 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/embeddings.rst +31 -1
- 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 +20 -18
- pygeai/_docs/source/content/api_reference/proxy.rst +318 -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 +13 -1
- pygeai/_docs/source/content/debugger.rst +376 -83
- pygeai/_docs/source/content/migration.rst +528 -0
- pygeai/_docs/source/content/modules.rst +1 -1
- pygeai/_docs/source/index.rst +59 -7
- pygeai/_docs/source/pygeai.auth.rst +29 -0
- pygeai/_docs/source/pygeai.cli.commands.rst +16 -0
- pygeai/_docs/source/pygeai.cli.rst +8 -0
- pygeai/_docs/source/pygeai.core.utils.rst +16 -0
- pygeai/_docs/source/pygeai.rst +1 -0
- pygeai/_docs/source/pygeai.tests.auth.rst +21 -0
- pygeai/_docs/source/pygeai.tests.cli.commands.rst +16 -0
- pygeai/_docs/source/pygeai.tests.cli.rst +16 -0
- pygeai/_docs/source/pygeai.tests.core.base.rst +8 -0
- pygeai/_docs/source/pygeai.tests.core.embeddings.rst +16 -0
- pygeai/_docs/source/pygeai.tests.core.files.rst +8 -0
- pygeai/_docs/source/pygeai.tests.core.plugins.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.rst +1 -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.integration.lab.processes.rst +8 -0
- pygeai/_docs/source/pygeai.tests.organization.rst +8 -0
- pygeai/_docs/source/pygeai.tests.rst +2 -0
- pygeai/_docs/source/pygeai.tests.snippets.auth.rst +10 -0
- pygeai/_docs/source/pygeai.tests.snippets.chat.rst +40 -0
- pygeai/_docs/source/pygeai.tests.snippets.dbg.rst +45 -0
- pygeai/_docs/source/pygeai.tests.snippets.embeddings.rst +40 -0
- pygeai/_docs/source/pygeai.tests.snippets.evaluation.dataset.rst +197 -0
- pygeai/_docs/source/pygeai.tests.snippets.evaluation.plan.rst +133 -0
- pygeai/_docs/source/pygeai.tests.snippets.evaluation.result.rst +37 -0
- pygeai/_docs/source/pygeai.tests.snippets.evaluation.rst +10 -0
- pygeai/_docs/source/pygeai.tests.snippets.organization.rst +40 -0
- pygeai/_docs/source/pygeai.tests.snippets.rst +2 -0
- pygeai/admin/clients.py +12 -32
- pygeai/assistant/clients.py +16 -44
- pygeai/assistant/data/clients.py +1 -0
- pygeai/assistant/data_analyst/clients.py +6 -13
- pygeai/assistant/rag/clients.py +24 -67
- pygeai/auth/clients.py +88 -14
- pygeai/auth/endpoints.py +4 -0
- pygeai/chat/clients.py +192 -25
- pygeai/chat/endpoints.py +2 -1
- pygeai/cli/commands/auth.py +178 -2
- pygeai/cli/commands/chat.py +227 -1
- pygeai/cli/commands/embeddings.py +56 -8
- pygeai/cli/commands/lab/ai_lab.py +0 -2
- pygeai/cli/commands/migrate.py +994 -434
- pygeai/cli/commands/organization.py +241 -0
- pygeai/cli/error_handler.py +116 -0
- pygeai/cli/geai.py +28 -10
- pygeai/cli/parsers.py +8 -2
- pygeai/core/base/clients.py +4 -1
- pygeai/core/common/exceptions.py +11 -10
- pygeai/core/embeddings/__init__.py +19 -0
- pygeai/core/embeddings/clients.py +20 -9
- pygeai/core/embeddings/mappers.py +16 -2
- pygeai/core/embeddings/responses.py +9 -2
- pygeai/core/feedback/clients.py +4 -8
- pygeai/core/files/clients.py +10 -25
- pygeai/core/files/managers.py +42 -0
- pygeai/core/llm/clients.py +11 -26
- pygeai/core/models.py +107 -0
- pygeai/core/plugins/clients.py +4 -7
- pygeai/core/rerank/clients.py +4 -8
- pygeai/core/secrets/clients.py +14 -37
- pygeai/core/services/rest.py +1 -1
- pygeai/core/utils/parsers.py +32 -0
- pygeai/core/utils/validators.py +10 -0
- pygeai/dbg/__init__.py +3 -0
- pygeai/dbg/debugger.py +565 -70
- pygeai/evaluation/clients.py +2 -1
- 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 +10 -25
- pygeai/health/clients.py +4 -7
- pygeai/lab/agents/clients.py +21 -54
- pygeai/lab/agents/endpoints.py +2 -0
- pygeai/lab/clients.py +1 -0
- pygeai/lab/models.py +3 -3
- pygeai/lab/processes/clients.py +45 -127
- pygeai/lab/strategies/clients.py +11 -25
- pygeai/lab/tools/clients.py +23 -67
- pygeai/lab/tools/endpoints.py +3 -0
- pygeai/migration/__init__.py +31 -0
- pygeai/migration/strategies.py +404 -155
- pygeai/migration/tools.py +170 -3
- pygeai/organization/clients.py +135 -51
- pygeai/organization/endpoints.py +6 -1
- pygeai/organization/limits/clients.py +32 -91
- pygeai/organization/managers.py +157 -1
- pygeai/organization/mappers.py +76 -2
- pygeai/organization/responses.py +25 -1
- pygeai/proxy/clients.py +4 -1
- pygeai/tests/admin/test_clients.py +16 -11
- pygeai/tests/assistants/rag/test_clients.py +35 -23
- pygeai/tests/assistants/test_clients.py +22 -15
- pygeai/tests/auth/test_clients.py +191 -7
- pygeai/tests/chat/test_clients.py +211 -1
- pygeai/tests/cli/commands/test_embeddings.py +32 -9
- pygeai/tests/cli/commands/test_evaluation.py +7 -0
- pygeai/tests/cli/commands/test_migrate.py +112 -243
- 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/embeddings/test_clients.py +144 -0
- pygeai/tests/core/embeddings/test_managers.py +171 -0
- pygeai/tests/core/embeddings/test_mappers.py +142 -0
- pygeai/tests/core/feedback/test_clients.py +2 -0
- pygeai/tests/core/files/test_clients.py +1 -0
- pygeai/tests/core/llm/test_clients.py +14 -9
- pygeai/tests/core/plugins/test_clients.py +5 -3
- pygeai/tests/core/rerank/test_clients.py +1 -0
- pygeai/tests/core/secrets/test_clients.py +19 -13
- pygeai/tests/dbg/test_debugger.py +453 -75
- pygeai/tests/evaluation/dataset/test_clients.py +3 -1
- pygeai/tests/evaluation/plan/test_clients.py +4 -2
- pygeai/tests/evaluation/result/test_clients.py +7 -5
- pygeai/tests/gam/test_clients.py +1 -1
- pygeai/tests/health/test_clients.py +1 -0
- pygeai/tests/lab/agents/test_clients.py +9 -0
- pygeai/tests/lab/processes/test_clients.py +36 -0
- pygeai/tests/lab/processes/test_mappers.py +3 -0
- pygeai/tests/lab/strategies/test_clients.py +14 -9
- pygeai/tests/migration/test_strategies.py +45 -218
- pygeai/tests/migration/test_tools.py +133 -9
- pygeai/tests/organization/limits/test_clients.py +17 -0
- pygeai/tests/organization/test_clients.py +206 -1
- pygeai/tests/organization/test_managers.py +122 -1
- pygeai/tests/proxy/test_clients.py +2 -0
- pygeai/tests/proxy/test_integration.py +1 -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_streaming.py +20 -0
- pygeai/tests/snippets/chat/get_response_with_files.py +16 -0
- pygeai/tests/snippets/chat/get_response_with_tools.py +36 -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/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/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/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-0.6.0b6.dist-info → pygeai-0.6.0b10.dist-info}/METADATA +1 -1
- {pygeai-0.6.0b6.dist-info → pygeai-0.6.0b10.dist-info}/RECORD +227 -124
- {pygeai-0.6.0b6.dist-info → pygeai-0.6.0b10.dist-info}/WHEEL +0 -0
- {pygeai-0.6.0b6.dist-info → pygeai-0.6.0b10.dist-info}/entry_points.txt +0 -0
- {pygeai-0.6.0b6.dist-info → pygeai-0.6.0b10.dist-info}/licenses/LICENSE +0 -0
- {pygeai-0.6.0b6.dist-info → pygeai-0.6.0b10.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"""
|
|
2
|
+
RAG Assistant Migration Examples
|
|
3
|
+
|
|
4
|
+
Demonstrates how to migrate RAG assistants between projects.
|
|
5
|
+
Uses project-scope API keys.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from pygeai.migration.strategies import RAGAssistantMigrationStrategy
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def example_migrate_all_assistants():
|
|
12
|
+
"""
|
|
13
|
+
Migrate all RAG assistants from source project.
|
|
14
|
+
"""
|
|
15
|
+
strategy = RAGAssistantMigrationStrategy(
|
|
16
|
+
from_api_key="source_project_key_123abc456def789ghi012jkl345mno678pqr901",
|
|
17
|
+
from_project_id="7x8y9z0a-1b2c-3d4e-5f6g-7h8i9j0k1l2m",
|
|
18
|
+
from_instance="https://api.test.example.ai",
|
|
19
|
+
to_api_key="dest_project_key_789stu012vwx345yz678abc901def234ghi567",
|
|
20
|
+
to_project_id="3c4d5e6f-7g8h-9i0j-1k2l-3m4n5o6p7q8r",
|
|
21
|
+
to_instance="https://api.prod.example.ai",
|
|
22
|
+
assistant_names=None # None for all assistants
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
result = strategy.migrate()
|
|
26
|
+
print(f"Migrated {len(result['migrated_assistants'])} assistants")
|
|
27
|
+
|
|
28
|
+
return result
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def example_migrate_specific_assistants():
|
|
32
|
+
"""
|
|
33
|
+
Migrate specific RAG assistants by name.
|
|
34
|
+
"""
|
|
35
|
+
assistant_names = [
|
|
36
|
+
"Customer Support Assistant",
|
|
37
|
+
"Product Documentation Assistant"
|
|
38
|
+
]
|
|
39
|
+
|
|
40
|
+
strategy = RAGAssistantMigrationStrategy(
|
|
41
|
+
from_api_key="source_project_key_123abc456def789ghi012jkl345mno678pqr901",
|
|
42
|
+
from_project_id="7x8y9z0a-1b2c-3d4e-5f6g-7h8i9j0k1l2m",
|
|
43
|
+
from_instance="https://api.test.example.ai",
|
|
44
|
+
to_api_key="dest_project_key_789stu012vwx345yz678abc901def234ghi567",
|
|
45
|
+
to_project_id="3c4d5e6f-7g8h-9i0j-1k2l-3m4n5o6p7q8r",
|
|
46
|
+
to_instance="https://api.prod.example.ai",
|
|
47
|
+
assistant_names=assistant_names
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
result = strategy.migrate()
|
|
51
|
+
print(f"Migrated {len(result['migrated_assistants'])} specific assistants")
|
|
52
|
+
|
|
53
|
+
return result
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
if __name__ == "__main__":
|
|
57
|
+
print("RAG Assistant Migration Examples")
|
|
58
|
+
print("=" * 80)
|
|
59
|
+
print("\nThese examples demonstrate RAG assistant migration patterns.")
|
|
60
|
+
print("Uncomment to run specific examples:\n")
|
|
61
|
+
|
|
62
|
+
# Uncomment to run specific examples:
|
|
63
|
+
# example_migrate_all_assistants()
|
|
64
|
+
# example_migrate_specific_assistants()
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Migration Orchestrator Examples
|
|
3
|
+
|
|
4
|
+
Demonstrates how to orchestrate complex migrations with multiple strategies
|
|
5
|
+
and handle error scenarios.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from pygeai.migration.strategies import (
|
|
9
|
+
ProjectMigrationStrategy,
|
|
10
|
+
AgentMigrationStrategy,
|
|
11
|
+
ToolMigrationStrategy,
|
|
12
|
+
RAGAssistantMigrationStrategy
|
|
13
|
+
)
|
|
14
|
+
from pygeai.migration.tools import MigrationOrchestrator
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def example_orchestrated_migration():
|
|
18
|
+
"""
|
|
19
|
+
Use the orchestrator to execute multiple migration strategies in sequence.
|
|
20
|
+
This is useful for complex migrations with multiple resource types.
|
|
21
|
+
"""
|
|
22
|
+
# First, create the project
|
|
23
|
+
project_strategy = ProjectMigrationStrategy(
|
|
24
|
+
from_api_key="source_org_key_abc123def456ghi789jkl012mno345pqr678",
|
|
25
|
+
from_project_id="7x8y9z0a-1b2c-3d4e-5f6g-7h8i9j0k1l2m",
|
|
26
|
+
from_instance="https://api.test.example.ai",
|
|
27
|
+
to_api_key="dest_org_key_stu901vwx234yz567abc890def123ghi456jkl789",
|
|
28
|
+
to_project_name="Orchestrated Migration Project",
|
|
29
|
+
admin_email="admin@example.com"
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
# Create the orchestrator
|
|
33
|
+
orchestrator = MigrationOrchestrator()
|
|
34
|
+
|
|
35
|
+
# Add the project creation strategy
|
|
36
|
+
orchestrator.add_strategy(project_strategy)
|
|
37
|
+
|
|
38
|
+
# After project creation, we'll need the new project ID
|
|
39
|
+
# The orchestrator will handle this automatically
|
|
40
|
+
|
|
41
|
+
# Add agent migration strategy
|
|
42
|
+
agent_strategy = AgentMigrationStrategy(
|
|
43
|
+
from_api_key="source_project_key_123abc456def789ghi012jkl345mno678pqr901",
|
|
44
|
+
from_project_id="7x8y9z0a-1b2c-3d4e-5f6g-7h8i9j0k1l2m",
|
|
45
|
+
from_instance="https://api.test.example.ai",
|
|
46
|
+
to_api_key="dest_project_key_789stu012vwx345yz678abc901def234ghi567",
|
|
47
|
+
to_project_id=None, # Will be filled by orchestrator after project creation
|
|
48
|
+
agent_ids=None # Migrate all agents
|
|
49
|
+
)
|
|
50
|
+
orchestrator.add_strategy(agent_strategy)
|
|
51
|
+
|
|
52
|
+
# Add tool migration strategy
|
|
53
|
+
tool_strategy = ToolMigrationStrategy(
|
|
54
|
+
from_api_key="source_project_key_123abc456def789ghi012jkl345mno678pqr901",
|
|
55
|
+
from_project_id="7x8y9z0a-1b2c-3d4e-5f6g-7h8i9j0k1l2m",
|
|
56
|
+
from_instance="https://api.test.example.ai",
|
|
57
|
+
to_api_key="dest_project_key_789stu012vwx345yz678abc901def234ghi567",
|
|
58
|
+
to_project_id=None, # Will be filled by orchestrator
|
|
59
|
+
tool_ids=None # Migrate all tools
|
|
60
|
+
)
|
|
61
|
+
orchestrator.add_strategy(tool_strategy)
|
|
62
|
+
|
|
63
|
+
# Execute all strategies in order
|
|
64
|
+
results = orchestrator.execute()
|
|
65
|
+
|
|
66
|
+
print(f"Migration completed:")
|
|
67
|
+
print(f" Total strategies: {results['total']}")
|
|
68
|
+
print(f" Successful: {results['completed']}")
|
|
69
|
+
print(f" Failed: {results['failed']}")
|
|
70
|
+
|
|
71
|
+
return results
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def example_migration_with_error_handling():
|
|
75
|
+
"""
|
|
76
|
+
Demonstrate proper error handling during migrations.
|
|
77
|
+
"""
|
|
78
|
+
from pygeai.core.common.exceptions import MigrationException
|
|
79
|
+
|
|
80
|
+
try:
|
|
81
|
+
strategy = AgentMigrationStrategy(
|
|
82
|
+
from_api_key="source_project_key_123abc456def789ghi012jkl345mno678pqr901",
|
|
83
|
+
from_project_id="7x8y9z0a-1b2c-3d4e-5f6g-7h8i9j0k1l2m",
|
|
84
|
+
from_instance="https://api.test.example.ai",
|
|
85
|
+
to_api_key="dest_project_key_789stu012vwx345yz678abc901def234ghi567",
|
|
86
|
+
to_project_id="3c4d5e6f-7g8h-9i0j-1k2l-3m4n5o6p7q8r",
|
|
87
|
+
agent_ids=None
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
result = strategy.migrate()
|
|
91
|
+
|
|
92
|
+
print(f"✓ Migration successful: {result['summary']}")
|
|
93
|
+
|
|
94
|
+
except MigrationException as e:
|
|
95
|
+
print(f"✗ Migration failed: {e}")
|
|
96
|
+
print(f" Details: {e.details}")
|
|
97
|
+
|
|
98
|
+
except Exception as e:
|
|
99
|
+
print(f"✗ Unexpected error: {e}")
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def example_full_migration_workflow():
|
|
103
|
+
"""
|
|
104
|
+
Complete workflow: create project, migrate all resources, verify.
|
|
105
|
+
"""
|
|
106
|
+
# Step 1: Create new project with usage limits
|
|
107
|
+
print("Step 1: Creating new project...")
|
|
108
|
+
project_strategy = ProjectMigrationStrategy(
|
|
109
|
+
from_api_key="source_org_key_abc123def456ghi789jkl012mno345pqr678",
|
|
110
|
+
from_project_id="7x8y9z0a-1b2c-3d4e-5f6g-7h8i9j0k1l2m",
|
|
111
|
+
from_instance="https://api.test.example.ai",
|
|
112
|
+
to_api_key="dest_org_key_stu901vwx234yz567abc890def123ghi456jkl789",
|
|
113
|
+
to_project_name="Complete Migration",
|
|
114
|
+
admin_email="admin@example.com"
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
project_result = project_strategy.migrate()
|
|
118
|
+
new_project_id = project_result['project_id']
|
|
119
|
+
print(f"✓ Project created: {new_project_id}")
|
|
120
|
+
|
|
121
|
+
# Step 2: Migrate agents
|
|
122
|
+
print("\nStep 2: Migrating agents...")
|
|
123
|
+
agent_strategy = AgentMigrationStrategy(
|
|
124
|
+
from_api_key="source_project_key_123abc456def789ghi012jkl345mno678pqr901",
|
|
125
|
+
from_project_id="7x8y9z0a-1b2c-3d4e-5f6g-7h8i9j0k1l2m",
|
|
126
|
+
from_instance="https://api.test.example.ai",
|
|
127
|
+
to_api_key="dest_project_key_789stu012vwx345yz678abc901def234ghi567",
|
|
128
|
+
to_project_id=new_project_id,
|
|
129
|
+
agent_ids=None
|
|
130
|
+
)
|
|
131
|
+
agent_result = agent_strategy.migrate()
|
|
132
|
+
print(f"✓ Migrated {len(agent_result['migrated_agents'])} agents")
|
|
133
|
+
|
|
134
|
+
# Step 3: Migrate tools
|
|
135
|
+
print("\nStep 3: Migrating tools...")
|
|
136
|
+
tool_strategy = ToolMigrationStrategy(
|
|
137
|
+
from_api_key="source_project_key_123abc456def789ghi012jkl345mno678pqr901",
|
|
138
|
+
from_project_id="7x8y9z0a-1b2c-3d4e-5f6g-7h8i9j0k1l2m",
|
|
139
|
+
from_instance="https://api.test.example.ai",
|
|
140
|
+
to_api_key="dest_project_key_789stu012vwx345yz678abc901def234ghi567",
|
|
141
|
+
to_project_id=new_project_id,
|
|
142
|
+
tool_ids=None
|
|
143
|
+
)
|
|
144
|
+
tool_result = tool_strategy.migrate()
|
|
145
|
+
print(f"✓ Migrated {len(tool_result['migrated_tools'])} tools")
|
|
146
|
+
|
|
147
|
+
# Step 4: Migrate RAG assistants
|
|
148
|
+
print("\nStep 4: Migrating RAG assistants...")
|
|
149
|
+
assistant_strategy = RAGAssistantMigrationStrategy(
|
|
150
|
+
from_api_key="source_project_key_123abc456def789ghi012jkl345mno678pqr901",
|
|
151
|
+
from_project_id="7x8y9z0a-1b2c-3d4e-5f6g-7h8i9j0k1l2m",
|
|
152
|
+
from_instance="https://api.test.example.ai",
|
|
153
|
+
to_api_key="dest_project_key_789stu012vwx345yz678abc901def234ghi567",
|
|
154
|
+
to_project_id=new_project_id,
|
|
155
|
+
assistant_names=None
|
|
156
|
+
)
|
|
157
|
+
assistant_result = assistant_strategy.migrate()
|
|
158
|
+
print(f"✓ Migrated {len(assistant_result['migrated_assistants'])} assistants")
|
|
159
|
+
|
|
160
|
+
print("\n✓ Complete migration finished successfully!")
|
|
161
|
+
|
|
162
|
+
return {
|
|
163
|
+
'project': project_result,
|
|
164
|
+
'agents': agent_result,
|
|
165
|
+
'tools': tool_result,
|
|
166
|
+
'assistants': assistant_result
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
if __name__ == "__main__":
|
|
171
|
+
print("Migration Orchestrator Examples")
|
|
172
|
+
print("=" * 80)
|
|
173
|
+
print("\nThese examples demonstrate complex migration workflows.")
|
|
174
|
+
print("Uncomment to run specific examples:\n")
|
|
175
|
+
|
|
176
|
+
# Uncomment to run specific examples:
|
|
177
|
+
# example_orchestrated_migration()
|
|
178
|
+
# example_migration_with_error_handling()
|
|
179
|
+
# example_full_migration_workflow()
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Agentic Process Migration Examples
|
|
3
|
+
|
|
4
|
+
Demonstrates how to migrate agentic processes between projects.
|
|
5
|
+
Uses project-scope API keys.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from pygeai.migration.strategies import AgenticProcessMigrationStrategy
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def example_migrate_all_processes():
|
|
12
|
+
"""
|
|
13
|
+
Migrate all agentic processes from source project.
|
|
14
|
+
"""
|
|
15
|
+
strategy = AgenticProcessMigrationStrategy(
|
|
16
|
+
from_api_key="source_project_key_123abc456def789ghi012jkl345mno678pqr901",
|
|
17
|
+
from_project_id="7x8y9z0a-1b2c-3d4e-5f6g-7h8i9j0k1l2m",
|
|
18
|
+
from_instance="https://api.test.example.ai",
|
|
19
|
+
to_api_key="dest_project_key_789stu012vwx345yz678abc901def234ghi567",
|
|
20
|
+
to_project_id="3c4d5e6f-7g8h-9i0j-1k2l-3m4n5o6p7q8r",
|
|
21
|
+
to_instance="https://api.prod.example.ai",
|
|
22
|
+
process_ids=None # None for all processes
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
result = strategy.migrate()
|
|
26
|
+
print(f"Migrated {len(result['migrated_processes'])} processes")
|
|
27
|
+
|
|
28
|
+
return result
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def example_migrate_specific_processes():
|
|
32
|
+
"""
|
|
33
|
+
Migrate specific agentic processes by ID.
|
|
34
|
+
"""
|
|
35
|
+
process_ids = [
|
|
36
|
+
"4b5c6d7e-8f9g-0h1i-2j3k-4l5m6n7o8p9q",
|
|
37
|
+
"5c6d7e8f-9g0h-1i2j-3k4l-5m6n7o8p9q0r"
|
|
38
|
+
]
|
|
39
|
+
|
|
40
|
+
strategy = AgenticProcessMigrationStrategy(
|
|
41
|
+
from_api_key="source_project_key_123abc456def789ghi012jkl345mno678pqr901",
|
|
42
|
+
from_project_id="7x8y9z0a-1b2c-3d4e-5f6g-7h8i9j0k1l2m",
|
|
43
|
+
from_instance="https://api.test.example.ai",
|
|
44
|
+
to_api_key="dest_project_key_789stu012vwx345yz678abc901def234ghi567",
|
|
45
|
+
to_project_id="3c4d5e6f-7g8h-9i0j-1k2l-3m4n5o6p7q8r",
|
|
46
|
+
to_instance="https://api.prod.example.ai",
|
|
47
|
+
process_ids=process_ids
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
result = strategy.migrate()
|
|
51
|
+
print(f"Migrated {len(result['migrated_processes'])} specific processes")
|
|
52
|
+
|
|
53
|
+
return result
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
if __name__ == "__main__":
|
|
57
|
+
print("Agentic Process Migration Examples")
|
|
58
|
+
print("=" * 80)
|
|
59
|
+
print("\nThese examples demonstrate agentic process migration patterns.")
|
|
60
|
+
print("Uncomment to run specific examples:\n")
|
|
61
|
+
|
|
62
|
+
# Uncomment to run specific examples:
|
|
63
|
+
# example_migrate_all_processes()
|
|
64
|
+
# example_migrate_specific_processes()
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Project Migration Examples
|
|
3
|
+
|
|
4
|
+
Demonstrates how to create new projects and migrate usage limits.
|
|
5
|
+
Requires organization-scope API keys.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from pygeai.migration.strategies import ProjectMigrationStrategy
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def example_create_project_with_usage_limits():
|
|
12
|
+
"""
|
|
13
|
+
Create a new project and migrate usage limits from an existing project.
|
|
14
|
+
Requires organization-scope API keys.
|
|
15
|
+
"""
|
|
16
|
+
strategy = ProjectMigrationStrategy(
|
|
17
|
+
from_api_key="source_org_key_abc123def456ghi789jkl012mno345pqr678",
|
|
18
|
+
from_project_id="7x8y9z0a-1b2c-3d4e-5f6g-7h8i9j0k1l2m",
|
|
19
|
+
from_instance="https://api.test.example.ai",
|
|
20
|
+
to_api_key="dest_org_key_stu901vwx234yz567abc890def123ghi456jkl789",
|
|
21
|
+
to_project_name="New Migrated Project",
|
|
22
|
+
admin_email="admin@example.com",
|
|
23
|
+
to_instance="https://api.prod.example.ai" # Optional: different instance
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
# Execute the migration
|
|
27
|
+
result = strategy.migrate()
|
|
28
|
+
|
|
29
|
+
print(f"Project created with ID: {result['project_id']}")
|
|
30
|
+
print(f"Migration result: {result}")
|
|
31
|
+
|
|
32
|
+
return result
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
if __name__ == "__main__":
|
|
36
|
+
print("Project Migration Example")
|
|
37
|
+
print("=" * 80)
|
|
38
|
+
print("\nThis example demonstrates creating a new project with usage limits.")
|
|
39
|
+
print("Uncomment to run:\n")
|
|
40
|
+
|
|
41
|
+
# Uncomment to run:
|
|
42
|
+
# example_create_project_with_usage_limits()
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Tool Migration Examples
|
|
3
|
+
|
|
4
|
+
Demonstrates how to migrate tools between projects.
|
|
5
|
+
Uses project-scope API keys.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from pygeai.migration.strategies import ToolMigrationStrategy
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def example_migrate_specific_tools():
|
|
12
|
+
"""
|
|
13
|
+
Migrate specific tools by ID.
|
|
14
|
+
"""
|
|
15
|
+
tool_ids = [
|
|
16
|
+
"2a3b4c5d-6e7f-8g9h-0i1j-2k3l4m5n6o7p",
|
|
17
|
+
"3b4c5d6e-7f8g-9h0i-1j2k-3l4m5n6o7p8q"
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
strategy = ToolMigrationStrategy(
|
|
21
|
+
from_api_key="source_project_key_123abc456def789ghi012jkl345mno678pqr901",
|
|
22
|
+
from_project_id="7x8y9z0a-1b2c-3d4e-5f6g-7h8i9j0k1l2m",
|
|
23
|
+
from_instance="https://api.test.example.ai",
|
|
24
|
+
to_api_key="dest_project_key_789stu012vwx345yz678abc901def234ghi567",
|
|
25
|
+
to_project_id="3c4d5e6f-7g8h-9i0j-1k2l-3m4n5o6p7q8r",
|
|
26
|
+
to_instance="https://api.prod.example.ai",
|
|
27
|
+
tool_ids=tool_ids
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
result = strategy.migrate()
|
|
31
|
+
print(f"Migrated {len(result['migrated_tools'])} tools")
|
|
32
|
+
|
|
33
|
+
return result
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def example_migrate_all_tools():
|
|
37
|
+
"""
|
|
38
|
+
Migrate all tools from source project.
|
|
39
|
+
"""
|
|
40
|
+
strategy = ToolMigrationStrategy(
|
|
41
|
+
from_api_key="source_project_key_123abc456def789ghi012jkl345mno678pqr901",
|
|
42
|
+
from_project_id="7x8y9z0a-1b2c-3d4e-5f6g-7h8i9j0k1l2m",
|
|
43
|
+
from_instance="https://api.test.example.ai",
|
|
44
|
+
to_api_key="dest_project_key_789stu012vwx345yz678abc901def234ghi567",
|
|
45
|
+
to_project_id="3c4d5e6f-7g8h-9i0j-1k2l-3m4n5o6p7q8r",
|
|
46
|
+
to_instance="https://api.prod.example.ai",
|
|
47
|
+
tool_ids=None # None means "all tools"
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
result = strategy.migrate()
|
|
51
|
+
print(f"Migrated all {len(result['migrated_tools'])} tools")
|
|
52
|
+
|
|
53
|
+
return result
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
if __name__ == "__main__":
|
|
57
|
+
print("Tool Migration Examples")
|
|
58
|
+
print("=" * 80)
|
|
59
|
+
print("\nThese examples demonstrate tool migration patterns.")
|
|
60
|
+
print("Uncomment to run specific examples:\n")
|
|
61
|
+
|
|
62
|
+
# Uncomment to run specific examples:
|
|
63
|
+
# example_migrate_specific_tools()
|
|
64
|
+
# example_migrate_all_tools()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from pygeai.organization.managers import OrganizationManager
|
|
2
2
|
from pygeai.core.models import UsageLimit, Project
|
|
3
3
|
|
|
4
|
-
manager = OrganizationManager()
|
|
4
|
+
manager = OrganizationManager(alias="sdkorg")
|
|
5
5
|
|
|
6
6
|
usage_limit = UsageLimit(
|
|
7
7
|
subscription_type="Monthly",
|
|
@@ -12,7 +12,7 @@ usage_limit = UsageLimit(
|
|
|
12
12
|
)
|
|
13
13
|
|
|
14
14
|
project = Project(
|
|
15
|
-
name="New
|
|
15
|
+
name="New TEST Project 2",
|
|
16
16
|
description="An AI project focused on natural language processing",
|
|
17
17
|
email="alejandro.trinidad@globant.com",
|
|
18
18
|
usage_limit=usage_limit
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
from pygeai.organization.managers import OrganizationManager
|
|
2
|
+
|
|
3
|
+
manager = OrganizationManager(alias="sdkorg")
|
|
4
|
+
|
|
5
|
+
response = manager.get_memberships(
|
|
6
|
+
email="alejandro.trinidad@globant.com",
|
|
7
|
+
start_page=1,
|
|
8
|
+
page_size=10,
|
|
9
|
+
#order_key="organizationName",
|
|
10
|
+
#order_direction="asc"
|
|
11
|
+
)
|
|
12
|
+
print(f"response: {response}")
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
from pygeai.organization.managers import OrganizationManager
|
|
2
|
+
|
|
3
|
+
manager = OrganizationManager()
|
|
4
|
+
|
|
5
|
+
response = manager.get_project_memberships(
|
|
6
|
+
email="user@example.com",
|
|
7
|
+
start_page=1,
|
|
8
|
+
page_size=10,
|
|
9
|
+
order_key="projectName",
|
|
10
|
+
order_direction="desc"
|
|
11
|
+
)
|
|
12
|
+
print(f"response: {response}")
|