Skip to content

Commit 8062369

Browse files
feat(api): manual updates
1 parent d8189ea commit 8062369

20 files changed

Lines changed: 125 additions & 2056 deletions

.stats.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 62
1+
configured_endpoints: 57
22
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/not-diamond-dragos199993%2Fnot-diamond-16cbc3880d2b786cefa8c80a6dd1129791483c0b487955104c68a5c13f00a69b.yml
33
openapi_spec_hash: 4c16e5753f4b9e0a20dd01706c5d07d7
4-
config_hash: 7250d3163e7d1be67ca362523aa0b175
4+
config_hash: 9677dbeed46c9972dd85705a35091068

README.md

Lines changed: 19 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,14 @@ pip install git+ssh://git@github.com/Not-Diamond/not-diamond-python.git
2828
The full API of this library can be found in [api.md](api.md).
2929

3030
```python
31+
import os
3132
from not_diamond import NotDiamond
3233

33-
client = NotDiamond()
34-
35-
response = client.optimizer.select_model(
36-
llm_providers=[
37-
{
38-
"model": "model",
39-
"provider": "provider",
40-
}
41-
],
42-
messages=[{"foo": "string"}],
34+
client = NotDiamond(
35+
api_key=os.environ.get("NOT_DIAMOND_API_KEY"), # This is the default and can be omitted
4336
)
37+
38+
response = client.retrieve_root()
4439
```
4540

4641
While you can provide an `api_key` keyword argument,
@@ -53,22 +48,17 @@ so that your API Key is not stored in source control.
5348
Simply import `AsyncNotDiamond` instead of `NotDiamond` and use `await` with each API call:
5449

5550
```python
51+
import os
5652
import asyncio
5753
from not_diamond import AsyncNotDiamond
5854

59-
client = AsyncNotDiamond()
55+
client = AsyncNotDiamond(
56+
api_key=os.environ.get("NOT_DIAMOND_API_KEY"), # This is the default and can be omitted
57+
)
6058

6159

6260
async def main() -> None:
63-
response = await client.optimizer.select_model(
64-
llm_providers=[
65-
{
66-
"model": "model",
67-
"provider": "provider",
68-
}
69-
],
70-
messages=[{"foo": "string"}],
71-
)
61+
response = await client.retrieve_root()
7262

7363

7464
asyncio.run(main())
@@ -97,17 +87,10 @@ from not_diamond import AsyncNotDiamond
9787

9888
async def main() -> None:
9989
async with AsyncNotDiamond(
90+
api_key="My API Key",
10091
http_client=DefaultAioHttpClient(),
10192
) as client:
102-
response = await client.optimizer.select_model(
103-
llm_providers=[
104-
{
105-
"model": "model",
106-
"provider": "provider",
107-
}
108-
],
109-
messages=[{"foo": "string"}],
110-
)
93+
response = await client.retrieve_root()
11194

11295

11396
asyncio.run(main())
@@ -182,15 +165,7 @@ from not_diamond import NotDiamond
182165
client = NotDiamond()
183166

184167
try:
185-
client.optimizer.select_model(
186-
llm_providers=[
187-
{
188-
"model": "model",
189-
"provider": "provider",
190-
}
191-
],
192-
messages=[{"foo": "string"}],
193-
)
168+
client.retrieve_root()
194169
except not_diamond.APIConnectionError as e:
195170
print("The server could not be reached")
196171
print(e.__cause__) # an underlying Exception, likely raised within httpx.
@@ -233,15 +208,7 @@ client = NotDiamond(
233208
)
234209

235210
# Or, configure per-request:
236-
client.with_options(max_retries=5).optimizer.select_model(
237-
llm_providers=[
238-
{
239-
"model": "model",
240-
"provider": "provider",
241-
}
242-
],
243-
messages=[{"foo": "string"}],
244-
)
211+
client.with_options(max_retries=5).retrieve_root()
245212
```
246213

247214
### Timeouts
@@ -264,15 +231,7 @@ client = NotDiamond(
264231
)
265232

266233
# Override per-request:
267-
client.with_options(timeout=5.0).optimizer.select_model(
268-
llm_providers=[
269-
{
270-
"model": "model",
271-
"provider": "provider",
272-
}
273-
],
274-
messages=[{"foo": "string"}],
275-
)
234+
client.with_options(timeout=5.0).retrieve_root()
276235
```
277236

278237
On timeout, an `APITimeoutError` is thrown.
@@ -313,19 +272,11 @@ The "raw" Response object can be accessed by prefixing `.with_raw_response.` to
313272
from not_diamond import NotDiamond
314273

315274
client = NotDiamond()
316-
response = client.optimizer.with_raw_response.select_model(
317-
llm_providers=[{
318-
"model": "model",
319-
"provider": "provider",
320-
}],
321-
messages=[{
322-
"foo": "string"
323-
}],
324-
)
275+
response = client.with_raw_response.retrieve_root()
325276
print(response.headers.get('X-My-Header'))
326277

327-
optimizer = response.parse() # get the object that `optimizer.select_model()` would have returned
328-
print(optimizer)
278+
client = response.parse() # get the object that `retrieve_root()` would have returned
279+
print(client)
329280
```
330281

331282
These methods return an [`APIResponse`](https://github.com/Not-Diamond/not-diamond-python/tree/main/src/not_diamond/_response.py) object.
@@ -339,15 +290,7 @@ The above interface eagerly reads the full response body when you make the reque
339290
To stream the response body, use `.with_streaming_response` instead, which requires a context manager and only reads the response body once you call `.read()`, `.text()`, `.json()`, `.iter_bytes()`, `.iter_text()`, `.iter_lines()` or `.parse()`. In the async client, these are async methods.
340291

341292
```python
342-
with client.optimizer.with_streaming_response.select_model(
343-
llm_providers=[
344-
{
345-
"model": "model",
346-
"provider": "provider",
347-
}
348-
],
349-
messages=[{"foo": "string"}],
350-
) as response:
293+
with client.with_streaming_response.retrieve_root() as response:
351294
print(response.headers.get("X-My-Header"))
352295

353296
for line in response.iter_lines():

api.md

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,6 @@ Methods:
1010

1111
- <code title="get /">client.<a href="./src/not_diamond/_client.py">retrieve_root</a>() -> <a href="./src/not_diamond/types/retrieve_root_response.py">RetrieveRootResponse</a></code>
1212

13-
# Optimizer
14-
15-
Types:
16-
17-
```python
18-
from not_diamond.types import FrontendHashOptimizerRequest, OpenRouterProvider, OptimizerBaseRequest
19-
```
20-
21-
Methods:
22-
23-
- <code title="post /v2/optimizer/frontendArenaModels">client.optimizer.<a href="./src/not_diamond/resources/optimizer.py">get_frontend_arena_models</a>(\*\*<a href="src/not_diamond/types/optimizer_get_frontend_arena_models_params.py">params</a>) -> object</code>
24-
- <code title="post /v2/optimizer/frontendHashModelSelect">client.optimizer.<a href="./src/not_diamond/resources/optimizer.py">select_frontend_hash_model</a>(\*\*<a href="src/not_diamond/types/optimizer_select_frontend_hash_model_params.py">params</a>) -> object</code>
25-
- <code title="post /v2/optimizer/hashModelSelect">client.optimizer.<a href="./src/not_diamond/resources/optimizer.py">select_hash_model</a>(\*\*<a href="src/not_diamond/types/optimizer_select_hash_model_params.py">params</a>) -> object</code>
26-
- <code title="post /v2/optimizer/modelSelect">client.optimizer.<a href="./src/not_diamond/resources/optimizer.py">select_model</a>(\*\*<a href="src/not_diamond/types/optimizer_select_model_params.py">params</a>) -> object</code>
27-
- <code title="post /v2/optimizer/userIDModelSelect">client.optimizer.<a href="./src/not_diamond/resources/optimizer.py">select_userid_model</a>(\*\*<a href="src/not_diamond/types/optimizer_select_userid_model_params.py">params</a>) -> object</code>
28-
2913
# ModelRouter
3014

3115
Methods:

src/not_diamond/_client.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
prompt,
3838
api_keys,
3939
llm_usage,
40-
optimizer,
4140
semihuman,
4241
error_debug,
4342
evaluations,
@@ -73,7 +72,6 @@
7372

7473

7574
class NotDiamond(SyncAPIClient):
76-
optimizer: optimizer.OptimizerResource
7775
model_router: model_router.ModelRouterResource
7876
evaluations: evaluations.EvaluationsResource
7977
report: report.ReportResource
@@ -144,7 +142,6 @@ def __init__(
144142
_strict_response_validation=_strict_response_validation,
145143
)
146144

147-
self.optimizer = optimizer.OptimizerResource(self)
148145
self.model_router = model_router.ModelRouterResource(self)
149146
self.evaluations = evaluations.EvaluationsResource(self)
150147
self.report = report.ReportResource(self)
@@ -303,7 +300,6 @@ def _make_status_error(
303300

304301

305302
class AsyncNotDiamond(AsyncAPIClient):
306-
optimizer: optimizer.AsyncOptimizerResource
307303
model_router: model_router.AsyncModelRouterResource
308304
evaluations: evaluations.AsyncEvaluationsResource
309305
report: report.AsyncReportResource
@@ -374,7 +370,6 @@ def __init__(
374370
_strict_response_validation=_strict_response_validation,
375371
)
376372

377-
self.optimizer = optimizer.AsyncOptimizerResource(self)
378373
self.model_router = model_router.AsyncModelRouterResource(self)
379374
self.evaluations = evaluations.AsyncEvaluationsResource(self)
380375
self.report = report.AsyncReportResource(self)
@@ -534,7 +529,6 @@ def _make_status_error(
534529

535530
class NotDiamondWithRawResponse:
536531
def __init__(self, client: NotDiamond) -> None:
537-
self.optimizer = optimizer.OptimizerResourceWithRawResponse(client.optimizer)
538532
self.model_router = model_router.ModelRouterResourceWithRawResponse(client.model_router)
539533
self.evaluations = evaluations.EvaluationsResourceWithRawResponse(client.evaluations)
540534
self.report = report.ReportResourceWithRawResponse(client.report)
@@ -560,7 +554,6 @@ def __init__(self, client: NotDiamond) -> None:
560554

561555
class AsyncNotDiamondWithRawResponse:
562556
def __init__(self, client: AsyncNotDiamond) -> None:
563-
self.optimizer = optimizer.AsyncOptimizerResourceWithRawResponse(client.optimizer)
564557
self.model_router = model_router.AsyncModelRouterResourceWithRawResponse(client.model_router)
565558
self.evaluations = evaluations.AsyncEvaluationsResourceWithRawResponse(client.evaluations)
566559
self.report = report.AsyncReportResourceWithRawResponse(client.report)
@@ -586,7 +579,6 @@ def __init__(self, client: AsyncNotDiamond) -> None:
586579

587580
class NotDiamondWithStreamedResponse:
588581
def __init__(self, client: NotDiamond) -> None:
589-
self.optimizer = optimizer.OptimizerResourceWithStreamingResponse(client.optimizer)
590582
self.model_router = model_router.ModelRouterResourceWithStreamingResponse(client.model_router)
591583
self.evaluations = evaluations.EvaluationsResourceWithStreamingResponse(client.evaluations)
592584
self.report = report.ReportResourceWithStreamingResponse(client.report)
@@ -612,7 +604,6 @@ def __init__(self, client: NotDiamond) -> None:
612604

613605
class AsyncNotDiamondWithStreamedResponse:
614606
def __init__(self, client: AsyncNotDiamond) -> None:
615-
self.optimizer = optimizer.AsyncOptimizerResourceWithStreamingResponse(client.optimizer)
616607
self.model_router = model_router.AsyncModelRouterResourceWithStreamingResponse(client.model_router)
617608
self.evaluations = evaluations.AsyncEvaluationsResourceWithStreamingResponse(client.evaluations)
618609
self.report = report.AsyncReportResourceWithStreamingResponse(client.report)

src/not_diamond/resources/__init__.py

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,6 @@
8080
LlmUsageResourceWithStreamingResponse,
8181
AsyncLlmUsageResourceWithStreamingResponse,
8282
)
83-
from .optimizer import (
84-
OptimizerResource,
85-
AsyncOptimizerResource,
86-
OptimizerResourceWithRawResponse,
87-
AsyncOptimizerResourceWithRawResponse,
88-
OptimizerResourceWithStreamingResponse,
89-
AsyncOptimizerResourceWithStreamingResponse,
90-
)
9183
from .semihuman import (
9284
SemihumanResource,
9385
AsyncSemihumanResource,
@@ -146,12 +138,6 @@
146138
)
147139

148140
__all__ = [
149-
"OptimizerResource",
150-
"AsyncOptimizerResource",
151-
"OptimizerResourceWithRawResponse",
152-
"AsyncOptimizerResourceWithRawResponse",
153-
"OptimizerResourceWithStreamingResponse",
154-
"AsyncOptimizerResourceWithStreamingResponse",
155141
"ModelRouterResource",
156142
"AsyncModelRouterResource",
157143
"ModelRouterResourceWithRawResponse",

0 commit comments

Comments
 (0)