Skip to content

Commit 6df8271

Browse files
author
Stainless Bot
committed
feat(api): update via SDK Studio (#212)
1 parent 9d063f3 commit 6df8271

File tree

2 files changed

+36
-22
lines changed

2 files changed

+36
-22
lines changed

README.md

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -169,11 +169,21 @@ client = AsyncPromptFoundry(
169169

170170

171171
async def main() -> None:
172-
model_parameters = await client.prompts.get_parameters(
172+
completion_create_response = await client.completion.create(
173173
id="1212121",
174-
variables={"hello": "world"},
174+
append_messages=[
175+
{
176+
"role": "user",
177+
"content": [
178+
{
179+
"type": "TEXT",
180+
"text": "What is the weather in Seattle, WA?",
181+
}
182+
],
183+
}
184+
],
175185
)
176-
print(model_parameters.parameters)
186+
print(completion_create_response.message)
177187

178188

179189
asyncio.run(main())
@@ -206,7 +216,7 @@ from prompt_foundry_python_sdk import PromptFoundry
206216
client = PromptFoundry()
207217

208218
try:
209-
client.prompts.get_parameters(
219+
client.completion.create(
210220
id="1212121",
211221
)
212222
except prompt_foundry_python_sdk.APIConnectionError as e:
@@ -251,7 +261,7 @@ client = PromptFoundry(
251261
)
252262

253263
# Or, configure per-request:
254-
client.with_options(max_retries=5).prompts.get_parameters(
264+
client.with_options(max_retries=5).completion.create(
255265
id="1212121",
256266
)
257267
```
@@ -276,7 +286,7 @@ client = PromptFoundry(
276286
)
277287

278288
# Override per-request:
279-
client.with_options(timeout=5.0).prompts.get_parameters(
289+
client.with_options(timeout=5.0).completion.create(
280290
id="1212121",
281291
)
282292
```
@@ -317,13 +327,13 @@ The "raw" Response object can be accessed by prefixing `.with_raw_response.` to
317327
from prompt_foundry_python_sdk import PromptFoundry
318328

319329
client = PromptFoundry()
320-
response = client.prompts.with_raw_response.get_parameters(
330+
response = client.completion.with_raw_response.create(
321331
id="1212121",
322332
)
323333
print(response.headers.get('X-My-Header'))
324334

325-
prompt = response.parse() # get the object that `prompts.get_parameters()` would have returned
326-
print(prompt)
335+
completion = response.parse() # get the object that `completion.create()` would have returned
336+
print(completion.message)
327337
```
328338

329339
These methods return an [`APIResponse`](https://github.com/prompt-foundry/python-sdk/tree/main/src/prompt_foundry_python_sdk/_response.py) object.
@@ -337,7 +347,7 @@ The above interface eagerly reads the full response body when you make the reque
337347
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.
338348

339349
```python
340-
with client.prompts.with_streaming_response.get_parameters(
350+
with client.completion.with_streaming_response.create(
341351
id="1212121",
342352
) as response:
343353
print(response.headers.get("X-My-Header"))

tests/test_client.py

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -721,11 +721,13 @@ def test_parse_retry_after_header(self, remaining_retries: int, retry_after: str
721721
@mock.patch("prompt_foundry_python_sdk._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
722722
@pytest.mark.respx(base_url=base_url)
723723
def test_retrying_timeout_errors_doesnt_leak(self, respx_mock: MockRouter) -> None:
724-
respx_mock.post("/sdk/v1/prompts/1212121").mock(side_effect=httpx.TimeoutException("Test timeout error"))
724+
respx_mock.post("/sdk/v1/prompts/1212121/completion").mock(
725+
side_effect=httpx.TimeoutException("Test timeout error")
726+
)
725727

726728
with pytest.raises(APITimeoutError):
727729
self.client.post(
728-
"/sdk/v1/prompts/1212121",
730+
"/sdk/v1/prompts/1212121/completion",
729731
body=cast(object, dict()),
730732
cast_to=httpx.Response,
731733
options={"headers": {RAW_RESPONSE_HEADER: "stream"}},
@@ -736,11 +738,11 @@ def test_retrying_timeout_errors_doesnt_leak(self, respx_mock: MockRouter) -> No
736738
@mock.patch("prompt_foundry_python_sdk._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
737739
@pytest.mark.respx(base_url=base_url)
738740
def test_retrying_status_errors_doesnt_leak(self, respx_mock: MockRouter) -> None:
739-
respx_mock.post("/sdk/v1/prompts/1212121").mock(return_value=httpx.Response(500))
741+
respx_mock.post("/sdk/v1/prompts/1212121/completion").mock(return_value=httpx.Response(500))
740742

741743
with pytest.raises(APIStatusError):
742744
self.client.post(
743-
"/sdk/v1/prompts/1212121",
745+
"/sdk/v1/prompts/1212121/completion",
744746
body=cast(object, dict()),
745747
cast_to=httpx.Response,
746748
options={"headers": {RAW_RESPONSE_HEADER: "stream"}},
@@ -763,9 +765,9 @@ def retry_handler(_request: httpx.Request) -> httpx.Response:
763765
return httpx.Response(500)
764766
return httpx.Response(200)
765767

766-
respx_mock.post("/sdk/v1/prompts/1212121").mock(side_effect=retry_handler)
768+
respx_mock.post("/sdk/v1/prompts/1212121/completion").mock(side_effect=retry_handler)
767769

768-
response = client.prompts.with_raw_response.get_parameters(id="1212121")
770+
response = client.completion.with_raw_response.create(id="1212121")
769771

770772
assert response.retries_taken == failures_before_success
771773

@@ -1440,11 +1442,13 @@ async def test_parse_retry_after_header(self, remaining_retries: int, retry_afte
14401442
@mock.patch("prompt_foundry_python_sdk._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
14411443
@pytest.mark.respx(base_url=base_url)
14421444
async def test_retrying_timeout_errors_doesnt_leak(self, respx_mock: MockRouter) -> None:
1443-
respx_mock.post("/sdk/v1/prompts/1212121").mock(side_effect=httpx.TimeoutException("Test timeout error"))
1445+
respx_mock.post("/sdk/v1/prompts/1212121/completion").mock(
1446+
side_effect=httpx.TimeoutException("Test timeout error")
1447+
)
14441448

14451449
with pytest.raises(APITimeoutError):
14461450
await self.client.post(
1447-
"/sdk/v1/prompts/1212121",
1451+
"/sdk/v1/prompts/1212121/completion",
14481452
body=cast(object, dict()),
14491453
cast_to=httpx.Response,
14501454
options={"headers": {RAW_RESPONSE_HEADER: "stream"}},
@@ -1455,11 +1459,11 @@ async def test_retrying_timeout_errors_doesnt_leak(self, respx_mock: MockRouter)
14551459
@mock.patch("prompt_foundry_python_sdk._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
14561460
@pytest.mark.respx(base_url=base_url)
14571461
async def test_retrying_status_errors_doesnt_leak(self, respx_mock: MockRouter) -> None:
1458-
respx_mock.post("/sdk/v1/prompts/1212121").mock(return_value=httpx.Response(500))
1462+
respx_mock.post("/sdk/v1/prompts/1212121/completion").mock(return_value=httpx.Response(500))
14591463

14601464
with pytest.raises(APIStatusError):
14611465
await self.client.post(
1462-
"/sdk/v1/prompts/1212121",
1466+
"/sdk/v1/prompts/1212121/completion",
14631467
body=cast(object, dict()),
14641468
cast_to=httpx.Response,
14651469
options={"headers": {RAW_RESPONSE_HEADER: "stream"}},
@@ -1485,8 +1489,8 @@ def retry_handler(_request: httpx.Request) -> httpx.Response:
14851489
return httpx.Response(500)
14861490
return httpx.Response(200)
14871491

1488-
respx_mock.post("/sdk/v1/prompts/1212121").mock(side_effect=retry_handler)
1492+
respx_mock.post("/sdk/v1/prompts/1212121/completion").mock(side_effect=retry_handler)
14891493

1490-
response = await client.prompts.with_raw_response.get_parameters(id="1212121")
1494+
response = await client.completion.with_raw_response.create(id="1212121")
14911495

14921496
assert response.retries_taken == failures_before_success

0 commit comments

Comments
 (0)