mirror of
https://github.com/encounter/adk-python.git
synced 2026-07-09 18:19:28 -07:00
fix: Annotate response type as None for transfer_to_agent tool and set empty Schema as response schema when tool has no response annotation
1. if a function has no return type annotation, we should treat it as returning any type 2. we use empty schema (with `type` as None) to indicate no type constraints and this is already supported by model server PiperOrigin-RevId: 789808104
This commit is contained in:
committed by
Copybara-Service
parent
faadef167e
commit
86a44873e9
@@ -12,6 +12,7 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from typing import Any
|
||||
from typing import Dict
|
||||
|
||||
from google.adk.tools import _automatic_function_calling_util
|
||||
@@ -51,9 +52,10 @@ def test_from_function_with_options_no_return_annotation_vertex():
|
||||
assert declaration.name == 'test_function'
|
||||
assert declaration.parameters.type == 'OBJECT'
|
||||
assert declaration.parameters.properties['param'].type == 'STRING'
|
||||
# VERTEX_AI should have response schema for None return
|
||||
# VERTEX_AI should have response schema for functions with no return annotation
|
||||
# Changed: Now uses Any type instead of NULL for no return annotation
|
||||
assert declaration.response is not None
|
||||
assert declaration.response.type == types.Type.NULL
|
||||
assert declaration.response.type is None # Any type maps to None in schema
|
||||
|
||||
|
||||
def test_from_function_with_options_explicit_none_return_vertex():
|
||||
@@ -150,6 +152,26 @@ def test_from_function_with_options_int_return_vertex():
|
||||
assert declaration.response.type == types.Type.INTEGER
|
||||
|
||||
|
||||
def test_from_function_with_options_any_annotation_vertex():
|
||||
"""Test from_function_with_options with Any type annotation for VERTEX_AI."""
|
||||
|
||||
def test_function(param: Any) -> Any:
|
||||
"""A test function that uses Any type annotations."""
|
||||
return param
|
||||
|
||||
declaration = _automatic_function_calling_util.from_function_with_options(
|
||||
test_function, GoogleLLMVariant.VERTEX_AI
|
||||
)
|
||||
|
||||
assert declaration.name == 'test_function'
|
||||
assert declaration.parameters.type == 'OBJECT'
|
||||
# Any type should map to None in schema (TYPE_UNSPECIFIED behavior)
|
||||
assert declaration.parameters.properties['param'].type is None
|
||||
# VERTEX_AI should have response schema for Any return
|
||||
assert declaration.response is not None
|
||||
assert declaration.response.type is None # Any type maps to None in schema
|
||||
|
||||
|
||||
def test_from_function_with_options_no_params():
|
||||
"""Test from_function_with_options with no parameters."""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user