Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions src/google/adk/models/lite_llm.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,9 @@
# 1. FinishReason.TOOL_CALL enum does not exist (as of google-genai 0.8.0)
# 2. Tool calls represent normal completion (model stopped to invoke tools)
# 3. Gemini native responses use STOP for tool calls (see lite_llm.py:910)
# 4. Mapping tool-related finish reasons to STOP preserves backward
# compatibility with existing ADK consumers that assume STOP
# indicates a successful, non-error completion.
_FINISH_REASON_MAPPING = {
"length": types.FinishReason.MAX_TOKENS,
"stop": types.FinishReason.STOP,
Expand Down Expand Up @@ -490,7 +493,7 @@ def _append_fallback_user_content_if_missing(
content.parts = []
content.parts.append(
types.Part.from_text(
text="Handle the requests as specified in the System Instruction."
text="Handle the incoming request according to the provided requirements."
)
Comment on lines 495 to 497
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

There seems to be a discrepancy between the implemented change and the solution described in the pull request. The PR description states the fix is to treat function_response as a valid payload in _part_has_payload to prevent the fallback message from being injected incorrectly. However, this change only modifies the text of the fallback message itself.

This text change doesn't seem to address the core issue of the unintended message injection. Was the logic change to _part_has_payload intended to be part of this PR? Without it, the bug described (issue #4249) may not be fully resolved.

)
return
Expand All @@ -500,8 +503,7 @@ def _append_fallback_user_content_if_missing(
parts=[
types.Part.from_text(
text=(
"Handle the requests as specified in the System"
" Instruction."
"Handle the incoming request according to the provided requirements."
)
),
],
Expand Down
4 changes: 2 additions & 2 deletions tests/unittests/models/test_litellm.py
Original file line number Diff line number Diff line change
Expand Up @@ -979,14 +979,14 @@ async def test_generate_content_async_adds_fallback_user_message(
]
assert any(
message.get("content")
== "Handle the requests as specified in the System Instruction."
== "Handle the incoming request according to the provided requirements."
for message in user_messages
)
assert (
sum(1 for content in llm_request.contents if content.role == "user") == 1
)
assert llm_request.contents[-1].parts[0].text == (
"Handle the requests as specified in the System Instruction."
"Handle the incoming request according to the provided requirements."
)


Expand Down