letta-client 0.1.6__py3-none-any.whl → 0.1.9__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of letta-client might be problematic. Click here for more details.

Files changed (153) hide show
  1. letta/__init__.py +28 -27
  2. letta/agents/__init__.py +40 -29
  3. letta/agents/archival_memory/client.py +17 -17
  4. letta/agents/client.py +405 -1721
  5. letta/agents/context/client.py +5 -5
  6. letta/agents/core_memory/client.py +1080 -0
  7. letta/agents/memory_variables/__init__.py +5 -0
  8. letta/agents/{memory → memory_variables}/client.py +41 -40
  9. letta/agents/memory_variables/types/__init__.py +5 -0
  10. letta/agents/{types/agents_get_agent_variables_response.py → memory_variables/types/memory_variables_get_response.py} +3 -3
  11. letta/agents/messages/client.py +232 -17
  12. letta/agents/messages/types/letta_streaming_response.py +21 -16
  13. letta/agents/messages/types/messages_list_response_item.py +19 -14
  14. letta/agents/recall_memory/client.py +5 -5
  15. letta/agents/sources/client.py +5 -5
  16. letta/agents/templates/__init__.py +5 -0
  17. letta/agents/templates/client.py +578 -0
  18. letta/agents/templates/types/__init__.py +5 -0
  19. letta/agents/{types/agents_migrate_response.py → templates/types/templates_migrate_response.py} +3 -3
  20. letta/agents/tools/client.py +13 -13
  21. letta/agents/types/__init__.py +23 -37
  22. letta/agents/types/agents_search_request_combinator.py +5 -0
  23. letta/agents/types/{agents_search_deployed_agents_request_search_item.py → agents_search_request_search_item.py} +17 -20
  24. letta/agents/types/{agents_search_deployed_agents_request_search_item_name.py → agents_search_request_search_item_name.py} +4 -6
  25. letta/agents/types/agents_search_request_search_item_name_operator.py +5 -0
  26. letta/agents/types/agents_search_request_search_item_order_by.py +22 -0
  27. letta/agents/types/agents_search_request_search_item_order_by_direction.py +5 -0
  28. letta/agents/types/agents_search_request_search_item_order_by_value.py +5 -0
  29. letta/agents/types/{agents_search_deployed_agents_request_search_item_version.py → agents_search_request_search_item_version.py} +2 -2
  30. letta/blocks/client.py +25 -25
  31. letta/client.py +4 -0
  32. letta/core/__init__.py +4 -0
  33. letta/core/client_wrapper.py +1 -1
  34. letta/core/unchecked_base_model.py +305 -0
  35. letta/health/client.py +3 -3
  36. letta/jobs/client.py +17 -17
  37. letta/models/client.py +5 -5
  38. letta/providers/client.py +597 -0
  39. letta/sources/client.py +33 -33
  40. letta/sources/files/client.py +11 -11
  41. letta/sources/passages/client.py +5 -5
  42. letta/tools/client.py +77 -57
  43. letta/types/__init__.py +4 -0
  44. letta/types/action_model.py +2 -2
  45. letta/types/action_parameters_model.py +2 -2
  46. letta/types/action_response_model.py +2 -2
  47. letta/types/agent_environment_variable.py +2 -7
  48. letta/types/agent_state.py +5 -8
  49. letta/types/agent_type.py +1 -2
  50. letta/types/app_auth_scheme.py +2 -2
  51. letta/types/app_model.py +2 -2
  52. letta/types/archival_memory_summary.py +2 -2
  53. letta/types/assistant_file.py +2 -2
  54. letta/types/assistant_message_input.py +2 -2
  55. letta/types/assistant_message_output.py +2 -2
  56. letta/types/auth_request.py +2 -2
  57. letta/types/auth_response.py +2 -2
  58. letta/types/auth_scheme_field.py +2 -2
  59. letta/types/block.py +2 -7
  60. letta/types/block_update.py +2 -2
  61. letta/types/chat_completion_request.py +2 -2
  62. letta/types/chat_completion_response.py +2 -2
  63. letta/types/child_tool_rule.py +2 -2
  64. letta/types/choice.py +2 -2
  65. letta/types/conditional_tool_rule.py +2 -2
  66. letta/types/conflict_error_body.py +2 -2
  67. letta/types/context_window_overview.py +2 -2
  68. letta/types/create_assistant_file_request.py +2 -2
  69. letta/types/create_assistant_request.py +2 -2
  70. letta/types/create_block.py +2 -2
  71. letta/types/delete_assistant_file_response.py +2 -2
  72. letta/types/delete_assistant_response.py +2 -2
  73. letta/types/e_2_b_sandbox_config.py +2 -2
  74. letta/types/embedding_config.py +2 -2
  75. letta/types/file_metadata.py +2 -7
  76. letta/types/function_call_input.py +2 -2
  77. letta/types/function_call_output.py +2 -2
  78. letta/types/function_schema.py +2 -2
  79. letta/types/health.py +2 -2
  80. letta/types/http_validation_error.py +2 -2
  81. letta/types/init_tool_rule.py +2 -2
  82. letta/types/internal_server_error_body.py +2 -2
  83. letta/types/job.py +2 -7
  84. letta/types/letta_request.py +7 -2
  85. letta/types/letta_response.py +2 -2
  86. letta/types/letta_response_messages_item.py +19 -14
  87. letta/types/letta_schemas_letta_message_tool_call.py +2 -2
  88. letta/types/letta_schemas_message_message.py +2 -7
  89. letta/types/letta_schemas_openai_chat_completion_request_tool.py +2 -2
  90. letta/types/letta_schemas_openai_chat_completion_request_tool_call.py +2 -2
  91. letta/types/letta_schemas_openai_chat_completion_request_tool_call_function.py +2 -2
  92. letta/types/letta_schemas_openai_chat_completion_response_message.py +2 -2
  93. letta/types/letta_schemas_openai_chat_completion_response_tool_call.py +2 -2
  94. letta/types/letta_schemas_openai_chat_completions_tool_call_function.py +2 -2
  95. letta/types/letta_schemas_openai_chat_completions_tool_call_input.py +2 -2
  96. letta/types/letta_schemas_openai_chat_completions_tool_call_output.py +2 -2
  97. letta/types/letta_schemas_tool_tool.py +9 -8
  98. letta/types/letta_usage_statistics.py +2 -2
  99. letta/types/llm_config.py +2 -2
  100. letta/types/local_sandbox_config.py +2 -2
  101. letta/types/log_prob_token.py +2 -2
  102. letta/types/memory.py +2 -2
  103. letta/types/message_content_log_prob.py +2 -2
  104. letta/types/message_create.py +2 -2
  105. letta/types/not_found_error_body.py +2 -2
  106. letta/types/open_ai_assistant.py +2 -2
  107. letta/types/organization.py +2 -2
  108. letta/types/organization_create.py +2 -2
  109. letta/types/passage.py +2 -7
  110. letta/types/provider.py +38 -0
  111. letta/types/reasoning_message.py +2 -2
  112. letta/types/recall_memory_summary.py +2 -2
  113. letta/types/response_format.py +2 -2
  114. letta/types/sandbox_config.py +2 -7
  115. letta/types/sandbox_config_create.py +2 -2
  116. letta/types/sandbox_config_update.py +2 -2
  117. letta/types/sandbox_environment_variable.py +2 -7
  118. letta/types/sandbox_environment_variable_create.py +2 -2
  119. letta/types/sandbox_environment_variable_update.py +2 -2
  120. letta/types/source.py +2 -7
  121. letta/types/system_message_input.py +2 -2
  122. letta/types/system_message_output.py +2 -2
  123. letta/types/terminal_tool_rule.py +2 -2
  124. letta/types/tool_call_delta.py +2 -2
  125. letta/types/tool_call_function_output.py +2 -2
  126. letta/types/tool_call_message.py +2 -2
  127. letta/types/tool_create.py +2 -2
  128. letta/types/tool_function_choice.py +2 -2
  129. letta/types/tool_input.py +2 -2
  130. letta/types/tool_message.py +2 -2
  131. letta/types/tool_return_message.py +2 -2
  132. letta/types/tool_type.py +5 -0
  133. letta/types/usage_statistics.py +2 -2
  134. letta/types/user.py +2 -7
  135. letta/types/user_create.py +2 -7
  136. letta/types/user_message_input.py +2 -2
  137. letta/types/user_message_output.py +2 -2
  138. letta/types/user_update.py +2 -7
  139. letta/types/validation_error.py +2 -2
  140. {letta_client-0.1.6.dist-info → letta_client-0.1.9.dist-info}/METADATA +1 -1
  141. letta_client-0.1.9.dist-info/RECORD +200 -0
  142. letta/agents/memory/__init__.py +0 -5
  143. letta/agents/memory/messages/client.py +0 -147
  144. letta/agents/memory_blocks/client.py +0 -364
  145. letta/agents/types/agents_search_deployed_agents_request_combinator.py +0 -5
  146. letta/agents/types/agents_search_deployed_agents_request_search_item_name_operator.py +0 -7
  147. letta/agents/types/agents_search_deployed_agents_request_search_item_order_by.py +0 -26
  148. letta/agents/types/agents_search_deployed_agents_request_search_item_order_by_direction.py +0 -5
  149. letta/agents/types/agents_search_deployed_agents_request_search_item_order_by_value.py +0 -7
  150. letta_client-0.1.6.dist-info/RECORD +0 -193
  151. /letta/agents/{memory/messages → core_memory}/__init__.py +0 -0
  152. /letta/{agents/memory_blocks → providers}/__init__.py +0 -0
  153. {letta_client-0.1.6.dist-info → letta_client-0.1.9.dist-info}/WHEEL +0 -0
@@ -0,0 +1,597 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+ from ..core.client_wrapper import SyncClientWrapper
5
+ from ..core.request_options import RequestOptions
6
+ from ..types.provider import Provider
7
+ from ..core.unchecked_base_model import construct_type
8
+ from ..errors.unprocessable_entity_error import UnprocessableEntityError
9
+ from ..types.http_validation_error import HttpValidationError
10
+ from json.decoder import JSONDecodeError
11
+ from ..core.api_error import ApiError
12
+ from ..core.client_wrapper import AsyncClientWrapper
13
+
14
+ # this is used as the default value for optional parameters
15
+ OMIT = typing.cast(typing.Any, ...)
16
+
17
+
18
+ class ProvidersClient:
19
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
20
+ self._client_wrapper = client_wrapper
21
+
22
+ def list_providers(
23
+ self,
24
+ *,
25
+ cursor: typing.Optional[str] = None,
26
+ limit: typing.Optional[int] = None,
27
+ request_options: typing.Optional[RequestOptions] = None,
28
+ ) -> typing.List[Provider]:
29
+ """
30
+ Get a list of all custom providers in the database
31
+
32
+ Parameters
33
+ ----------
34
+ cursor : typing.Optional[str]
35
+
36
+ limit : typing.Optional[int]
37
+
38
+ request_options : typing.Optional[RequestOptions]
39
+ Request-specific configuration.
40
+
41
+ Returns
42
+ -------
43
+ typing.List[Provider]
44
+ Successful Response
45
+
46
+ Examples
47
+ --------
48
+ from letta import Letta
49
+
50
+ client = Letta(
51
+ token="YOUR_TOKEN",
52
+ )
53
+ client.providers.list_providers()
54
+ """
55
+ _response = self._client_wrapper.httpx_client.request(
56
+ "v1/providers/",
57
+ method="GET",
58
+ params={
59
+ "cursor": cursor,
60
+ "limit": limit,
61
+ },
62
+ request_options=request_options,
63
+ )
64
+ try:
65
+ if 200 <= _response.status_code < 300:
66
+ return typing.cast(
67
+ typing.List[Provider],
68
+ construct_type(
69
+ type_=typing.List[Provider], # type: ignore
70
+ object_=_response.json(),
71
+ ),
72
+ )
73
+ if _response.status_code == 422:
74
+ raise UnprocessableEntityError(
75
+ typing.cast(
76
+ HttpValidationError,
77
+ construct_type(
78
+ type_=HttpValidationError, # type: ignore
79
+ object_=_response.json(),
80
+ ),
81
+ )
82
+ )
83
+ _response_json = _response.json()
84
+ except JSONDecodeError:
85
+ raise ApiError(status_code=_response.status_code, body=_response.text)
86
+ raise ApiError(status_code=_response.status_code, body=_response_json)
87
+
88
+ def create_provider(
89
+ self, *, name: str, api_key: str, request_options: typing.Optional[RequestOptions] = None
90
+ ) -> Provider:
91
+ """
92
+ Create a new custom provider
93
+
94
+ Parameters
95
+ ----------
96
+ name : str
97
+ The name of the provider.
98
+
99
+ api_key : str
100
+ API key used for requests to the provider.
101
+
102
+ request_options : typing.Optional[RequestOptions]
103
+ Request-specific configuration.
104
+
105
+ Returns
106
+ -------
107
+ Provider
108
+ Successful Response
109
+
110
+ Examples
111
+ --------
112
+ from letta import Letta
113
+
114
+ client = Letta(
115
+ token="YOUR_TOKEN",
116
+ )
117
+ client.providers.create_provider(
118
+ name="name",
119
+ api_key="api_key",
120
+ )
121
+ """
122
+ _response = self._client_wrapper.httpx_client.request(
123
+ "v1/providers/",
124
+ method="POST",
125
+ json={
126
+ "name": name,
127
+ "api_key": api_key,
128
+ },
129
+ headers={
130
+ "content-type": "application/json",
131
+ },
132
+ request_options=request_options,
133
+ omit=OMIT,
134
+ )
135
+ try:
136
+ if 200 <= _response.status_code < 300:
137
+ return typing.cast(
138
+ Provider,
139
+ construct_type(
140
+ type_=Provider, # type: ignore
141
+ object_=_response.json(),
142
+ ),
143
+ )
144
+ if _response.status_code == 422:
145
+ raise UnprocessableEntityError(
146
+ typing.cast(
147
+ HttpValidationError,
148
+ construct_type(
149
+ type_=HttpValidationError, # type: ignore
150
+ object_=_response.json(),
151
+ ),
152
+ )
153
+ )
154
+ _response_json = _response.json()
155
+ except JSONDecodeError:
156
+ raise ApiError(status_code=_response.status_code, body=_response.text)
157
+ raise ApiError(status_code=_response.status_code, body=_response_json)
158
+
159
+ def update_provider(
160
+ self, *, id: str, api_key: str, request_options: typing.Optional[RequestOptions] = None
161
+ ) -> Provider:
162
+ """
163
+ Update an existing custom provider
164
+
165
+ Parameters
166
+ ----------
167
+ id : str
168
+ The id of the provider to update.
169
+
170
+ api_key : str
171
+ API key used for requests to the provider.
172
+
173
+ request_options : typing.Optional[RequestOptions]
174
+ Request-specific configuration.
175
+
176
+ Returns
177
+ -------
178
+ Provider
179
+ Successful Response
180
+
181
+ Examples
182
+ --------
183
+ from letta import Letta
184
+
185
+ client = Letta(
186
+ token="YOUR_TOKEN",
187
+ )
188
+ client.providers.update_provider(
189
+ id="id",
190
+ api_key="api_key",
191
+ )
192
+ """
193
+ _response = self._client_wrapper.httpx_client.request(
194
+ "v1/providers/",
195
+ method="PUT",
196
+ json={
197
+ "id": id,
198
+ "api_key": api_key,
199
+ },
200
+ headers={
201
+ "content-type": "application/json",
202
+ },
203
+ request_options=request_options,
204
+ omit=OMIT,
205
+ )
206
+ try:
207
+ if 200 <= _response.status_code < 300:
208
+ return typing.cast(
209
+ Provider,
210
+ construct_type(
211
+ type_=Provider, # type: ignore
212
+ object_=_response.json(),
213
+ ),
214
+ )
215
+ if _response.status_code == 422:
216
+ raise UnprocessableEntityError(
217
+ typing.cast(
218
+ HttpValidationError,
219
+ construct_type(
220
+ type_=HttpValidationError, # type: ignore
221
+ object_=_response.json(),
222
+ ),
223
+ )
224
+ )
225
+ _response_json = _response.json()
226
+ except JSONDecodeError:
227
+ raise ApiError(status_code=_response.status_code, body=_response.text)
228
+ raise ApiError(status_code=_response.status_code, body=_response_json)
229
+
230
+ def delete_provider(
231
+ self, *, provider_id: str, request_options: typing.Optional[RequestOptions] = None
232
+ ) -> typing.Optional[typing.Any]:
233
+ """
234
+ Delete an existing custom provider
235
+
236
+ Parameters
237
+ ----------
238
+ provider_id : str
239
+ The provider_id key to be deleted.
240
+
241
+ request_options : typing.Optional[RequestOptions]
242
+ Request-specific configuration.
243
+
244
+ Returns
245
+ -------
246
+ typing.Optional[typing.Any]
247
+ Successful Response
248
+
249
+ Examples
250
+ --------
251
+ from letta import Letta
252
+
253
+ client = Letta(
254
+ token="YOUR_TOKEN",
255
+ )
256
+ client.providers.delete_provider(
257
+ provider_id="provider_id",
258
+ )
259
+ """
260
+ _response = self._client_wrapper.httpx_client.request(
261
+ "v1/providers/",
262
+ method="DELETE",
263
+ params={
264
+ "provider_id": provider_id,
265
+ },
266
+ request_options=request_options,
267
+ )
268
+ try:
269
+ if 200 <= _response.status_code < 300:
270
+ return typing.cast(
271
+ typing.Optional[typing.Any],
272
+ construct_type(
273
+ type_=typing.Optional[typing.Any], # type: ignore
274
+ object_=_response.json(),
275
+ ),
276
+ )
277
+ if _response.status_code == 422:
278
+ raise UnprocessableEntityError(
279
+ typing.cast(
280
+ HttpValidationError,
281
+ construct_type(
282
+ type_=HttpValidationError, # type: ignore
283
+ object_=_response.json(),
284
+ ),
285
+ )
286
+ )
287
+ _response_json = _response.json()
288
+ except JSONDecodeError:
289
+ raise ApiError(status_code=_response.status_code, body=_response.text)
290
+ raise ApiError(status_code=_response.status_code, body=_response_json)
291
+
292
+
293
+ class AsyncProvidersClient:
294
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
295
+ self._client_wrapper = client_wrapper
296
+
297
+ async def list_providers(
298
+ self,
299
+ *,
300
+ cursor: typing.Optional[str] = None,
301
+ limit: typing.Optional[int] = None,
302
+ request_options: typing.Optional[RequestOptions] = None,
303
+ ) -> typing.List[Provider]:
304
+ """
305
+ Get a list of all custom providers in the database
306
+
307
+ Parameters
308
+ ----------
309
+ cursor : typing.Optional[str]
310
+
311
+ limit : typing.Optional[int]
312
+
313
+ request_options : typing.Optional[RequestOptions]
314
+ Request-specific configuration.
315
+
316
+ Returns
317
+ -------
318
+ typing.List[Provider]
319
+ Successful Response
320
+
321
+ Examples
322
+ --------
323
+ import asyncio
324
+
325
+ from letta import AsyncLetta
326
+
327
+ client = AsyncLetta(
328
+ token="YOUR_TOKEN",
329
+ )
330
+
331
+
332
+ async def main() -> None:
333
+ await client.providers.list_providers()
334
+
335
+
336
+ asyncio.run(main())
337
+ """
338
+ _response = await self._client_wrapper.httpx_client.request(
339
+ "v1/providers/",
340
+ method="GET",
341
+ params={
342
+ "cursor": cursor,
343
+ "limit": limit,
344
+ },
345
+ request_options=request_options,
346
+ )
347
+ try:
348
+ if 200 <= _response.status_code < 300:
349
+ return typing.cast(
350
+ typing.List[Provider],
351
+ construct_type(
352
+ type_=typing.List[Provider], # type: ignore
353
+ object_=_response.json(),
354
+ ),
355
+ )
356
+ if _response.status_code == 422:
357
+ raise UnprocessableEntityError(
358
+ typing.cast(
359
+ HttpValidationError,
360
+ construct_type(
361
+ type_=HttpValidationError, # type: ignore
362
+ object_=_response.json(),
363
+ ),
364
+ )
365
+ )
366
+ _response_json = _response.json()
367
+ except JSONDecodeError:
368
+ raise ApiError(status_code=_response.status_code, body=_response.text)
369
+ raise ApiError(status_code=_response.status_code, body=_response_json)
370
+
371
+ async def create_provider(
372
+ self, *, name: str, api_key: str, request_options: typing.Optional[RequestOptions] = None
373
+ ) -> Provider:
374
+ """
375
+ Create a new custom provider
376
+
377
+ Parameters
378
+ ----------
379
+ name : str
380
+ The name of the provider.
381
+
382
+ api_key : str
383
+ API key used for requests to the provider.
384
+
385
+ request_options : typing.Optional[RequestOptions]
386
+ Request-specific configuration.
387
+
388
+ Returns
389
+ -------
390
+ Provider
391
+ Successful Response
392
+
393
+ Examples
394
+ --------
395
+ import asyncio
396
+
397
+ from letta import AsyncLetta
398
+
399
+ client = AsyncLetta(
400
+ token="YOUR_TOKEN",
401
+ )
402
+
403
+
404
+ async def main() -> None:
405
+ await client.providers.create_provider(
406
+ name="name",
407
+ api_key="api_key",
408
+ )
409
+
410
+
411
+ asyncio.run(main())
412
+ """
413
+ _response = await self._client_wrapper.httpx_client.request(
414
+ "v1/providers/",
415
+ method="POST",
416
+ json={
417
+ "name": name,
418
+ "api_key": api_key,
419
+ },
420
+ headers={
421
+ "content-type": "application/json",
422
+ },
423
+ request_options=request_options,
424
+ omit=OMIT,
425
+ )
426
+ try:
427
+ if 200 <= _response.status_code < 300:
428
+ return typing.cast(
429
+ Provider,
430
+ construct_type(
431
+ type_=Provider, # type: ignore
432
+ object_=_response.json(),
433
+ ),
434
+ )
435
+ if _response.status_code == 422:
436
+ raise UnprocessableEntityError(
437
+ typing.cast(
438
+ HttpValidationError,
439
+ construct_type(
440
+ type_=HttpValidationError, # type: ignore
441
+ object_=_response.json(),
442
+ ),
443
+ )
444
+ )
445
+ _response_json = _response.json()
446
+ except JSONDecodeError:
447
+ raise ApiError(status_code=_response.status_code, body=_response.text)
448
+ raise ApiError(status_code=_response.status_code, body=_response_json)
449
+
450
+ async def update_provider(
451
+ self, *, id: str, api_key: str, request_options: typing.Optional[RequestOptions] = None
452
+ ) -> Provider:
453
+ """
454
+ Update an existing custom provider
455
+
456
+ Parameters
457
+ ----------
458
+ id : str
459
+ The id of the provider to update.
460
+
461
+ api_key : str
462
+ API key used for requests to the provider.
463
+
464
+ request_options : typing.Optional[RequestOptions]
465
+ Request-specific configuration.
466
+
467
+ Returns
468
+ -------
469
+ Provider
470
+ Successful Response
471
+
472
+ Examples
473
+ --------
474
+ import asyncio
475
+
476
+ from letta import AsyncLetta
477
+
478
+ client = AsyncLetta(
479
+ token="YOUR_TOKEN",
480
+ )
481
+
482
+
483
+ async def main() -> None:
484
+ await client.providers.update_provider(
485
+ id="id",
486
+ api_key="api_key",
487
+ )
488
+
489
+
490
+ asyncio.run(main())
491
+ """
492
+ _response = await self._client_wrapper.httpx_client.request(
493
+ "v1/providers/",
494
+ method="PUT",
495
+ json={
496
+ "id": id,
497
+ "api_key": api_key,
498
+ },
499
+ headers={
500
+ "content-type": "application/json",
501
+ },
502
+ request_options=request_options,
503
+ omit=OMIT,
504
+ )
505
+ try:
506
+ if 200 <= _response.status_code < 300:
507
+ return typing.cast(
508
+ Provider,
509
+ construct_type(
510
+ type_=Provider, # type: ignore
511
+ object_=_response.json(),
512
+ ),
513
+ )
514
+ if _response.status_code == 422:
515
+ raise UnprocessableEntityError(
516
+ typing.cast(
517
+ HttpValidationError,
518
+ construct_type(
519
+ type_=HttpValidationError, # type: ignore
520
+ object_=_response.json(),
521
+ ),
522
+ )
523
+ )
524
+ _response_json = _response.json()
525
+ except JSONDecodeError:
526
+ raise ApiError(status_code=_response.status_code, body=_response.text)
527
+ raise ApiError(status_code=_response.status_code, body=_response_json)
528
+
529
+ async def delete_provider(
530
+ self, *, provider_id: str, request_options: typing.Optional[RequestOptions] = None
531
+ ) -> typing.Optional[typing.Any]:
532
+ """
533
+ Delete an existing custom provider
534
+
535
+ Parameters
536
+ ----------
537
+ provider_id : str
538
+ The provider_id key to be deleted.
539
+
540
+ request_options : typing.Optional[RequestOptions]
541
+ Request-specific configuration.
542
+
543
+ Returns
544
+ -------
545
+ typing.Optional[typing.Any]
546
+ Successful Response
547
+
548
+ Examples
549
+ --------
550
+ import asyncio
551
+
552
+ from letta import AsyncLetta
553
+
554
+ client = AsyncLetta(
555
+ token="YOUR_TOKEN",
556
+ )
557
+
558
+
559
+ async def main() -> None:
560
+ await client.providers.delete_provider(
561
+ provider_id="provider_id",
562
+ )
563
+
564
+
565
+ asyncio.run(main())
566
+ """
567
+ _response = await self._client_wrapper.httpx_client.request(
568
+ "v1/providers/",
569
+ method="DELETE",
570
+ params={
571
+ "provider_id": provider_id,
572
+ },
573
+ request_options=request_options,
574
+ )
575
+ try:
576
+ if 200 <= _response.status_code < 300:
577
+ return typing.cast(
578
+ typing.Optional[typing.Any],
579
+ construct_type(
580
+ type_=typing.Optional[typing.Any], # type: ignore
581
+ object_=_response.json(),
582
+ ),
583
+ )
584
+ if _response.status_code == 422:
585
+ raise UnprocessableEntityError(
586
+ typing.cast(
587
+ HttpValidationError,
588
+ construct_type(
589
+ type_=HttpValidationError, # type: ignore
590
+ object_=_response.json(),
591
+ ),
592
+ )
593
+ )
594
+ _response_json = _response.json()
595
+ except JSONDecodeError:
596
+ raise ApiError(status_code=_response.status_code, body=_response.text)
597
+ raise ApiError(status_code=_response.status_code, body=_response_json)