Skip to content

Commit 06c6fc6

Browse files
committed
fix tool schema variadic parameters
1 parent 5891d5f commit 06c6fc6

2 files changed

Lines changed: 19 additions & 1 deletion

File tree

llama-index-core/llama_index/core/tools/utils.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from inspect import signature
1+
from inspect import Parameter, signature
22
from typing import (
33
Any,
44
Awaitable,
@@ -40,6 +40,11 @@ def create_schema_from_function(
4040
for param_name in params:
4141
if param_name in ignore_fields:
4242
continue
43+
if params[param_name].kind in (
44+
Parameter.VAR_POSITIONAL,
45+
Parameter.VAR_KEYWORD,
46+
):
47+
continue
4348

4449
param_type = params[param_name].annotation
4550
param_default = params[param_name].default

llama-index-core/tests/tools/test_utils.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,19 @@ def test_fn2(x: int = 1) -> None:
3232
assert "required" not in schema
3333

3434

35+
def test_create_schema_from_function_ignores_variadic_parameters() -> None:
36+
"""Test that *args and **kwargs are not exposed as tool parameters."""
37+
38+
def test_fn(query: str, *args: str, **kwargs: str) -> None:
39+
"""Test variadic inputs."""
40+
41+
SchemaCls = create_schema_from_function("test_schema", test_fn)
42+
schema = SchemaCls.model_json_schema()
43+
44+
assert schema["properties"] == {"query": {"title": "Query", "type": "string"}}
45+
assert schema["required"] == ["query"]
46+
47+
3548
def test_create_schema_from_function_with_field() -> None:
3649
"""Test create_schema_from_function with pydantic.Field."""
3750

0 commit comments

Comments
 (0)