openai/openai-python

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
v1.98.0

Branches

Tags

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

Clone

HTTPS

Download ZIP

tests/api_resources/chat/test_completions.py

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