You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the bug
If you add a built-in tool (python function) to your agent and that tool contains one of the 'ignored parameters', such as tool_context, in its parameters, the ADK will rebuild that function without that parameter. When it does this, it neglects to copy the doc attribute to the new function. Then when the tool declaration is built for the LLM API call, its description is empty. This is particularly bad if you are calling an Anthropic model on Bedrock because it demands a description.
To Reproduce
Steps to reproduce the behavior:
Create a very basic agent with a single 'python' tool type
Create a python function that has a 'tool_context' parameter
Run an inference and look at the tool list that is sent to the LLM (your tool will have 'description: ""'
Expected behavior
The tool list will contain a description for each tool
Desktop (please complete the following information):
OS: [e.g. iOS]
Python version(python -V): 3.11.10
ADK version(pip show google-adk): 0.4.0
Possible Fix
def build_function_declaration(
func: Union[Callable, BaseModel],
ignore_params: Optional[list[str]] = None,
variant: Literal['GOOGLE_AI', 'VERTEX_AI', 'DEFAULT'] = 'GOOGLE_AI',
) -> types.FunctionDeclaration:
signature = inspect.signature(func)
new_func = None
if not ignore_params:
ignore_params = []
for name, _ in signature.parameters.items():
if name in ignore_params:
should_update_signature = True
break
if should_update_signature:
new_params = [
param
for name, param in signature.parameters.items()
if name not in ignore_params
]
if isinstance(func, type):
fields = {
name: (param.annotation, param.default)
for name, param in signature.parameters.items()
if name not in ignore_params
}
new_func = create_model(func.__name__, **fields)
else:
new_sig = signature.replace(parameters=new_params)
new_func = FunctionType(
func.__code__,
func.__globals__,
func.__name__,
func.__defaults__,
func.__closure__,
)
new_func.__signature__ = new_sig
# FIX
new_func.__doc__ = func.__doc__
return (
from_function_with_options(func, variant)
if not should_update_signature
else from_function_with_options(new_func, variant)
)
The text was updated successfully, but these errors were encountered:
Describe the bug
If you add a built-in tool (python function) to your agent and that tool contains one of the 'ignored parameters', such as tool_context, in its parameters, the ADK will rebuild that function without that parameter. When it does this, it neglects to copy the doc attribute to the new function. Then when the tool declaration is built for the LLM API call, its description is empty. This is particularly bad if you are calling an Anthropic model on Bedrock because it demands a description.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The tool list will contain a description for each tool
Desktop (please complete the following information):
Possible Fix
The text was updated successfully, but these errors were encountered: