pygeai 0.6.0b7__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.
Files changed (178) hide show
  1. pygeai/_docs/source/conf.py +78 -6
  2. pygeai/_docs/source/content/api_reference/embeddings.rst +31 -1
  3. pygeai/_docs/source/content/api_reference/evaluation.rst +590 -0
  4. pygeai/_docs/source/content/api_reference/feedback.rst +237 -0
  5. pygeai/_docs/source/content/api_reference/files.rst +592 -0
  6. pygeai/_docs/source/content/api_reference/gam.rst +401 -0
  7. pygeai/_docs/source/content/api_reference/proxy.rst +318 -0
  8. pygeai/_docs/source/content/api_reference/secrets.rst +495 -0
  9. pygeai/_docs/source/content/api_reference/usage_limits.rst +390 -0
  10. pygeai/_docs/source/content/api_reference.rst +7 -0
  11. pygeai/_docs/source/content/debugger.rst +376 -83
  12. pygeai/_docs/source/content/migration.rst +528 -0
  13. pygeai/_docs/source/content/modules.rst +1 -1
  14. pygeai/_docs/source/pygeai.cli.rst +8 -0
  15. pygeai/_docs/source/pygeai.tests.cli.rst +16 -0
  16. pygeai/_docs/source/pygeai.tests.core.embeddings.rst +16 -0
  17. pygeai/_docs/source/pygeai.tests.snippets.chat.rst +40 -0
  18. pygeai/_docs/source/pygeai.tests.snippets.dbg.rst +45 -0
  19. pygeai/_docs/source/pygeai.tests.snippets.embeddings.rst +40 -0
  20. pygeai/_docs/source/pygeai.tests.snippets.evaluation.dataset.rst +197 -0
  21. pygeai/_docs/source/pygeai.tests.snippets.evaluation.plan.rst +133 -0
  22. pygeai/_docs/source/pygeai.tests.snippets.evaluation.result.rst +37 -0
  23. pygeai/_docs/source/pygeai.tests.snippets.evaluation.rst +10 -0
  24. pygeai/_docs/source/pygeai.tests.snippets.rst +1 -0
  25. pygeai/admin/clients.py +5 -0
  26. pygeai/assistant/clients.py +7 -0
  27. pygeai/assistant/data_analyst/clients.py +2 -0
  28. pygeai/assistant/rag/clients.py +11 -0
  29. pygeai/chat/clients.py +191 -25
  30. pygeai/chat/endpoints.py +2 -1
  31. pygeai/cli/commands/chat.py +227 -1
  32. pygeai/cli/commands/embeddings.py +56 -8
  33. pygeai/cli/commands/migrate.py +994 -434
  34. pygeai/cli/error_handler.py +116 -0
  35. pygeai/cli/geai.py +28 -10
  36. pygeai/cli/parsers.py +8 -2
  37. pygeai/core/base/clients.py +3 -1
  38. pygeai/core/common/exceptions.py +11 -10
  39. pygeai/core/embeddings/__init__.py +19 -0
  40. pygeai/core/embeddings/clients.py +17 -2
  41. pygeai/core/embeddings/mappers.py +16 -2
  42. pygeai/core/embeddings/responses.py +9 -2
  43. pygeai/core/feedback/clients.py +1 -0
  44. pygeai/core/files/clients.py +5 -7
  45. pygeai/core/files/managers.py +42 -0
  46. pygeai/core/llm/clients.py +4 -0
  47. pygeai/core/plugins/clients.py +1 -0
  48. pygeai/core/rerank/clients.py +1 -0
  49. pygeai/core/secrets/clients.py +6 -0
  50. pygeai/core/services/rest.py +1 -1
  51. pygeai/dbg/__init__.py +3 -0
  52. pygeai/dbg/debugger.py +565 -70
  53. pygeai/evaluation/clients.py +1 -1
  54. pygeai/evaluation/dataset/clients.py +45 -44
  55. pygeai/evaluation/plan/clients.py +27 -26
  56. pygeai/evaluation/result/clients.py +37 -5
  57. pygeai/gam/clients.py +4 -0
  58. pygeai/health/clients.py +1 -0
  59. pygeai/lab/agents/clients.py +8 -1
  60. pygeai/lab/models.py +3 -3
  61. pygeai/lab/processes/clients.py +21 -0
  62. pygeai/lab/strategies/clients.py +4 -0
  63. pygeai/lab/tools/clients.py +1 -0
  64. pygeai/migration/__init__.py +31 -0
  65. pygeai/migration/strategies.py +404 -155
  66. pygeai/migration/tools.py +170 -3
  67. pygeai/organization/clients.py +13 -0
  68. pygeai/organization/limits/clients.py +15 -0
  69. pygeai/proxy/clients.py +3 -1
  70. pygeai/tests/admin/test_clients.py +16 -11
  71. pygeai/tests/assistants/rag/test_clients.py +35 -23
  72. pygeai/tests/assistants/test_clients.py +22 -15
  73. pygeai/tests/auth/test_clients.py +14 -6
  74. pygeai/tests/chat/test_clients.py +211 -1
  75. pygeai/tests/cli/commands/test_embeddings.py +32 -9
  76. pygeai/tests/cli/commands/test_evaluation.py +7 -0
  77. pygeai/tests/cli/commands/test_migrate.py +112 -243
  78. pygeai/tests/cli/test_error_handler.py +225 -0
  79. pygeai/tests/cli/test_geai_driver.py +154 -0
  80. pygeai/tests/cli/test_parsers.py +5 -5
  81. pygeai/tests/core/embeddings/test_clients.py +144 -0
  82. pygeai/tests/core/embeddings/test_managers.py +171 -0
  83. pygeai/tests/core/embeddings/test_mappers.py +142 -0
  84. pygeai/tests/core/feedback/test_clients.py +2 -0
  85. pygeai/tests/core/files/test_clients.py +1 -0
  86. pygeai/tests/core/llm/test_clients.py +14 -9
  87. pygeai/tests/core/plugins/test_clients.py +5 -3
  88. pygeai/tests/core/rerank/test_clients.py +1 -0
  89. pygeai/tests/core/secrets/test_clients.py +19 -13
  90. pygeai/tests/dbg/test_debugger.py +453 -75
  91. pygeai/tests/evaluation/dataset/test_clients.py +3 -1
  92. pygeai/tests/evaluation/plan/test_clients.py +4 -2
  93. pygeai/tests/evaluation/result/test_clients.py +7 -5
  94. pygeai/tests/gam/test_clients.py +1 -1
  95. pygeai/tests/health/test_clients.py +1 -0
  96. pygeai/tests/lab/agents/test_clients.py +9 -0
  97. pygeai/tests/lab/processes/test_clients.py +36 -0
  98. pygeai/tests/lab/processes/test_mappers.py +3 -0
  99. pygeai/tests/lab/strategies/test_clients.py +14 -9
  100. pygeai/tests/migration/test_strategies.py +45 -218
  101. pygeai/tests/migration/test_tools.py +133 -9
  102. pygeai/tests/organization/limits/test_clients.py +17 -0
  103. pygeai/tests/organization/test_clients.py +22 -0
  104. pygeai/tests/proxy/test_clients.py +2 -0
  105. pygeai/tests/proxy/test_integration.py +1 -0
  106. pygeai/tests/snippets/chat/chat_completion_with_reasoning_effort.py +18 -0
  107. pygeai/tests/snippets/chat/get_response.py +15 -0
  108. pygeai/tests/snippets/chat/get_response_streaming.py +20 -0
  109. pygeai/tests/snippets/chat/get_response_with_files.py +16 -0
  110. pygeai/tests/snippets/chat/get_response_with_tools.py +36 -0
  111. pygeai/tests/snippets/dbg/__init__.py +0 -0
  112. pygeai/tests/snippets/dbg/basic_debugging.py +32 -0
  113. pygeai/tests/snippets/dbg/breakpoint_management.py +48 -0
  114. pygeai/tests/snippets/dbg/stack_navigation.py +45 -0
  115. pygeai/tests/snippets/dbg/stepping_example.py +40 -0
  116. pygeai/tests/snippets/embeddings/cache_example.py +31 -0
  117. pygeai/tests/snippets/embeddings/cohere_example.py +41 -0
  118. pygeai/tests/snippets/embeddings/openai_base64_example.py +27 -0
  119. pygeai/tests/snippets/embeddings/openai_example.py +30 -0
  120. pygeai/tests/snippets/embeddings/similarity_example.py +42 -0
  121. pygeai/tests/snippets/evaluation/dataset/__init__.py +0 -0
  122. pygeai/tests/snippets/evaluation/dataset/complete_workflow_example.py +195 -0
  123. pygeai/tests/snippets/evaluation/dataset/create_dataset.py +26 -0
  124. pygeai/tests/snippets/evaluation/dataset/create_dataset_from_file.py +11 -0
  125. pygeai/tests/snippets/evaluation/dataset/create_dataset_row.py +17 -0
  126. pygeai/tests/snippets/evaluation/dataset/create_expected_source.py +18 -0
  127. pygeai/tests/snippets/evaluation/dataset/create_filter_variable.py +19 -0
  128. pygeai/tests/snippets/evaluation/dataset/delete_dataset.py +9 -0
  129. pygeai/tests/snippets/evaluation/dataset/delete_dataset_row.py +10 -0
  130. pygeai/tests/snippets/evaluation/dataset/delete_expected_source.py +15 -0
  131. pygeai/tests/snippets/evaluation/dataset/delete_filter_variable.py +15 -0
  132. pygeai/tests/snippets/evaluation/dataset/get_dataset.py +9 -0
  133. pygeai/tests/snippets/evaluation/dataset/get_dataset_row.py +10 -0
  134. pygeai/tests/snippets/evaluation/dataset/get_expected_source.py +15 -0
  135. pygeai/tests/snippets/evaluation/dataset/get_filter_variable.py +15 -0
  136. pygeai/tests/snippets/evaluation/dataset/list_dataset_rows.py +9 -0
  137. pygeai/tests/snippets/evaluation/dataset/list_datasets.py +6 -0
  138. pygeai/tests/snippets/evaluation/dataset/list_expected_sources.py +10 -0
  139. pygeai/tests/snippets/evaluation/dataset/list_filter_variables.py +10 -0
  140. pygeai/tests/snippets/evaluation/dataset/update_dataset.py +15 -0
  141. pygeai/tests/snippets/evaluation/dataset/update_dataset_row.py +20 -0
  142. pygeai/tests/snippets/evaluation/dataset/update_expected_source.py +18 -0
  143. pygeai/tests/snippets/evaluation/dataset/update_filter_variable.py +19 -0
  144. pygeai/tests/snippets/evaluation/dataset/upload_dataset_rows_file.py +10 -0
  145. pygeai/tests/snippets/evaluation/plan/__init__.py +0 -0
  146. pygeai/tests/snippets/evaluation/plan/add_plan_system_metric.py +13 -0
  147. pygeai/tests/snippets/evaluation/plan/complete_workflow_example.py +136 -0
  148. pygeai/tests/snippets/evaluation/plan/create_evaluation_plan.py +24 -0
  149. pygeai/tests/snippets/evaluation/plan/create_rag_evaluation_plan.py +22 -0
  150. pygeai/tests/snippets/evaluation/plan/delete_evaluation_plan.py +9 -0
  151. pygeai/tests/snippets/evaluation/plan/delete_plan_system_metric.py +13 -0
  152. pygeai/tests/snippets/evaluation/plan/execute_evaluation_plan.py +11 -0
  153. pygeai/tests/snippets/evaluation/plan/get_evaluation_plan.py +9 -0
  154. pygeai/tests/snippets/evaluation/plan/get_plan_system_metric.py +13 -0
  155. pygeai/tests/snippets/evaluation/plan/get_system_metric.py +9 -0
  156. pygeai/tests/snippets/evaluation/plan/list_evaluation_plans.py +7 -0
  157. pygeai/tests/snippets/evaluation/plan/list_plan_system_metrics.py +9 -0
  158. pygeai/tests/snippets/evaluation/plan/list_system_metrics.py +7 -0
  159. pygeai/tests/snippets/evaluation/plan/update_evaluation_plan.py +22 -0
  160. pygeai/tests/snippets/evaluation/plan/update_plan_system_metric.py +14 -0
  161. pygeai/tests/snippets/evaluation/result/__init__.py +0 -0
  162. pygeai/tests/snippets/evaluation/result/complete_workflow_example.py +150 -0
  163. pygeai/tests/snippets/evaluation/result/get_evaluation_result.py +26 -0
  164. pygeai/tests/snippets/evaluation/result/list_evaluation_results.py +17 -0
  165. pygeai/tests/snippets/migrate/__init__.py +45 -0
  166. pygeai/tests/snippets/migrate/agent_migration.py +110 -0
  167. pygeai/tests/snippets/migrate/assistant_migration.py +64 -0
  168. pygeai/tests/snippets/migrate/orchestrator_examples.py +179 -0
  169. pygeai/tests/snippets/migrate/process_migration.py +64 -0
  170. pygeai/tests/snippets/migrate/project_migration.py +42 -0
  171. pygeai/tests/snippets/migrate/tool_migration.py +64 -0
  172. pygeai/tests/snippets/organization/create_project.py +2 -2
  173. {pygeai-0.6.0b7.dist-info → pygeai-0.6.0b10.dist-info}/METADATA +1 -1
  174. {pygeai-0.6.0b7.dist-info → pygeai-0.6.0b10.dist-info}/RECORD +178 -96
  175. {pygeai-0.6.0b7.dist-info → pygeai-0.6.0b10.dist-info}/WHEEL +0 -0
  176. {pygeai-0.6.0b7.dist-info → pygeai-0.6.0b10.dist-info}/entry_points.txt +0 -0
  177. {pygeai-0.6.0b7.dist-info → pygeai-0.6.0b10.dist-info}/licenses/LICENSE +0 -0
  178. {pygeai-0.6.0b7.dist-info → pygeai-0.6.0b10.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,17 @@
1
+ from pygeai.evaluation.result.clients import EvaluationResultClient
2
+
3
+ client = EvaluationResultClient()
4
+
5
+ evaluation_plan_id = "your-evaluation-plan-id"
6
+
7
+ results = client.list_evaluation_results(evaluation_plan_id=evaluation_plan_id)
8
+
9
+ print(f"Found {len(results) if isinstance(results, list) else 'N/A'} evaluation results")
10
+
11
+ for result in results if isinstance(results, list) else []:
12
+ print(f"\nResult ID: {result.get('evaluationResultId')}")
13
+ print(f" Status: {result.get('evaluationResultStatus')}")
14
+ print(f" Cost: ${result.get('evaluationResultCost')}")
15
+ print(f" Duration: {result.get('evaluationResultDuration')}ms")
16
+ print(f" Start: {result.get('evaluationResultStartDate')}")
17
+ print(f" End: {result.get('evaluationResultEndDate')}")
@@ -0,0 +1,45 @@
1
+ """
2
+ GEAI Migration Examples
3
+
4
+ This package contains comprehensive examples for migrating GEAI resources
5
+ between projects and instances using both CLI and Python SDK.
6
+
7
+ ## Quick Import
8
+
9
+ Import specific modules:
10
+ from pygeai.tests.snippets.migrate import agent_migration
11
+ from pygeai.tests.snippets.migrate import project_migration
12
+
13
+ Import all examples:
14
+ from pygeai.tests.snippets.migrate import *
15
+
16
+ ## Available Modules
17
+
18
+ - project_migration: Create projects and migrate usage limits (1 example)
19
+ - agent_migration: Migrate agents between projects (3 examples)
20
+ - tool_migration: Migrate tools between projects (2 examples)
21
+ - process_migration: Migrate agentic processes (2 examples)
22
+ - assistant_migration: Migrate RAG assistants (2 examples)
23
+ - orchestrator_examples: Complex multi-step workflows (3 examples)
24
+
25
+ ## Documentation
26
+
27
+ See EXAMPLES_INDEX.md for a quick reference of all available examples.
28
+ See README.md for comprehensive usage guide and patterns.
29
+
30
+ ## Example Usage
31
+
32
+ from pygeai.tests.snippets.migrate.agent_migration import example_migrate_all_agents
33
+
34
+ result = example_migrate_all_agents()
35
+ print(result)
36
+ """
37
+
38
+ __all__ = [
39
+ 'project_migration',
40
+ 'agent_migration',
41
+ 'tool_migration',
42
+ 'process_migration',
43
+ 'assistant_migration',
44
+ 'orchestrator_examples'
45
+ ]
@@ -0,0 +1,110 @@
1
+ """
2
+ Agent Migration Examples
3
+
4
+ Demonstrates how to migrate agents between projects.
5
+ Uses project-scope API keys.
6
+ """
7
+
8
+ from pygeai.migration.strategies import AgentMigrationStrategy
9
+
10
+
11
+ def example_migrate_specific_agents():
12
+ """
13
+ Migrate specific agents by ID to an existing project.
14
+ Uses project-scope API keys.
15
+ """
16
+ agent_ids = [
17
+ "9d8e7f6g-5h4i-3j2k-1l0m-9n8o7p6q5r4s",
18
+ "1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p"
19
+ ]
20
+
21
+ strategy = AgentMigrationStrategy(
22
+ from_api_key="source_project_key_123abc456def789ghi012jkl345mno678pqr901",
23
+ from_project_id="7x8y9z0a-1b2c-3d4e-5f6g-7h8i9j0k1l2m",
24
+ from_instance="https://api.test.example.ai",
25
+ to_api_key="dest_project_key_789stu012vwx345yz678abc901def234ghi567",
26
+ to_project_id="3c4d5e6f-7g8h-9i0j-1k2l-3m4n5o6p7q8r",
27
+ to_instance="https://api.prod.example.ai",
28
+ agent_ids=agent_ids
29
+ )
30
+
31
+ result = strategy.migrate()
32
+
33
+ print(f"Migrated {len(result['migrated_agents'])} agents")
34
+ for agent in result['migrated_agents']:
35
+ print(f" - {agent['name']} (ID: {agent['id']})")
36
+
37
+ return result
38
+
39
+
40
+ def example_migrate_all_agents():
41
+ """
42
+ Automatically discover and migrate all agents from source project.
43
+ """
44
+ strategy = AgentMigrationStrategy(
45
+ from_api_key="source_project_key_123abc456def789ghi012jkl345mno678pqr901",
46
+ from_project_id="7x8y9z0a-1b2c-3d4e-5f6g-7h8i9j0k1l2m",
47
+ from_instance="https://api.test.example.ai",
48
+ to_api_key="dest_project_key_789stu012vwx345yz678abc901def234ghi567",
49
+ to_project_id="3c4d5e6f-7g8h-9i0j-1k2l-3m4n5o6p7q8r",
50
+ to_instance="https://api.prod.example.ai",
51
+ agent_ids=None # None means "all agents"
52
+ )
53
+
54
+ result = strategy.migrate()
55
+ print(f"Migrated all {len(result['migrated_agents'])} agents")
56
+
57
+ return result
58
+
59
+
60
+ def example_custom_filtered_migration():
61
+ """
62
+ Create a custom migration that only migrates agents with specific tags
63
+ or matching certain criteria.
64
+ """
65
+ from pygeai.lab.managers import AILabManager
66
+
67
+ # Initialize managers for source and destination
68
+ source_lab = AILabManager(
69
+ api_key="source_project_key_123abc456def789ghi012jkl345mno678pqr901",
70
+ project_id="7x8y9z0a-1b2c-3d4e-5f6g-7h8i9j0k1l2m",
71
+ instance="https://api.test.example.ai"
72
+ )
73
+
74
+ # Get all agents and filter
75
+ all_agents = source_lab.get_agent_list()
76
+
77
+ # Custom filter: only migrate agents with "production" in their name
78
+ filtered_agent_ids = [
79
+ agent.id for agent in all_agents.agents
80
+ if "production" in agent.name.lower()
81
+ ]
82
+
83
+ print(f"Found {len(filtered_agent_ids)} agents matching filter")
84
+
85
+ # Now migrate only the filtered agents
86
+ strategy = AgentMigrationStrategy(
87
+ from_api_key="source_project_key_123abc456def789ghi012jkl345mno678pqr901",
88
+ from_project_id="7x8y9z0a-1b2c-3d4e-5f6g-7h8i9j0k1l2m",
89
+ from_instance="https://api.test.example.ai",
90
+ to_api_key="dest_project_key_789stu012vwx345yz678abc901def234ghi567",
91
+ to_project_id="3c4d5e6f-7g8h-9i0j-1k2l-3m4n5o6p7q8r",
92
+ agent_ids=filtered_agent_ids
93
+ )
94
+
95
+ result = strategy.migrate()
96
+ print(f"Migrated {len(result['migrated_agents'])} filtered agents")
97
+
98
+ return result
99
+
100
+
101
+ if __name__ == "__main__":
102
+ print("Agent Migration Examples")
103
+ print("=" * 80)
104
+ print("\nThese examples demonstrate various agent migration patterns.")
105
+ print("Uncomment to run specific examples:\n")
106
+
107
+ # Uncomment to run specific examples:
108
+ # example_migrate_specific_agents()
109
+ # example_migrate_all_agents()
110
+ # example_custom_filtered_migration()
@@ -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 AI Project",
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pygeai
3
- Version: 0.6.0b7
3
+ Version: 0.6.0b10
4
4
  Summary: Software Development Kit to interact with Globant Enterprise AI.
5
5
  Author-email: Globant <geai-sdk@globant.com>
6
6
  License-Expression: MIT