From 8a400141c5477e3b06fdaae082112dd014996f54 Mon Sep 17 00:00:00 2001 From: Yufeng He <40085740+he-yufeng@users.noreply.github.com> Date: Wed, 20 May 2026 03:39:10 +0800 Subject: [PATCH] fix: accept Azure assistant file ids --- src/google/adk/models/lite_llm.py | 2 +- tests/unittests/models/test_litellm.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/google/adk/models/lite_llm.py b/src/google/adk/models/lite_llm.py index 4d4f93c88f..623b9ea338 100644 --- a/src/google/adk/models/lite_llm.py +++ b/src/google/adk/models/lite_llm.py @@ -281,7 +281,7 @@ def _infer_mime_type_from_uri(uri: str) -> Optional[str]: def _looks_like_openai_file_id(file_uri: str) -> bool: """Returns True when file_uri resembles an OpenAI/Azure file id.""" - return file_uri.startswith("file-") + return file_uri.startswith(("file-", "assistant-")) def _is_http_url(uri: str) -> bool: diff --git a/tests/unittests/models/test_litellm.py b/tests/unittests/models/test_litellm.py index 216866602f..a85a3e5caa 100644 --- a/tests/unittests/models/test_litellm.py +++ b/tests/unittests/models/test_litellm.py @@ -2943,6 +2943,20 @@ async def test_get_content_file_uri_file_id_required_preserves_file_id( assert content == [{"type": "file", "file": {"file_id": "file-abc123"}}] +@pytest.mark.asyncio +async def test_get_content_file_uri_azure_preserves_assistant_file_id(): + parts = [ + types.Part( + file_data=types.FileData( + file_uri="assistant-abc123", + mime_type="application/pdf", + ) + ) + ] + content = await _get_content(parts, provider="azure", model="azure/gpt-4.1") + assert content == [{"type": "file", "file": {"file_id": "assistant-abc123"}}] + + @pytest.mark.asyncio @pytest.mark.parametrize( "provider,model",