Skip to content

Commit f6b12b8

Browse files
feat(api): update via SDK Studio
1 parent 0c84ebf commit f6b12b8

File tree

9 files changed

+605
-2
lines changed

9 files changed

+605
-2
lines changed

.stats.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 188
1+
configured_endpoints: 189
22
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/digitalocean%2Fgradient-ca993fd0bc66f703323a773c92da75207266f7f9d8c54ddac2fbd271a3cdaf86.yml
33
openapi_spec_hash: 35d7edb04aab2ab28bc7e5851a54b4e3
4-
config_hash: 9a00a8eb92513ddc0f58cef831f45eb5
4+
config_hash: 70aafd9d59b80da716b5a9d896c8c0bd

api.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1027,3 +1027,15 @@ Methods:
10271027
- <code title="get /v2/nfs/snapshots/{nfs_snapshot_id}">client.nfs.snapshots.<a href="./src/gradient/resources/nfs/snapshots.py">retrieve</a>(nfs_snapshot_id, \*\*<a href="src/gradient/types/nfs/snapshot_retrieve_params.py">params</a>) -> <a href="./src/gradient/types/nfs/snapshot_retrieve_response.py">SnapshotRetrieveResponse</a></code>
10281028
- <code title="get /v2/nfs/snapshots">client.nfs.snapshots.<a href="./src/gradient/resources/nfs/snapshots.py">list</a>(\*\*<a href="src/gradient/types/nfs/snapshot_list_params.py">params</a>) -> <a href="./src/gradient/types/nfs/snapshot_list_response.py">SnapshotListResponse</a></code>
10291029
- <code title="delete /v2/nfs/snapshots/{nfs_snapshot_id}">client.nfs.snapshots.<a href="./src/gradient/resources/nfs/snapshots.py">delete</a>(nfs_snapshot_id, \*\*<a href="src/gradient/types/nfs/snapshot_delete_params.py">params</a>) -> None</code>
1030+
1031+
# Retrieve
1032+
1033+
Types:
1034+
1035+
```python
1036+
from gradient.types import RetrieveDocumentsResponse
1037+
```
1038+
1039+
Methods:
1040+
1041+
- <code title="post /{knowledgeBaseId}/retrieve">client.retrieve.<a href="./src/gradient/resources/retrieve.py">documents</a>(knowledge_base_id, \*\*<a href="src/gradient/types/retrieve_documents_params.py">params</a>) -> <a href="./src/gradient/types/retrieve_documents_response.py">RetrieveDocumentsResponse</a></code>

src/gradient/_client.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
images,
4040
models,
4141
regions,
42+
retrieve,
4243
databases,
4344
inference,
4445
gpu_droplets,
@@ -47,6 +48,7 @@
4748
from .resources.images import ImagesResource, AsyncImagesResource
4849
from .resources.nfs.nfs import NfsResource, AsyncNfsResource
4950
from .resources.regions import RegionsResource, AsyncRegionsResource
51+
from .resources.retrieve import RetrieveResource, AsyncRetrieveResource
5052
from .resources.chat.chat import ChatResource, AsyncChatResource
5153
from .resources.gpu_droplets import (
5254
GPUDropletsResource,
@@ -237,6 +239,12 @@ def nfs(self) -> NfsResource:
237239

238240
return NfsResource(self)
239241

242+
@cached_property
243+
def retrieve(self) -> RetrieveResource:
244+
from .resources.retrieve import RetrieveResource
245+
246+
return RetrieveResource(self)
247+
240248
@cached_property
241249
def with_raw_response(self) -> GradientWithRawResponse:
242250
return GradientWithRawResponse(self)
@@ -593,6 +601,12 @@ def nfs(self) -> AsyncNfsResource:
593601

594602
return AsyncNfsResource(self)
595603

604+
@cached_property
605+
def retrieve(self) -> AsyncRetrieveResource:
606+
from .resources.retrieve import AsyncRetrieveResource
607+
608+
return AsyncRetrieveResource(self)
609+
596610
@cached_property
597611
def with_raw_response(self) -> AsyncGradientWithRawResponse:
598612
return AsyncGradientWithRawResponse(self)
@@ -851,6 +865,12 @@ def nfs(self) -> nfs.NfsResourceWithRawResponse:
851865

852866
return NfsResourceWithRawResponse(self._client.nfs)
853867

868+
@cached_property
869+
def retrieve(self) -> retrieve.RetrieveResourceWithRawResponse:
870+
from .resources.retrieve import RetrieveResourceWithRawResponse
871+
872+
return RetrieveResourceWithRawResponse(self._client.retrieve)
873+
854874

855875
class AsyncGradientWithRawResponse:
856876
_client: AsyncGradient
@@ -922,6 +942,12 @@ def nfs(self) -> nfs.AsyncNfsResourceWithRawResponse:
922942

923943
return AsyncNfsResourceWithRawResponse(self._client.nfs)
924944

945+
@cached_property
946+
def retrieve(self) -> retrieve.AsyncRetrieveResourceWithRawResponse:
947+
from .resources.retrieve import AsyncRetrieveResourceWithRawResponse
948+
949+
return AsyncRetrieveResourceWithRawResponse(self._client.retrieve)
950+
925951

926952
class GradientWithStreamedResponse:
927953
_client: Gradient
@@ -993,6 +1019,12 @@ def nfs(self) -> nfs.NfsResourceWithStreamingResponse:
9931019

9941020
return NfsResourceWithStreamingResponse(self._client.nfs)
9951021

1022+
@cached_property
1023+
def retrieve(self) -> retrieve.RetrieveResourceWithStreamingResponse:
1024+
from .resources.retrieve import RetrieveResourceWithStreamingResponse
1025+
1026+
return RetrieveResourceWithStreamingResponse(self._client.retrieve)
1027+
9961028

9971029
class AsyncGradientWithStreamedResponse:
9981030
_client: AsyncGradient
@@ -1070,6 +1102,12 @@ def nfs(self) -> nfs.AsyncNfsResourceWithStreamingResponse:
10701102

10711103
return AsyncNfsResourceWithStreamingResponse(self._client.nfs)
10721104

1105+
@cached_property
1106+
def retrieve(self) -> retrieve.AsyncRetrieveResourceWithStreamingResponse:
1107+
from .resources.retrieve import AsyncRetrieveResourceWithStreamingResponse
1108+
1109+
return AsyncRetrieveResourceWithStreamingResponse(self._client.retrieve)
1110+
10731111

10741112
Client = Gradient
10751113

src/gradient/resources/__init__.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,14 @@
4848
RegionsResourceWithStreamingResponse,
4949
AsyncRegionsResourceWithStreamingResponse,
5050
)
51+
from .retrieve import (
52+
RetrieveResource,
53+
AsyncRetrieveResource,
54+
RetrieveResourceWithRawResponse,
55+
AsyncRetrieveResourceWithRawResponse,
56+
RetrieveResourceWithStreamingResponse,
57+
AsyncRetrieveResourceWithStreamingResponse,
58+
)
5159
from .databases import (
5260
DatabasesResource,
5361
AsyncDatabasesResource,
@@ -142,4 +150,10 @@
142150
"AsyncNfsResourceWithRawResponse",
143151
"NfsResourceWithStreamingResponse",
144152
"AsyncNfsResourceWithStreamingResponse",
153+
"RetrieveResource",
154+
"AsyncRetrieveResource",
155+
"RetrieveResourceWithRawResponse",
156+
"AsyncRetrieveResourceWithRawResponse",
157+
"RetrieveResourceWithStreamingResponse",
158+
"AsyncRetrieveResourceWithStreamingResponse",
145159
]

src/gradient/resources/retrieve.py

Lines changed: 249 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,249 @@
1+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
from __future__ import annotations
4+
5+
import httpx
6+
7+
from ..types import retrieve_documents_params
8+
from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
9+
from .._utils import maybe_transform, async_maybe_transform
10+
from .._compat import cached_property
11+
from .._resource import SyncAPIResource, AsyncAPIResource
12+
from .._response import (
13+
to_raw_response_wrapper,
14+
to_streamed_response_wrapper,
15+
async_to_raw_response_wrapper,
16+
async_to_streamed_response_wrapper,
17+
)
18+
from .._base_client import make_request_options
19+
from ..types.retrieve_documents_response import RetrieveDocumentsResponse
20+
21+
__all__ = ["RetrieveResource", "AsyncRetrieveResource"]
22+
23+
24+
class RetrieveResource(SyncAPIResource):
25+
@cached_property
26+
def with_raw_response(self) -> RetrieveResourceWithRawResponse:
27+
"""
28+
This property can be used as a prefix for any HTTP method call to return
29+
the raw response object instead of the parsed content.
30+
31+
For more information, see https://www.github.com/digitalocean/gradient-python#accessing-raw-response-data-eg-headers
32+
"""
33+
return RetrieveResourceWithRawResponse(self)
34+
35+
@cached_property
36+
def with_streaming_response(self) -> RetrieveResourceWithStreamingResponse:
37+
"""
38+
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
39+
40+
For more information, see https://www.github.com/digitalocean/gradient-python#with_streaming_response
41+
"""
42+
return RetrieveResourceWithStreamingResponse(self)
43+
44+
def documents(
45+
self,
46+
knowledge_base_id: str,
47+
*,
48+
num_results: int,
49+
query: str,
50+
alpha: float | Omit = omit,
51+
filters: retrieve_documents_params.Filters | Omit = omit,
52+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
53+
# The extra values given here take precedence over values defined on the client or passed to this method.
54+
extra_headers: Headers | None = None,
55+
extra_query: Query | None = None,
56+
extra_body: Body | None = None,
57+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
58+
) -> RetrieveDocumentsResponse:
59+
"""
60+
Retrieve relevant documents from a knowledge base using semantic search.
61+
62+
This endpoint:
63+
64+
1. Authenticates the request using the provided bearer token
65+
2. Generates embeddings for the query using the knowledge base's configured
66+
model
67+
3. Performs vector similarity search in the knowledge base
68+
4. Returns the most relevant document chunks
69+
70+
The search supports hybrid search combining:
71+
72+
- Vector similarity (semantic search)
73+
- Keyword matching (BM25)
74+
- Custom metadata filters
75+
76+
Args:
77+
num_results: Number of results to return
78+
79+
query: The search query text
80+
81+
alpha:
82+
Weight for hybrid search (0-1):
83+
84+
- 0 = pure keyword search (BM25)
85+
- 1 = pure vector search (default)
86+
- 0.5 = balanced hybrid search
87+
88+
filters: Metadata filters to apply to the search
89+
90+
extra_headers: Send extra headers
91+
92+
extra_query: Add additional query parameters to the request
93+
94+
extra_body: Add additional JSON properties to the request
95+
96+
timeout: Override the client-level default timeout for this request, in seconds
97+
"""
98+
if not knowledge_base_id:
99+
raise ValueError(f"Expected a non-empty value for `knowledge_base_id` but received {knowledge_base_id!r}")
100+
return self._post(
101+
f"/{knowledge_base_id}/retrieve"
102+
if self._client._base_url_overridden
103+
else f"https://kbaas.do-ai.run/v1/{knowledge_base_id}/retrieve",
104+
body=maybe_transform(
105+
{
106+
"num_results": num_results,
107+
"query": query,
108+
"alpha": alpha,
109+
"filters": filters,
110+
},
111+
retrieve_documents_params.RetrieveDocumentsParams,
112+
),
113+
options=make_request_options(
114+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
115+
),
116+
cast_to=RetrieveDocumentsResponse,
117+
)
118+
119+
120+
class AsyncRetrieveResource(AsyncAPIResource):
121+
@cached_property
122+
def with_raw_response(self) -> AsyncRetrieveResourceWithRawResponse:
123+
"""
124+
This property can be used as a prefix for any HTTP method call to return
125+
the raw response object instead of the parsed content.
126+
127+
For more information, see https://www.github.com/digitalocean/gradient-python#accessing-raw-response-data-eg-headers
128+
"""
129+
return AsyncRetrieveResourceWithRawResponse(self)
130+
131+
@cached_property
132+
def with_streaming_response(self) -> AsyncRetrieveResourceWithStreamingResponse:
133+
"""
134+
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
135+
136+
For more information, see https://www.github.com/digitalocean/gradient-python#with_streaming_response
137+
"""
138+
return AsyncRetrieveResourceWithStreamingResponse(self)
139+
140+
async def documents(
141+
self,
142+
knowledge_base_id: str,
143+
*,
144+
num_results: int,
145+
query: str,
146+
alpha: float | Omit = omit,
147+
filters: retrieve_documents_params.Filters | Omit = omit,
148+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
149+
# The extra values given here take precedence over values defined on the client or passed to this method.
150+
extra_headers: Headers | None = None,
151+
extra_query: Query | None = None,
152+
extra_body: Body | None = None,
153+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
154+
) -> RetrieveDocumentsResponse:
155+
"""
156+
Retrieve relevant documents from a knowledge base using semantic search.
157+
158+
This endpoint:
159+
160+
1. Authenticates the request using the provided bearer token
161+
2. Generates embeddings for the query using the knowledge base's configured
162+
model
163+
3. Performs vector similarity search in the knowledge base
164+
4. Returns the most relevant document chunks
165+
166+
The search supports hybrid search combining:
167+
168+
- Vector similarity (semantic search)
169+
- Keyword matching (BM25)
170+
- Custom metadata filters
171+
172+
Args:
173+
num_results: Number of results to return
174+
175+
query: The search query text
176+
177+
alpha:
178+
Weight for hybrid search (0-1):
179+
180+
- 0 = pure keyword search (BM25)
181+
- 1 = pure vector search (default)
182+
- 0.5 = balanced hybrid search
183+
184+
filters: Metadata filters to apply to the search
185+
186+
extra_headers: Send extra headers
187+
188+
extra_query: Add additional query parameters to the request
189+
190+
extra_body: Add additional JSON properties to the request
191+
192+
timeout: Override the client-level default timeout for this request, in seconds
193+
"""
194+
if not knowledge_base_id:
195+
raise ValueError(f"Expected a non-empty value for `knowledge_base_id` but received {knowledge_base_id!r}")
196+
return await self._post(
197+
f"/{knowledge_base_id}/retrieve"
198+
if self._client._base_url_overridden
199+
else f"https://kbaas.do-ai.run/v1/{knowledge_base_id}/retrieve",
200+
body=await async_maybe_transform(
201+
{
202+
"num_results": num_results,
203+
"query": query,
204+
"alpha": alpha,
205+
"filters": filters,
206+
},
207+
retrieve_documents_params.RetrieveDocumentsParams,
208+
),
209+
options=make_request_options(
210+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
211+
),
212+
cast_to=RetrieveDocumentsResponse,
213+
)
214+
215+
216+
class RetrieveResourceWithRawResponse:
217+
def __init__(self, retrieve: RetrieveResource) -> None:
218+
self._retrieve = retrieve
219+
220+
self.documents = to_raw_response_wrapper(
221+
retrieve.documents,
222+
)
223+
224+
225+
class AsyncRetrieveResourceWithRawResponse:
226+
def __init__(self, retrieve: AsyncRetrieveResource) -> None:
227+
self._retrieve = retrieve
228+
229+
self.documents = async_to_raw_response_wrapper(
230+
retrieve.documents,
231+
)
232+
233+
234+
class RetrieveResourceWithStreamingResponse:
235+
def __init__(self, retrieve: RetrieveResource) -> None:
236+
self._retrieve = retrieve
237+
238+
self.documents = to_streamed_response_wrapper(
239+
retrieve.documents,
240+
)
241+
242+
243+
class AsyncRetrieveResourceWithStreamingResponse:
244+
def __init__(self, retrieve: AsyncRetrieveResource) -> None:
245+
self._retrieve = retrieve
246+
247+
self.documents = async_to_streamed_response_wrapper(
248+
retrieve.documents,
249+
)

0 commit comments

Comments
 (0)