-
Notifications
You must be signed in to change notification settings - Fork 1.2k
fix: Remove display_name for non-Vertex file uploads #1211
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
The Google.GenAI backend (non-Vertex) does not support `display_name` in file uploads. This change strips the attribute from `file_data` and `inline_data` parts during request preprocessing for the `GEMINI_API` backend only. Adds unit tests to verify. Fixes google#1182
Thanks for implementing this! It fixes issue correct? |
Hi @darien-schettler, |
Hello @ystory - Thank you for your contribution. I was faced this issue as @darien-schettler Is there any hit on when it will be merged? This part id quite critical for building my workflow with ADK. Thank you in advance. |
Hi, @gerrardenok! Thanks for reaching out. I completely understand how critical this fix is, as I was facing the same issue.
I hope the official merge happens soon! |
@Jacksunwei @seanzhou1023 - Is this sufficient? It would be helpful if we could get this added to the next release. |
Merge #1211 ### Description When using the Google.GenAI backend (GEMINI_API), file uploads fail if the `file_data` or `inline_data` parts of the request contain a `display_name`. The Gemini API (non-Vertex) does not support this attribute, causing a `ValueError`. This commit updates the `_preprocess_request` method in the `Gemini` class to sanitize the request. It now iterates through all content parts and sets `display_name` to `None` if the determined backend is `GEMINI_API`. This ensures compatibility, similar to the existing handling of the `labels` attribute. Fixes #1182 ### Testing Plan **1. Unit Tests** - Added a new parameterized test `test_preprocess_request_handles_backend_specific_fields` to `tests/unittests/models/test_google_llm.py`. - This test verifies: - When the backend is `GEMINI_API`, `display_name` in `file_data` and `inline_data` is correctly set to `None`. - When the backend is `VERTEX_AI`, `display_name` remains unchanged. - All unit tests passed successfully. ```shell pytest ./tests/unittests/models/test_google_llm.py ░▒▓ ✔ adk-python base system 21:14:02 ============================================================================================ test session starts ============================================================================================ platform darwin -- Python 3.12.10, pytest-8.3.5, pluggy-1.6.0 rootdir: /Users/leo/PycharmProjects/adk-python configfile: pyproject.toml plugins: anyio-4.9.0, langsmith-0.3.42, asyncio-0.26.0, mock-3.14.0, xdist-3.6.1 asyncio: mode=Mode.AUTO, asyncio_default_fixture_loop_scope=function, asyncio_default_test_loop_scope=function collected 20 items tests/unittests/models/test_google_llm.py .................... [100%] ============================================================================================ 20 passed in 3.19s ============================================================================================= ``` **2. Manual End-to-End (E2E) Test** I manually verified the fix using `adk web`. The test was configured to use a **Google AI Studio API key**, which is the scenario where the bug occurs. - **Before the fix:** When uploading a file, the request failed with the error: `{"error": "display_name parameter is not supported in Gemini API."}`. This confirms the bug. <img width="968" alt="Screenshot 2025-06-06 at 21 22 35" src="https://github.com/user-attachments/assets/f1ab2db2-d5ec-40fc-a182-9932562b21e1" /> - **After the fix:** With the patch applied, the same file upload was processed successfully. The agent correctly analyzed the file and responded without errors. <img width="973" alt="Screenshot 2025-06-06 at 21 23 24" src="https://github.com/user-attachments/assets/e03228f6-0b7d-4bf9-955a-ac24efb4fb72" /> COPYBARA_INTEGRATE_REVIEW=#1211 from ystory:fix/display-name d3efebe PiperOrigin-RevId: 769278445
Merged. |
@Jacksunwei Thanks for merging this! 🙌 Thanks again! |
Should be Wednesday or Thursday |
Description
When using the Google.GenAI backend (GEMINI_API), file uploads fail if the
file_data
orinline_data
parts of the request contain adisplay_name
. The Gemini API (non-Vertex) does not support this attribute, causing aValueError
.This commit updates the
_preprocess_request
method in theGemini
class to sanitize the request. It now iterates through all content parts and setsdisplay_name
toNone
if the determined backend isGEMINI_API
. This ensures compatibility, similar to the existing handling of thelabels
attribute.Fixes #1182
Testing Plan
1. Unit Tests
test_preprocess_request_handles_backend_specific_fields
totests/unittests/models/test_google_llm.py
.GEMINI_API
,display_name
infile_data
andinline_data
is correctly set toNone
.VERTEX_AI
,display_name
remains unchanged.2. Manual End-to-End (E2E) Test
I manually verified the fix using
adk web
. The test was configured to use a Google AI Studio API key, which is the scenario where the bug occurs.When uploading a file, the request failed with the error:
{"error": "display_name parameter is not supported in Gemini API."}
. This confirms the bug.With the patch applied, the same file upload was processed successfully. The agent correctly analyzed the file and responded without errors.