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.
Files changed (227) hide show
  1. pygeai/_docs/source/conf.py +78 -6
  2. pygeai/_docs/source/content/api_reference/admin.rst +161 -0
  3. pygeai/_docs/source/content/api_reference/assistant.rst +326 -0
  4. pygeai/_docs/source/content/api_reference/auth.rst +379 -0
  5. pygeai/_docs/source/content/api_reference/embeddings.rst +31 -1
  6. pygeai/_docs/source/content/api_reference/evaluation.rst +590 -0
  7. pygeai/_docs/source/content/api_reference/feedback.rst +237 -0
  8. pygeai/_docs/source/content/api_reference/files.rst +592 -0
  9. pygeai/_docs/source/content/api_reference/gam.rst +401 -0
  10. pygeai/_docs/source/content/api_reference/health.rst +58 -0
  11. pygeai/_docs/source/content/api_reference/project.rst +20 -18
  12. pygeai/_docs/source/content/api_reference/proxy.rst +318 -0
  13. pygeai/_docs/source/content/api_reference/rerank.rst +94 -0
  14. pygeai/_docs/source/content/api_reference/secrets.rst +495 -0
  15. pygeai/_docs/source/content/api_reference/usage_limits.rst +390 -0
  16. pygeai/_docs/source/content/api_reference.rst +13 -1
  17. pygeai/_docs/source/content/debugger.rst +376 -83
  18. pygeai/_docs/source/content/migration.rst +528 -0
  19. pygeai/_docs/source/content/modules.rst +1 -1
  20. pygeai/_docs/source/index.rst +59 -7
  21. pygeai/_docs/source/pygeai.auth.rst +29 -0
  22. pygeai/_docs/source/pygeai.cli.commands.rst +16 -0
  23. pygeai/_docs/source/pygeai.cli.rst +8 -0
  24. pygeai/_docs/source/pygeai.core.utils.rst +16 -0
  25. pygeai/_docs/source/pygeai.rst +1 -0
  26. pygeai/_docs/source/pygeai.tests.auth.rst +21 -0
  27. pygeai/_docs/source/pygeai.tests.cli.commands.rst +16 -0
  28. pygeai/_docs/source/pygeai.tests.cli.rst +16 -0
  29. pygeai/_docs/source/pygeai.tests.core.base.rst +8 -0
  30. pygeai/_docs/source/pygeai.tests.core.embeddings.rst +16 -0
  31. pygeai/_docs/source/pygeai.tests.core.files.rst +8 -0
  32. pygeai/_docs/source/pygeai.tests.core.plugins.rst +21 -0
  33. pygeai/_docs/source/pygeai.tests.core.rst +1 -0
  34. pygeai/_docs/source/pygeai.tests.evaluation.dataset.rst +21 -0
  35. pygeai/_docs/source/pygeai.tests.evaluation.plan.rst +21 -0
  36. pygeai/_docs/source/pygeai.tests.evaluation.result.rst +21 -0
  37. pygeai/_docs/source/pygeai.tests.evaluation.rst +20 -0
  38. pygeai/_docs/source/pygeai.tests.integration.lab.processes.rst +8 -0
  39. pygeai/_docs/source/pygeai.tests.organization.rst +8 -0
  40. pygeai/_docs/source/pygeai.tests.rst +2 -0
  41. pygeai/_docs/source/pygeai.tests.snippets.auth.rst +10 -0
  42. pygeai/_docs/source/pygeai.tests.snippets.chat.rst +40 -0
  43. pygeai/_docs/source/pygeai.tests.snippets.dbg.rst +45 -0
  44. pygeai/_docs/source/pygeai.tests.snippets.embeddings.rst +40 -0
  45. pygeai/_docs/source/pygeai.tests.snippets.evaluation.dataset.rst +197 -0
  46. pygeai/_docs/source/pygeai.tests.snippets.evaluation.plan.rst +133 -0
  47. pygeai/_docs/source/pygeai.tests.snippets.evaluation.result.rst +37 -0
  48. pygeai/_docs/source/pygeai.tests.snippets.evaluation.rst +10 -0
  49. pygeai/_docs/source/pygeai.tests.snippets.organization.rst +40 -0
  50. pygeai/_docs/source/pygeai.tests.snippets.rst +2 -0
  51. pygeai/admin/clients.py +12 -32
  52. pygeai/assistant/clients.py +16 -44
  53. pygeai/assistant/data/clients.py +1 -0
  54. pygeai/assistant/data_analyst/clients.py +6 -13
  55. pygeai/assistant/rag/clients.py +24 -67
  56. pygeai/auth/clients.py +88 -14
  57. pygeai/auth/endpoints.py +4 -0
  58. pygeai/chat/clients.py +192 -25
  59. pygeai/chat/endpoints.py +2 -1
  60. pygeai/cli/commands/auth.py +178 -2
  61. pygeai/cli/commands/chat.py +227 -1
  62. pygeai/cli/commands/embeddings.py +56 -8
  63. pygeai/cli/commands/lab/ai_lab.py +0 -2
  64. pygeai/cli/commands/migrate.py +994 -434
  65. pygeai/cli/commands/organization.py +241 -0
  66. pygeai/cli/error_handler.py +116 -0
  67. pygeai/cli/geai.py +28 -10
  68. pygeai/cli/parsers.py +8 -2
  69. pygeai/core/base/clients.py +4 -1
  70. pygeai/core/common/exceptions.py +11 -10
  71. pygeai/core/embeddings/__init__.py +19 -0
  72. pygeai/core/embeddings/clients.py +20 -9
  73. pygeai/core/embeddings/mappers.py +16 -2
  74. pygeai/core/embeddings/responses.py +9 -2
  75. pygeai/core/feedback/clients.py +4 -8
  76. pygeai/core/files/clients.py +10 -25
  77. pygeai/core/files/managers.py +42 -0
  78. pygeai/core/llm/clients.py +11 -26
  79. pygeai/core/models.py +107 -0
  80. pygeai/core/plugins/clients.py +4 -7
  81. pygeai/core/rerank/clients.py +4 -8
  82. pygeai/core/secrets/clients.py +14 -37
  83. pygeai/core/services/rest.py +1 -1
  84. pygeai/core/utils/parsers.py +32 -0
  85. pygeai/core/utils/validators.py +10 -0
  86. pygeai/dbg/__init__.py +3 -0
  87. pygeai/dbg/debugger.py +565 -70
  88. pygeai/evaluation/clients.py +2 -1
  89. pygeai/evaluation/dataset/clients.py +46 -44
  90. pygeai/evaluation/plan/clients.py +28 -26
  91. pygeai/evaluation/result/clients.py +38 -5
  92. pygeai/gam/clients.py +10 -25
  93. pygeai/health/clients.py +4 -7
  94. pygeai/lab/agents/clients.py +21 -54
  95. pygeai/lab/agents/endpoints.py +2 -0
  96. pygeai/lab/clients.py +1 -0
  97. pygeai/lab/models.py +3 -3
  98. pygeai/lab/processes/clients.py +45 -127
  99. pygeai/lab/strategies/clients.py +11 -25
  100. pygeai/lab/tools/clients.py +23 -67
  101. pygeai/lab/tools/endpoints.py +3 -0
  102. pygeai/migration/__init__.py +31 -0
  103. pygeai/migration/strategies.py +404 -155
  104. pygeai/migration/tools.py +170 -3
  105. pygeai/organization/clients.py +135 -51
  106. pygeai/organization/endpoints.py +6 -1
  107. pygeai/organization/limits/clients.py +32 -91
  108. pygeai/organization/managers.py +157 -1
  109. pygeai/organization/mappers.py +76 -2
  110. pygeai/organization/responses.py +25 -1
  111. pygeai/proxy/clients.py +4 -1
  112. pygeai/tests/admin/test_clients.py +16 -11
  113. pygeai/tests/assistants/rag/test_clients.py +35 -23
  114. pygeai/tests/assistants/test_clients.py +22 -15
  115. pygeai/tests/auth/test_clients.py +191 -7
  116. pygeai/tests/chat/test_clients.py +211 -1
  117. pygeai/tests/cli/commands/test_embeddings.py +32 -9
  118. pygeai/tests/cli/commands/test_evaluation.py +7 -0
  119. pygeai/tests/cli/commands/test_migrate.py +112 -243
  120. pygeai/tests/cli/test_error_handler.py +225 -0
  121. pygeai/tests/cli/test_geai_driver.py +154 -0
  122. pygeai/tests/cli/test_parsers.py +5 -5
  123. pygeai/tests/core/embeddings/test_clients.py +144 -0
  124. pygeai/tests/core/embeddings/test_managers.py +171 -0
  125. pygeai/tests/core/embeddings/test_mappers.py +142 -0
  126. pygeai/tests/core/feedback/test_clients.py +2 -0
  127. pygeai/tests/core/files/test_clients.py +1 -0
  128. pygeai/tests/core/llm/test_clients.py +14 -9
  129. pygeai/tests/core/plugins/test_clients.py +5 -3
  130. pygeai/tests/core/rerank/test_clients.py +1 -0
  131. pygeai/tests/core/secrets/test_clients.py +19 -13
  132. pygeai/tests/dbg/test_debugger.py +453 -75
  133. pygeai/tests/evaluation/dataset/test_clients.py +3 -1
  134. pygeai/tests/evaluation/plan/test_clients.py +4 -2
  135. pygeai/tests/evaluation/result/test_clients.py +7 -5
  136. pygeai/tests/gam/test_clients.py +1 -1
  137. pygeai/tests/health/test_clients.py +1 -0
  138. pygeai/tests/lab/agents/test_clients.py +9 -0
  139. pygeai/tests/lab/processes/test_clients.py +36 -0
  140. pygeai/tests/lab/processes/test_mappers.py +3 -0
  141. pygeai/tests/lab/strategies/test_clients.py +14 -9
  142. pygeai/tests/migration/test_strategies.py +45 -218
  143. pygeai/tests/migration/test_tools.py +133 -9
  144. pygeai/tests/organization/limits/test_clients.py +17 -0
  145. pygeai/tests/organization/test_clients.py +206 -1
  146. pygeai/tests/organization/test_managers.py +122 -1
  147. pygeai/tests/proxy/test_clients.py +2 -0
  148. pygeai/tests/proxy/test_integration.py +1 -0
  149. pygeai/tests/snippets/auth/__init__.py +0 -0
  150. pygeai/tests/snippets/chat/chat_completion_with_reasoning_effort.py +18 -0
  151. pygeai/tests/snippets/chat/get_response.py +15 -0
  152. pygeai/tests/snippets/chat/get_response_streaming.py +20 -0
  153. pygeai/tests/snippets/chat/get_response_with_files.py +16 -0
  154. pygeai/tests/snippets/chat/get_response_with_tools.py +36 -0
  155. pygeai/tests/snippets/dbg/__init__.py +0 -0
  156. pygeai/tests/snippets/dbg/basic_debugging.py +32 -0
  157. pygeai/tests/snippets/dbg/breakpoint_management.py +48 -0
  158. pygeai/tests/snippets/dbg/stack_navigation.py +45 -0
  159. pygeai/tests/snippets/dbg/stepping_example.py +40 -0
  160. pygeai/tests/snippets/embeddings/cache_example.py +31 -0
  161. pygeai/tests/snippets/embeddings/cohere_example.py +41 -0
  162. pygeai/tests/snippets/embeddings/openai_base64_example.py +27 -0
  163. pygeai/tests/snippets/embeddings/openai_example.py +30 -0
  164. pygeai/tests/snippets/embeddings/similarity_example.py +42 -0
  165. pygeai/tests/snippets/evaluation/dataset/__init__.py +0 -0
  166. pygeai/tests/snippets/evaluation/dataset/complete_workflow_example.py +195 -0
  167. pygeai/tests/snippets/evaluation/dataset/create_dataset.py +26 -0
  168. pygeai/tests/snippets/evaluation/dataset/create_dataset_from_file.py +11 -0
  169. pygeai/tests/snippets/evaluation/dataset/create_dataset_row.py +17 -0
  170. pygeai/tests/snippets/evaluation/dataset/create_expected_source.py +18 -0
  171. pygeai/tests/snippets/evaluation/dataset/create_filter_variable.py +19 -0
  172. pygeai/tests/snippets/evaluation/dataset/delete_dataset.py +9 -0
  173. pygeai/tests/snippets/evaluation/dataset/delete_dataset_row.py +10 -0
  174. pygeai/tests/snippets/evaluation/dataset/delete_expected_source.py +15 -0
  175. pygeai/tests/snippets/evaluation/dataset/delete_filter_variable.py +15 -0
  176. pygeai/tests/snippets/evaluation/dataset/get_dataset.py +9 -0
  177. pygeai/tests/snippets/evaluation/dataset/get_dataset_row.py +10 -0
  178. pygeai/tests/snippets/evaluation/dataset/get_expected_source.py +15 -0
  179. pygeai/tests/snippets/evaluation/dataset/get_filter_variable.py +15 -0
  180. pygeai/tests/snippets/evaluation/dataset/list_dataset_rows.py +9 -0
  181. pygeai/tests/snippets/evaluation/dataset/list_datasets.py +6 -0
  182. pygeai/tests/snippets/evaluation/dataset/list_expected_sources.py +10 -0
  183. pygeai/tests/snippets/evaluation/dataset/list_filter_variables.py +10 -0
  184. pygeai/tests/snippets/evaluation/dataset/update_dataset.py +15 -0
  185. pygeai/tests/snippets/evaluation/dataset/update_dataset_row.py +20 -0
  186. pygeai/tests/snippets/evaluation/dataset/update_expected_source.py +18 -0
  187. pygeai/tests/snippets/evaluation/dataset/update_filter_variable.py +19 -0
  188. pygeai/tests/snippets/evaluation/dataset/upload_dataset_rows_file.py +10 -0
  189. pygeai/tests/snippets/evaluation/plan/__init__.py +0 -0
  190. pygeai/tests/snippets/evaluation/plan/add_plan_system_metric.py +13 -0
  191. pygeai/tests/snippets/evaluation/plan/complete_workflow_example.py +136 -0
  192. pygeai/tests/snippets/evaluation/plan/create_evaluation_plan.py +24 -0
  193. pygeai/tests/snippets/evaluation/plan/create_rag_evaluation_plan.py +22 -0
  194. pygeai/tests/snippets/evaluation/plan/delete_evaluation_plan.py +9 -0
  195. pygeai/tests/snippets/evaluation/plan/delete_plan_system_metric.py +13 -0
  196. pygeai/tests/snippets/evaluation/plan/execute_evaluation_plan.py +11 -0
  197. pygeai/tests/snippets/evaluation/plan/get_evaluation_plan.py +9 -0
  198. pygeai/tests/snippets/evaluation/plan/get_plan_system_metric.py +13 -0
  199. pygeai/tests/snippets/evaluation/plan/get_system_metric.py +9 -0
  200. pygeai/tests/snippets/evaluation/plan/list_evaluation_plans.py +7 -0
  201. pygeai/tests/snippets/evaluation/plan/list_plan_system_metrics.py +9 -0
  202. pygeai/tests/snippets/evaluation/plan/list_system_metrics.py +7 -0
  203. pygeai/tests/snippets/evaluation/plan/update_evaluation_plan.py +22 -0
  204. pygeai/tests/snippets/evaluation/plan/update_plan_system_metric.py +14 -0
  205. pygeai/tests/snippets/evaluation/result/__init__.py +0 -0
  206. pygeai/tests/snippets/evaluation/result/complete_workflow_example.py +150 -0
  207. pygeai/tests/snippets/evaluation/result/get_evaluation_result.py +26 -0
  208. pygeai/tests/snippets/evaluation/result/list_evaluation_results.py +17 -0
  209. pygeai/tests/snippets/migrate/__init__.py +45 -0
  210. pygeai/tests/snippets/migrate/agent_migration.py +110 -0
  211. pygeai/tests/snippets/migrate/assistant_migration.py +64 -0
  212. pygeai/tests/snippets/migrate/orchestrator_examples.py +179 -0
  213. pygeai/tests/snippets/migrate/process_migration.py +64 -0
  214. pygeai/tests/snippets/migrate/project_migration.py +42 -0
  215. pygeai/tests/snippets/migrate/tool_migration.py +64 -0
  216. pygeai/tests/snippets/organization/create_project.py +2 -2
  217. pygeai/tests/snippets/organization/get_memberships.py +12 -0
  218. pygeai/tests/snippets/organization/get_organization_members.py +6 -0
  219. pygeai/tests/snippets/organization/get_project_members.py +6 -0
  220. pygeai/tests/snippets/organization/get_project_memberships.py +12 -0
  221. pygeai/tests/snippets/organization/get_project_roles.py +6 -0
  222. {pygeai-0.6.0b6.dist-info → pygeai-0.6.0b10.dist-info}/METADATA +1 -1
  223. {pygeai-0.6.0b6.dist-info → pygeai-0.6.0b10.dist-info}/RECORD +227 -124
  224. {pygeai-0.6.0b6.dist-info → pygeai-0.6.0b10.dist-info}/WHEEL +0 -0
  225. {pygeai-0.6.0b6.dist-info → pygeai-0.6.0b10.dist-info}/entry_points.txt +0 -0
  226. {pygeai-0.6.0b6.dist-info → pygeai-0.6.0b10.dist-info}/licenses/LICENSE +0 -0
  227. {pygeai-0.6.0b6.dist-info → pygeai-0.6.0b10.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,136 @@
1
+ """
2
+ Complete Evaluation Plan API Workflow Example
3
+
4
+ This example demonstrates a full workflow using the Evaluation Plan API:
5
+ 1. Query available system metrics
6
+ 2. Create an evaluation plan
7
+ 3. Add system metrics
8
+ 4. Update the plan
9
+ 5. Execute the plan
10
+ 6. Cleanup
11
+ """
12
+
13
+ from pygeai.evaluation.plan.clients import EvaluationPlanClient
14
+
15
+
16
+ def main():
17
+ # Initialize client
18
+ client = EvaluationPlanClient()
19
+
20
+ print("="*60)
21
+ print("Evaluation Plan API Complete Workflow Example")
22
+ print("="*60)
23
+
24
+ # Step 1: List available system metrics
25
+ print("\n[1/7] Listing available system metrics...")
26
+ metrics = client.list_system_metrics()
27
+ print(f"✓ Available metrics: {metrics}")
28
+
29
+ # Get details of a specific metric
30
+ if metrics and 'systemMetrics' in metrics and len(metrics['systemMetrics']) > 0:
31
+ first_metric_id = metrics['systemMetrics'][0].get('systemMetricId')
32
+ metric_details = client.get_system_metric(system_metric_id=first_metric_id)
33
+ print(f"✓ Sample metric details: {metric_details}")
34
+
35
+ # Step 2: Create an evaluation plan
36
+ print("\n[2/7] Creating evaluation plan...")
37
+ plan = client.create_evaluation_plan(
38
+ name="AI Assistant Performance Test",
39
+ type="TextPromptAssistant",
40
+ assistant_id="your-assistant-id",
41
+ assistant_name="Test Assistant",
42
+ assistant_revision="1.0",
43
+ dataset_id="your-dataset-id",
44
+ system_metrics=[
45
+ {
46
+ "systemMetricId": "accuracy",
47
+ "systemMetricWeight": 0.6
48
+ },
49
+ {
50
+ "systemMetricId": "fluency",
51
+ "systemMetricWeight": 0.4
52
+ }
53
+ ]
54
+ )
55
+ plan_id = plan.get('evaluationPlanId')
56
+ print(f"✓ Created evaluation plan: {plan_id}")
57
+
58
+ # Step 3: Get the plan details
59
+ print("\n[3/7] Retrieving plan details...")
60
+ plan_details = client.get_evaluation_plan(evaluation_plan_id=plan_id)
61
+ print(f"✓ Plan name: {plan_details.get('evaluationPlanName')}")
62
+ print(f"✓ Plan type: {plan_details.get('evaluationPlanType')}")
63
+ print(f"✓ Number of metrics: {len(plan_details.get('systemMetrics', []))}")
64
+
65
+ # Step 4: List plan's system metrics
66
+ print("\n[4/7] Listing plan's system metrics...")
67
+ plan_metrics = client.list_evaluation_plan_system_metrics(evaluation_plan_id=plan_id)
68
+ print(f"✓ Plan metrics: {plan_metrics}")
69
+
70
+ # Step 5: Add a new metric to the plan
71
+ print("\n[5/7] Adding new system metric to plan...")
72
+ new_metric = client.add_evaluation_plan_system_metric(
73
+ evaluation_plan_id=plan_id,
74
+ system_metric_id="relevance",
75
+ system_metric_weight=0.5
76
+ )
77
+ print(f"✓ Added metric: {new_metric}")
78
+
79
+ # Step 6: Update a metric's weight
80
+ print("\n[6/7] Updating metric weight...")
81
+ updated_metric = client.update_evaluation_plan_system_metric(
82
+ evaluation_plan_id=plan_id,
83
+ system_metric_id="accuracy",
84
+ system_metric_weight=0.8
85
+ )
86
+ print(f"✓ Updated metric weight")
87
+
88
+ # Get specific metric details
89
+ metric_detail = client.get_evaluation_plan_system_metric(
90
+ evaluation_plan_id=plan_id,
91
+ system_metric_id="accuracy"
92
+ )
93
+ print(f"✓ Metric details: {metric_detail}")
94
+
95
+ # Step 7: Update the plan itself
96
+ print("\n[7/7] Updating evaluation plan...")
97
+ updated_plan = client.update_evaluation_plan(
98
+ evaluation_plan_id=plan_id,
99
+ name="Updated Performance Test",
100
+ assistant_revision="2.0"
101
+ )
102
+ print(f"✓ Updated plan")
103
+
104
+ # Execute the evaluation plan
105
+ print("\n[EXECUTE] Running evaluation plan...")
106
+ execution = client.execute_evaluation_plan(evaluation_plan_id=plan_id)
107
+ print(f"✓ Execution started")
108
+ print(f" Execution ID: {execution.get('executionId')}")
109
+ print(f" Status: {execution.get('status')}")
110
+
111
+ # Cleanup
112
+ print("\n[CLEANUP] Cleaning up...")
113
+
114
+ # Delete metrics
115
+ client.delete_evaluation_plan_system_metric(
116
+ evaluation_plan_id=plan_id,
117
+ system_metric_id="relevance"
118
+ )
119
+ print(f"✓ Deleted added metric")
120
+
121
+ # Delete the plan
122
+ client.delete_evaluation_plan(evaluation_plan_id=plan_id)
123
+ print(f"✓ Deleted evaluation plan")
124
+
125
+ print("\n" + "="*60)
126
+ print("Workflow completed successfully!")
127
+ print("="*60)
128
+
129
+
130
+ if __name__ == "__main__":
131
+ try:
132
+ main()
133
+ except Exception as e:
134
+ print(f"\n❌ Error occurred: {e}")
135
+ import traceback
136
+ traceback.print_exc()
@@ -0,0 +1,24 @@
1
+ from pygeai.evaluation.plan.clients import EvaluationPlanClient
2
+
3
+ client = EvaluationPlanClient()
4
+
5
+ response = client.create_evaluation_plan(
6
+ name="My Evaluation Plan",
7
+ type="TextPromptAssistant",
8
+ assistant_id="your-assistant-id",
9
+ assistant_name="My Assistant",
10
+ assistant_revision="1.0",
11
+ dataset_id="your-dataset-id",
12
+ system_metrics=[
13
+ {
14
+ "systemMetricId": "metric-1",
15
+ "systemMetricWeight": 0.6
16
+ },
17
+ {
18
+ "systemMetricId": "metric-2",
19
+ "systemMetricWeight": 0.4
20
+ }
21
+ ]
22
+ )
23
+
24
+ print(f"Created evaluation plan: {response}")
@@ -0,0 +1,22 @@
1
+ from pygeai.evaluation.plan.clients import EvaluationPlanClient
2
+
3
+ client = EvaluationPlanClient()
4
+
5
+ response = client.create_evaluation_plan(
6
+ name="RAG Assistant Evaluation",
7
+ type="RAG Assistant",
8
+ profile_name="My RAG Profile",
9
+ dataset_id="your-dataset-id",
10
+ system_metrics=[
11
+ {
12
+ "systemMetricId": "accuracy",
13
+ "systemMetricWeight": 0.7
14
+ },
15
+ {
16
+ "systemMetricId": "fluency",
17
+ "systemMetricWeight": 0.3
18
+ }
19
+ ]
20
+ )
21
+
22
+ print(f"Created RAG evaluation plan: {response}")
@@ -0,0 +1,9 @@
1
+ from pygeai.evaluation.plan.clients import EvaluationPlanClient
2
+
3
+ client = EvaluationPlanClient()
4
+
5
+ evaluation_plan_id = "your-evaluation-plan-id"
6
+
7
+ response = client.delete_evaluation_plan(evaluation_plan_id=evaluation_plan_id)
8
+
9
+ print(f"Deleted evaluation plan: {response}")
@@ -0,0 +1,13 @@
1
+ from pygeai.evaluation.plan.clients import EvaluationPlanClient
2
+
3
+ client = EvaluationPlanClient()
4
+
5
+ evaluation_plan_id = "your-evaluation-plan-id"
6
+ system_metric_id = "your-metric-id"
7
+
8
+ response = client.delete_evaluation_plan_system_metric(
9
+ evaluation_plan_id=evaluation_plan_id,
10
+ system_metric_id=system_metric_id
11
+ )
12
+
13
+ print(f"Deleted system metric: {response}")
@@ -0,0 +1,11 @@
1
+ from pygeai.evaluation.plan.clients import EvaluationPlanClient
2
+
3
+ client = EvaluationPlanClient()
4
+
5
+ evaluation_plan_id = "your-evaluation-plan-id"
6
+
7
+ response = client.execute_evaluation_plan(evaluation_plan_id=evaluation_plan_id)
8
+
9
+ print(f"Execution started: {response}")
10
+ print(f"Execution ID: {response.get('executionId')}")
11
+ print(f"Status: {response.get('status')}")
@@ -0,0 +1,9 @@
1
+ from pygeai.evaluation.plan.clients import EvaluationPlanClient
2
+
3
+ client = EvaluationPlanClient()
4
+
5
+ evaluation_plan_id = "your-evaluation-plan-id"
6
+
7
+ response = client.get_evaluation_plan(evaluation_plan_id=evaluation_plan_id)
8
+
9
+ print(f"Evaluation plan: {response}")
@@ -0,0 +1,13 @@
1
+ from pygeai.evaluation.plan.clients import EvaluationPlanClient
2
+
3
+ client = EvaluationPlanClient()
4
+
5
+ evaluation_plan_id = "your-evaluation-plan-id"
6
+ system_metric_id = "your-metric-id"
7
+
8
+ response = client.get_evaluation_plan_system_metric(
9
+ evaluation_plan_id=evaluation_plan_id,
10
+ system_metric_id=system_metric_id
11
+ )
12
+
13
+ print(f"Plan system metric: {response}")
@@ -0,0 +1,9 @@
1
+ from pygeai.evaluation.plan.clients import EvaluationPlanClient
2
+
3
+ client = EvaluationPlanClient()
4
+
5
+ system_metric_id = "your-metric-id"
6
+
7
+ response = client.get_system_metric(system_metric_id=system_metric_id)
8
+
9
+ print(f"System metric: {response}")
@@ -0,0 +1,7 @@
1
+ from pygeai.evaluation.plan.clients import EvaluationPlanClient
2
+
3
+ client = EvaluationPlanClient()
4
+
5
+ response = client.list_evaluation_plans()
6
+
7
+ print(f"Evaluation plans: {response}")
@@ -0,0 +1,9 @@
1
+ from pygeai.evaluation.plan.clients import EvaluationPlanClient
2
+
3
+ client = EvaluationPlanClient()
4
+
5
+ evaluation_plan_id = "your-evaluation-plan-id"
6
+
7
+ response = client.list_evaluation_plan_system_metrics(evaluation_plan_id=evaluation_plan_id)
8
+
9
+ print(f"Plan system metrics: {response}")
@@ -0,0 +1,7 @@
1
+ from pygeai.evaluation.plan.clients import EvaluationPlanClient
2
+
3
+ client = EvaluationPlanClient()
4
+
5
+ response = client.list_system_metrics()
6
+
7
+ print(f"Available system metrics: {response}")
@@ -0,0 +1,22 @@
1
+ from pygeai.evaluation.plan.clients import EvaluationPlanClient
2
+
3
+ client = EvaluationPlanClient()
4
+
5
+ evaluation_plan_id = "your-evaluation-plan-id"
6
+
7
+ response = client.update_evaluation_plan(
8
+ evaluation_plan_id=evaluation_plan_id,
9
+ name="Updated Plan Name",
10
+ system_metrics=[
11
+ {
12
+ "systemMetricId": "metric-1",
13
+ "systemMetricWeight": 0.8
14
+ },
15
+ {
16
+ "systemMetricId": "metric-2",
17
+ "systemMetricWeight": 0.2
18
+ }
19
+ ]
20
+ )
21
+
22
+ print(f"Updated evaluation plan: {response}")
@@ -0,0 +1,14 @@
1
+ from pygeai.evaluation.plan.clients import EvaluationPlanClient
2
+
3
+ client = EvaluationPlanClient()
4
+
5
+ evaluation_plan_id = "your-evaluation-plan-id"
6
+ system_metric_id = "your-metric-id"
7
+
8
+ response = client.update_evaluation_plan_system_metric(
9
+ evaluation_plan_id=evaluation_plan_id,
10
+ system_metric_id=system_metric_id,
11
+ system_metric_weight=0.9
12
+ )
13
+
14
+ print(f"Updated system metric: {response}")
File without changes
@@ -0,0 +1,150 @@
1
+ """
2
+ Complete Evaluation Result API Workflow Example
3
+
4
+ This example demonstrates how to retrieve and analyze evaluation results:
5
+ 1. List all results for a plan
6
+ 2. Get detailed results for each
7
+ 3. Analyze performance metrics
8
+ 4. Extract insights
9
+
10
+ Note: This is a read-only API. Results are created by executing evaluation plans.
11
+ """
12
+
13
+ from pygeai.evaluation.result.clients import EvaluationResultClient
14
+
15
+
16
+ def main():
17
+ # Initialize client
18
+ client = EvaluationResultClient()
19
+
20
+ print("="*70)
21
+ print("Evaluation Result API Complete Workflow Example")
22
+ print("="*70)
23
+
24
+ # Step 1: List all results for an evaluation plan
25
+ print("\n[1/4] Listing evaluation results for a plan...")
26
+ evaluation_plan_id = "your-evaluation-plan-id"
27
+
28
+ results = client.list_evaluation_results(evaluation_plan_id=evaluation_plan_id)
29
+
30
+ if isinstance(results, list):
31
+ print(f"✓ Found {len(results)} evaluation results")
32
+ else:
33
+ print(f"✓ Results: {results}")
34
+ results = []
35
+
36
+ # Step 2: Display summary of all results
37
+ print("\n[2/4] Summary of all results:")
38
+ print("-" * 70)
39
+
40
+ total_cost = 0
41
+ total_duration = 0
42
+ status_counts = {}
43
+
44
+ for i, result in enumerate(results, 1):
45
+ result_id = result.get('evaluationResultId', 'Unknown')
46
+ status = result.get('evaluationResultStatus', 'Unknown')
47
+ cost = result.get('evaluationResultCost', 0)
48
+ duration = result.get('evaluationResultDuration', 0)
49
+
50
+ print(f"\n{i}. Result ID: {result_id}")
51
+ print(f" Status: {status}")
52
+ print(f" Cost: ${cost}")
53
+ print(f" Duration: {duration}ms")
54
+ print(f" Model: {result.get('evaluationResultModelName', 'N/A')}")
55
+ print(f" Provider: {result.get('evaluationResultProviderName', 'N/A')}")
56
+
57
+ # Aggregate metrics
58
+ total_cost += cost
59
+ total_duration += duration
60
+ status_counts[status] = status_counts.get(status, 0) + 1
61
+
62
+ # Step 3: Get detailed results for the first result
63
+ if results:
64
+ print("\n[3/4] Getting detailed results for first evaluation...")
65
+ first_result_id = results[0].get('evaluationResultId')
66
+
67
+ detailed_result = client.get_evaluation_result(
68
+ evaluation_result_id=first_result_id
69
+ )
70
+
71
+ print(f"✓ Retrieved detailed result: {detailed_result.get('evaluationResultId')}")
72
+
73
+ # Display row-level details
74
+ rows = detailed_result.get('rows', [])
75
+ print(f"\n Row-level results: {len(rows)} rows")
76
+
77
+ successful_rows = 0
78
+ failed_rows = 0
79
+ row_costs = []
80
+
81
+ for row in rows:
82
+ row_status = row.get('evaluationResultRowStatus', 'Unknown')
83
+ row_cost = row.get('evaluationResultRowCost', 0)
84
+
85
+ if row_status == 'completed' or row_status == 'success':
86
+ successful_rows += 1
87
+ else:
88
+ failed_rows += 1
89
+
90
+ row_costs.append(row_cost)
91
+
92
+ print(f" Successful rows: {successful_rows}")
93
+ print(f" Failed rows: {failed_rows}")
94
+
95
+ if row_costs:
96
+ avg_row_cost = sum(row_costs) / len(row_costs)
97
+ print(f" Average row cost: ${avg_row_cost:.4f}")
98
+
99
+ # Show sample row
100
+ if rows:
101
+ print(f"\n Sample Row:")
102
+ sample_row = rows[0]
103
+ print(f" Dataset Row ID: {sample_row.get('dataSetRowId')}")
104
+ print(f" Status: {sample_row.get('evaluationResultRowStatus')}")
105
+ print(f" Cost: ${sample_row.get('evaluationResultRowCost')}")
106
+ print(f" Start: {sample_row.get('evaluationResultRowStartDate')}")
107
+ print(f" End: {sample_row.get('evaluationResultRowEndDate')}")
108
+
109
+ output = sample_row.get('evaluationResultRowOutput', '')
110
+ if output:
111
+ print(f" Output (first 200 chars):")
112
+ print(f" {output[:200]}...")
113
+
114
+ # Step 4: Display aggregated analytics
115
+ print("\n[4/4] Aggregated Analytics:")
116
+ print("-" * 70)
117
+ print(f"Total Evaluations: {len(results)}")
118
+ print(f"Total Cost: ${total_cost:.2f}")
119
+ print(f"Total Duration: {total_duration}ms ({total_duration/1000:.2f}s)")
120
+
121
+ if results:
122
+ print(f"Average Cost per Evaluation: ${total_cost/len(results):.4f}")
123
+ print(f"Average Duration per Evaluation: {total_duration/len(results):.0f}ms")
124
+
125
+ print(f"\nStatus Distribution:")
126
+ for status, count in status_counts.items():
127
+ percentage = (count / len(results) * 100) if results else 0
128
+ print(f" {status}: {count} ({percentage:.1f}%)")
129
+
130
+ print("\n" + "="*70)
131
+ print("Workflow completed successfully!")
132
+ print("="*70)
133
+
134
+ # Important note about field names
135
+ print("\n⚠️ IMPORTANT NOTE:")
136
+ print("The API responses contain typos in some field names:")
137
+ print(" - evaluationResultAssitantRevision (missing 's' in Assistant)")
138
+ print(" - evaluationResultChunckCount (should be Chunk)")
139
+ print(" - evaluationResultChunckSize (should be Chunk)")
140
+ print(" - evaluationResultaMaxTokens (lowercase 'a')")
141
+ print("\nThese are API-level typos, not errors in our code.")
142
+
143
+
144
+ if __name__ == "__main__":
145
+ try:
146
+ main()
147
+ except Exception as e:
148
+ print(f"\n❌ Error occurred: {e}")
149
+ import traceback
150
+ traceback.print_exc()
@@ -0,0 +1,26 @@
1
+ from pygeai.evaluation.result.clients import EvaluationResultClient
2
+
3
+ client = EvaluationResultClient()
4
+
5
+ evaluation_result_id = "your-evaluation-result-id"
6
+
7
+ result = client.get_evaluation_result(evaluation_result_id=evaluation_result_id)
8
+
9
+ print(f"Evaluation Result: {result.get('evaluationResultId')}")
10
+ print(f"Status: {result.get('evaluationResultStatus')}")
11
+ print(f"Plan ID: {result.get('evaluationPlanId')}")
12
+ print(f"Dataset ID: {result.get('dataSetId')}")
13
+ print(f"Cost: ${result.get('evaluationResultCost')}")
14
+ print(f"Duration: {result.get('evaluationResultDuration')}ms")
15
+ print(f"Model: {result.get('evaluationResultModelName')}")
16
+ print(f"Provider: {result.get('evaluationResultProviderName')}")
17
+
18
+ # Row-level details
19
+ rows = result.get('rows', [])
20
+ print(f"\nRow-level results: {len(rows)} rows")
21
+
22
+ for row in rows:
23
+ print(f"\n Row ID: {row.get('dataSetRowId')}")
24
+ print(f" Status: {row.get('evaluationResultRowStatus')}")
25
+ print(f" Cost: ${row.get('evaluationResultRowCost')}")
26
+ print(f" Output: {row.get('evaluationResultRowOutput')[:100]}...")
@@ -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()