Skip to content

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

Closed
wants to merge 5 commits into from

Conversation

ystory
Copy link
Contributor

@ystory ystory commented Jun 6, 2025

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.
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.
Screenshot 2025-06-06 at 21 22 35
  • After the fix:
    With the patch applied, the same file upload was processed successfully. The agent correctly analyzed the file and responded without errors.
Screenshot 2025-06-06 at 21 23 24

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
@darien-schettler
Copy link

Thanks for implementing this! It fixes issue correct?

@ystory
Copy link
Contributor Author

ystory commented Jun 6, 2025

Thanks for implementing this! It fixes issue correct?

Hi @darien-schettler,
Yes, I believe this fixes it. I was facing the same problem, and your detailed issue was very helpful. This patch works on my end. However, I'd appreciate it if you could let me know if you think there's anything missing, just in case.
Thanks!

@gerrardenok
Copy link

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.

@ystory
Copy link
Contributor Author

ystory commented Jun 9, 2025

Hi, @gerrardenok! Thanks for reaching out. I completely understand how critical this fix is, as I was facing the same issue.
Since I'm a contributor and not a maintainer, I don't have control over the merge schedule. That depends on the maintainers to review and approve.
However, if you need this fix urgently, you can install the patched version directly from my branch using pip:

pip install git+https://github.com/ystory/adk-python.git@fix/display-name

I hope the official merge happens soon!

@darien-schettler
Copy link

@Jacksunwei @seanzhou1023 - Is this sufficient? It would be helpful if we could get this added to the next release.

@Jacksunwei Jacksunwei self-assigned this Jun 9, 2025
@Jacksunwei Jacksunwei added the ready to pull for importing back to Google label Jun 9, 2025
copybara-service bot pushed a commit that referenced this pull request Jun 9, 2025
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
@Jacksunwei
Copy link
Collaborator

Merged.

@Jacksunwei Jacksunwei closed this Jun 9, 2025
@ystory ystory deleted the fix/display-name branch June 10, 2025 02:29
@jaya-shankar
Copy link

jaya-shankar commented Jun 10, 2025

@Jacksunwei Thanks for merging this! 🙌
Can I know when the next release is scheduled? I'd like to know when this fix will be included in the package.

Thanks again!

@Jacksunwei
Copy link
Collaborator

Should be Wednesday or Thursday

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ready to pull for importing back to Google
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Bug: display_name in file uploads causes error with Google.GenAI backend (non-Vertex)
5 participants