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,318 @@
1
+ Proxy
2
+ =====
3
+
4
+ The Proxy module enables tool proxying functionality, allowing external tools and services to be registered and made available to AI assistants. This creates a bridge between GEAI assistants and external APIs or custom functions.
5
+
6
+ This section covers:
7
+
8
+ * Registering tool proxies
9
+ * Submitting jobs to proxies
10
+ * Monitoring job execution
11
+ * Retrieving results
12
+
13
+ For each operation, you use the Low-Level Service Layer.
14
+
15
+ Overview
16
+ --------
17
+
18
+ The proxy system enables:
19
+
20
+ * **Tool Registration**: Register external tools with the system
21
+ * **Job Submission**: Submit work to registered tools
22
+ * **Async Execution**: Tools process jobs asynchronously
23
+ * **Result Retrieval**: Poll for and retrieve job results
24
+ * **Server Deployment**: Run proxy servers to handle tool execution
25
+
26
+ Architecture:
27
+
28
+ 1. Register tools with proxy
29
+ 2. Assistant requests tool execution
30
+ 3. Job submitted to proxy
31
+ 4. Proxy routes to appropriate tool/server
32
+ 5. Results returned to assistant
33
+
34
+ Tool Proxy Registration
35
+ -----------------------
36
+
37
+ Register a Proxy
38
+ ~~~~~~~~~~~~~~~~
39
+
40
+ .. code-block:: python
41
+
42
+ from pygeai.proxy.clients import ToolProxyData, ProxiedTool
43
+ import uuid
44
+
45
+ # Define a tool
46
+ tool = ProxiedTool(
47
+ name="weather_lookup",
48
+ description="Get current weather for a location",
49
+ server_name="weather-server",
50
+ input_schema={
51
+ "type": "object",
52
+ "properties": {
53
+ "location": {
54
+ "type": "string",
55
+ "description": "City name"
56
+ }
57
+ },
58
+ "required": ["location"]
59
+ }
60
+ )
61
+
62
+ # Create proxy registration
63
+ proxy_data = ToolProxyData(
64
+ id=uuid.uuid4(),
65
+ name="Weather Tools",
66
+ description="Weather information tools",
67
+ affinity=uuid.uuid4(),
68
+ tools=[tool]
69
+ )
70
+
71
+ # Register (implementation depends on proxy client setup)
72
+ # proxy_client.register(proxy_data)
73
+
74
+ **Components:**
75
+
76
+ * ``ToolProxyData``: Proxy registration information
77
+ * ``ProxiedTool``: Individual tool definition
78
+ * ``input_schema``: JSON Schema for tool parameters
79
+
80
+ Job Management
81
+ --------------
82
+
83
+ Submit Job
84
+ ~~~~~~~~~~
85
+
86
+ .. code-block:: python
87
+
88
+ from pygeai.proxy.clients import ToolProxyJob
89
+
90
+ # Job submission (conceptual - actual implementation may vary)
91
+ job = {
92
+ "proxy_id": "proxy-uuid",
93
+ "tool_name": "weather_lookup",
94
+ "input": {
95
+ "location": "San Francisco"
96
+ }
97
+ }
98
+
99
+ # Submit job to proxy
100
+ # result = proxy_client.submit_job(job)
101
+
102
+
103
+ Check Job Status
104
+ ~~~~~~~~~~~~~~~~
105
+
106
+ .. code-block:: python
107
+
108
+ from pygeai.proxy.clients import ToolProxyJob
109
+
110
+ # Poll for job completion
111
+ job = ToolProxyJob(
112
+ id=uuid.UUID("job-uuid"),
113
+ proxy_id=uuid.UUID("proxy-uuid"),
114
+ proxy_status="active",
115
+ job_status="pending"
116
+ )
117
+
118
+ # Check status
119
+ # status = proxy_client.get_job_status(job.id)
120
+
121
+
122
+ Get Job Result
123
+ ~~~~~~~~~~~~~~
124
+
125
+ .. code-block:: python
126
+
127
+ from pygeai.proxy.clients import ToolProxyJobResult
128
+
129
+ # Retrieve completed job result
130
+ result = ToolProxyJobResult(
131
+ success=True,
132
+ job=job # ToolProxyJob instance
133
+ )
134
+
135
+ if result.success:
136
+ output = result.job.output
137
+ print(f"Result: {output}")
138
+
139
+
140
+ Proxy Server
141
+ ------------
142
+
143
+ The proxy module includes server functionality to handle tool execution:
144
+
145
+ .. code-block:: python
146
+
147
+ from pygeai.proxy.servers import ProxyServer
148
+ from pygeai.proxy.config import ProxyConfig
149
+
150
+ # Configure proxy server
151
+ config = ProxyConfig(
152
+ host="localhost",
153
+ port=8080,
154
+ # Additional configuration...
155
+ )
156
+
157
+ # Start server
158
+ server = ProxyServer(config)
159
+ server.start()
160
+
161
+ **Note:** Server deployment typically runs as a separate service.
162
+
163
+
164
+ Complete Example
165
+ ----------------
166
+
167
+ .. code-block:: python
168
+
169
+ from pygeai.proxy.clients import ToolProxyData, ProxiedTool
170
+ from pygeai.proxy.tool import ProxiedTool
171
+ import uuid
172
+
173
+ # Define tools
174
+ calculator_tool = ProxiedTool(
175
+ name="calculate",
176
+ description="Perform mathematical calculations",
177
+ server_name="calc-server",
178
+ input_schema={
179
+ "type": "object",
180
+ "properties": {
181
+ "expression": {"type": "string"},
182
+ "operation": {"type": "string", "enum": ["add", "subtract", "multiply", "divide"]}
183
+ }
184
+ }
185
+ )
186
+
187
+ database_tool = ProxiedTool(
188
+ name="query_db",
189
+ description="Query customer database",
190
+ server_name="db-server",
191
+ input_schema={
192
+ "type": "object",
193
+ "properties": {
194
+ "query": {"type": "string"},
195
+ "limit": {"type": "integer"}
196
+ }
197
+ }
198
+ )
199
+
200
+ # Create proxy with multiple tools
201
+ proxy = ToolProxyData(
202
+ id=uuid.uuid4(),
203
+ name="Business Tools",
204
+ description="Tools for business operations",
205
+ tools=[calculator_tool, database_tool]
206
+ )
207
+
208
+ print(f"Proxy configuration: {proxy.to_dict()}")
209
+
210
+
211
+ Tool Definition Schema
212
+ ----------------------
213
+
214
+ Required Fields
215
+ ~~~~~~~~~~~~~~~
216
+
217
+ * ``name``: Unique tool identifier
218
+ * ``description``: Human-readable description
219
+ * ``server_name``: Server handling this tool
220
+ * ``input_schema``: JSON Schema for parameters
221
+
222
+ Input Schema Format
223
+ ~~~~~~~~~~~~~~~~~~~
224
+
225
+ .. code-block:: python
226
+
227
+ input_schema = {
228
+ "type": "object",
229
+ "properties": {
230
+ "param1": {
231
+ "type": "string",
232
+ "description": "First parameter",
233
+ "enum": ["option1", "option2"] # Optional
234
+ },
235
+ "param2": {
236
+ "type": "integer",
237
+ "description": "Second parameter",
238
+ "minimum": 0, # Optional constraints
239
+ "maximum": 100
240
+ }
241
+ },
242
+ "required": ["param1"]
243
+ }
244
+
245
+
246
+ Best Practices
247
+ --------------
248
+
249
+ Tool Design
250
+ ~~~~~~~~~~~
251
+
252
+ * Use clear, descriptive tool names
253
+ * Provide detailed descriptions
254
+ * Define complete input schemas
255
+ * Include parameter descriptions
256
+ * Specify required vs optional parameters
257
+ * Add validation constraints
258
+
259
+ Security
260
+ ~~~~~~~~
261
+
262
+ * Validate all input parameters
263
+ * Sanitize user inputs
264
+ * Implement authentication
265
+ * Use HTTPS for communication
266
+ * Rate limit tool usage
267
+ * Log all tool executions
268
+
269
+ Error Handling
270
+ ~~~~~~~~~~~~~~
271
+
272
+ * Return clear error messages
273
+ * Include error codes
274
+ * Handle timeouts gracefully
275
+ * Implement retry logic
276
+ * Log failures for debugging
277
+
278
+ Performance
279
+ ~~~~~~~~~~~
280
+
281
+ * Optimize tool execution time
282
+ * Implement caching where appropriate
283
+ * Use async processing
284
+ * Monitor resource usage
285
+ * Scale servers based on load
286
+
287
+
288
+ Integration with Assistants
289
+ ----------------------------
290
+
291
+ Tools registered via proxy can be made available to assistants:
292
+
293
+ .. code-block:: python
294
+
295
+ # Register proxy with tools
296
+ # ...
297
+
298
+ # Configure assistant to use proxied tools
299
+ # (Specific integration depends on assistant configuration)
300
+
301
+ # Assistant can now call:
302
+ # "Get the weather in Tokyo"
303
+ # -> Routes to weather_lookup tool
304
+ # -> Returns weather data
305
+
306
+
307
+ Notes
308
+ -----
309
+
310
+ * Proxies enable extensibility of assistant capabilities
311
+ * Tools execute asynchronously
312
+ * Affinity groups related tools
313
+ * Public vs private tool visibility options
314
+ * Server handles actual tool execution
315
+ * Input schemas use JSON Schema specification
316
+ * Tool responses should be JSON-serializable
317
+
318
+ For detailed proxy architecture, see ``docs/geai-proxy/README.md``.
@@ -0,0 +1,94 @@
1
+ Reranking
2
+ =========
3
+
4
+ The Rerank module provides functionality to reorder document chunks based on their relevance to a query. This is particularly useful in retrieval-augmented generation (RAG) systems to prioritize the most relevant context.
5
+
6
+ This section covers:
7
+
8
+ * Reranking document chunks based on relevance
9
+ * Selecting top-N most relevant documents
10
+
11
+ For each operation, you have two implementation options:
12
+
13
+ * `Command Line`_
14
+ * `Low-Level Service Layer`_
15
+
16
+ .. note::
17
+ The Rerank module currently does not have a High-Level Service Layer (Manager class).
18
+
19
+
20
+ Rerank Chunks
21
+ ~~~~~~~~~~~~~
22
+
23
+ Reranks a list of document chunks based on their relevance to a given query.
24
+
25
+ Command Line
26
+ ^^^^^^^^^^^^
27
+
28
+ .. code-block:: shell
29
+
30
+ geai rerank rerank-chunks \
31
+ --query "What is machine learning?" \
32
+ --documents '["Machine learning is a subset of AI", "Python is a programming language", "Deep learning uses neural networks"]' \
33
+ --model "cohere/rerank-english-v3.0" \
34
+ --top-n 2
35
+
36
+ Using the alias:
37
+
38
+ .. code-block:: shell
39
+
40
+ geai rerank chunks \
41
+ -q "What is machine learning?" \
42
+ -d "Machine learning is a subset of AI" \
43
+ --top-n 2
44
+
45
+ Low-Level Service Layer
46
+ ^^^^^^^^^^^^^^^^^^^^^^^^
47
+
48
+ .. code-block:: python
49
+
50
+ from pygeai.core.rerank.clients import RerankClient
51
+
52
+ client = RerankClient()
53
+
54
+ query = "What is machine learning?"
55
+ documents = [
56
+ "Machine learning is a subset of AI",
57
+ "Python is a programming language",
58
+ "Deep learning uses neural networks"
59
+ ]
60
+
61
+ results = client.rerank_chunks(
62
+ query=query,
63
+ documents=documents,
64
+ model="cohere/rerank-english-v3.0",
65
+ top_n=2
66
+ )
67
+ print(results)
68
+
69
+ Example response:
70
+
71
+ .. code-block:: json
72
+
73
+ {
74
+ "results": [
75
+ {
76
+ "index": 0,
77
+ "document": "Machine learning is a subset of AI",
78
+ "relevance_score": 0.95
79
+ },
80
+ {
81
+ "index": 2,
82
+ "document": "Deep learning uses neural networks",
83
+ "relevance_score": 0.72
84
+ }
85
+ ]
86
+ }
87
+
88
+ Parameters
89
+ ^^^^^^^^^^
90
+
91
+ * **query** (required): The search query to rank documents against
92
+ * **documents** (required): List of document strings to rerank
93
+ * **model** (optional): The reranking model to use (default: "cohere/rerank-english-v3.0")
94
+ * **top_n** (optional): Number of top results to return (default: returns all)