c63a5cfe-b235-4fbe-8bbb-82a9e02a482a-python 0.1.0a3__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 (190) hide show
  1. c63a5cfe_b235_4fbe_8bbb_82a9e02a482a_python-0.1.0a3.dist-info/METADATA +396 -0
  2. c63a5cfe_b235_4fbe_8bbb_82a9e02a482a_python-0.1.0a3.dist-info/RECORD +190 -0
  3. c63a5cfe_b235_4fbe_8bbb_82a9e02a482a_python-0.1.0a3.dist-info/WHEEL +4 -0
  4. c63a5cfe_b235_4fbe_8bbb_82a9e02a482a_python-0.1.0a3.dist-info/licenses/LICENSE +201 -0
  5. digitalocean_genai_sdk/__init__.py +99 -0
  6. digitalocean_genai_sdk/_base_client.py +1949 -0
  7. digitalocean_genai_sdk/_client.py +795 -0
  8. digitalocean_genai_sdk/_compat.py +219 -0
  9. digitalocean_genai_sdk/_constants.py +14 -0
  10. digitalocean_genai_sdk/_exceptions.py +108 -0
  11. digitalocean_genai_sdk/_files.py +123 -0
  12. digitalocean_genai_sdk/_models.py +805 -0
  13. digitalocean_genai_sdk/_qs.py +150 -0
  14. digitalocean_genai_sdk/_resource.py +43 -0
  15. digitalocean_genai_sdk/_response.py +832 -0
  16. digitalocean_genai_sdk/_streaming.py +333 -0
  17. digitalocean_genai_sdk/_types.py +219 -0
  18. digitalocean_genai_sdk/_utils/__init__.py +57 -0
  19. digitalocean_genai_sdk/_utils/_logs.py +25 -0
  20. digitalocean_genai_sdk/_utils/_proxy.py +65 -0
  21. digitalocean_genai_sdk/_utils/_reflection.py +42 -0
  22. digitalocean_genai_sdk/_utils/_resources_proxy.py +24 -0
  23. digitalocean_genai_sdk/_utils/_streams.py +12 -0
  24. digitalocean_genai_sdk/_utils/_sync.py +86 -0
  25. digitalocean_genai_sdk/_utils/_transform.py +447 -0
  26. digitalocean_genai_sdk/_utils/_typing.py +151 -0
  27. digitalocean_genai_sdk/_utils/_utils.py +422 -0
  28. digitalocean_genai_sdk/_version.py +4 -0
  29. digitalocean_genai_sdk/lib/.keep +4 -0
  30. digitalocean_genai_sdk/py.typed +0 -0
  31. digitalocean_genai_sdk/resources/__init__.py +145 -0
  32. digitalocean_genai_sdk/resources/agents/__init__.py +89 -0
  33. digitalocean_genai_sdk/resources/agents/agents.py +965 -0
  34. digitalocean_genai_sdk/resources/agents/api_keys.py +581 -0
  35. digitalocean_genai_sdk/resources/agents/child_agents.py +508 -0
  36. digitalocean_genai_sdk/resources/agents/functions.py +421 -0
  37. digitalocean_genai_sdk/resources/agents/knowledge_bases.py +346 -0
  38. digitalocean_genai_sdk/resources/agents/versions.py +298 -0
  39. digitalocean_genai_sdk/resources/api_keys/__init__.py +19 -0
  40. digitalocean_genai_sdk/resources/api_keys/api_keys.py +275 -0
  41. digitalocean_genai_sdk/resources/api_keys/api_keys_.py +529 -0
  42. digitalocean_genai_sdk/resources/auth/__init__.py +33 -0
  43. digitalocean_genai_sdk/resources/auth/agents/__init__.py +33 -0
  44. digitalocean_genai_sdk/resources/auth/agents/agents.py +102 -0
  45. digitalocean_genai_sdk/resources/auth/agents/token.py +173 -0
  46. digitalocean_genai_sdk/resources/auth/auth.py +102 -0
  47. digitalocean_genai_sdk/resources/chat.py +381 -0
  48. digitalocean_genai_sdk/resources/embeddings.py +201 -0
  49. digitalocean_genai_sdk/resources/indexing_jobs.py +543 -0
  50. digitalocean_genai_sdk/resources/knowledge_bases/__init__.py +33 -0
  51. digitalocean_genai_sdk/resources/knowledge_bases/data_sources.py +410 -0
  52. digitalocean_genai_sdk/resources/knowledge_bases/knowledge_bases.py +667 -0
  53. digitalocean_genai_sdk/resources/models.py +222 -0
  54. digitalocean_genai_sdk/resources/providers/__init__.py +47 -0
  55. digitalocean_genai_sdk/resources/providers/anthropic/__init__.py +33 -0
  56. digitalocean_genai_sdk/resources/providers/anthropic/anthropic.py +102 -0
  57. digitalocean_genai_sdk/resources/providers/anthropic/keys.py +662 -0
  58. digitalocean_genai_sdk/resources/providers/openai/__init__.py +33 -0
  59. digitalocean_genai_sdk/resources/providers/openai/keys.py +658 -0
  60. digitalocean_genai_sdk/resources/providers/openai/openai.py +102 -0
  61. digitalocean_genai_sdk/resources/providers/providers.py +134 -0
  62. digitalocean_genai_sdk/resources/regions.py +191 -0
  63. digitalocean_genai_sdk/types/__init__.py +57 -0
  64. digitalocean_genai_sdk/types/agent_create_params.py +39 -0
  65. digitalocean_genai_sdk/types/agent_create_response.py +16 -0
  66. digitalocean_genai_sdk/types/agent_delete_response.py +16 -0
  67. digitalocean_genai_sdk/types/agent_list_params.py +18 -0
  68. digitalocean_genai_sdk/types/agent_list_response.py +198 -0
  69. digitalocean_genai_sdk/types/agent_retrieve_response.py +16 -0
  70. digitalocean_genai_sdk/types/agent_update_params.py +65 -0
  71. digitalocean_genai_sdk/types/agent_update_response.py +16 -0
  72. digitalocean_genai_sdk/types/agent_update_status_params.py +16 -0
  73. digitalocean_genai_sdk/types/agent_update_status_response.py +16 -0
  74. digitalocean_genai_sdk/types/agents/__init__.py +31 -0
  75. digitalocean_genai_sdk/types/agents/api_key_create_params.py +15 -0
  76. digitalocean_genai_sdk/types/agents/api_key_create_response.py +12 -0
  77. digitalocean_genai_sdk/types/agents/api_key_delete_response.py +12 -0
  78. digitalocean_genai_sdk/types/agents/api_key_list_params.py +15 -0
  79. digitalocean_genai_sdk/types/agents/api_key_list_response.py +18 -0
  80. digitalocean_genai_sdk/types/agents/api_key_regenerate_response.py +12 -0
  81. digitalocean_genai_sdk/types/agents/api_key_update_params.py +19 -0
  82. digitalocean_genai_sdk/types/agents/api_key_update_response.py +12 -0
  83. digitalocean_genai_sdk/types/agents/api_link_knowledge_base_output.py +16 -0
  84. digitalocean_genai_sdk/types/agents/api_links.py +21 -0
  85. digitalocean_genai_sdk/types/agents/api_meta.py +15 -0
  86. digitalocean_genai_sdk/types/agents/child_agent_add_params.py +22 -0
  87. digitalocean_genai_sdk/types/agents/child_agent_add_response.py +14 -0
  88. digitalocean_genai_sdk/types/agents/child_agent_delete_response.py +13 -0
  89. digitalocean_genai_sdk/types/agents/child_agent_update_params.py +24 -0
  90. digitalocean_genai_sdk/types/agents/child_agent_update_response.py +18 -0
  91. digitalocean_genai_sdk/types/agents/child_agent_view_response.py +16 -0
  92. digitalocean_genai_sdk/types/agents/function_create_params.py +25 -0
  93. digitalocean_genai_sdk/types/agents/function_create_response.py +16 -0
  94. digitalocean_genai_sdk/types/agents/function_delete_response.py +16 -0
  95. digitalocean_genai_sdk/types/agents/function_update_params.py +29 -0
  96. digitalocean_genai_sdk/types/agents/function_update_response.py +16 -0
  97. digitalocean_genai_sdk/types/agents/knowledge_base_detach_response.py +16 -0
  98. digitalocean_genai_sdk/types/agents/version_list_params.py +15 -0
  99. digitalocean_genai_sdk/types/agents/version_list_response.py +118 -0
  100. digitalocean_genai_sdk/types/agents/version_update_params.py +15 -0
  101. digitalocean_genai_sdk/types/agents/version_update_response.py +30 -0
  102. digitalocean_genai_sdk/types/api_agent.py +263 -0
  103. digitalocean_genai_sdk/types/api_agent_api_key_info.py +22 -0
  104. digitalocean_genai_sdk/types/api_agreement.py +17 -0
  105. digitalocean_genai_sdk/types/api_anthropic_api_key_info.py +22 -0
  106. digitalocean_genai_sdk/types/api_deployment_visibility.py +9 -0
  107. digitalocean_genai_sdk/types/api_indexing_job.py +43 -0
  108. digitalocean_genai_sdk/types/api_key_list_params.py +42 -0
  109. digitalocean_genai_sdk/types/api_key_list_response.py +42 -0
  110. digitalocean_genai_sdk/types/api_keys/__init__.py +13 -0
  111. digitalocean_genai_sdk/types/api_keys/api_key_create_params.py +11 -0
  112. digitalocean_genai_sdk/types/api_keys/api_key_create_response.py +12 -0
  113. digitalocean_genai_sdk/types/api_keys/api_key_delete_response.py +12 -0
  114. digitalocean_genai_sdk/types/api_keys/api_key_list_params.py +15 -0
  115. digitalocean_genai_sdk/types/api_keys/api_key_list_response.py +18 -0
  116. digitalocean_genai_sdk/types/api_keys/api_key_update_params.py +15 -0
  117. digitalocean_genai_sdk/types/api_keys/api_key_update_regenerate_response.py +12 -0
  118. digitalocean_genai_sdk/types/api_keys/api_key_update_response.py +12 -0
  119. digitalocean_genai_sdk/types/api_keys/api_model_api_key_info.py +22 -0
  120. digitalocean_genai_sdk/types/api_knowledge_base.py +37 -0
  121. digitalocean_genai_sdk/types/api_model.py +57 -0
  122. digitalocean_genai_sdk/types/api_model_version.py +15 -0
  123. digitalocean_genai_sdk/types/api_openai_api_key_info.py +25 -0
  124. digitalocean_genai_sdk/types/api_retrieval_method.py +13 -0
  125. digitalocean_genai_sdk/types/auth/__init__.py +3 -0
  126. digitalocean_genai_sdk/types/auth/agents/__init__.py +6 -0
  127. digitalocean_genai_sdk/types/auth/agents/token_create_params.py +13 -0
  128. digitalocean_genai_sdk/types/auth/agents/token_create_response.py +13 -0
  129. digitalocean_genai_sdk/types/chat_completion_request_message_content_part_text_param.py +15 -0
  130. digitalocean_genai_sdk/types/chat_completion_token_logprob.py +57 -0
  131. digitalocean_genai_sdk/types/chat_create_completion_params.py +208 -0
  132. digitalocean_genai_sdk/types/chat_create_completion_response.py +81 -0
  133. digitalocean_genai_sdk/types/embedding_create_params.py +28 -0
  134. digitalocean_genai_sdk/types/embedding_create_response.py +41 -0
  135. digitalocean_genai_sdk/types/indexing_job_create_params.py +14 -0
  136. digitalocean_genai_sdk/types/indexing_job_create_response.py +12 -0
  137. digitalocean_genai_sdk/types/indexing_job_list_params.py +15 -0
  138. digitalocean_genai_sdk/types/indexing_job_list_response.py +18 -0
  139. digitalocean_genai_sdk/types/indexing_job_retrieve_data_sources_response.py +52 -0
  140. digitalocean_genai_sdk/types/indexing_job_retrieve_response.py +12 -0
  141. digitalocean_genai_sdk/types/indexing_job_update_cancel_params.py +14 -0
  142. digitalocean_genai_sdk/types/indexing_job_update_cancel_response.py +12 -0
  143. digitalocean_genai_sdk/types/knowledge_base_create_params.py +64 -0
  144. digitalocean_genai_sdk/types/knowledge_base_create_response.py +12 -0
  145. digitalocean_genai_sdk/types/knowledge_base_delete_response.py +11 -0
  146. digitalocean_genai_sdk/types/knowledge_base_list_params.py +15 -0
  147. digitalocean_genai_sdk/types/knowledge_base_list_response.py +18 -0
  148. digitalocean_genai_sdk/types/knowledge_base_retrieve_response.py +30 -0
  149. digitalocean_genai_sdk/types/knowledge_base_update_params.py +27 -0
  150. digitalocean_genai_sdk/types/knowledge_base_update_response.py +12 -0
  151. digitalocean_genai_sdk/types/knowledge_bases/__init__.py +16 -0
  152. digitalocean_genai_sdk/types/knowledge_bases/api_file_upload_data_source.py +15 -0
  153. digitalocean_genai_sdk/types/knowledge_bases/api_file_upload_data_source_param.py +15 -0
  154. digitalocean_genai_sdk/types/knowledge_bases/api_knowledge_base_data_source.py +35 -0
  155. digitalocean_genai_sdk/types/knowledge_bases/api_spaces_data_source.py +15 -0
  156. digitalocean_genai_sdk/types/knowledge_bases/api_spaces_data_source_param.py +15 -0
  157. digitalocean_genai_sdk/types/knowledge_bases/api_web_crawler_data_source.py +26 -0
  158. digitalocean_genai_sdk/types/knowledge_bases/api_web_crawler_data_source_param.py +25 -0
  159. digitalocean_genai_sdk/types/knowledge_bases/data_source_create_params.py +33 -0
  160. digitalocean_genai_sdk/types/knowledge_bases/data_source_create_response.py +12 -0
  161. digitalocean_genai_sdk/types/knowledge_bases/data_source_delete_response.py +13 -0
  162. digitalocean_genai_sdk/types/knowledge_bases/data_source_list_params.py +15 -0
  163. digitalocean_genai_sdk/types/knowledge_bases/data_source_list_response.py +18 -0
  164. digitalocean_genai_sdk/types/model.py +21 -0
  165. digitalocean_genai_sdk/types/model_list_response.py +15 -0
  166. digitalocean_genai_sdk/types/providers/__init__.py +3 -0
  167. digitalocean_genai_sdk/types/providers/anthropic/__init__.py +14 -0
  168. digitalocean_genai_sdk/types/providers/anthropic/key_create_params.py +13 -0
  169. digitalocean_genai_sdk/types/providers/anthropic/key_create_response.py +12 -0
  170. digitalocean_genai_sdk/types/providers/anthropic/key_delete_response.py +12 -0
  171. digitalocean_genai_sdk/types/providers/anthropic/key_list_agents_params.py +15 -0
  172. digitalocean_genai_sdk/types/providers/anthropic/key_list_agents_response.py +22 -0
  173. digitalocean_genai_sdk/types/providers/anthropic/key_list_params.py +15 -0
  174. digitalocean_genai_sdk/types/providers/anthropic/key_list_response.py +18 -0
  175. digitalocean_genai_sdk/types/providers/anthropic/key_retrieve_response.py +12 -0
  176. digitalocean_genai_sdk/types/providers/anthropic/key_update_params.py +17 -0
  177. digitalocean_genai_sdk/types/providers/anthropic/key_update_response.py +12 -0
  178. digitalocean_genai_sdk/types/providers/openai/__init__.py +14 -0
  179. digitalocean_genai_sdk/types/providers/openai/key_create_params.py +13 -0
  180. digitalocean_genai_sdk/types/providers/openai/key_create_response.py +12 -0
  181. digitalocean_genai_sdk/types/providers/openai/key_delete_response.py +12 -0
  182. digitalocean_genai_sdk/types/providers/openai/key_list_params.py +15 -0
  183. digitalocean_genai_sdk/types/providers/openai/key_list_response.py +18 -0
  184. digitalocean_genai_sdk/types/providers/openai/key_retrieve_agents_params.py +15 -0
  185. digitalocean_genai_sdk/types/providers/openai/key_retrieve_agents_response.py +22 -0
  186. digitalocean_genai_sdk/types/providers/openai/key_retrieve_response.py +12 -0
  187. digitalocean_genai_sdk/types/providers/openai/key_update_params.py +17 -0
  188. digitalocean_genai_sdk/types/providers/openai/key_update_response.py +12 -0
  189. digitalocean_genai_sdk/types/region_list_params.py +15 -0
  190. digitalocean_genai_sdk/types/region_list_response.py +23 -0
@@ -0,0 +1,795 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ import os
6
+ from typing import TYPE_CHECKING, Any, Union, Mapping
7
+ from typing_extensions import Self, override
8
+
9
+ import httpx
10
+
11
+ from . import _exceptions
12
+ from ._qs import Querystring
13
+ from ._types import (
14
+ NOT_GIVEN,
15
+ Omit,
16
+ Timeout,
17
+ NotGiven,
18
+ Transport,
19
+ ProxiesTypes,
20
+ RequestOptions,
21
+ )
22
+ from ._utils import is_given, get_async_library
23
+ from ._compat import cached_property
24
+ from ._version import __version__
25
+ from ._streaming import Stream as Stream, AsyncStream as AsyncStream
26
+ from ._exceptions import APIStatusError, DigitaloceanGenaiSDKError
27
+ from ._base_client import (
28
+ DEFAULT_MAX_RETRIES,
29
+ SyncAPIClient,
30
+ AsyncAPIClient,
31
+ )
32
+
33
+ if TYPE_CHECKING:
34
+ from .resources import (
35
+ auth,
36
+ chat,
37
+ agents,
38
+ models,
39
+ regions,
40
+ api_keys,
41
+ providers,
42
+ embeddings,
43
+ indexing_jobs,
44
+ knowledge_bases,
45
+ )
46
+ from .resources.chat import ChatResource, AsyncChatResource
47
+ from .resources.models import ModelsResource, AsyncModelsResource
48
+ from .resources.regions import RegionsResource, AsyncRegionsResource
49
+ from .resources.auth.auth import AuthResource, AsyncAuthResource
50
+ from .resources.embeddings import EmbeddingsResource, AsyncEmbeddingsResource
51
+ from .resources.agents.agents import AgentsResource, AsyncAgentsResource
52
+ from .resources.indexing_jobs import IndexingJobsResource, AsyncIndexingJobsResource
53
+ from .resources.api_keys.api_keys import APIKeysResource, AsyncAPIKeysResource
54
+ from .resources.providers.providers import ProvidersResource, AsyncProvidersResource
55
+ from .resources.knowledge_bases.knowledge_bases import KnowledgeBasesResource, AsyncKnowledgeBasesResource
56
+
57
+ __all__ = [
58
+ "Timeout",
59
+ "Transport",
60
+ "ProxiesTypes",
61
+ "RequestOptions",
62
+ "DigitaloceanGenaiSDK",
63
+ "AsyncDigitaloceanGenaiSDK",
64
+ "Client",
65
+ "AsyncClient",
66
+ ]
67
+
68
+
69
+ class DigitaloceanGenaiSDK(SyncAPIClient):
70
+ # client options
71
+ api_key: str
72
+
73
+ def __init__(
74
+ self,
75
+ *,
76
+ api_key: str | None = None,
77
+ base_url: str | httpx.URL | None = None,
78
+ timeout: Union[float, Timeout, None, NotGiven] = NOT_GIVEN,
79
+ max_retries: int = DEFAULT_MAX_RETRIES,
80
+ default_headers: Mapping[str, str] | None = None,
81
+ default_query: Mapping[str, object] | None = None,
82
+ # Configure a custom httpx client.
83
+ # We provide a `DefaultHttpxClient` class that you can pass to retain the default values we use for `limits`, `timeout` & `follow_redirects`.
84
+ # See the [httpx documentation](https://www.python-httpx.org/api/#client) for more details.
85
+ http_client: httpx.Client | None = None,
86
+ # Enable or disable schema validation for data returned by the API.
87
+ # When enabled an error APIResponseValidationError is raised
88
+ # if the API responds with invalid data for the expected schema.
89
+ #
90
+ # This parameter may be removed or changed in the future.
91
+ # If you rely on this feature, please open a GitHub issue
92
+ # outlining your use-case to help us decide if it should be
93
+ # part of our public interface in the future.
94
+ _strict_response_validation: bool = False,
95
+ ) -> None:
96
+ """Construct a new synchronous DigitaloceanGenaiSDK client instance.
97
+
98
+ This automatically infers the `api_key` argument from the `DIGITALOCEAN_GENAI_SDK_API_KEY` environment variable if it is not provided.
99
+ """
100
+ if api_key is None:
101
+ api_key = os.environ.get("DIGITALOCEAN_GENAI_SDK_API_KEY")
102
+ if api_key is None:
103
+ raise DigitaloceanGenaiSDKError(
104
+ "The api_key client option must be set either by passing api_key to the client or by setting the DIGITALOCEAN_GENAI_SDK_API_KEY environment variable"
105
+ )
106
+ self.api_key = api_key
107
+
108
+ if base_url is None:
109
+ base_url = os.environ.get("DIGITALOCEAN_GENAI_SDK_BASE_URL")
110
+ if base_url is None:
111
+ base_url = f"https://api.digitalocean.com/"
112
+
113
+ super().__init__(
114
+ version=__version__,
115
+ base_url=base_url,
116
+ max_retries=max_retries,
117
+ timeout=timeout,
118
+ http_client=http_client,
119
+ custom_headers=default_headers,
120
+ custom_query=default_query,
121
+ _strict_response_validation=_strict_response_validation,
122
+ )
123
+
124
+ @cached_property
125
+ def agents(self) -> AgentsResource:
126
+ from .resources.agents import AgentsResource
127
+
128
+ return AgentsResource(self)
129
+
130
+ @cached_property
131
+ def providers(self) -> ProvidersResource:
132
+ from .resources.providers import ProvidersResource
133
+
134
+ return ProvidersResource(self)
135
+
136
+ @cached_property
137
+ def auth(self) -> AuthResource:
138
+ from .resources.auth import AuthResource
139
+
140
+ return AuthResource(self)
141
+
142
+ @cached_property
143
+ def regions(self) -> RegionsResource:
144
+ from .resources.regions import RegionsResource
145
+
146
+ return RegionsResource(self)
147
+
148
+ @cached_property
149
+ def indexing_jobs(self) -> IndexingJobsResource:
150
+ from .resources.indexing_jobs import IndexingJobsResource
151
+
152
+ return IndexingJobsResource(self)
153
+
154
+ @cached_property
155
+ def knowledge_bases(self) -> KnowledgeBasesResource:
156
+ from .resources.knowledge_bases import KnowledgeBasesResource
157
+
158
+ return KnowledgeBasesResource(self)
159
+
160
+ @cached_property
161
+ def api_keys(self) -> APIKeysResource:
162
+ from .resources.api_keys import APIKeysResource
163
+
164
+ return APIKeysResource(self)
165
+
166
+ @cached_property
167
+ def chat(self) -> ChatResource:
168
+ from .resources.chat import ChatResource
169
+
170
+ return ChatResource(self)
171
+
172
+ @cached_property
173
+ def embeddings(self) -> EmbeddingsResource:
174
+ from .resources.embeddings import EmbeddingsResource
175
+
176
+ return EmbeddingsResource(self)
177
+
178
+ @cached_property
179
+ def models(self) -> ModelsResource:
180
+ from .resources.models import ModelsResource
181
+
182
+ return ModelsResource(self)
183
+
184
+ @cached_property
185
+ def with_raw_response(self) -> DigitaloceanGenaiSDKWithRawResponse:
186
+ return DigitaloceanGenaiSDKWithRawResponse(self)
187
+
188
+ @cached_property
189
+ def with_streaming_response(self) -> DigitaloceanGenaiSDKWithStreamedResponse:
190
+ return DigitaloceanGenaiSDKWithStreamedResponse(self)
191
+
192
+ @property
193
+ @override
194
+ def qs(self) -> Querystring:
195
+ return Querystring(array_format="comma")
196
+
197
+ @property
198
+ @override
199
+ def auth_headers(self) -> dict[str, str]:
200
+ api_key = self.api_key
201
+ return {"Authorization": f"Bearer {api_key}"}
202
+
203
+ @property
204
+ @override
205
+ def default_headers(self) -> dict[str, str | Omit]:
206
+ return {
207
+ **super().default_headers,
208
+ "X-Stainless-Async": "false",
209
+ **self._custom_headers,
210
+ }
211
+
212
+ def copy(
213
+ self,
214
+ *,
215
+ api_key: str | None = None,
216
+ base_url: str | httpx.URL | None = None,
217
+ timeout: float | Timeout | None | NotGiven = NOT_GIVEN,
218
+ http_client: httpx.Client | None = None,
219
+ max_retries: int | NotGiven = NOT_GIVEN,
220
+ default_headers: Mapping[str, str] | None = None,
221
+ set_default_headers: Mapping[str, str] | None = None,
222
+ default_query: Mapping[str, object] | None = None,
223
+ set_default_query: Mapping[str, object] | None = None,
224
+ _extra_kwargs: Mapping[str, Any] = {},
225
+ ) -> Self:
226
+ """
227
+ Create a new client instance re-using the same options given to the current client with optional overriding.
228
+ """
229
+ if default_headers is not None and set_default_headers is not None:
230
+ raise ValueError("The `default_headers` and `set_default_headers` arguments are mutually exclusive")
231
+
232
+ if default_query is not None and set_default_query is not None:
233
+ raise ValueError("The `default_query` and `set_default_query` arguments are mutually exclusive")
234
+
235
+ headers = self._custom_headers
236
+ if default_headers is not None:
237
+ headers = {**headers, **default_headers}
238
+ elif set_default_headers is not None:
239
+ headers = set_default_headers
240
+
241
+ params = self._custom_query
242
+ if default_query is not None:
243
+ params = {**params, **default_query}
244
+ elif set_default_query is not None:
245
+ params = set_default_query
246
+
247
+ http_client = http_client or self._client
248
+ return self.__class__(
249
+ api_key=api_key or self.api_key,
250
+ base_url=base_url or self.base_url,
251
+ timeout=self.timeout if isinstance(timeout, NotGiven) else timeout,
252
+ http_client=http_client,
253
+ max_retries=max_retries if is_given(max_retries) else self.max_retries,
254
+ default_headers=headers,
255
+ default_query=params,
256
+ **_extra_kwargs,
257
+ )
258
+
259
+ # Alias for `copy` for nicer inline usage, e.g.
260
+ # client.with_options(timeout=10).foo.create(...)
261
+ with_options = copy
262
+
263
+ @override
264
+ def _make_status_error(
265
+ self,
266
+ err_msg: str,
267
+ *,
268
+ body: object,
269
+ response: httpx.Response,
270
+ ) -> APIStatusError:
271
+ if response.status_code == 400:
272
+ return _exceptions.BadRequestError(err_msg, response=response, body=body)
273
+
274
+ if response.status_code == 401:
275
+ return _exceptions.AuthenticationError(err_msg, response=response, body=body)
276
+
277
+ if response.status_code == 403:
278
+ return _exceptions.PermissionDeniedError(err_msg, response=response, body=body)
279
+
280
+ if response.status_code == 404:
281
+ return _exceptions.NotFoundError(err_msg, response=response, body=body)
282
+
283
+ if response.status_code == 409:
284
+ return _exceptions.ConflictError(err_msg, response=response, body=body)
285
+
286
+ if response.status_code == 422:
287
+ return _exceptions.UnprocessableEntityError(err_msg, response=response, body=body)
288
+
289
+ if response.status_code == 429:
290
+ return _exceptions.RateLimitError(err_msg, response=response, body=body)
291
+
292
+ if response.status_code >= 500:
293
+ return _exceptions.InternalServerError(err_msg, response=response, body=body)
294
+ return APIStatusError(err_msg, response=response, body=body)
295
+
296
+
297
+ class AsyncDigitaloceanGenaiSDK(AsyncAPIClient):
298
+ # client options
299
+ api_key: str
300
+
301
+ def __init__(
302
+ self,
303
+ *,
304
+ api_key: str | None = None,
305
+ base_url: str | httpx.URL | None = None,
306
+ timeout: Union[float, Timeout, None, NotGiven] = NOT_GIVEN,
307
+ max_retries: int = DEFAULT_MAX_RETRIES,
308
+ default_headers: Mapping[str, str] | None = None,
309
+ default_query: Mapping[str, object] | None = None,
310
+ # Configure a custom httpx client.
311
+ # We provide a `DefaultAsyncHttpxClient` class that you can pass to retain the default values we use for `limits`, `timeout` & `follow_redirects`.
312
+ # See the [httpx documentation](https://www.python-httpx.org/api/#asyncclient) for more details.
313
+ http_client: httpx.AsyncClient | None = None,
314
+ # Enable or disable schema validation for data returned by the API.
315
+ # When enabled an error APIResponseValidationError is raised
316
+ # if the API responds with invalid data for the expected schema.
317
+ #
318
+ # This parameter may be removed or changed in the future.
319
+ # If you rely on this feature, please open a GitHub issue
320
+ # outlining your use-case to help us decide if it should be
321
+ # part of our public interface in the future.
322
+ _strict_response_validation: bool = False,
323
+ ) -> None:
324
+ """Construct a new async AsyncDigitaloceanGenaiSDK client instance.
325
+
326
+ This automatically infers the `api_key` argument from the `DIGITALOCEAN_GENAI_SDK_API_KEY` environment variable if it is not provided.
327
+ """
328
+ if api_key is None:
329
+ api_key = os.environ.get("DIGITALOCEAN_GENAI_SDK_API_KEY")
330
+ if api_key is None:
331
+ raise DigitaloceanGenaiSDKError(
332
+ "The api_key client option must be set either by passing api_key to the client or by setting the DIGITALOCEAN_GENAI_SDK_API_KEY environment variable"
333
+ )
334
+ self.api_key = api_key
335
+
336
+ if base_url is None:
337
+ base_url = os.environ.get("DIGITALOCEAN_GENAI_SDK_BASE_URL")
338
+ if base_url is None:
339
+ base_url = f"https://api.digitalocean.com/"
340
+
341
+ super().__init__(
342
+ version=__version__,
343
+ base_url=base_url,
344
+ max_retries=max_retries,
345
+ timeout=timeout,
346
+ http_client=http_client,
347
+ custom_headers=default_headers,
348
+ custom_query=default_query,
349
+ _strict_response_validation=_strict_response_validation,
350
+ )
351
+
352
+ @cached_property
353
+ def agents(self) -> AsyncAgentsResource:
354
+ from .resources.agents import AsyncAgentsResource
355
+
356
+ return AsyncAgentsResource(self)
357
+
358
+ @cached_property
359
+ def providers(self) -> AsyncProvidersResource:
360
+ from .resources.providers import AsyncProvidersResource
361
+
362
+ return AsyncProvidersResource(self)
363
+
364
+ @cached_property
365
+ def auth(self) -> AsyncAuthResource:
366
+ from .resources.auth import AsyncAuthResource
367
+
368
+ return AsyncAuthResource(self)
369
+
370
+ @cached_property
371
+ def regions(self) -> AsyncRegionsResource:
372
+ from .resources.regions import AsyncRegionsResource
373
+
374
+ return AsyncRegionsResource(self)
375
+
376
+ @cached_property
377
+ def indexing_jobs(self) -> AsyncIndexingJobsResource:
378
+ from .resources.indexing_jobs import AsyncIndexingJobsResource
379
+
380
+ return AsyncIndexingJobsResource(self)
381
+
382
+ @cached_property
383
+ def knowledge_bases(self) -> AsyncKnowledgeBasesResource:
384
+ from .resources.knowledge_bases import AsyncKnowledgeBasesResource
385
+
386
+ return AsyncKnowledgeBasesResource(self)
387
+
388
+ @cached_property
389
+ def api_keys(self) -> AsyncAPIKeysResource:
390
+ from .resources.api_keys import AsyncAPIKeysResource
391
+
392
+ return AsyncAPIKeysResource(self)
393
+
394
+ @cached_property
395
+ def chat(self) -> AsyncChatResource:
396
+ from .resources.chat import AsyncChatResource
397
+
398
+ return AsyncChatResource(self)
399
+
400
+ @cached_property
401
+ def embeddings(self) -> AsyncEmbeddingsResource:
402
+ from .resources.embeddings import AsyncEmbeddingsResource
403
+
404
+ return AsyncEmbeddingsResource(self)
405
+
406
+ @cached_property
407
+ def models(self) -> AsyncModelsResource:
408
+ from .resources.models import AsyncModelsResource
409
+
410
+ return AsyncModelsResource(self)
411
+
412
+ @cached_property
413
+ def with_raw_response(self) -> AsyncDigitaloceanGenaiSDKWithRawResponse:
414
+ return AsyncDigitaloceanGenaiSDKWithRawResponse(self)
415
+
416
+ @cached_property
417
+ def with_streaming_response(self) -> AsyncDigitaloceanGenaiSDKWithStreamedResponse:
418
+ return AsyncDigitaloceanGenaiSDKWithStreamedResponse(self)
419
+
420
+ @property
421
+ @override
422
+ def qs(self) -> Querystring:
423
+ return Querystring(array_format="comma")
424
+
425
+ @property
426
+ @override
427
+ def auth_headers(self) -> dict[str, str]:
428
+ api_key = self.api_key
429
+ return {"Authorization": f"Bearer {api_key}"}
430
+
431
+ @property
432
+ @override
433
+ def default_headers(self) -> dict[str, str | Omit]:
434
+ return {
435
+ **super().default_headers,
436
+ "X-Stainless-Async": f"async:{get_async_library()}",
437
+ **self._custom_headers,
438
+ }
439
+
440
+ def copy(
441
+ self,
442
+ *,
443
+ api_key: str | None = None,
444
+ base_url: str | httpx.URL | None = None,
445
+ timeout: float | Timeout | None | NotGiven = NOT_GIVEN,
446
+ http_client: httpx.AsyncClient | None = None,
447
+ max_retries: int | NotGiven = NOT_GIVEN,
448
+ default_headers: Mapping[str, str] | None = None,
449
+ set_default_headers: Mapping[str, str] | None = None,
450
+ default_query: Mapping[str, object] | None = None,
451
+ set_default_query: Mapping[str, object] | None = None,
452
+ _extra_kwargs: Mapping[str, Any] = {},
453
+ ) -> Self:
454
+ """
455
+ Create a new client instance re-using the same options given to the current client with optional overriding.
456
+ """
457
+ if default_headers is not None and set_default_headers is not None:
458
+ raise ValueError("The `default_headers` and `set_default_headers` arguments are mutually exclusive")
459
+
460
+ if default_query is not None and set_default_query is not None:
461
+ raise ValueError("The `default_query` and `set_default_query` arguments are mutually exclusive")
462
+
463
+ headers = self._custom_headers
464
+ if default_headers is not None:
465
+ headers = {**headers, **default_headers}
466
+ elif set_default_headers is not None:
467
+ headers = set_default_headers
468
+
469
+ params = self._custom_query
470
+ if default_query is not None:
471
+ params = {**params, **default_query}
472
+ elif set_default_query is not None:
473
+ params = set_default_query
474
+
475
+ http_client = http_client or self._client
476
+ return self.__class__(
477
+ api_key=api_key or self.api_key,
478
+ base_url=base_url or self.base_url,
479
+ timeout=self.timeout if isinstance(timeout, NotGiven) else timeout,
480
+ http_client=http_client,
481
+ max_retries=max_retries if is_given(max_retries) else self.max_retries,
482
+ default_headers=headers,
483
+ default_query=params,
484
+ **_extra_kwargs,
485
+ )
486
+
487
+ # Alias for `copy` for nicer inline usage, e.g.
488
+ # client.with_options(timeout=10).foo.create(...)
489
+ with_options = copy
490
+
491
+ @override
492
+ def _make_status_error(
493
+ self,
494
+ err_msg: str,
495
+ *,
496
+ body: object,
497
+ response: httpx.Response,
498
+ ) -> APIStatusError:
499
+ if response.status_code == 400:
500
+ return _exceptions.BadRequestError(err_msg, response=response, body=body)
501
+
502
+ if response.status_code == 401:
503
+ return _exceptions.AuthenticationError(err_msg, response=response, body=body)
504
+
505
+ if response.status_code == 403:
506
+ return _exceptions.PermissionDeniedError(err_msg, response=response, body=body)
507
+
508
+ if response.status_code == 404:
509
+ return _exceptions.NotFoundError(err_msg, response=response, body=body)
510
+
511
+ if response.status_code == 409:
512
+ return _exceptions.ConflictError(err_msg, response=response, body=body)
513
+
514
+ if response.status_code == 422:
515
+ return _exceptions.UnprocessableEntityError(err_msg, response=response, body=body)
516
+
517
+ if response.status_code == 429:
518
+ return _exceptions.RateLimitError(err_msg, response=response, body=body)
519
+
520
+ if response.status_code >= 500:
521
+ return _exceptions.InternalServerError(err_msg, response=response, body=body)
522
+ return APIStatusError(err_msg, response=response, body=body)
523
+
524
+
525
+ class DigitaloceanGenaiSDKWithRawResponse:
526
+ _client: DigitaloceanGenaiSDK
527
+
528
+ def __init__(self, client: DigitaloceanGenaiSDK) -> None:
529
+ self._client = client
530
+
531
+ @cached_property
532
+ def agents(self) -> agents.AgentsResourceWithRawResponse:
533
+ from .resources.agents import AgentsResourceWithRawResponse
534
+
535
+ return AgentsResourceWithRawResponse(self._client.agents)
536
+
537
+ @cached_property
538
+ def providers(self) -> providers.ProvidersResourceWithRawResponse:
539
+ from .resources.providers import ProvidersResourceWithRawResponse
540
+
541
+ return ProvidersResourceWithRawResponse(self._client.providers)
542
+
543
+ @cached_property
544
+ def auth(self) -> auth.AuthResourceWithRawResponse:
545
+ from .resources.auth import AuthResourceWithRawResponse
546
+
547
+ return AuthResourceWithRawResponse(self._client.auth)
548
+
549
+ @cached_property
550
+ def regions(self) -> regions.RegionsResourceWithRawResponse:
551
+ from .resources.regions import RegionsResourceWithRawResponse
552
+
553
+ return RegionsResourceWithRawResponse(self._client.regions)
554
+
555
+ @cached_property
556
+ def indexing_jobs(self) -> indexing_jobs.IndexingJobsResourceWithRawResponse:
557
+ from .resources.indexing_jobs import IndexingJobsResourceWithRawResponse
558
+
559
+ return IndexingJobsResourceWithRawResponse(self._client.indexing_jobs)
560
+
561
+ @cached_property
562
+ def knowledge_bases(self) -> knowledge_bases.KnowledgeBasesResourceWithRawResponse:
563
+ from .resources.knowledge_bases import KnowledgeBasesResourceWithRawResponse
564
+
565
+ return KnowledgeBasesResourceWithRawResponse(self._client.knowledge_bases)
566
+
567
+ @cached_property
568
+ def api_keys(self) -> api_keys.APIKeysResourceWithRawResponse:
569
+ from .resources.api_keys import APIKeysResourceWithRawResponse
570
+
571
+ return APIKeysResourceWithRawResponse(self._client.api_keys)
572
+
573
+ @cached_property
574
+ def chat(self) -> chat.ChatResourceWithRawResponse:
575
+ from .resources.chat import ChatResourceWithRawResponse
576
+
577
+ return ChatResourceWithRawResponse(self._client.chat)
578
+
579
+ @cached_property
580
+ def embeddings(self) -> embeddings.EmbeddingsResourceWithRawResponse:
581
+ from .resources.embeddings import EmbeddingsResourceWithRawResponse
582
+
583
+ return EmbeddingsResourceWithRawResponse(self._client.embeddings)
584
+
585
+ @cached_property
586
+ def models(self) -> models.ModelsResourceWithRawResponse:
587
+ from .resources.models import ModelsResourceWithRawResponse
588
+
589
+ return ModelsResourceWithRawResponse(self._client.models)
590
+
591
+
592
+ class AsyncDigitaloceanGenaiSDKWithRawResponse:
593
+ _client: AsyncDigitaloceanGenaiSDK
594
+
595
+ def __init__(self, client: AsyncDigitaloceanGenaiSDK) -> None:
596
+ self._client = client
597
+
598
+ @cached_property
599
+ def agents(self) -> agents.AsyncAgentsResourceWithRawResponse:
600
+ from .resources.agents import AsyncAgentsResourceWithRawResponse
601
+
602
+ return AsyncAgentsResourceWithRawResponse(self._client.agents)
603
+
604
+ @cached_property
605
+ def providers(self) -> providers.AsyncProvidersResourceWithRawResponse:
606
+ from .resources.providers import AsyncProvidersResourceWithRawResponse
607
+
608
+ return AsyncProvidersResourceWithRawResponse(self._client.providers)
609
+
610
+ @cached_property
611
+ def auth(self) -> auth.AsyncAuthResourceWithRawResponse:
612
+ from .resources.auth import AsyncAuthResourceWithRawResponse
613
+
614
+ return AsyncAuthResourceWithRawResponse(self._client.auth)
615
+
616
+ @cached_property
617
+ def regions(self) -> regions.AsyncRegionsResourceWithRawResponse:
618
+ from .resources.regions import AsyncRegionsResourceWithRawResponse
619
+
620
+ return AsyncRegionsResourceWithRawResponse(self._client.regions)
621
+
622
+ @cached_property
623
+ def indexing_jobs(self) -> indexing_jobs.AsyncIndexingJobsResourceWithRawResponse:
624
+ from .resources.indexing_jobs import AsyncIndexingJobsResourceWithRawResponse
625
+
626
+ return AsyncIndexingJobsResourceWithRawResponse(self._client.indexing_jobs)
627
+
628
+ @cached_property
629
+ def knowledge_bases(self) -> knowledge_bases.AsyncKnowledgeBasesResourceWithRawResponse:
630
+ from .resources.knowledge_bases import AsyncKnowledgeBasesResourceWithRawResponse
631
+
632
+ return AsyncKnowledgeBasesResourceWithRawResponse(self._client.knowledge_bases)
633
+
634
+ @cached_property
635
+ def api_keys(self) -> api_keys.AsyncAPIKeysResourceWithRawResponse:
636
+ from .resources.api_keys import AsyncAPIKeysResourceWithRawResponse
637
+
638
+ return AsyncAPIKeysResourceWithRawResponse(self._client.api_keys)
639
+
640
+ @cached_property
641
+ def chat(self) -> chat.AsyncChatResourceWithRawResponse:
642
+ from .resources.chat import AsyncChatResourceWithRawResponse
643
+
644
+ return AsyncChatResourceWithRawResponse(self._client.chat)
645
+
646
+ @cached_property
647
+ def embeddings(self) -> embeddings.AsyncEmbeddingsResourceWithRawResponse:
648
+ from .resources.embeddings import AsyncEmbeddingsResourceWithRawResponse
649
+
650
+ return AsyncEmbeddingsResourceWithRawResponse(self._client.embeddings)
651
+
652
+ @cached_property
653
+ def models(self) -> models.AsyncModelsResourceWithRawResponse:
654
+ from .resources.models import AsyncModelsResourceWithRawResponse
655
+
656
+ return AsyncModelsResourceWithRawResponse(self._client.models)
657
+
658
+
659
+ class DigitaloceanGenaiSDKWithStreamedResponse:
660
+ _client: DigitaloceanGenaiSDK
661
+
662
+ def __init__(self, client: DigitaloceanGenaiSDK) -> None:
663
+ self._client = client
664
+
665
+ @cached_property
666
+ def agents(self) -> agents.AgentsResourceWithStreamingResponse:
667
+ from .resources.agents import AgentsResourceWithStreamingResponse
668
+
669
+ return AgentsResourceWithStreamingResponse(self._client.agents)
670
+
671
+ @cached_property
672
+ def providers(self) -> providers.ProvidersResourceWithStreamingResponse:
673
+ from .resources.providers import ProvidersResourceWithStreamingResponse
674
+
675
+ return ProvidersResourceWithStreamingResponse(self._client.providers)
676
+
677
+ @cached_property
678
+ def auth(self) -> auth.AuthResourceWithStreamingResponse:
679
+ from .resources.auth import AuthResourceWithStreamingResponse
680
+
681
+ return AuthResourceWithStreamingResponse(self._client.auth)
682
+
683
+ @cached_property
684
+ def regions(self) -> regions.RegionsResourceWithStreamingResponse:
685
+ from .resources.regions import RegionsResourceWithStreamingResponse
686
+
687
+ return RegionsResourceWithStreamingResponse(self._client.regions)
688
+
689
+ @cached_property
690
+ def indexing_jobs(self) -> indexing_jobs.IndexingJobsResourceWithStreamingResponse:
691
+ from .resources.indexing_jobs import IndexingJobsResourceWithStreamingResponse
692
+
693
+ return IndexingJobsResourceWithStreamingResponse(self._client.indexing_jobs)
694
+
695
+ @cached_property
696
+ def knowledge_bases(self) -> knowledge_bases.KnowledgeBasesResourceWithStreamingResponse:
697
+ from .resources.knowledge_bases import KnowledgeBasesResourceWithStreamingResponse
698
+
699
+ return KnowledgeBasesResourceWithStreamingResponse(self._client.knowledge_bases)
700
+
701
+ @cached_property
702
+ def api_keys(self) -> api_keys.APIKeysResourceWithStreamingResponse:
703
+ from .resources.api_keys import APIKeysResourceWithStreamingResponse
704
+
705
+ return APIKeysResourceWithStreamingResponse(self._client.api_keys)
706
+
707
+ @cached_property
708
+ def chat(self) -> chat.ChatResourceWithStreamingResponse:
709
+ from .resources.chat import ChatResourceWithStreamingResponse
710
+
711
+ return ChatResourceWithStreamingResponse(self._client.chat)
712
+
713
+ @cached_property
714
+ def embeddings(self) -> embeddings.EmbeddingsResourceWithStreamingResponse:
715
+ from .resources.embeddings import EmbeddingsResourceWithStreamingResponse
716
+
717
+ return EmbeddingsResourceWithStreamingResponse(self._client.embeddings)
718
+
719
+ @cached_property
720
+ def models(self) -> models.ModelsResourceWithStreamingResponse:
721
+ from .resources.models import ModelsResourceWithStreamingResponse
722
+
723
+ return ModelsResourceWithStreamingResponse(self._client.models)
724
+
725
+
726
+ class AsyncDigitaloceanGenaiSDKWithStreamedResponse:
727
+ _client: AsyncDigitaloceanGenaiSDK
728
+
729
+ def __init__(self, client: AsyncDigitaloceanGenaiSDK) -> None:
730
+ self._client = client
731
+
732
+ @cached_property
733
+ def agents(self) -> agents.AsyncAgentsResourceWithStreamingResponse:
734
+ from .resources.agents import AsyncAgentsResourceWithStreamingResponse
735
+
736
+ return AsyncAgentsResourceWithStreamingResponse(self._client.agents)
737
+
738
+ @cached_property
739
+ def providers(self) -> providers.AsyncProvidersResourceWithStreamingResponse:
740
+ from .resources.providers import AsyncProvidersResourceWithStreamingResponse
741
+
742
+ return AsyncProvidersResourceWithStreamingResponse(self._client.providers)
743
+
744
+ @cached_property
745
+ def auth(self) -> auth.AsyncAuthResourceWithStreamingResponse:
746
+ from .resources.auth import AsyncAuthResourceWithStreamingResponse
747
+
748
+ return AsyncAuthResourceWithStreamingResponse(self._client.auth)
749
+
750
+ @cached_property
751
+ def regions(self) -> regions.AsyncRegionsResourceWithStreamingResponse:
752
+ from .resources.regions import AsyncRegionsResourceWithStreamingResponse
753
+
754
+ return AsyncRegionsResourceWithStreamingResponse(self._client.regions)
755
+
756
+ @cached_property
757
+ def indexing_jobs(self) -> indexing_jobs.AsyncIndexingJobsResourceWithStreamingResponse:
758
+ from .resources.indexing_jobs import AsyncIndexingJobsResourceWithStreamingResponse
759
+
760
+ return AsyncIndexingJobsResourceWithStreamingResponse(self._client.indexing_jobs)
761
+
762
+ @cached_property
763
+ def knowledge_bases(self) -> knowledge_bases.AsyncKnowledgeBasesResourceWithStreamingResponse:
764
+ from .resources.knowledge_bases import AsyncKnowledgeBasesResourceWithStreamingResponse
765
+
766
+ return AsyncKnowledgeBasesResourceWithStreamingResponse(self._client.knowledge_bases)
767
+
768
+ @cached_property
769
+ def api_keys(self) -> api_keys.AsyncAPIKeysResourceWithStreamingResponse:
770
+ from .resources.api_keys import AsyncAPIKeysResourceWithStreamingResponse
771
+
772
+ return AsyncAPIKeysResourceWithStreamingResponse(self._client.api_keys)
773
+
774
+ @cached_property
775
+ def chat(self) -> chat.AsyncChatResourceWithStreamingResponse:
776
+ from .resources.chat import AsyncChatResourceWithStreamingResponse
777
+
778
+ return AsyncChatResourceWithStreamingResponse(self._client.chat)
779
+
780
+ @cached_property
781
+ def embeddings(self) -> embeddings.AsyncEmbeddingsResourceWithStreamingResponse:
782
+ from .resources.embeddings import AsyncEmbeddingsResourceWithStreamingResponse
783
+
784
+ return AsyncEmbeddingsResourceWithStreamingResponse(self._client.embeddings)
785
+
786
+ @cached_property
787
+ def models(self) -> models.AsyncModelsResourceWithStreamingResponse:
788
+ from .resources.models import AsyncModelsResourceWithStreamingResponse
789
+
790
+ return AsyncModelsResourceWithStreamingResponse(self._client.models)
791
+
792
+
793
+ Client = DigitaloceanGenaiSDK
794
+
795
+ AsyncClient = AsyncDigitaloceanGenaiSDK