Skip to content

Commit 900abdc

Browse files
committed
Handle None content in stop-sequence trimming
1 parent 246e873 commit 900abdc

File tree

2 files changed

+28
-2
lines changed

2 files changed

+28
-2
lines changed

src/smolagents/models.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,18 @@ def convert(obj):
7474
return convert(obj)
7575

7676

77-
def remove_content_after_stop_sequences(content: str, stop_sequences: list[str]) -> str:
78-
"""Remove content after any stop sequence is encountered."""
77+
def remove_content_after_stop_sequences(content: str | None, stop_sequences: list[str] | None) -> str | None:
78+
"""Remove content after any stop sequence is encountered.
79+
80+
Some providers may return ``None`` content (for example when responding purely with tool calls),
81+
so we skip processing in that case.
82+
"""
83+
if content is None or not stop_sequences:
84+
return content
85+
7986
for stop_seq in stop_sequences:
87+
if not stop_seq:
88+
continue
8089
split = content.split(stop_seq)
8190
content = split[0]
8291
return content

tests/test_models.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -724,6 +724,23 @@ def test_remove_content_after_stop_sequences():
724724
assert removed_content == "Hello"
725725

726726

727+
def test_remove_content_after_stop_sequences_handles_none():
728+
removed_content = remove_content_after_stop_sequences(None, ["<code>"])
729+
assert removed_content is None
730+
731+
732+
def test_remove_content_after_stop_sequences_ignores_empty_stop_sequences():
733+
content = "Hello world!"
734+
removed_content = remove_content_after_stop_sequences(content, ["", "<code>"])
735+
assert removed_content == "Hello world!"
736+
737+
738+
def test_remove_content_after_stop_sequences_with_none_stop_sequences():
739+
content = "Hello world!"
740+
removed_content = remove_content_after_stop_sequences(content, None)
741+
assert removed_content == content
742+
743+
727744
@pytest.mark.parametrize(
728745
"convert_images_to_image_urls, expected_clean_message",
729746
[

0 commit comments

Comments
 (0)