mirror of
https://github.com/encounter/adk-python.git
synced 2026-07-09 18:19:28 -07:00
Merge https://github.com/google/adk-python/pull/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=https://github.com/google/adk-python/pull/1211 from ystory:fix/display-name d3efebe74aca635a7a255063e64f07cc44016f05 PiperOrigin-RevId: 769278445