mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-25 10:44:24 +00:00
allowed ToolJsonSchemaBlock keys
This commit is contained in:
parent
52ecd5248e
commit
09fa8370f5
1 changed files with 44 additions and 0 deletions
|
@ -1264,6 +1264,50 @@ def test_bedrock_tools_pt_invalid_names():
|
|||
assert result[1]["toolSpec"]["name"] == "another_invalid_name"
|
||||
|
||||
|
||||
def test_bedrock_tools_transformation_valid_params():
|
||||
from litellm.types.llms.bedrock import ToolJsonSchemaBlock
|
||||
tools = [
|
||||
{
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "123-invalid@name",
|
||||
"description": "Invalid name test",
|
||||
"parameters": {
|
||||
"$id": "https://some/internal/name",
|
||||
"type": "object",
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"properties": {
|
||||
"test": {"type": "string"},
|
||||
},
|
||||
"required": ["test"],
|
||||
},
|
||||
},
|
||||
}
|
||||
]
|
||||
|
||||
result = _bedrock_tools_pt(tools)
|
||||
|
||||
print("bedrock tools after prompt formatting=", result)
|
||||
# Ensure the keys for properties in the response is a subset of keys in ToolJsonSchemaBlock
|
||||
toolJsonSchema = result[0]["toolSpec"]["inputSchema"]["json"]
|
||||
assert toolJsonSchema is not None
|
||||
print("transformed toolJsonSchema keys=", toolJsonSchema.keys())
|
||||
print("allowed ToolJsonSchemaBlock keys=", ToolJsonSchemaBlock.__annotations__.keys())
|
||||
assert set(toolJsonSchema.keys()).issubset(set(ToolJsonSchemaBlock.__annotations__.keys()))
|
||||
|
||||
|
||||
assert isinstance(result, list)
|
||||
assert len(result) == 1
|
||||
assert "toolSpec" in result[0]
|
||||
assert result[0]["toolSpec"]["name"] == "a123_invalid_name"
|
||||
assert result[0]["toolSpec"]["description"] == "Invalid name test"
|
||||
assert "inputSchema" in result[0]["toolSpec"]
|
||||
assert "json" in result[0]["toolSpec"]["inputSchema"]
|
||||
assert result[0]["toolSpec"]["inputSchema"]["json"]["properties"]["test"]["type"] == "string"
|
||||
assert "test" in result[0]["toolSpec"]["inputSchema"]["json"]["required"]
|
||||
|
||||
|
||||
|
||||
def test_not_found_error():
|
||||
with pytest.raises(litellm.NotFoundError):
|
||||
completion(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue