Skip to content

Commit ec8541b

Browse files
Fix precedence bug in dict-based reasoning extraction
Address gemini-code-assist review feedback: - Use two-argument dict.get() to check key presence instead of truthiness - This ensures reasoning_content takes precedence even with falsy values - Update test to expect empty string instead of None for consistency The previous 'or' operator would incorrectly fall back to 'reasoning' when 'reasoning_content' was present but had a falsy value like ''. Now using dict.get(key, default) properly maintains precedence.
1 parent 68ffc70 commit ec8541b

File tree

2 files changed

+3
-4
lines changed

2 files changed

+3
-4
lines changed

src/google/adk/models/lite_llm.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ def _extract_reasoning_value(message: Message | Dict[str, Any]) -> Any:
157157
return getattr(message, "reasoning")
158158

159159
if isinstance(message, dict):
160-
return message.get("reasoning_content") or message.get("reasoning")
160+
return message.get("reasoning_content", message.get("reasoning"))
161161

162162
return None
163163

tests/unittests/models/test_litellm.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1706,9 +1706,8 @@ def test_extract_reasoning_value_with_empty_reasoning_content():
17061706
}
17071707

17081708
result = _extract_reasoning_value(message)
1709-
# Empty string from reasoning_content is returned, but 'or' makes it None
1710-
# because empty string is falsy and reasoning is not present
1711-
assert result is None
1709+
# Empty string should be returned to maintain precedence
1710+
assert result == ""
17121711

17131712

17141713
def test_parse_tool_calls_from_text_multiple_calls():

0 commit comments

Comments
 (0)