Skip to content

fix interactions SSE ids for function calls #5177

Closed
kshirajahere wants to merge 3 commits intogoogle:mainfrom
kshirajahere:codex/fix-interactions-sse-ids
Closed

fix interactions SSE ids for function calls #5177
kshirajahere wants to merge 3 commits intogoogle:mainfrom
kshirajahere:codex/fix-interactions-sse-ids

Conversation

@kshirajahere
Copy link
Copy Markdown

What changed

  • preserve interaction chain IDs in Interactions API SSE mode by reading the SDK's actual streaming fields (interaction.id, interaction_id, event_id) instead of only event.id
  • treat interaction.complete as the final full interaction event during streaming conversion
  • add regression coverage for interaction.complete handling and for SSE function-call streams that must retain the interaction ID before the tool round-trip

Why

Issue #5169 reports that StreamingMode.SSE breaks Interactions API function calling because the second model call cannot find the previous interaction_id in session history.

The root cause is that ADK's SSE adapter was keyed to older/generic event shapes (event.id and event_type == "interaction"), while google-genai 1.70.0 emits interaction.start, interaction.complete, and interaction.status_update events with IDs stored on interaction.id, interaction_id, and event_id.

That mismatch meant streamed function-call events were persisted without an interaction_id, so the next round of the ReAct loop could not chain the interaction and failed with invalid_request.

Impact

  • restores function-calling flows for Gemini(use_interactions_api=True) when SSE streaming is enabled
  • keeps the interaction chain intact in session events so follow-up tool/result turns can resume correctly
  • improves compatibility with the current GenAI SDK SSE event schema without changing non-streaming behavior

Validation

  • .venv\\Scripts\\pytest tests\\unittests\\models\\test_interactions_utils.py tests\\unittests\\flows\\llm_flows\\test_interactions_processor.py tests\\unittests\\models\\test_google_llm.py -q
  • .venv\\Scripts\\pyink --check --config pyproject.toml src\\google\\adk\\models\\interactions_utils.py tests\\unittests\\models\\test_interactions_utils.py
  • .venv\\Scripts\\isort --check-only src\\google\\adk\\models\\interactions_utils.py tests\\unittests\\models\\test_interactions_utils.py
  • .venv\\Scripts\\pylint --rcfile=pylintrc src\\google\\adk\\models\\interactions_utils.py

Fixes google#5169 by reading interaction IDs from the actual GenAI SDK SSE event fields and carrying them through streaming function-call responses. Also adds regression coverage for interaction.complete events and streaming interaction.start chaining.
@adk-bot adk-bot added the core [Component] This issue is related to the core interface and implementation label Apr 6, 2026
Rename the thought-content temporary variable so the repo's mypy new-errors workflow does not treat a shifted baseline no-redef diagnostic as a newly introduced error.
@kshirajahere kshirajahere marked this pull request as ready for review April 7, 2026 03:21
@kshirajahere kshirajahere changed the title [codex] fix interactions SSE ids for function calls fix interactions SSE ids for function calls Apr 7, 2026
@rohityan rohityan self-assigned this Apr 9, 2026
@kshirajahere
Copy link
Copy Markdown
Author

kshirajahere commented Apr 9, 2026

I validated the latest head a36d829 locally and the changed-file formatting checks plus mypy-diff against current main are clean. The SSE regression tests also pass locally (128 passed across the touched test files).
Can u please approve the workflow for tests
@rohityan

@rohityan
Copy link
Copy Markdown
Collaborator

Hi @kshirajahere , Thank you for your contribution through this pull request! This PR has merge conflicts that require changes from your end. Could you please rebase your branch with the latest main branch to address these? Once this is complete, please let us know so we can proceed with the review.

@rohityan rohityan added the request clarification [Status] The maintainer need clarification or more information from the author label Apr 13, 2026
@rohityan
Copy link
Copy Markdown
Collaborator

Hi @kshirajahere , closing this since it has been fixed in this commit 9a19304

@rohityan rohityan closed this Apr 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core [Component] This issue is related to the core interface and implementation request clarification [Status] The maintainer need clarification or more information from the author

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants