openai/openai-python

Public

mirrored from https://github.com/openai/openai-pythonAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
v1.96.1

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

tests/api_resources/chat/test_completions.py

875lines · modecode

1# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
3from __future__ import annotations
4
5import os
6from typing import Any, cast
7
8import pytest
9import pydantic
10
11from openai import OpenAI, AsyncOpenAI
12from tests.utils import assert_matches_type
13from openai.pagination import SyncCursorPage, AsyncCursorPage
14from openai.types.chat import (
15 ChatCompletion,
16 ChatCompletionDeleted,
17)
18
19base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
20
21
22class TestCompletions:
23 parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"])
24
25 @parametrize
26 def test_method_create_overload_1(self, client: OpenAI) -> None:
27 completion = client.chat.completions.create(
28 messages=[
29 {
30 "content": "string",
31 "role": "developer",
32 }
33 ],
34 model="gpt-4o",
35 )
36 assert_matches_type(ChatCompletion, completion, path=["response"])
37
38 @parametrize
39 def test_method_create_with_all_params_overload_1(self, client: OpenAI) -> None:
40 completion = client.chat.completions.create(
41 messages=[
42 {
43 "content": "string",
44 "role": "developer",
45 "name": "name",
46 }
47 ],
48 model="gpt-4o",
49 audio={
50 "format": "wav",
51 "voice": "ash",
52 },
53 frequency_penalty=-2,
54 function_call="none",
55 functions=[
56 {
57 "name": "name",
58 "description": "description",
59 "parameters": {"foo": "bar"},
60 }
61 ],
62 logit_bias={"foo": 0},
63 logprobs=True,
64 max_completion_tokens=0,
65 max_tokens=0,
66 metadata={"foo": "string"},
67 modalities=["text"],
68 n=1,
69 parallel_tool_calls=True,
70 prediction={
71 "content": "string",
72 "type": "content",
73 },
74 presence_penalty=-2,
75 reasoning_effort="low",
76 response_format={"type": "text"},
77 seed=-9007199254740991,
78 service_tier="auto",
79 stop="\n",
80 store=True,
81 stream=False,
82 stream_options={"include_usage": True},
83 temperature=1,
84 tool_choice="none",
85 tools=[
86 {
87 "function": {
88 "name": "name",
89 "description": "description",
90 "parameters": {"foo": "bar"},
91 "strict": True,
92 },
93 "type": "function",
94 }
95 ],
96 top_logprobs=0,
97 top_p=1,
98 user="user-1234",
99 web_search_options={
100 "search_context_size": "low",
101 "user_location": {
102 "approximate": {
103 "city": "city",
104 "country": "country",
105 "region": "region",
106 "timezone": "timezone",
107 },
108 "type": "approximate",
109 },
110 },
111 )
112 assert_matches_type(ChatCompletion, completion, path=["response"])
113
114 @parametrize
115 def test_raw_response_create_overload_1(self, client: OpenAI) -> None:
116 response = client.chat.completions.with_raw_response.create(
117 messages=[
118 {
119 "content": "string",
120 "role": "developer",
121 }
122 ],
123 model="gpt-4o",
124 )
125
126 assert response.is_closed is True
127 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
128 completion = response.parse()
129 assert_matches_type(ChatCompletion, completion, path=["response"])
130
131 @parametrize
132 def test_streaming_response_create_overload_1(self, client: OpenAI) -> None:
133 with client.chat.completions.with_streaming_response.create(
134 messages=[
135 {
136 "content": "string",
137 "role": "developer",
138 }
139 ],
140 model="gpt-4o",
141 ) as response:
142 assert not response.is_closed
143 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
144
145 completion = response.parse()
146 assert_matches_type(ChatCompletion, completion, path=["response"])
147
148 assert cast(Any, response.is_closed) is True
149
150 @parametrize
151 def test_method_create_overload_2(self, client: OpenAI) -> None:
152 completion_stream = client.chat.completions.create(
153 messages=[
154 {
155 "content": "string",
156 "role": "developer",
157 }
158 ],
159 model="gpt-4o",
160 stream=True,
161 )
162 completion_stream.response.close()
163
164 @parametrize
165 def test_method_create_with_all_params_overload_2(self, client: OpenAI) -> None:
166 completion_stream = client.chat.completions.create(
167 messages=[
168 {
169 "content": "string",
170 "role": "developer",
171 "name": "name",
172 }
173 ],
174 model="gpt-4o",
175 stream=True,
176 audio={
177 "format": "wav",
178 "voice": "ash",
179 },
180 frequency_penalty=-2,
181 function_call="none",
182 functions=[
183 {
184 "name": "name",
185 "description": "description",
186 "parameters": {"foo": "bar"},
187 }
188 ],
189 logit_bias={"foo": 0},
190 logprobs=True,
191 max_completion_tokens=0,
192 max_tokens=0,
193 metadata={"foo": "string"},
194 modalities=["text"],
195 n=1,
196 parallel_tool_calls=True,
197 prediction={
198 "content": "string",
199 "type": "content",
200 },
201 presence_penalty=-2,
202 reasoning_effort="low",
203 response_format={"type": "text"},
204 seed=-9007199254740991,
205 service_tier="auto",
206 stop="\n",
207 store=True,
208 stream_options={"include_usage": True},
209 temperature=1,
210 tool_choice="none",
211 tools=[
212 {
213 "function": {
214 "name": "name",
215 "description": "description",
216 "parameters": {"foo": "bar"},
217 "strict": True,
218 },
219 "type": "function",
220 }
221 ],
222 top_logprobs=0,
223 top_p=1,
224 user="user-1234",
225 web_search_options={
226 "search_context_size": "low",
227 "user_location": {
228 "approximate": {
229 "city": "city",
230 "country": "country",
231 "region": "region",
232 "timezone": "timezone",
233 },
234 "type": "approximate",
235 },
236 },
237 )
238 completion_stream.response.close()
239
240 @parametrize
241 def test_raw_response_create_overload_2(self, client: OpenAI) -> None:
242 response = client.chat.completions.with_raw_response.create(
243 messages=[
244 {
245 "content": "string",
246 "role": "developer",
247 }
248 ],
249 model="gpt-4o",
250 stream=True,
251 )
252
253 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
254 stream = response.parse()
255 stream.close()
256
257 @parametrize
258 def test_streaming_response_create_overload_2(self, client: OpenAI) -> None:
259 with client.chat.completions.with_streaming_response.create(
260 messages=[
261 {
262 "content": "string",
263 "role": "developer",
264 }
265 ],
266 model="gpt-4o",
267 stream=True,
268 ) as response:
269 assert not response.is_closed
270 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
271
272 stream = response.parse()
273 stream.close()
274
275 assert cast(Any, response.is_closed) is True
276
277 @parametrize
278 def test_method_retrieve(self, client: OpenAI) -> None:
279 completion = client.chat.completions.retrieve(
280 "completion_id",
281 )
282 assert_matches_type(ChatCompletion, completion, path=["response"])
283
284 @parametrize
285 def test_raw_response_retrieve(self, client: OpenAI) -> None:
286 response = client.chat.completions.with_raw_response.retrieve(
287 "completion_id",
288 )
289
290 assert response.is_closed is True
291 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
292 completion = response.parse()
293 assert_matches_type(ChatCompletion, completion, path=["response"])
294
295 @parametrize
296 def test_streaming_response_retrieve(self, client: OpenAI) -> None:
297 with client.chat.completions.with_streaming_response.retrieve(
298 "completion_id",
299 ) as response:
300 assert not response.is_closed
301 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
302
303 completion = response.parse()
304 assert_matches_type(ChatCompletion, completion, path=["response"])
305
306 assert cast(Any, response.is_closed) is True
307
308 @parametrize
309 def test_path_params_retrieve(self, client: OpenAI) -> None:
310 with pytest.raises(ValueError, match=r"Expected a non-empty value for `completion_id` but received ''"):
311 client.chat.completions.with_raw_response.retrieve(
312 "",
313 )
314
315 @parametrize
316 def test_method_update(self, client: OpenAI) -> None:
317 completion = client.chat.completions.update(
318 completion_id="completion_id",
319 metadata={"foo": "string"},
320 )
321 assert_matches_type(ChatCompletion, completion, path=["response"])
322
323 @parametrize
324 def test_raw_response_update(self, client: OpenAI) -> None:
325 response = client.chat.completions.with_raw_response.update(
326 completion_id="completion_id",
327 metadata={"foo": "string"},
328 )
329
330 assert response.is_closed is True
331 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
332 completion = response.parse()
333 assert_matches_type(ChatCompletion, completion, path=["response"])
334
335 @parametrize
336 def test_streaming_response_update(self, client: OpenAI) -> None:
337 with client.chat.completions.with_streaming_response.update(
338 completion_id="completion_id",
339 metadata={"foo": "string"},
340 ) as response:
341 assert not response.is_closed
342 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
343
344 completion = response.parse()
345 assert_matches_type(ChatCompletion, completion, path=["response"])
346
347 assert cast(Any, response.is_closed) is True
348
349 @parametrize
350 def test_path_params_update(self, client: OpenAI) -> None:
351 with pytest.raises(ValueError, match=r"Expected a non-empty value for `completion_id` but received ''"):
352 client.chat.completions.with_raw_response.update(
353 completion_id="",
354 metadata={"foo": "string"},
355 )
356
357 @parametrize
358 def test_method_list(self, client: OpenAI) -> None:
359 completion = client.chat.completions.list()
360 assert_matches_type(SyncCursorPage[ChatCompletion], completion, path=["response"])
361
362 @parametrize
363 def test_method_list_with_all_params(self, client: OpenAI) -> None:
364 completion = client.chat.completions.list(
365 after="after",
366 limit=0,
367 metadata={"foo": "string"},
368 model="model",
369 order="asc",
370 )
371 assert_matches_type(SyncCursorPage[ChatCompletion], completion, path=["response"])
372
373 @parametrize
374 def test_raw_response_list(self, client: OpenAI) -> None:
375 response = client.chat.completions.with_raw_response.list()
376
377 assert response.is_closed is True
378 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
379 completion = response.parse()
380 assert_matches_type(SyncCursorPage[ChatCompletion], completion, path=["response"])
381
382 @parametrize
383 def test_streaming_response_list(self, client: OpenAI) -> None:
384 with client.chat.completions.with_streaming_response.list() as response:
385 assert not response.is_closed
386 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
387
388 completion = response.parse()
389 assert_matches_type(SyncCursorPage[ChatCompletion], completion, path=["response"])
390
391 assert cast(Any, response.is_closed) is True
392
393 @parametrize
394 def test_method_delete(self, client: OpenAI) -> None:
395 completion = client.chat.completions.delete(
396 "completion_id",
397 )
398 assert_matches_type(ChatCompletionDeleted, completion, path=["response"])
399
400 @parametrize
401 def test_raw_response_delete(self, client: OpenAI) -> None:
402 response = client.chat.completions.with_raw_response.delete(
403 "completion_id",
404 )
405
406 assert response.is_closed is True
407 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
408 completion = response.parse()
409 assert_matches_type(ChatCompletionDeleted, completion, path=["response"])
410
411 @parametrize
412 def test_streaming_response_delete(self, client: OpenAI) -> None:
413 with client.chat.completions.with_streaming_response.delete(
414 "completion_id",
415 ) as response:
416 assert not response.is_closed
417 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
418
419 completion = response.parse()
420 assert_matches_type(ChatCompletionDeleted, completion, path=["response"])
421
422 assert cast(Any, response.is_closed) is True
423
424 @parametrize
425 def test_path_params_delete(self, client: OpenAI) -> None:
426 with pytest.raises(ValueError, match=r"Expected a non-empty value for `completion_id` but received ''"):
427 client.chat.completions.with_raw_response.delete(
428 "",
429 )
430
431 @parametrize
432 def test_method_create_disallows_pydantic(self, client: OpenAI) -> None:
433 class MyModel(pydantic.BaseModel):
434 a: str
435
436 with pytest.raises(TypeError, match=r"You tried to pass a `BaseModel` class"):
437 client.chat.completions.create(
438 messages=[
439 {
440 "content": "string",
441 "role": "system",
442 }
443 ],
444 model="gpt-4o",
445 response_format=cast(Any, MyModel),
446 )
447
448
449class TestAsyncCompletions:
450 parametrize = pytest.mark.parametrize(
451 "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
452 )
453
454 @parametrize
455 async def test_method_create_overload_1(self, async_client: AsyncOpenAI) -> None:
456 completion = await async_client.chat.completions.create(
457 messages=[
458 {
459 "content": "string",
460 "role": "developer",
461 }
462 ],
463 model="gpt-4o",
464 )
465 assert_matches_type(ChatCompletion, completion, path=["response"])
466
467 @parametrize
468 async def test_method_create_with_all_params_overload_1(self, async_client: AsyncOpenAI) -> None:
469 completion = await async_client.chat.completions.create(
470 messages=[
471 {
472 "content": "string",
473 "role": "developer",
474 "name": "name",
475 }
476 ],
477 model="gpt-4o",
478 audio={
479 "format": "wav",
480 "voice": "ash",
481 },
482 frequency_penalty=-2,
483 function_call="none",
484 functions=[
485 {
486 "name": "name",
487 "description": "description",
488 "parameters": {"foo": "bar"},
489 }
490 ],
491 logit_bias={"foo": 0},
492 logprobs=True,
493 max_completion_tokens=0,
494 max_tokens=0,
495 metadata={"foo": "string"},
496 modalities=["text"],
497 n=1,
498 parallel_tool_calls=True,
499 prediction={
500 "content": "string",
501 "type": "content",
502 },
503 presence_penalty=-2,
504 reasoning_effort="low",
505 response_format={"type": "text"},
506 seed=-9007199254740991,
507 service_tier="auto",
508 stop="\n",
509 store=True,
510 stream=False,
511 stream_options={"include_usage": True},
512 temperature=1,
513 tool_choice="none",
514 tools=[
515 {
516 "function": {
517 "name": "name",
518 "description": "description",
519 "parameters": {"foo": "bar"},
520 "strict": True,
521 },
522 "type": "function",
523 }
524 ],
525 top_logprobs=0,
526 top_p=1,
527 user="user-1234",
528 web_search_options={
529 "search_context_size": "low",
530 "user_location": {
531 "approximate": {
532 "city": "city",
533 "country": "country",
534 "region": "region",
535 "timezone": "timezone",
536 },
537 "type": "approximate",
538 },
539 },
540 )
541 assert_matches_type(ChatCompletion, completion, path=["response"])
542
543 @parametrize
544 async def test_raw_response_create_overload_1(self, async_client: AsyncOpenAI) -> None:
545 response = await async_client.chat.completions.with_raw_response.create(
546 messages=[
547 {
548 "content": "string",
549 "role": "developer",
550 }
551 ],
552 model="gpt-4o",
553 )
554
555 assert response.is_closed is True
556 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
557 completion = response.parse()
558 assert_matches_type(ChatCompletion, completion, path=["response"])
559
560 @parametrize
561 async def test_streaming_response_create_overload_1(self, async_client: AsyncOpenAI) -> None:
562 async with async_client.chat.completions.with_streaming_response.create(
563 messages=[
564 {
565 "content": "string",
566 "role": "developer",
567 }
568 ],
569 model="gpt-4o",
570 ) as response:
571 assert not response.is_closed
572 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
573
574 completion = await response.parse()
575 assert_matches_type(ChatCompletion, completion, path=["response"])
576
577 assert cast(Any, response.is_closed) is True
578
579 @parametrize
580 async def test_method_create_overload_2(self, async_client: AsyncOpenAI) -> None:
581 completion_stream = await async_client.chat.completions.create(
582 messages=[
583 {
584 "content": "string",
585 "role": "developer",
586 }
587 ],
588 model="gpt-4o",
589 stream=True,
590 )
591 await completion_stream.response.aclose()
592
593 @parametrize
594 async def test_method_create_with_all_params_overload_2(self, async_client: AsyncOpenAI) -> None:
595 completion_stream = await async_client.chat.completions.create(
596 messages=[
597 {
598 "content": "string",
599 "role": "developer",
600 "name": "name",
601 }
602 ],
603 model="gpt-4o",
604 stream=True,
605 audio={
606 "format": "wav",
607 "voice": "ash",
608 },
609 frequency_penalty=-2,
610 function_call="none",
611 functions=[
612 {
613 "name": "name",
614 "description": "description",
615 "parameters": {"foo": "bar"},
616 }
617 ],
618 logit_bias={"foo": 0},
619 logprobs=True,
620 max_completion_tokens=0,
621 max_tokens=0,
622 metadata={"foo": "string"},
623 modalities=["text"],
624 n=1,
625 parallel_tool_calls=True,
626 prediction={
627 "content": "string",
628 "type": "content",
629 },
630 presence_penalty=-2,
631 reasoning_effort="low",
632 response_format={"type": "text"},
633 seed=-9007199254740991,
634 service_tier="auto",
635 stop="\n",
636 store=True,
637 stream_options={"include_usage": True},
638 temperature=1,
639 tool_choice="none",
640 tools=[
641 {
642 "function": {
643 "name": "name",
644 "description": "description",
645 "parameters": {"foo": "bar"},
646 "strict": True,
647 },
648 "type": "function",
649 }
650 ],
651 top_logprobs=0,
652 top_p=1,
653 user="user-1234",
654 web_search_options={
655 "search_context_size": "low",
656 "user_location": {
657 "approximate": {
658 "city": "city",
659 "country": "country",
660 "region": "region",
661 "timezone": "timezone",
662 },
663 "type": "approximate",
664 },
665 },
666 )
667 await completion_stream.response.aclose()
668
669 @parametrize
670 async def test_raw_response_create_overload_2(self, async_client: AsyncOpenAI) -> None:
671 response = await async_client.chat.completions.with_raw_response.create(
672 messages=[
673 {
674 "content": "string",
675 "role": "developer",
676 }
677 ],
678 model="gpt-4o",
679 stream=True,
680 )
681
682 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
683 stream = response.parse()
684 await stream.close()
685
686 @parametrize
687 async def test_streaming_response_create_overload_2(self, async_client: AsyncOpenAI) -> None:
688 async with async_client.chat.completions.with_streaming_response.create(
689 messages=[
690 {
691 "content": "string",
692 "role": "developer",
693 }
694 ],
695 model="gpt-4o",
696 stream=True,
697 ) as response:
698 assert not response.is_closed
699 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
700
701 stream = await response.parse()
702 await stream.close()
703
704 assert cast(Any, response.is_closed) is True
705
706 @parametrize
707 async def test_method_retrieve(self, async_client: AsyncOpenAI) -> None:
708 completion = await async_client.chat.completions.retrieve(
709 "completion_id",
710 )
711 assert_matches_type(ChatCompletion, completion, path=["response"])
712
713 @parametrize
714 async def test_raw_response_retrieve(self, async_client: AsyncOpenAI) -> None:
715 response = await async_client.chat.completions.with_raw_response.retrieve(
716 "completion_id",
717 )
718
719 assert response.is_closed is True
720 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
721 completion = response.parse()
722 assert_matches_type(ChatCompletion, completion, path=["response"])
723
724 @parametrize
725 async def test_streaming_response_retrieve(self, async_client: AsyncOpenAI) -> None:
726 async with async_client.chat.completions.with_streaming_response.retrieve(
727 "completion_id",
728 ) as response:
729 assert not response.is_closed
730 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
731
732 completion = await response.parse()
733 assert_matches_type(ChatCompletion, completion, path=["response"])
734
735 assert cast(Any, response.is_closed) is True
736
737 @parametrize
738 async def test_path_params_retrieve(self, async_client: AsyncOpenAI) -> None:
739 with pytest.raises(ValueError, match=r"Expected a non-empty value for `completion_id` but received ''"):
740 await async_client.chat.completions.with_raw_response.retrieve(
741 "",
742 )
743
744 @parametrize
745 async def test_method_update(self, async_client: AsyncOpenAI) -> None:
746 completion = await async_client.chat.completions.update(
747 completion_id="completion_id",
748 metadata={"foo": "string"},
749 )
750 assert_matches_type(ChatCompletion, completion, path=["response"])
751
752 @parametrize
753 async def test_raw_response_update(self, async_client: AsyncOpenAI) -> None:
754 response = await async_client.chat.completions.with_raw_response.update(
755 completion_id="completion_id",
756 metadata={"foo": "string"},
757 )
758
759 assert response.is_closed is True
760 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
761 completion = response.parse()
762 assert_matches_type(ChatCompletion, completion, path=["response"])
763
764 @parametrize
765 async def test_streaming_response_update(self, async_client: AsyncOpenAI) -> None:
766 async with async_client.chat.completions.with_streaming_response.update(
767 completion_id="completion_id",
768 metadata={"foo": "string"},
769 ) as response:
770 assert not response.is_closed
771 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
772
773 completion = await response.parse()
774 assert_matches_type(ChatCompletion, completion, path=["response"])
775
776 assert cast(Any, response.is_closed) is True
777
778 @parametrize
779 async def test_path_params_update(self, async_client: AsyncOpenAI) -> None:
780 with pytest.raises(ValueError, match=r"Expected a non-empty value for `completion_id` but received ''"):
781 await async_client.chat.completions.with_raw_response.update(
782 completion_id="",
783 metadata={"foo": "string"},
784 )
785
786 @parametrize
787 async def test_method_list(self, async_client: AsyncOpenAI) -> None:
788 completion = await async_client.chat.completions.list()
789 assert_matches_type(AsyncCursorPage[ChatCompletion], completion, path=["response"])
790
791 @parametrize
792 async def test_method_list_with_all_params(self, async_client: AsyncOpenAI) -> None:
793 completion = await async_client.chat.completions.list(
794 after="after",
795 limit=0,
796 metadata={"foo": "string"},
797 model="model",
798 order="asc",
799 )
800 assert_matches_type(AsyncCursorPage[ChatCompletion], completion, path=["response"])
801
802 @parametrize
803 async def test_raw_response_list(self, async_client: AsyncOpenAI) -> None:
804 response = await async_client.chat.completions.with_raw_response.list()
805
806 assert response.is_closed is True
807 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
808 completion = response.parse()
809 assert_matches_type(AsyncCursorPage[ChatCompletion], completion, path=["response"])
810
811 @parametrize
812 async def test_streaming_response_list(self, async_client: AsyncOpenAI) -> None:
813 async with async_client.chat.completions.with_streaming_response.list() as response:
814 assert not response.is_closed
815 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
816
817 completion = await response.parse()
818 assert_matches_type(AsyncCursorPage[ChatCompletion], completion, path=["response"])
819
820 assert cast(Any, response.is_closed) is True
821
822 @parametrize
823 async def test_method_delete(self, async_client: AsyncOpenAI) -> None:
824 completion = await async_client.chat.completions.delete(
825 "completion_id",
826 )
827 assert_matches_type(ChatCompletionDeleted, completion, path=["response"])
828
829 @parametrize
830 async def test_raw_response_delete(self, async_client: AsyncOpenAI) -> None:
831 response = await async_client.chat.completions.with_raw_response.delete(
832 "completion_id",
833 )
834
835 assert response.is_closed is True
836 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
837 completion = response.parse()
838 assert_matches_type(ChatCompletionDeleted, completion, path=["response"])
839
840 @parametrize
841 async def test_streaming_response_delete(self, async_client: AsyncOpenAI) -> None:
842 async with async_client.chat.completions.with_streaming_response.delete(
843 "completion_id",
844 ) as response:
845 assert not response.is_closed
846 assert response.http_request.headers.get("X-Stainless-Lang") == "python"
847
848 completion = await response.parse()
849 assert_matches_type(ChatCompletionDeleted, completion, path=["response"])
850
851 assert cast(Any, response.is_closed) is True
852
853 @parametrize
854 async def test_path_params_delete(self, async_client: AsyncOpenAI) -> None:
855 with pytest.raises(ValueError, match=r"Expected a non-empty value for `completion_id` but received ''"):
856 await async_client.chat.completions.with_raw_response.delete(
857 "",
858 )
859
860 @parametrize
861 async def test_method_create_disallows_pydantic(self, async_client: AsyncOpenAI) -> None:
862 class MyModel(pydantic.BaseModel):
863 a: str
864
865 with pytest.raises(TypeError, match=r"You tried to pass a `BaseModel` class"):
866 await async_client.chat.completions.create(
867 messages=[
868 {
869 "content": "string",
870 "role": "system",
871 }
872 ],
873 model="gpt-4o",
874 response_format=cast(Any, MyModel),
875 )