@@ -55,22 +55,35 @@ def base64_encoded_video() -> dict[str, str]:
5555 }
5656
5757
58- @pytest .mark .asyncio
59- @pytest .mark .parametrize ("model_name" , [MODEL_NAME ])
60- @pytest .mark .parametrize ("video_url" , TEST_VIDEO_URLS )
61- async def test_single_chat_session_video (
62- client : openai .AsyncOpenAI , model_name : str , video_url : str
58+ def dummy_messages_from_video_url (
59+ video_urls : str | list [str ],
60+ content_text : str = "What's in this video?" ,
6361):
64- messages = [
62+ if isinstance (video_urls , str ):
63+ video_urls = [video_urls ]
64+
65+ return [
6566 {
6667 "role" : "user" ,
6768 "content" : [
68- {"type" : "video_url" , "video_url" : {"url" : video_url }},
69- {"type" : "text" , "text" : "What's in this video?" },
69+ * (
70+ {"type" : "video_url" , "video_url" : {"url" : video_url }}
71+ for video_url in video_urls
72+ ),
73+ {"type" : "text" , "text" : content_text },
7074 ],
7175 }
7276 ]
7377
78+
79+ @pytest .mark .asyncio
80+ @pytest .mark .parametrize ("model_name" , [MODEL_NAME ])
81+ @pytest .mark .parametrize ("video_url" , TEST_VIDEO_URLS )
82+ async def test_single_chat_session_video (
83+ client : openai .AsyncOpenAI , model_name : str , video_url : str
84+ ):
85+ messages = dummy_messages_from_video_url (video_url )
86+
7487 # test single completion
7588 chat_completion = await client .chat .completions .create (
7689 model = model_name ,
@@ -137,15 +150,7 @@ async def test_error_on_invalid_video_url_type(
137150async def test_single_chat_session_video_beamsearch (
138151 client : openai .AsyncOpenAI , model_name : str , video_url : str
139152):
140- messages = [
141- {
142- "role" : "user" ,
143- "content" : [
144- {"type" : "video_url" , "video_url" : {"url" : video_url }},
145- {"type" : "text" , "text" : "What's in this video?" },
146- ],
147- }
148- ]
153+ messages = dummy_messages_from_video_url (video_url )
149154
150155 chat_completion = await client .chat .completions .create (
151156 model = model_name ,
@@ -172,20 +177,9 @@ async def test_single_chat_session_video_base64encoded(
172177 video_url : str ,
173178 base64_encoded_video : dict [str , str ],
174179):
175- messages = [
176- {
177- "role" : "user" ,
178- "content" : [
179- {
180- "type" : "video_url" ,
181- "video_url" : {
182- "url" : f"data:video/jpeg;base64,{ base64_encoded_video [video_url ]} " # noqa: E501
183- },
184- },
185- {"type" : "text" , "text" : "What's in this video?" },
186- ],
187- }
188- ]
180+ messages = dummy_messages_from_video_url (
181+ f"data:video/jpeg;base64,{ base64_encoded_video [video_url ]} "
182+ )
189183
190184 # test single completion
191185 chat_completion = await client .chat .completions .create (
@@ -231,20 +225,10 @@ async def test_single_chat_session_video_base64encoded_beamsearch(
231225 video_url : str ,
232226 base64_encoded_video : dict [str , str ],
233227):
234- messages = [
235- {
236- "role" : "user" ,
237- "content" : [
238- {
239- "type" : "video_url" ,
240- "video_url" : {
241- "url" : f"data:video/jpeg;base64,{ base64_encoded_video [video_url ]} " # noqa: E501
242- },
243- },
244- {"type" : "text" , "text" : "What's in this video?" },
245- ],
246- }
247- ]
228+ messages = dummy_messages_from_video_url (
229+ f"data:video/jpeg;base64,{ base64_encoded_video [video_url ]} "
230+ )
231+
248232 chat_completion = await client .chat .completions .create (
249233 model = model_name ,
250234 messages = messages ,
@@ -265,15 +249,7 @@ async def test_single_chat_session_video_base64encoded_beamsearch(
265249async def test_chat_streaming_video (
266250 client : openai .AsyncOpenAI , model_name : str , video_url : str
267251):
268- messages = [
269- {
270- "role" : "user" ,
271- "content" : [
272- {"type" : "video_url" , "video_url" : {"url" : video_url }},
273- {"type" : "text" , "text" : "What's in this video?" },
274- ],
275- }
276- ]
252+ messages = dummy_messages_from_video_url (video_url )
277253
278254 # test single completion
279255 chat_completion = await client .chat .completions .create (
@@ -318,18 +294,7 @@ async def test_chat_streaming_video(
318294async def test_multi_video_input (
319295 client : openai .AsyncOpenAI , model_name : str , video_urls : list [str ]
320296):
321- messages = [
322- {
323- "role" : "user" ,
324- "content" : [
325- * (
326- {"type" : "video_url" , "video_url" : {"url" : video_url }}
327- for video_url in video_urls
328- ),
329- {"type" : "text" , "text" : "What's in this video?" },
330- ],
331- }
332- ]
297+ messages = dummy_messages_from_video_url (video_urls )
333298
334299 if len (video_urls ) > MAXIMUM_VIDEOS :
335300 with pytest .raises (openai .BadRequestError ): # test multi-video input
0 commit comments