mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-22 00:31:44 +00:00
test: type the eager_input_streaming test helpers and mark constants Final
This commit is contained in:
parent
d1563e0b55
commit
a37d1e8b9b
4 changed files with 36 additions and 27 deletions
|
|
@ -6372,18 +6372,19 @@ def test_response_format_tool_path_skips_forced_tool_choice_when_unsupported(loc
|
|||
assert "tool_choice" not in result
|
||||
|
||||
|
||||
def _eager_chat_tool(**extra):
|
||||
def _eager_chat_function(**extra: object) -> dict[str, object]:
|
||||
return {
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "write_file",
|
||||
"description": "Write a file",
|
||||
"parameters": {"type": "object", "properties": {"path": {"type": "string"}}, "required": ["path"]},
|
||||
},
|
||||
"name": "write_file",
|
||||
"description": "Write a file",
|
||||
"parameters": {"type": "object", "properties": {"path": {"type": "string"}}, "required": ["path"]},
|
||||
**extra,
|
||||
}
|
||||
|
||||
|
||||
def _eager_chat_tool(**extra: object) -> dict[str, object]:
|
||||
return {"type": "function", "function": _eager_chat_function(), **extra}
|
||||
|
||||
|
||||
@pytest.mark.parametrize("flag", [True, False])
|
||||
def test_eager_input_streaming_passed_through_from_tool_top_level(flag):
|
||||
mapped_tool, _ = AnthropicConfig()._map_tool_helper(_eager_chat_tool(eager_input_streaming=flag))
|
||||
|
|
@ -6398,10 +6399,9 @@ def test_eager_input_streaming_passed_through_from_tool_top_level(flag):
|
|||
|
||||
|
||||
def test_eager_input_streaming_passed_through_from_function():
|
||||
tool = _eager_chat_tool()
|
||||
tool["function"]["eager_input_streaming"] = True
|
||||
|
||||
mapped_tool, _ = AnthropicConfig()._map_tool_helper(tool)
|
||||
mapped_tool, _ = AnthropicConfig()._map_tool_helper(
|
||||
{"type": "function", "function": _eager_chat_function(eager_input_streaming=True)}
|
||||
)
|
||||
|
||||
assert mapped_tool["eager_input_streaming"] is True
|
||||
assert "eager_input_streaming" not in mapped_tool["input_schema"]
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import asyncio
|
||||
import json
|
||||
import uuid
|
||||
from typing import Final
|
||||
from unittest.mock import patch
|
||||
|
||||
import httpx
|
||||
|
|
@ -861,14 +862,16 @@ def test_bedrock_chat_invoke_tool_search_beta_follows_model_map(
|
|||
assert result.get("anthropic_beta") == expected_betas
|
||||
|
||||
|
||||
FINE_GRAINED_TOOL_STREAMING_BETA = "fine-grained-tool-streaming-2025-05-14"
|
||||
EAGER_TOOL_SCHEMA = {"type": "object", "properties": {"path": {"type": "string"}}, "required": ["path"]}
|
||||
FINE_GRAINED_TOOL_STREAMING_BETA: Final = "fine-grained-tool-streaming-2025-05-14"
|
||||
EAGER_TOOL_SCHEMA: Final = {"type": "object", "properties": {"path": {"type": "string"}}, "required": ["path"]}
|
||||
|
||||
|
||||
def _chat_invoke_request_with_tools(tools, headers=None):
|
||||
config = AmazonAnthropicClaudeConfig()
|
||||
model = "us.anthropic.claude-sonnet-4-5-20250929-v1:0"
|
||||
optional_params = config.map_openai_params(
|
||||
def _chat_invoke_request_with_tools(
|
||||
tools: list[dict[str, object]], headers: dict[str, str] | None = None
|
||||
) -> dict[str, object]:
|
||||
config: Final = AmazonAnthropicClaudeConfig()
|
||||
model: Final = "us.anthropic.claude-sonnet-4-5-20250929-v1:0"
|
||||
optional_params: Final = config.map_openai_params(
|
||||
non_default_params={"max_tokens": 64, "stream": True, "tools": tools},
|
||||
optional_params={},
|
||||
model=model,
|
||||
|
|
@ -883,7 +886,7 @@ def _chat_invoke_request_with_tools(tools, headers=None):
|
|||
)
|
||||
|
||||
|
||||
def _eager_openai_tool(name, **extra):
|
||||
def _eager_openai_tool(name: str, **extra: object) -> dict[str, object]:
|
||||
return {"type": "function", "function": {"name": name, "parameters": EAGER_TOOL_SCHEMA}, **extra}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import os
|
|||
import httpx
|
||||
import pytest
|
||||
|
||||
from typing import Final
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
import litellm
|
||||
|
|
@ -7402,23 +7403,25 @@ def test_transform_response_honors_json_mode_kwarg_when_optional_params_lack_it(
|
|||
assert json.loads(result.choices[0].message.content) == {"city": "Paris", "population": 2100000}
|
||||
|
||||
|
||||
FINE_GRAINED_TOOL_STREAMING_BETA = "fine-grained-tool-streaming-2025-05-14"
|
||||
EAGER_TOOL_SCHEMA = {"type": "object", "properties": {"path": {"type": "string"}}, "required": ["path"]}
|
||||
FINE_GRAINED_TOOL_STREAMING_BETA: Final = "fine-grained-tool-streaming-2025-05-14"
|
||||
EAGER_TOOL_SCHEMA: Final = {"type": "object", "properties": {"path": {"type": "string"}}, "required": ["path"]}
|
||||
|
||||
|
||||
def _eager_openai_tool(**extra):
|
||||
def _eager_openai_tool(**extra: object) -> dict[str, object]:
|
||||
return {"type": "function", "function": {"name": "write_file", "parameters": EAGER_TOOL_SCHEMA}, **extra}
|
||||
|
||||
|
||||
def _eager_openai_function_tool(**extra):
|
||||
def _eager_openai_function_tool(**extra: object) -> dict[str, object]:
|
||||
return {"type": "function", "function": {"name": "write_file", "parameters": EAGER_TOOL_SCHEMA, **extra}}
|
||||
|
||||
|
||||
def _eager_anthropic_tool(**extra):
|
||||
def _eager_anthropic_tool(**extra: object) -> dict[str, object]:
|
||||
return {"name": "write_file", "input_schema": EAGER_TOOL_SCHEMA, **extra}
|
||||
|
||||
|
||||
def _converse_request(model, tools, headers=None):
|
||||
def _converse_request(
|
||||
model: str, tools: list[dict[str, object]], headers: dict[str, object] | None = None
|
||||
) -> dict[str, object]:
|
||||
return AmazonConverseConfig()._transform_request_helper(
|
||||
model=model,
|
||||
system_content_blocks=[],
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import json
|
|||
import os
|
||||
from datetime import datetime
|
||||
from types import SimpleNamespace
|
||||
from typing import Final
|
||||
from unittest.mock import Mock
|
||||
|
||||
import pytest
|
||||
|
|
@ -3246,10 +3247,12 @@ def test_bedrock_messages_strips_effort_but_keeps_format_for_sonnet_4_5(local_mo
|
|||
assert result.get("output_config") == {"format": schema_format}
|
||||
|
||||
|
||||
FINE_GRAINED_TOOL_STREAMING_BETA = "fine-grained-tool-streaming-2025-05-14"
|
||||
FINE_GRAINED_TOOL_STREAMING_BETA: Final = "fine-grained-tool-streaming-2025-05-14"
|
||||
|
||||
|
||||
def _invoke_request_with_tools(tools, headers=None):
|
||||
def _invoke_request_with_tools(
|
||||
tools: list[dict[str, object]], headers: dict[str, str] | None = None
|
||||
) -> dict[str, object]:
|
||||
from litellm.types.router import GenericLiteLLMParams
|
||||
|
||||
return AmazonAnthropicClaudeMessagesConfig().transform_anthropic_messages_request(
|
||||
|
|
@ -3261,7 +3264,7 @@ def _invoke_request_with_tools(tools, headers=None):
|
|||
)
|
||||
|
||||
|
||||
def _eager_invoke_tool(name, eager_input_streaming):
|
||||
def _eager_invoke_tool(name: str, eager_input_streaming: bool) -> dict[str, object]:
|
||||
return {
|
||||
"name": name,
|
||||
"description": f"{name} tool",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue