Skip to content

Commit cb34888

Browse files
Stainless Botstainless-app[bot]
Stainless Bot
authored andcommitted
feat(api): update via SDK Studio (#212)
1 parent 7417dfb commit cb34888

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
@@ -175,11 +175,21 @@ client = AsyncPromptFoundry(
175175

176176

177177
async def main() -> None:
178-
model_parameters = await client.prompts.get_parameters(
178+
completion_create_response = await client.completion.create(
179179
id="1212121",
180-
variables={"hello": "world"},
180+
append_messages=[
181+
{
182+
"role": "user",
183+
"content": [
184+
{
185+
"type": "TEXT",
186+
"text": "What is the weather in Seattle, WA?",
187+
}
188+
],
189+
}
190+
],
181191
)
182-
print(model_parameters.parameters)
192+
print(completion_create_response.message)
183193

184194

185195
asyncio.run(main())
@@ -212,7 +222,7 @@ from prompt_foundry_python_sdk import PromptFoundry
212222
client = PromptFoundry()
213223

214224
try:
215-
client.prompts.get_parameters(
225+
client.completion.create(
216226
id="1212121",
217227
)
218228
except prompt_foundry_python_sdk.APIConnectionError as e:
@@ -257,7 +267,7 @@ client = PromptFoundry(
257267
)
258268

259269
# Or, configure per-request:
260-
client.with_options(max_retries=5).prompts.get_parameters(
270+
client.with_options(max_retries=5).completion.create(
261271
id="1212121",
262272
)
263273
```
@@ -282,7 +292,7 @@ client = PromptFoundry(
282292
)
283293

284294
# Override per-request:
285-
client.with_options(timeout=5.0).prompts.get_parameters(
295+
client.with_options(timeout=5.0).completion.create(
286296
id="1212121",
287297
)
288298
```
@@ -323,13 +333,13 @@ The "raw" Response object can be accessed by prefixing `.with_raw_response.` to
323333
from prompt_foundry_python_sdk import PromptFoundry
324334

325335
client = PromptFoundry()
326-
response = client.prompts.with_raw_response.get_parameters(
336+
response = client.completion.with_raw_response.create(
327337
id="1212121",
328338
)
329339
print(response.headers.get('X-My-Header'))
330340

331-
prompt = response.parse() # get the object that `prompts.get_parameters()` would have returned
332-
print(prompt)
341+
completion = response.parse() # get the object that `completion.create()` would have returned
342+
print(completion.message)
333343
```
334344

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

345355
```python
346-
with client.prompts.with_streaming_response.get_parameters(
356+
with client.completion.with_streaming_response.create(
347357
id="1212121",
348358
) as response:
349359
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)