In LLMContext, normalize an empty provided ToolsSchema to NOT_GIVEN
This commit is contained in:
@@ -79,9 +79,8 @@ class LLMContext:
|
|||||||
tool_choice: Tool selection strategy for the LLM.
|
tool_choice: Tool selection strategy for the LLM.
|
||||||
"""
|
"""
|
||||||
self._messages: List[LLMContextMessage] = messages if messages else []
|
self._messages: List[LLMContextMessage] = messages if messages else []
|
||||||
self._tools: ToolsSchema | NotGiven = tools
|
self._tools: ToolsSchema | NotGiven = LLMContext._normalize_and_validate_tools(tools)
|
||||||
self._tool_choice: LLMContextToolChoice | NotGiven = tool_choice
|
self._tool_choice: LLMContextToolChoice | NotGiven = tool_choice
|
||||||
self._validate_tools()
|
|
||||||
|
|
||||||
def get_messages(self, llm_specific_filter: Optional[str] = None) -> List[LLMContextMessage]:
|
def get_messages(self, llm_specific_filter: Optional[str] = None) -> List[LLMContextMessage]:
|
||||||
"""Get the current messages list.
|
"""Get the current messages list.
|
||||||
@@ -156,9 +155,7 @@ class LLMContext:
|
|||||||
Args:
|
Args:
|
||||||
tools: A ToolsSchema or NOT_GIVEN to disable tools.
|
tools: A ToolsSchema or NOT_GIVEN to disable tools.
|
||||||
"""
|
"""
|
||||||
# TODO: convert empty ToolsSchema to NOT_GIVEN if needed?
|
self._tools = LLMContext._normalize_and_validate_tools(tools)
|
||||||
self._tools = tools
|
|
||||||
self._validate_tools()
|
|
||||||
|
|
||||||
def set_tool_choice(self, tool_choice: LLMContextToolChoice | NotGiven):
|
def set_tool_choice(self, tool_choice: LLMContextToolChoice | NotGiven):
|
||||||
"""Set the tool choice configuration.
|
"""Set the tool choice configuration.
|
||||||
@@ -262,11 +259,20 @@ class LLMContext:
|
|||||||
header.extend(data_size.to_bytes(4, "little")) # Subchunk2Size
|
header.extend(data_size.to_bytes(4, "little")) # Subchunk2Size
|
||||||
return header
|
return header
|
||||||
|
|
||||||
def _validate_tools(self):
|
@staticmethod
|
||||||
"""Validate the tools schema.
|
def _normalize_and_validate_tools(tools: ToolsSchema | NotGiven) -> ToolsSchema | NotGiven:
|
||||||
|
"""Normalize and validate the given tools.
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
TypeError: If tools are not a ToolsSchema or NotGiven.
|
TypeError: If tools are not a ToolsSchema or NotGiven.
|
||||||
"""
|
"""
|
||||||
if self._tools is not NOT_GIVEN and not isinstance(self._tools, ToolsSchema):
|
if isinstance(tools, ToolsSchema):
|
||||||
raise TypeError("In LLMContext, tools must be a ToolsSchema object or NOT_GIVEN.")
|
if not tools.standard_tools and not tools.custom_tools:
|
||||||
|
return NOT_GIVEN
|
||||||
|
return tools
|
||||||
|
elif tools is NOT_GIVEN:
|
||||||
|
return NOT_GIVEN
|
||||||
|
else:
|
||||||
|
raise TypeError(
|
||||||
|
"In LLMContext, tools must be a ToolsSchema object or NOT_GIVEN.",
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user