@@ -485,20 +485,25 @@ async def oai_chat_completions(user_prompt,
485
485
assert response .status == 200
486
486
assert response .headers ['Access-Control-Allow-Origin' ] == origin
487
487
assert response .headers ['Content-Type' ] == "text/event-stream"
488
-
489
- async for line_in_bytes in response .content :
490
- line = line_in_bytes .decode ('utf8' )
491
- event_data = line .split (': ' , 1 )
492
- assert event_data [0 ] == 'data' , f'{ event_data } '
493
- chunk_raw = event_data [1 ]
494
-
495
- chunk = json .loads (chunk_raw )
496
- assert len (chunk ['choices' ]) == 1
497
- delta = chunk ['choices' ][0 ]['delta' ]
498
- if 'content' in delta :
499
- completion_response ['content' ] += delta ['content' ]
500
- completion_response ['timings' ]['predicted_n' ] += 1
501
- print (f"DEBUG completion_response: { completion_response } " )
488
+ event_received = True
489
+ while event_received :
490
+ event_received = False
491
+ async for line_in_bytes in response .content :
492
+ line = line_in_bytes .decode ('utf8' )
493
+ line = line .rstrip ('\n ' ).rstrip ('\r ' )
494
+ if line == '' :
495
+ continue
496
+ event_data = line .split (': ' , 1 )
497
+ assert event_data [0 ] == 'data' , f'Bad event code received: ```{ event_data } ```'
498
+ chunk_raw = event_data [1 ]
499
+
500
+ chunk = json .loads (chunk_raw )
501
+ assert len (chunk ['choices' ]) == 1 , f"no choices provided, line ```{ line } ```"
502
+ delta = chunk ['choices' ][0 ]['delta' ]
503
+ if 'content' in delta :
504
+ completion_response ['content' ] += delta ['content' ]
505
+ completion_response ['timings' ]['predicted_n' ] += 1
506
+ print (f"DEBUG completion_response: { completion_response } " )
502
507
else :
503
508
if expect_api_error is None or not expect_api_error :
504
509
assert response .status == 200
0 commit comments