Skip to content

Commit 78f9c91

Browse files
committed
fix: handle empty repsonses
1 parent b2c39b1 commit 78f9c91

1 file changed

Lines changed: 36 additions & 11 deletions

File tree

src/litai/llm.py

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"""LLM client class."""
1515

1616
import datetime
17+
import itertools
1718
import json
1819
import logging
1920
import os
@@ -317,7 +318,7 @@ def chat( # noqa: D417
317318
name=model, teamspace=self._teamspace, enable_async=self._enable_async
318319
)
319320
sdk_model = self._sdkllm_cache[model_key]
320-
return self._model_call(
321+
response = self._model_call(
321322
model=sdk_model,
322323
prompt=prompt,
323324
system_prompt=system_prompt,
@@ -332,6 +333,24 @@ def chat( # noqa: D417
332333
reasoning_effort=reasoning_effort,
333334
**kwargs,
334335
)
336+
if not stream and response:
337+
return response
338+
if stream:
339+
peek_iter, return_iter = itertools.tee(response)
340+
try:
341+
peek_iter, return_iter = itertools.tee(response)
342+
has_content = False
343+
344+
for chunk in peek_iter:
345+
if chunk != "":
346+
has_content = True
347+
break
348+
349+
if has_content:
350+
return return_iter
351+
except StopIteration:
352+
pass
353+
335354
except Exception as e:
336355
print(f"💥 Failed to override with model '{model}'")
337356
handle_model_error(e, sdk_model, 0, self.max_retries, self._verbose)
@@ -357,16 +376,22 @@ def chat( # noqa: D417
357376
)
358377

359378
if not stream and response:
360-
yield response
361-
return
362-
elif stream:
363-
has_content = False
364-
for chunk in response:
365-
if chunk != "":
366-
has_content = True
367-
yield chunk
368-
if has_content:
369-
return
379+
return response
380+
if stream:
381+
peek_iter, return_iter = itertools.tee(response)
382+
try:
383+
peek_iter, return_iter = itertools.tee(response)
384+
has_content = False
385+
386+
for chunk in peek_iter:
387+
if chunk != "":
388+
has_content = True
389+
break
390+
391+
if has_content:
392+
return return_iter
393+
except StopIteration:
394+
pass
370395

371396
except Exception as e:
372397
handle_model_error(e, model, attempt, self.max_retries, self._verbose)

0 commit comments

Comments
 (0)